Jia Tan 时区分析
XZ 事件是光天化日之下的供应链攻击,无意发现这一后门的微软工程师 Andres Freund 甚至以为自己因为昨晚没睡好而看花了眼。这场攻击事件没有像 Stuxnet 病毒被媒体广为报道,但它确实为全球的计算机埋下了一颗定时炸弹,好在在引爆前就被及时发现了。这场攻击引发了一场网络侦探狂欢,幕后主使 Jia Tan 究竟为谁?由于所有信息均为公开,这使得时区分析成为可能。《连线》杂志也采访了安全研究人士,探讨了幕后主谋之谜。
GitHub Events API 提供了用户事件的历史记录,它记录的是服务器时间,因此不必担心时间被篡改。(一个对 git commit 秒数分布分析 表明本地时间大概率没有遭到篡改,因为人类挑选随机数非常糟糕,势必会造成分布不均。)然而该 Events API 只提供 90 天以内的 300 条历史记录,因此不能回溯至账号创建之日。在这里分享一个我写的抓取某一特定用户事件记录的简易 python 脚本。
ClickHouse 提供了一个较为全量的历史记录,可作为 GitHub Events API 的替代,但是可能由于性能原因,它只在网页前端输出 200 条左右的数据。通过对这些数据制作柱状图分析,发现 14 时是 JT 活动的短暂波谷,因此推测该时间可能为中午吃饭午休时间,JT 很可能位于 UTC+2 地区,这与 Rhea 的结论相同。但是这并不严谨,通过 SQL 奇景淫巧的语法,我获取到了 ClickHouse 该用户的全量事件记录。下面就是对数据的图表处理。
这里就看不出14时的波谷了,然后我在给它做个“CT 切片”,逐月看看都在哪个小时上网。以下动图的静态图可以在此处获取。
可以发现 JT 网络活动与 git commit 时间几乎是匹配的,表明可能他没有在时间上作假。JT 的作息实在是太规律了,以至于与大多数开源志愿者都不匹配,甚至和大公司雇佣劳动者都不匹配(比如在 Github 上 Microsoft 和 Mozilla 的员工)。换言之,JT 可能是被雇佣的。因此他不太可能位于 UTC+8 时区。他基本从 12 时开始活跃,到了投毒的最后几个月开始全面发力,活跃小时跨度也越来越大。甚至一向规律作息的他,在 3 时活跃了一下。有从语言入手的分析称,加 JT 英语表达特色和本土语言人无异,从未有过语法错误。从时区上,确实无法排除是英国人的可能性。
JT 主要在周一到周五网络活动从侧面印证了他不是闲暇之余的志愿者,这也是我反对这篇文章将 JT 归因为 UTC+8 的原因——它存在本质上的矛盾,闲暇志愿者居然会选择在下班后疯狂活跃,却在周末保持静默。另外,实在很难相信这次后门来自业余作者的攻击,这就像几只猴子随手能打出莎士比亚全集那样荒谬。
说了那么多,最终还是以一张直观的散点图作为本文的结尾,也可以对比看看推特上 @birchb0y 的类似工作(与本文使用 Github Event 不同,@birchb0y 使用 commit 历史记录处理数据)。