SCW 아이콘
영웅 배경, 구분선 없음
블로그

程序员征服安全:分享与学习系列-不安全的反序列化

야프 카란 싱
게시일 : 2019년 9월 20일
마지막 업데이트: 2026년 3월 10일

根据应用程序的不同,序列化过程可能会一直发生。该术语用于描述何时将数据结构或对象状态转换为可以存储或可能作为通信发送的格式。反序列化与此过程相反,将现在的结构化数据转换为存储前的对象或数据字符串。

每当应用程序将反序列化的数据视为可信数据时,就会发生不安全的反序列化。如果用户能够修改新重建的数据,他们就可以执行各种恶意活动,例如代码注入、拒绝服务攻击,或者干脆更改数据,让自己在应用程序中获得一些优势,例如降低对象的价格或提升权限。

在本集中,我们将学习:

  • 攻击者如何利用不安全的反序列化
  • 为什么不安全的反序列化很危险
  • 可以修复此漏洞的技术。

攻击者如何利用不安全的反序列化?

如今,最流行的序列化数据格式是 JSON,尽管 XML 紧随其后。不少编程语言还提供了自己的序列化数据的方法,这些方法通常包含比 JSON 或 XML 更多的功能。无论如何,如果开发人员对应用程序进行编程,将反序列化数据视为可信输入,而不是遵循本系列其他博客的旧口头禅,特别是:“永远不要相信用户的输入!”

用户输入永远不可信任,因为用户可以在这些字符串中插入代码,接收服务器可能会意外执行这些代码。而且,由于原始反序列化数据有时也可以被访问和利用,因此它需要属于同样的不信任类别。

例如,如果论坛应用程序使用 PHP 对象序列化来保存包含用户身份和角色的 cookie,则可以对其进行操作。恶意用户可能会改为将其 “用户” 角色更改为 “管理员”。或者,他们可以使用数据字符串提供的开口来注入代码,服务器在处理 “可信” 数据时可能会误解并运行这些代码。

为什么不安全的反序列化很危险?

的确,这种攻击需要黑客有一点技巧,有时还需要反复试验,同时攻击者了解服务器将从他们操纵的反序列化数据中接受哪种代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它赋予了足够熟练使用该漏洞的黑客的潜在力量。

根据反序列化数据的使用方式,可以采用任意数量的攻击,包括我们在之前的博客中介绍的许多攻击。不安全的反序列化可以成为远程跨代码注入、跨站点脚本、拒绝服务、访问控制劫持,当然还有 SQL 和 XML 注入攻击的门户。它基本上打开了一个起点,声明所有被反序列化的数据都是可信的,并让攻击者尝试利用它。

消除不安全的反序列化

为防止不安全的反序列化,组织可以做的最安全的事情是限制应用程序接受反序列化数据。但是,这可能不可能或不现实,但不用担心,因为还有其他技术可以用来防御这种攻击。

如果可能,可以将数据消毒为数值之类的东西。这可能无法完全阻止漏洞,但会阻止代码注入。更好的办法是只需要对反序列化数据(例如数字签名)进行某种形式的完整性检查,这样可以确保数据字符串未被操纵。并且所有反序列化过程都应隔离并在低权限环境中运行。

这些保护措施到位后,请务必记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果用户在日志中触发了多个反序列化错误,则很好地表明他们要么是恶意内部人士,要么已被黑客入侵或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定之类的事情。

无论你使用哪种工具来对抗不安全的反序列化,都要记住,从本质上讲,这些数据可能已被用户触摸或操纵。永远不要相信它。

有关使用存在已知漏洞的组件的更多信息

要进一步阅读,你可以看看 OWASP 怎么说 关于不安全的反序列化。你还可以使用以下方法来测试你新获得的防御知识 免费展示柜 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

리소스 보기
리소스 보기

每当应用程序将反序列化的数据视为可信数据时,就会发生不安全的反序列化。如果用户能够修改新重建的数据,他们就可以执行各种恶意活动,例如代码注入、拒绝服务攻击或提升权限。

더 많은 것에 관심이 있으신가요?

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

더 알아보세요

Secure Code Warrior는 조직이 소프트웨어 개발 생명주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 지원합니다. 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 수행하는 모든 분들에게, 저희는 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약
공유하기:
링크드인 브랜드사회적x 로고
저자
야프 카란 싱
게시일: 2019년 9월 20일

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

