SCW图标
英雄背景无分隔线
博客

Les codeurs conquièrent la sécurité : série Share & Learn - Désérialisation non sécurisée

Jaap Karan Singh
2019 年 9 月 20 日 发布
最后更新于 2026年3月8日

根据不同的应用,序列化的过程可能一直在发生。它是用来描述每当数据结构或对象状态被转化为可以存储或可能作为通信发送的格式时的术语。反序列化是这个过程的反面,把现在的结构化数据,转回存储前的对象或数据字符串。

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

在这一集里,我们将学习。

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

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

这些天,最流行的数据序列化格式是JSON,尽管XML紧随其后。相当多的编程语言也提供他们自己的数据序列化方法,这些方法通常包含比JSON或XML更多的功能。在任何情况下,如果开发人员在编程时将反序列化的数据视为可信的输入,而不是遵循本系列其他博客中的老套路,具体来说,就会出现问题。"永远不要相信用户输入!"

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

例如,如果一个论坛应用使用PHP对象序列化来保存一个包含用户身份和角色的cookie,那么它就可以被操纵。一个恶意的用户可能会把他们的 "用户 "角色改为 "管理员"。或者,他们可以使用数据字符串提供的开口来注入代码,这可能会被服务器在处理 "可信 "数据时误解并运行。

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

诚然,这种攻击需要黑客有一定的技巧,有时还需要试错,而攻击者要了解服务器会从他们操纵的、反序列化的数据中接受什么样的代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它给了足够熟练的黑客以潜在的力量。

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

消除不安全的反序列化

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

如果可能的话,可以对数据进行消毒处理,使之成为类似于数值的东西。这可能无法完全阻止漏洞,但可以防止代码注入的发生。更好的是简单地要求对反序列化的数据进行某种形式的完整性检查,如数字签名,这可以确保数据字符串没有被篡改。所有的反序列化过程应该被隔离,并在低权限的环境中运行。

一旦你有了这些保护措施,要确保记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果一个用户在日志中触发了几个以上的反序列化错误,这很好地表明他们要么是一个恶意的内部人员,要么是他们的证书被黑客攻击或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定等措施。

无论你采用哪种工具来对抗不安全的反序列化,请记住,在核心部分,这是可能被用户触摸过或操纵过的数据。永远不要相信它。

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

要进一步阅读,你可以看看OWASP对不安全的反序列化是怎么说的。你还可以通过Secure Code Warrior 平台的免费展示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

显示资源
显示资源

Une désérialisation non sécurisée peut se produire chaque fois qu'une application considère les données en cours de désérialisation comme étant fiables. Si un utilisateur est en mesure de modifier les données récemment reconstruites, il peut effectuer toutes sortes d'activités malveillantes telles que des injections de code, des attaques par déni de service ou l'élévation de ses privilèges.

您想了解更多吗?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

了解更多

Secure Code Warrior 在整个软件开发周期中保障代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全负责人、开发人员、信息安全主管,还是其他任何参与安全工作的人员,我们都能协助您的组织降低不安全代码带来的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
Jaap Karan Singh
2019年9月20日发布

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

分享到:
领英品牌社交x 标志

根据不同的应用,序列化的过程可能一直在发生。它是用来描述每当数据结构或对象状态被转化为可以存储或可能作为通信发送的格式时的术语。反序列化是这个过程的反面,把现在的结构化数据,转回存储前的对象或数据字符串。

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

在这一集里,我们将学习。

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

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

这些天,最流行的数据序列化格式是JSON,尽管XML紧随其后。相当多的编程语言也提供他们自己的数据序列化方法,这些方法通常包含比JSON或XML更多的功能。在任何情况下,如果开发人员在编程时将反序列化的数据视为可信的输入,而不是遵循本系列其他博客中的老套路,具体来说,就会出现问题。"永远不要相信用户输入!"

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

例如,如果一个论坛应用使用PHP对象序列化来保存一个包含用户身份和角色的cookie,那么它就可以被操纵。一个恶意的用户可能会把他们的 "用户 "角色改为 "管理员"。或者,他们可以使用数据字符串提供的开口来注入代码,这可能会被服务器在处理 "可信 "数据时误解并运行。

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

诚然,这种攻击需要黑客有一定的技巧,有时还需要试错,而攻击者要了解服务器会从他们操纵的、反序列化的数据中接受什么样的代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它给了足够熟练的黑客以潜在的力量。

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

消除不安全的反序列化

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

如果可能的话,可以对数据进行消毒处理,使之成为类似于数值的东西。这可能无法完全阻止漏洞,但可以防止代码注入的发生。更好的是简单地要求对反序列化的数据进行某种形式的完整性检查,如数字签名,这可以确保数据字符串没有被篡改。所有的反序列化过程应该被隔离,并在低权限的环境中运行。

一旦你有了这些保护措施,要确保记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果一个用户在日志中触发了几个以上的反序列化错误,这很好地表明他们要么是一个恶意的内部人员,要么是他们的证书被黑客攻击或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定等措施。

无论你采用哪种工具来对抗不安全的反序列化,请记住,在核心部分,这是可能被用户触摸过或操纵过的数据。永远不要相信它。

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

要进一步阅读,你可以看看OWASP对不安全的反序列化是怎么说的。你还可以通过Secure Code Warrior 平台的免费展示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

显示资源
显示资源

请填写以下表格以下载报告

我们希望获得您的授权,以便向您发送有关我们产品和/或安全编码相关主题的信息。我们将始终以最高标准谨慎处理您的个人数据,绝不会将其出售给其他企业用于营销目的。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用「Analytics」Cookie。完成操作后,请随时将其重新禁用。

