针对 Python 编程语言的新功能提议之一是希望为运行时添加“透明度”,并让安全和审计工具查看 Python 何时可能运行潜在危险的操作。
在当前的形式下,Python 不允许安全工具查看运行时正在执行的操作。 除非这些操作之一产生可能引起警报的特定错误,否则安全和审计工具就会视而不见,攻击者可能正在使用 Python 在系统上执行恶意操作。
PEP-551 为 Python 提出了两个新的 API
但在 Python Enhancement Proposal 551(PEP-551)中,Python 核心开发人员 Steve Dower 已经提出了两个新的 API,这些 API 将使安全工具能够在 Python 执行潜在危险操作时进行检测。
第一个是 Audit Hook API,它可以引发关于某些类型的 Python 操作的警告消息。
“这些操作通常在 Python 运行时或标准库的深处,比如动态代码编译,模块导入,DNS 解析或使用某些模块,如 ctypes,”Dower 说。
安全或审计工具可能会使用这些消息作为可疑事件的警告标志,并在真正造成危害之前标记或阻止 Python 进程继续。
第二种,验证 Open Hook API,这是是一种让 Python 运行时允许执行或篡改哪些文件的机制。 道尔解释道:
大多数操作系统都有一种机制来区分可以执行的文件和不可执行的文件。 例如,这可能是权限字段中的执行位,或者是文件内容的验证散列,以检测潜在的代码篡改。 这些是防止执行未被批准用于给定环境的数据或代码的重要安全机制。 目前,Python 在启动脚本或导入模块时无法与这些集成。
Python 的性能影响可以忽略不计
道尔去年8月份提出了 PEP-551。 早期的测试表明,添加这两个 API 所带来的性能影响可以忽略不计,“绝大多数基准测试显示速度在 1.05 倍之间”的结果。
最初的计划是让 PEP-551 搭载 Python 3.7,并计划于 2018 年 6 月中旬发布,但根据下个月发布的新功能列表,该提案没有进行最终削减。 但这并不意味着 PEP-551 不会在未来版本的 Python 中提供。