目录
目录README.md

近年来开源社区的爆发式增长将各式供应链安全问题推向了风口浪尖,而学界、业界尚无形成系统、成熟的认知和应对方案。本赛题聚焦于近日来无可争议的热点——XZ项目的供应链投毒问题,提供相关社交协作、代码提交数据集,以期通过开源群智探索以泛在操作系统组件为代表的关键开源软件供应链投毒解决方案。

背景

XZ事件(即CVE-2024-3094)是首个高级可持续性威胁(APT)在开源世界中兴风作浪并造成广泛破坏性影响的实例,其允许攻击者在受影响的Fedora、Debian等Linux发行版系统中使用root权限执行任意命令,影响可谓是核弹级别。APT是一种隐蔽而复杂的网络攻击策略,攻击者使用高度定制化手段长期潜伏在目标系统中向特定目标攻击,往往由高度专业的黑客组织面向政府、军事机构等高价值目标实行,其复杂性和隐蔽性使得杀毒软件等传统自动化安全设施难以根除、长期防范。先前的破坏性APT攻击往往起于商业公司或政府机关的服务器失陷;在XZ事件中,攻击者创新性地通过社会工程手段,在海量开源参与者的众目睽睽之下取得了关键开源项目控制权,将精心构造、混淆的Payload插入测试用例并在操作系统软件包编译环境中触发,实属历史首例。

XZ是从2005年维护至今的LZMA压缩组件,它承载了Linux世界中诸多关键功能(例如Systemd和Linux内核模块压缩);而该项目维护者仅有Lasse Collion一人,日渐力不从心,正急切寻找新人开发者加入。攻击团队深刻理解并应用了社会工程学攻击的格言——”人是安全过程中最薄弱的环节” :Jia Tan通过两年完全正常的维护活动,在”水军”的推波助澜下,赢取了原维护者的信任,取得了XZ项目的支配权;而攻击团队更是发动聪明才智,为多个攻击行为(增加ifunc支持、在测试用例中植入Payload、要求发行版合并新版本)编造了完全合理的理由,并使用多个账号将其伪装成正常的开源协作行为。

为了帮助各位参赛者快速了解XZ事件的来龙去脉,我们还提供了XZ事件的时间线与技术分析文档,可以 在Wiki中查看

数据集

在平台提供的数据集之外,参赛者可以使用任意可以通过公开渠道获取的数据(例如推特、LinkedIn、IRC、Mailing List等)。

项目代码

说明

我们在GitLink平台上提供了 Jia Tan控制项目期间所有XZ发行版的源代码压缩包。

使用

在数据集中下载

GHArchive

说明

近年来XZ项目的开发协作主要在GitHub上完成。GHArchive数据集保存了2011年2月至今GitHub平台所有的 时间线API 数据,包括提交、议题、评论等,是XZ项目社交协作数据良好的数据源。当前GHArchive包含75亿条数据,来自6900万个GitHub用户,占用空间500GB。

使用
文件Dump(仅包含部分数据)

我们在GitLink平台为参赛者提供了攻击者Jia Tan在GitHub平台上的社交协作数据,导出格式为JSON。

在数据集中下载

Clickhouse

ClickHouse是性能惊人的列式存储关系型数据库。ClickHouse团队维护了GHArchive数据集的副本,数据集的结构和使用方法可以参考ClickHouse文档。数据集可以使用在线Playground或ClickHouse客户端进行连接:

clickhouse-client --secure --host play.clickhouse.com --user explorer

ClickHouse能以秒级的速度执行复杂的SQL查询,进行简单的可视化:

SELECT
    toYear(created_at),
    count(*),
    bar(count(*), 0, 1290803070, 30)
FROM gharchive.github_events
GROUP BY toYear(created_at)

┌─toYear(created_at)─┬────count()─┬─bar(count(), 0, 1290803070, 30)─┐
│               2011 │   19170783 │ ▍                               │
│               2012 │   45530638 │ █                               │
│               2013 │   82062781 │ █▉                              │
│               2014 │  134236583 │ ███                             │
│               2015 │  212280774 │ ████▉                           │
│               2016 │  320732050 │ ███████▍                        │
│               2017 │  412943059 │ █████████▌                      │
│               2018 │  479212075 │ ███████████▏                    │
│               2019 │  605635078 │ ██████████████                  │
│               2020 │  872478505 │ ████████████████████▎           │
│               2021 │ 1022277655 │ ███████████████████████▊        │
│               2022 │ 1290803070 │ ██████████████████████████████  │
│               2023 │  499243978 │ ███████████▌                    │
└────────────────────┴────────────┴─────────────────────────────────┘

13 rows in set. Elapsed: 9.496 sec. Processed 6.00 billion rows, 24.00 GB (631.79 million rows/s., 2.53 GB/s.)

并将查询结果导出为CSV文件:

SELECT *
FROM gharchive.github_events
WHERE (event_type = 7) AND (title ILIKE '%release_note%') AND (action = 'opened') AND (actor_login NOT ILIKE '%bot%')
INTO OUTFILE '/tmp/issues_release_notes.csv'
FORMAT CSVWithNames

17833 rows in set. Elapsed: 16.305 sec. Processed 174.07 million rows, 71.27 GB (10.68 million rows/s., 4.37 GB/s.)

需要注意,ClickHouse使用的SQL语法 不是ANSI SQL的超集 , 与MySQL等差别较大,具体请参考 ClickHouse SQL Reference

Google BigQuery

参赛者同样可以通过Google BigQuery公共数据集使用GHArchive的完整版本。由于如下原因,我们并不建议大多数用户使用BigQuery:

  • Google在中国内地没有业务,访问和结算较为麻烦。
  • BigQuery同样不使用标准SQL语法。
  • 按年、月、日拆分为多个子数据集,需要额外的遍历步骤。

如果参赛者乐于使用BigQuery公共数据集,可以参考GHArchive文档

邮件列表

说明

XZ项目的交流讨论主要通过邮件列表进行,而原维护者在邮件列表中收到的多封催促邮件是移交项目管理权的重要推手。

使用

XZ的邮件列表存档托管在 mail-archive.com/xz-devel@tukaani.org 上。由于爬取mail-archive以及向公众提供邮箱地址可能有违反mail-archive的Term of Use风险,因此烦请各位参赛者各显神通。

关于

【竞赛赛题】XZ事件供应链攻击特征挖掘与防御

48.0 KB
邀请码