공유하기:
링크드인 브랜드사회적x 로고

根据应用程序的不同,序列化过程可能会一直发生。该术语用于描述何时将数据结构或对象状态转换为可以存储或可能作为通信发送的格式。反序列化与此过程相反,将现在的结构化数据转换为存储前的对象或数据字符串。

每当应用程序将反序列化的数据视为可信数据时,就会发生不安全的反序列化。如果用户能够修改新重建的数据,他们就可以执行各种恶意活动,例如代码注入、拒绝服务攻击,或者干脆更改数据,让自己在应用程序中获得一些优势,例如降低对象的价格或提升权限。

在本集中,我们将学习:

  • 攻击者如何利用不安全的反序列化
  • 为什么不安全的反序列化很危险
  • 可以修复此漏洞的技术。

攻击者如何利用不安全的反序列化?

如今,最流行的序列化数据格式是 JSON,尽管 XML 紧随其后。不少编程语言还提供了自己的序列化数据的方法,这些方法通常包含比 JSON 或 XML 更多的功能。无论如何,如果开发人员对应用程序进行编程,将反序列化数据视为可信输入,而不是遵循本系列其他博客的旧口头禅,特别是:“永远不要相信用户的输入!”

用户输入永远不可信任,因为用户可以在这些字符串中插入代码,接收服务器可能会意外执行这些代码。而且,由于原始反序列化数据有时也可以被访问和利用,因此它需要属于同样的不信任类别。

例如,如果论坛应用程序使用 PHP 对象序列化来保存包含用户身份和角色的 cookie,则可以对其进行操作。恶意用户可能会改为将其 “用户” 角色更改为 “管理员”。或者,他们可以使用数据字符串提供的开口来注入代码,服务器在处理 “可信” 数据时可能会误解并运行这些代码。

为什么不安全的反序列化很危险?

的确,这种攻击需要黑客有一点技巧,有时还需要反复试验,同时攻击者了解服务器将从他们操纵的反序列化数据中接受哪种代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它赋予了足够熟练使用该漏洞的黑客的潜在力量。

根据反序列化数据的使用方式,可以采用任意数量的攻击,包括我们在之前的博客中介绍的许多攻击。不安全的反序列化可以成为远程跨代码注入、跨站点脚本、拒绝服务、访问控制劫持,当然还有 SQL 和 XML 注入攻击的门户。它基本上打开了一个起点,声明所有被反序列化的数据都是可信的,并让攻击者尝试利用它。

消除不安全的反序列化

为防止不安全的反序列化,组织可以做的最安全的事情是限制应用程序接受反序列化数据。但是,这可能不可能或不现实,但不用担心,因为还有其他技术可以用来防御这种攻击。

如果可能,可以将数据消毒为数值之类的东西。这可能无法完全阻止漏洞,但会阻止代码注入。更好的办法是只需要对反序列化数据(例如数字签名)进行某种形式的完整性检查,这样可以确保数据字符串未被操纵。并且所有反序列化过程都应隔离并在低权限环境中运行。

这些保护措施到位后,请务必记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果用户在日志中触发了多个反序列化错误,则很好地表明他们要么是恶意内部人士,要么已被黑客入侵或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定之类的事情。

无论你使用哪种工具来对抗不安全的反序列化,都要记住,从本质上讲,这些数据可能已被用户触摸或操纵。永远不要相信它。

有关使用存在已知漏洞的组件的更多信息

要进一步阅读,你可以看看 OWASP 怎么说 关于不安全的反序列化。你还可以使用以下方法来测试你新获得的防御知识 免费展示柜 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

리소스 보기
리소스 보기

아래 양식을 작성하여 보고서를 다운로드하세요

귀하의 허락을 받아 저희 제품 및/또는 관련 보안 코딩 주제에 관한 정보를 보내드리고자 합니다. 귀하의 개인정보는 항상 매우 신중하게 취급되며, 마케팅 목적으로 타사에 판매하지 않을 것을 약속드립니다.

제출
scw 성공 아이콘
scw 오류 아이콘
양식을 제출하려면 "분석" 쿠키를 활성화하십시오. 완료 후에는 원할 때 다시 비활성화할 수 있습니다.

