目前,由阿里巴巴集团安全部主办、SecZone开源 安支持的『功守道』软件供应链安全大赛 · PE二进制赛季已圆满结束。
0. 综述:办公软件系统供应链安全
软件供应链安全态势,以及阿里安全『功守道』比赛整体的目标和愿景,请参考系列前篇:上篇/下篇。一言以蔽之,就是针对构成互联 全链路的软件系统中,以往被无条件信任、但实则仅仅因为曾被集体忽视的薄弱环节,尝试挖掘各种非传统的攻击面、攻击姿势,激发应对威胁的规模化前摄性缓解方案研究。
每个赛季,我们关注软件供应链中的一个关键环节。在之前结束的赛季中,我们探讨了针对互联 最基础软件设施——Linux操作系统、基础开源软件组件的可能风险。而在刚刚结束的第二赛季中,我们关注的场景放在了与“人”更贴近的方面。
在近两年,运行在个人电脑上的终端软件被从源头进行污染,造成的软件供应链安全事件发生越来越稠密。2015年9月,XCode应用污染,非正规渠道分发拷贝含有对开发工具链的污染;2017年8月,远程终端软件XShell爆出上游污染,会进行管理员账 密码搜集泄漏;2017年9月,CCleaner被黑客篡改,植入了远程恶意代码下载器。这三类客户端软件恰好分别对应了企业员工办公和开发环境下使用的三类客户端软件,我们的本次比赛也从这三个场景切入探讨了这个领域内的潜在意外风险。
1. 威胁定义
Windows上软件的分发一般采用PE二进制程序文件的形式,这决定了从本质上讲,相比于海量开源软件代码,这一赛季中载体内攻击载荷的隐蔽性、开放性更强,威胁场景也更为泛化:
对于给定的二进制文件,你将采用静态还是动态的方法去扫描或测试?针对有可参考源代码的二进制分发包,是否有能力通过同源性判断察觉异样?这是道开放题目。
PE二进制赛季共两轮分站赛。相比于C源代码赛季按照难度递进方式划分的三轮分站赛,PE赛季则针对不同的场景进行设计,两轮比赛分别针对“软件供应链上游(生产者)”和“软件供应链下游(消费者)”场景设计。而受制于比赛对抗形式和二进制特殊性限制,我们在这两个子场景上都不强调覆盖问题的全面性,而聚焦在一个特定的问题上。
软件供应链上游场景
企业作为软件和服务供给侧,软件开发者是上游源头角色,而使用工作电脑进行开发的的工具链(如各类IDE软件、开发库),就是处于软件供应链最上游的存在。
针对个人开发环境,如果能够污染到开发集成工具链,那么对于企业最核心的资产——代码,就能够最直接地获取甚至篡改。因此在这个场景下,我们将聚焦在一个特定的开发工具上,对开发工具链安全进行反思。
软件供应链下游场景
企业员工办公电脑上当然有很多的高价值资产,如各种文档文件;但最重要的资产永远是企业线上环境的稳定和安全,从这角度说,员工直接无条件信赖使用、但潜在风险最高的软件,就先要说到远程连接客户端软件。如果能够污染到企业运维人员的远程连接终端程序,那么不止能够有机会掌控本应加密渠道内传送的信息,甚至可以将隔离的线上生产环境撕开一个入侵的口子。
此外,考虑从一个看似无害的客户端软件,从其大量正常操作中区分辨识出可疑的行为,那么最高级的隐藏性就体现为对载体程序原有功能、逻辑的复用。沿此思路,在一个 络客户端软件中潜藏的信息获取和 络外传泄漏最难发现,因此也是我们重点考察的一个赛点。
2. 比赛具体设置
赛题环境
每一轮分站赛,我们都将把目标设定到一到两个代表性软件,以及围绕该软件的若干支撑或扩展程序、组件上。比赛目标设置为Windows 32位。
软件本身可能由一个或多个可执行文件、动态链接库文件组成,相关程序、组件或扩展也为PE文件。所有相关PE文件都可能搭载有恶意代码。作为题目的软件不保证在直接执行时就会直接触发任意形式的恶意行为,所以解题队需要自行保证环境安全;而软件也不会进行无关的、极大提升解题难度的加壳保护;但可能会做贴近真实场景,对二进制程序进行一定程度上的置乱和混淆,以确保解题队通过简单的比对方法就能够进行问题定位。
形式与内容
释放最终二进制可执行文件的题目形式,根据前期设计,有多种备选方案,考量和取舍为:
软件供应链上恶意行为范畴
Windows上二进制程序向来是恶意程序的主要战场,各式各样的恶意行为不胜枚举;本次比赛不排斥使用典型已知恶意代码,但是均紧扣“软件供应链安全”主题以及上述场景。
类似的,业界与学术界针对PE程序进行分析的方法和研究,也非常丰富,涵盖了静态、动态,人工、自动。各种方法往往有其专长的适用问题域,也可以进行整合,这些都将是我们欢迎的思路。
因此,我们针对本赛季,从题目设计和解题预期两方面,都将不设严格的限制,不给出条例清晰的“考题范围”;但是为了有效引导出题脑洞方向,以及解题队知识积累、方法选用,我们做如下一些形式化要求:
赛题选用
软件供应链上游攻防战场
在本轮比赛中,我们唯一选定一款开源IDE软件:Code::Blocks,作为目标载体。该软件有扩展机制,并有一定数量的官方、第三方插件,软件本体、插件均为C++语言开发。软件本身工程模块化,若干功能模块为开源项目纳入,因此该软件本身功能代码基本自包含。
同时,围绕该软件展开,比赛指定若干开发工具链通用工具,也是该软件中污染代码可能针对的攻击目标、数据窃取渠道,包括开发库,代码版本控制终端软件等;除此以外,任何在终端电脑上可能存在的开发资源和工具,如各种语言的代码文件、工程文件,都是本轮比赛赛题可能针对的目标。
软件供应链下游攻防战场
在本轮比赛中,我们选定了两款开源客户端软件为目标载体。
其中一款是一个本地客户端软件ConEmu,它是很多第三方Windows系统上cmd替代软件的底层实现。作为一款终端,其中本身出现文件操作、 络行为都是貌似合理的。同时,该外壳类软件结合、集成有多类远程连接和shell工具,因此作为一个出口,可能在这个层面对多种基础客户端软件进行信息窃取或攻击。另外,该软件自身的实现,依赖于对其中执行进程的hook等不常见操作,攻击者可以借用、仿照这样的行为和逻辑,而解题方则面临从中进行恶意行为判别的更高难度。
另外一款是一个 络客户端软件eMule,它是一个老牌开源p2p下载管理软件。作为p2p软件,其自然地以磁盘文件访问甚至遍历、下载与本地资源上传、 络端口探测等行为作为基本常规操作,因此很多预想中的软件供应链攻击行为,例如搜索本地特定数据文件、代码资产文件并进行 络传出泄漏的模式,在这个软件中更难以区分,是一个具备很强欺骗性的对象。
3.预告
以上进行了本赛季的考量与详细设计陈述。本系列文章下篇,将对我们本赛季中最能代表场景意图、代表出题脑洞、代表迫切风险的精选题目进行讲解,同时还对头部解题队的解题思路进行公开,欢迎参阅。
另外,本次大赛截至目前,已经完成预选分站赛中的前两个赛季,还有最后一个赛季——Java开发生态安全赛季即将开始。该赛季聚焦类似互联 业界大量使用二三方Java开发包的企业中,开发生态上供应链安全问题。该赛季切入企业安全正面战场,欢迎来战!了解及 名请参见:https://softsec.security.alibaba.com/
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!