近期開源圈 xz Utils 安全事件讓業内震驚,目前幕後黑手仍然沒有查明。
簡單來說,xz Utils 入侵者在潛伏兩三年時間中,通過社會工程的方式,先獲得了項目的進階權限,進而執行一系列錯綜複雜的操作。
(完整攻擊時間線檢視:
https://www.oschina.net/news/286008/xz-timeline)
可以看到,在這個過程中,入侵者首先急于實作的是提權,這個門檻是較大的,是以可以看到他們在開源項目中一邊用真實的代碼貢獻去付出,一邊以此為 “籌碼”,将自己在項目中的身份提高,同時不斷變着法一而再再而三去催促要接管項目權限。
這樣的事情其實在開源項目中并不是孤例,這兩天 OpenSSF 和 OpenJS 基金會也呼籲所有開源維護者對這樣的社會工程滲透接管模式保持警惕,識别早期出現的威脅模式,并采取措施保護開源項目。
OpenJS 基金會跨項目委員會收到了一系列可疑的電子郵件,這些電子郵件懇求 OpenJS 采取行動更新其 JavaScript 項目,以 “解決任何嚴重漏洞”,但沒有提及具體細節。
電子郵件作者希望 OpenJS 指定他們作為該項目的新維護者,盡管他們之前幾乎沒有參與過該項目。
OpenJS 團隊還在另外兩個項目中發現了類似的可疑模式,并立即向各自的 OpenJS 上司人以及美國國土安全部 (DHS) 下屬的網絡安全和基礎設施安全局 (CISA)。
以下社會工程接管中的可疑模式值得關注:
- 社群中相對不知名的成員對維護者或其托管實體(基金會或公司)友好、積極和持續的渴求。
- 請求由新人或未知人員提升為維護者狀态。
- 來自社群中其他未知成員的認可,他們也可能使用虛假身份,也稱為 “sock puppets”(白手套)。
- 包含 blob 作為制品的 PR。例如,XZ 後門是一個精心設計的檔案,作為測試套件的一部分,與源代碼相反,該檔案不是人類可讀的。
- 故意混淆或難以了解源代碼。
- 安全問題逐漸更新。例如,XZ 問題一開始是用 fprintf () 相對無害地替換 safe_fprintf (),看看誰會注意到。
- 偏離典型的項目編譯、建構和部署實踐,可能允許将外部惡意負載插入 blob、zip 或其他二進制制品中。
- 錯誤的緊迫感,尤其是當隐含的緊迫性迫使維護者降低審查的徹底性或繞過控制時。
這些社會工程攻擊正在利用維護者對項目和社群的責任感來操縱它們,需要注意互動給你帶來的感受,能夠讓你産生自我懷疑、不足感、對項目做得不夠等的互動,可能此時你正在被社會工程攻擊。
References
https://openjsf.org/blog/openssf-openjs-alert-social-engineering-takeovers
https://www.oschina.net/news/286008/xz-timeline