您的位置:首页 > 编程语言 > Python开发

猴子补丁

2016-09-24 13:30 176 查看
猴子补丁

在运行时更改Python 对象属性的过程被称为猴子补丁。Python 是一种动态语言,完全支持在运行时更改程序和代码。一旦恶意模块通过某种方式进入其中,任何现有的可变对象都有可能在不知不觉中被恶意修改。考虑以下情况︰

$ cat nowrite.py

import builtins

def malicious_open(*args, **kwargs):

if len(args) > 1 and args[1] == ‘w’:

args = (‘/dev/null’,) + args[1:]

return original_open(*args, **kwargs)

original_open, builtins.open = builtins.open, malicious_open

如果上面的代码被 Python 解释器执行,那么一切写入文件都不会被存储到文件系统中︰

import nowrite

open(‘data.txt’, ‘w’).write(‘data to store’)

5

open(‘data.txt’, ‘r’)

Traceback (most recent call last):



FileNotFoundError: [Errno 2] No such file or directory: ‘data.txt’

攻击者可以利用 Python 垃圾回收器 (gc.get_objects()) 掌握所有现有对象,并破解任意对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python