Python Pickle不安全eval()执行远程代码漏洞



信息提供:

安全公告或线索)提供热线:51cto.editor@gmail.com

漏洞类别:

远程代码漏洞

攻击类型:

远程攻击

发布日期:

2002-07-17

更新日期:

2002-07-26

受影响系统:

Python Software Foundation Python 1.5.2

安全系统:

Python Software Foundation Python 2.2.1
Python Software Foundation Python 2.2
Python Software Foundation Python 2.1.3
Python Software Foundation Python 2.1.2
Python Software Foundation Python 2.1.1
Python Software Foundation Python 2.1
Python Software Foundation Python 2.0.1
Python Software Foundation Python 2.0
Python Software Foundation Python 1.6.1
Python Software Foundation Python 1.6

漏洞报告人:

Jeff Epler

漏洞描述:

BUGTRAQ  ID: 5255
Python是一款开放源代码的,面向对象的程序设计语言。Python提供一个称为pickle的标准模块,可以把Python对象转换为字符串表示,这个过程称为"pickling",而从对象的字符串表示恢复对象称为"unpickling"。
pickle模块的实现在"unpickling"过程缺少对数据数据的检查,远程攻击者可以利用这个漏洞以Python应用程序进程的权限执行任意Python命令。
Python 2.0中使用了eval()函数来把Python对象转换为字符串表示,不过eval()存在设计漏洞,攻击者可以提交类似"S''*__import__('os').system('echo 0wn3d')\np0\n." 调用以Python应用程序进程来执行任意Python命令。
此漏洞的利用非常依赖于Python应用程序是否可以接收来自外部提供的"pickle"字符串。

测试方法:

解决方法:

目前厂商已经在Python 2.1版中修复了这个安全问题,请到厂商的主页下载:
http://www.python.org/



评论关闭