安全研究

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

发布日期: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
描述:
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"字符串。

<*来源:Jeff Epler (jepler_at_unpythonic.net)
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-07/0188.html
*>

建议:
厂商补丁:

Python Software Foundation
--------------------------
目前厂商已经在Python 2.1版中修复了这个安全问题,请到厂商的主页下载:

http://www.python.org/

浏览次数:2878
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障