根据应用程序的不同,序列化过程可能会一直发生。该术语用于描述何时将数据结构或对象状态转换为可以存储或可能作为通信发送的格式。反序列化与此过程相反,将现在的结构化数据转换为存储前的对象或数据字符串。

每当应用程序将反序列化的数据视为可信数据时,就会发生不安全的反序列化。如果用户能够修改新重建的数据,他们就可以执行各种恶意活动,例如代码注入、拒绝服务攻击,或者干脆更改数据,让自己在应用程序中获得一些优势,例如降低对象的价格或提升权限。

在本集中,我们将学习:

  • 攻击者如何利用不安全的反序列化
  • 为什么不安全的反序列化很危险
  • 可以修复此漏洞的技术。

攻击者如何利用不安全的反序列化?

如今,最流行的序列化数据格式是 JSON,尽管 XML 紧随其后。不少编程语言还提供了自己的序列化数据的方法,这些方法通常包含比 JSON 或 XML 更多的功能。无论如何,如果开发人员对应用程序进行编程,将反序列化数据视为可信输入,而不是遵循本系列其他博客的旧口头禅,特别是:“永远不要相信用户的输入!”

用户输入永远不可信任,因为用户可以在这些字符串中插入代码,接收服务器可能会意外执行这些代码。而且,由于原始反序列化数据有时也可以被访问和利用,因此它需要属于同样的不信任类别。

例如,如果论坛应用程序使用 PHP 对象序列化来保存包含用户身份和角色的 cookie,则可以对其进行操作。恶意用户可能会改为将其 “用户” 角色更改为 “管理员”。或者,他们可以使用数据字符串提供的开口来注入代码,服务器在处理 “可信” 数据时可能会误解并运行这些代码。

为什么不安全的反序列化很危险?

的确,这种攻击需要黑客有一点技巧,有时还需要反复试验,同时攻击者了解服务器将从他们操纵的反序列化数据中接受哪种代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它赋予了足够熟练使用该漏洞的黑客的潜在力量。

根据反序列化数据的使用方式,可以采用任意数量的攻击,包括我们在之前的博客中介绍的许多攻击。不安全的反序列化可以成为远程跨代码注入、跨站点脚本、拒绝服务、访问控制劫持,当然还有 SQL 和 XML 注入攻击的门户。它基本上打开了一个起点,声明所有被反序列化的数据都是可信的,并让攻击者尝试利用它。

消除不安全的反序列化

为防止不安全的反序列化,组织可以做的最安全的事情是限制应用程序接受反序列化数据。但是,这可能不可能或不现实,但不用担心,因为还有其他技术可以用来防御这种攻击。

如果可能,可以将数据消毒为数值之类的东西。这可能无法完全阻止漏洞,但会阻止代码注入。更好的办法是只需要对反序列化数据(例如数字签名)进行某种形式的完整性检查,这样可以确保数据字符串未被操纵。并且所有反序列化过程都应隔离并在低权限环境中运行。

这些保护措施到位后,请务必记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果用户在日志中触发了多个反序列化错误,则很好地表明他们要么是恶意内部人士,要么已被黑客入侵或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定之类的事情。

无论你使用哪种工具来对抗不安全的反序列化,都要记住,从本质上讲,这些数据可能已被用户触摸或操纵。永远不要相信它。

有关使用存在已知漏洞的组件的更多信息

要进一步阅读,你可以看看 OWASP 怎么说 关于不安全的反序列化。你还可以使用以下方法来测试你新获得的防御知识 免费展示柜 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

웹 세미나 시청
시작하자
더 알아보세요

아래 링크를 클릭하고 이 자료의 PDF를 다운로드하세요.

Secure Code Warrior는 조직이 소프트웨어 개발 생명주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 지원합니다. 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 수행하는 모든 분들에게, 저희는 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

보고서 보기데모 예약
리소스 보기
공유하기:
링크드인 브랜드사회적x 로고
더 많은 것에 관심이 있으신가요?

공유하기:
링크드인 브랜드사회적x 로고
저자
야프 카란 싱
게시일: 2019년 9월 20일

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

공유하기:
링크드인 브랜드사회적x 로고

