新型攻击:利用编译的 Python 字节码

关键要点

  • 新研究表明,首次通过执行 Python 字节码(PYC)文件进行的供应链攻击可能已经找到。
  • 恶意提交的数量在 Python 包索引(PyPI)中激增,安全工具只能检测源代码文件,容易遗漏此类攻击。
  • 攻击者可以通过编译代码规避传统的安全扫描,导致供应链风险增加。
  • 解决这一问题需要对开源库进行更严密的管理和检查。

根据 ReversingLabs 的新研究,发现了一种使用编译 Python 字节码(PYC)的新型攻击,这可能是首次通过 PYC文件进行的供应链攻击,攻击者利用这些文件以规避检测并加载恶意软件。

在一篇中,ReversingLabs的研究人员指出,这一发现恰逢对的激增至 Python 包索引(通常简称为 PyPI)。研究人员表示,执行 PYC文件的能力进一步增加了供应链风险,因为大多数安全工具只扫描 Python 源代码文件(PY),而会忽略这类攻击。

ReversingLabs 于 4 月 17 日向 PyPI 安全团队报告了名为 fshec2 的恶意包,当天该包便被从 PyPI仓库中移除。研究人员表示,PyPI 安全团队也认为这种攻击方式很有趣,并同意此前未见过此类案例。

“尽管这个恶意包及其相应的指令与控制基础设施并不先进,但它提醒我们,恶意软件作者可以轻易地避免源代码分析带来的检测,”研究人员写道。“像
fshec2 包中发现的加载脚本仅包含极少量的 Python 代码,并执行一个简单的动作:加载一个恰好是恶意的编译 Python 模块。”

ReversingLabs 通过静态分析发现了这些恶意代码,能够检测到它们是因为恶意软件开发者的配置错误和糟糕的 C2 基础设施设置。Tanium的首席安全顾问 Timothy Morris解释说,恶性行为者总是在尝试以各种新颖的方式将恶意代码置入机器。他表示,这种模糊化技术使得编译的代码能够通过安全扫描。

Morris说道:“捕捉这类代码需要对源代码进行静态分析,这非常困难,甚至是不可能的,因为它是编译的。”他还指出,增加开源代码维护者上传过程中的摩擦是可能的。这是更大供应链问题的一部分。组织需要清楚自己正在使用哪些开源库及其特定行为。

与扫描字节码相关的挑战已经被认识到,类似的问题也可能出现在 .net 字节码和 Java 中,这进一步凸显了管理软件供应链的诸多挑战。Coalfire的副总裁 Andrew Barratt 解释道,当我们处理传统编译代码时,实际上对结构没有可见性,而是依赖启发式、特征和更常用的 AI工具来判断文件是否恶意。如果我们考虑诸如 Python 这样的语言,它允许解释或准编译字节码操作,Barratt 说我们必须检查的项目数量会增加。

“ReversingLabs 识别出的 PyPI 恶意软件的新颖性让我想起了 DLL劫持的一些特征——本质上是恶意代码由一个受信的应用程序加载。”Barratt说道。“令人担忧的是,我们有攻击者故意针对代码库,使用这些技术显然是在寻找大规模部署向量,这开始让人感觉像是勒索软件活动的前奏。”

StackHawk 的联合创始人及首席安全官 Scott Gerlach 补充道,软件供应链攻击已成为一个没有尽头的故事。Gerlach表示,所有针对该问题的关注应该促使开发者定期检查他们使用的公共包和仓库。

“但这是个问题——像 PyPI 这样的仓库和包服务是由志愿者在业余时间运行的,”Gerlach 说。“如果我们真的希望这些广泛使用的资源变得更加安全,人

Leave a Reply

Your email address will not be published. Required fields are marked *