根据不同的应用,序列化的过程可能一直在发生。它是用来描述每当数据结构或对象状态被转化为可以存储或可能作为通信发送的格式时的术语。反序列化是这个过程的反面,把现在的结构化数据,转回存储前的对象或数据字符串。

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

在这一集里,我们将学习。

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

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

这些天,最流行的数据序列化格式是JSON,尽管XML紧随其后。相当多的编程语言也提供他们自己的数据序列化方法,这些方法通常包含比JSON或XML更多的功能。在任何情况下,如果开发人员在编程时将反序列化的数据视为可信的输入,而不是遵循本系列其他博客中的老套路,具体来说,就会出现问题。"永远不要相信用户输入!"

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

例如,如果一个论坛应用使用PHP对象序列化来保存一个包含用户身份和角色的cookie,那么它就可以被操纵。一个恶意的用户可能会把他们的 "用户 "角色改为 "管理员"。或者,他们可以使用数据字符串提供的开口来注入代码,这可能会被服务器在处理 "可信 "数据时误解并运行。

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

诚然,这种攻击需要黑客有一定的技巧,有时还需要试错,而攻击者要了解服务器会从他们操纵的、反序列化的数据中接受什么样的代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它给了足够熟练的黑客以潜在的力量。

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

消除不安全的反序列化

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

如果可能的话,可以对数据进行消毒处理,使之成为类似于数值的东西。这可能无法完全阻止漏洞,但可以防止代码注入的发生。更好的是简单地要求对反序列化的数据进行某种形式的完整性检查,如数字签名,这可以确保数据字符串没有被篡改。所有的反序列化过程应该被隔离,并在低权限的环境中运行。

一旦你有了这些保护措施,要确保记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果一个用户在日志中触发了几个以上的反序列化错误,这很好地表明他们要么是一个恶意的内部人员,要么是他们的证书被黑客攻击或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定等措施。

无论你采用哪种工具来对抗不安全的反序列化,请记住,在核心部分,这是可能被用户触摸过或操纵过的数据。永远不要相信它。

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

要进一步阅读,你可以看看OWASP对不安全的反序列化是怎么说的。你还可以通过Secure Code Warrior 平台的免费展示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

查看网络研讨会
开始
了解更多

点击下方链接,下载此资源的PDF文件。

Secure Code Warrior 在整个软件开发周期中保障代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全负责人、开发人员、信息安全主管,还是其他任何参与安全工作的人员,我们都能协助您的组织降低不安全代码带来的风险。

显示报告预约演示
下载PDF文件
显示资源
分享到:
领英品牌社交x 标志
您想了解更多吗?

分享到:
领英品牌社交x 标志
作者
Jaap Karan Singh
2019年9月20日发布

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

分享到:
领英品牌社交x 标志

根据不同的应用,序列化的过程可能一直在发生。它是用来描述每当数据结构或对象状态被转化为可以存储或可能作为通信发送的格式时的术语。反序列化是这个过程的反面,把现在的结构化数据,转回存储前的对象或数据字符串。

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

在这一集里,我们将学习。

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

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

这些天,最流行的数据序列化格式是JSON,尽管XML紧随其后。相当多的编程语言也提供他们自己的数据序列化方法,这些方法通常包含比JSON或XML更多的功能。在任何情况下,如果开发人员在编程时将反序列化的数据视为可信的输入,而不是遵循本系列其他博客中的老套路,具体来说,就会出现问题。"永远不要相信用户输入!"

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

例如,如果一个论坛应用使用PHP对象序列化来保存一个包含用户身份和角色的cookie,那么它就可以被操纵。一个恶意的用户可能会把他们的 "用户 "角色改为 "管理员"。或者,他们可以使用数据字符串提供的开口来注入代码,这可能会被服务器在处理 "可信 "数据时误解并运行。

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

诚然,这种攻击需要黑客有一定的技巧,有时还需要试错,而攻击者要了解服务器会从他们操纵的、反序列化的数据中接受什么样的代码或漏洞。也就是说,这是一个经常被利用的漏洞,因为它给了足够熟练的黑客以潜在的力量。

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

消除不安全的反序列化

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

如果可能的话,可以对数据进行消毒处理,使之成为类似于数值的东西。这可能无法完全阻止漏洞,但可以防止代码注入的发生。更好的是简单地要求对反序列化的数据进行某种形式的完整性检查,如数字签名,这可以确保数据字符串没有被篡改。所有的反序列化过程应该被隔离,并在低权限的环境中运行。

一旦你有了这些保护措施,要确保记录所有失败的反序列化尝试,以及来自反序列化数据的容器或服务器的网络活动。如果一个用户在日志中触发了几个以上的反序列化错误,这很好地表明他们要么是一个恶意的内部人员,要么是他们的证书被黑客攻击或窃取。你甚至可以考虑对不断触发反序列化错误的用户进行自动锁定等措施。

无论你采用哪种工具来对抗不安全的反序列化,请记住,在核心部分,这是可能被用户触摸过或操纵过的数据。永远不要相信它。

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

要进一步阅读,你可以看看OWASP对不安全的反序列化是怎么说的。你还可以通过Secure Code Warrior 平台的免费展示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

目录

下载PDF文件
显示资源
您想了解更多吗?

Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.

了解更多

Secure Code Warrior 在整个软件开发周期中保障代码安全,并营造将网络安全置于首位的企业文化。无论您是应用安全负责人、开发人员、信息安全主管,还是其他任何参与安全工作的人员,我们都能协助您的组织降低不安全代码带来的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子