根据应用程序的不同,序列化过程可能会一直发生。该术语用于描述何时将数据结构或对象状态转换为可以存储或可能作为通信发送的格式。反序列化与此过程相反,将现在的结构化数据转换为存储前的对象或数据字符串。

每当应用程序将反序列化的数据视为可信数据时,就会发生不安全的反序列化。如果用户能够修改新重建的数据,他们就可以执行各种恶意活动,例如代码注入、拒绝服务攻击,或者干脆更改数据,让自己在应用程序中获得一些优势,例如降低对象的价格或提升权限。

在本集中,我们将学习:

  • 攻击者如何利用不安全的反序列化
  • 为什么不安全的反序列化很危险
  • 可以修复此漏洞的技术。

攻击者如何利用不安全的反序列化?

如今,最流行的序列化数据格式是 JSON,尽管 XML 紧随其后。不少编程语言还提供了自己的序列化数据的方法,这些方法通常包含比 JSON 或 XML 更多的功能。无论如何,如果开发人员对应用程序进行编程,将反序列化数据视为可信输入,而不是遵循本系列其他博客的旧口头禅,特别是:“永远不要相信用户的输入!”

用户输入永远不可信任,因为用户可以在这些字符串中插入代码,接收服务器可能会意外执行这些代码。而且,由于原始反序列化数据有时也可以被访问和利用,因此它需要属于同样的不信任类别。

例如,如果论坛应用程序使用 PHP 对象序列化来保存包含用户身份和角色的 cookie,则可以对其进行操作。恶意用户可能会改为将其 “用户” 角色更改为 “管理员”。或者,他们可以使用数据字符串提供的开口来注入代码,服务器在处理 “可信” 数据时可能会误解并运行这些代码。

为什么不安全的反序列化很危险?

的确,这种攻击需要黑客有一点技巧,有时还需要反复试验,同时攻击者了解服务器将从他们操纵的反序列化数据中接受哪种代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它赋予了足够熟练使用该漏洞的黑客的潜在力量。

根据反序列化数据的使用方式,可以采用任意数量的攻击,包括我们在之前的博客中介绍的许多攻击。不安全的反序列化可以成为远程跨代码注入、跨站点脚本、拒绝服务、访问控制劫持,当然还有 SQL 和 XML 注入攻击的门户。它基本上打开了一个起点,声明所有被反序列化的数据都是可信的,并让攻击者尝试利用它。

消除不安全的反序列化

为防止不安全的反序列化,组织可以做的最安全的事情是限制应用程序接受反序列化数据。但是,这可能不可能或不现实,但不用担心,因为还有其他技术可以用来防御这种攻击。

如果可能,可以将数据消毒为数值之类的东西。这可能无法完全阻止漏洞,但会阻止代码注入。更好的办法是只需要对反序列化数据(例如数字签名)进行某种形式的完整性检查,这样可以确保数据字符串未被操纵。并且所有反序列化过程都应隔离并在低权限环境中运行。

这些保护措施到位后,请务必记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果用户在日志中触发了多个反序列化错误,则很好地表明他们要么是恶意内部人士,要么已被黑客入侵或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定之类的事情。

无论你使用哪种工具来对抗不安全的反序列化,都要记住,从本质上讲,这些数据可能已被用户触摸或操纵。永远不要相信它。

有关使用存在已知漏洞的组件的更多信息

要进一步阅读,你可以看看 OWASP 怎么说 关于不安全的反序列化。你还可以使用以下方法来测试你新获得的防御知识 免费展示柜 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

목록

PDF 다운로드
리소스 보기
더 많은 것에 관심이 있으신가요?

야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

더 알아보세요

Secure Code Warrior는 조직이 소프트웨어 개발 생명주기 전반에 걸쳐 코드를 보호하고 사이버 보안을 최우선으로 하는 문화를 조성하도록 지원합니다. 앱 보안 관리자, 개발자, 최고정보보안책임자(CISO) 또는 보안 관련 업무를 수행하는 모든 분들에게, 저희는 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약다운로드
공유하기:
링크드인 브랜드사회적x 로고
자원 센터

시작하는 데 도움이 되는 자료

더 많은 게시물
자원 센터

시작하는 데 도움이 되는 자료

더 많은 게시물