博客

安全编码技术:Zip 库的默认行为可能导致远程代码执行

November 13, 2017
Pieter De Cremer
从上方俯瞰,一堆各式各样的开口书籍堆叠成螺旋状,形成了一个类似隧道的漩涡。

本周我们将讨论 Zip 库的默认行为。如果你是一名应用程序开发人员,很可能已经使用过它。互联网上下载的大多数资源都是 zip 格式,这很合理;压缩数据体积更小,下载速度更快,且占用的带宽更少。

如果需要更具体的例子:游戏纹理、键盘自动补全的语言包等。许多资源并非随应用程序自动打包,而是后续下载的。

但使用此功能时要小心,zip 归档文件中的文件名可能包含路径遍历信息。解压时,这会导致文件被创建在目标目录之外。这种做法通常是为了覆盖现有文件。

Zip Archives

假设我们有一个包含以下两个文件的 zip 归档:

file1
  ../file2

当解压此归档时,file1 会按预期解压到解压目录中。然而,file2 会被写入到我们指定解压目录的上一级目录中。

因此请务必小心,如果你的 zip 库没有妥善处理这种情况,它将允许攻击者在系统中写入任意文件。请务必检查你的库是否安全,这条经验法则适用于任何库,尤其要检查你的 zip 库针对此类文件的默认行为。

让我们演示一下在 Android 中未妥善处理此情况的后果。在 Android 中,使用的是 Java Zip 库 (java.util.zip),该库默认允许上述路径遍历。

Android 的 Dalvik 可执行格式 (.dex) 对单个文件包含的类数量有限制。需要更多类的应用可以使用自 API 21 级(Android 5.0 Lollipop)起添加的 MultiDex 支持库。该库将辅助 .dex 文件保存在应用程序的数据目录中,该目录可由应用用户写入,且当需要 .dex 文件时,此代码会被加载并执行。

这意味着攻击者可以通过恶意 zip 归档覆盖 .dex 文件来对其进行修改,更糟糕的是,该文件会被加载并执行,从而导致远程代码执行漏洞。这不仅仅是一个理论示例,在下载量超过 1 亿次的“会说话的汤姆猫”应用中已得到证实。这是在 Black Hat 上演示该漏洞的视频。

Talking Tom

请务必检查你的 zip 库的行为,以了解其不安全性。如果无法在 zip 库中禁用路径遍历,请确保在解压每个条目之前验证其名称。名称应进行规范化,且生成的路径应位于你想要解压归档的目录内。顺便提一下,你还应该检查解压后归档的总大小以防止 zip 炸弹,但这将是另一周的话题。

如果你想 挑战一些路径遍历题目 或想测试你的安全编码技能,请查看我们的平台。

下次见,记住,要么安全编码,要么不写代码!

- 我们可以向 zip 中注入一个文件名以任意数量的 " ../ " 为前缀的文件
- 如果 zip 库没有妥善处理这种情况,它将允许我们写入到目标解压目录之外
- 如果 zip 文件不可信,这会给攻击者提供任意写入漏洞

https://www.blackhat.com/docs/ldn-15/materials/london-15-Welton-Abusing-Android-Apps-And-Gaining-Remote-Code-Execution.pdf

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。