開發安全議題隨著資安意識抬頭而受到熱烈關注,避免在開發過程曝露重要的系統帳密資料,已成為確保軟體開發安全的規範,一旦這類資料曝光,有可能導致極為嚴重的後果。

例如,上週資安業者JFrog揭露不慎外洩的GitHub令牌(Token)事故,那就是PyPI套件共享平臺管理者不慎外洩GitHub使用者帳號的個人存取令牌,JFrog特地為此發文警告,表示差點發生史上最嚴重的供應鏈攻擊。因為一旦有人取得,就有機會得到Python、PyPI、Python軟體基金會(Python Software Foundation,PSF)的GitHub管理者權限。PyPI資安團隊接獲通報後,隨即註銷此令牌,並進一步進行檢查,確認尚未出現濫用的跡象。

這個令牌能存取91個Python持有的GitHub儲存庫、55個Python Packaging Authority(PyPA)的儲存庫、42個Python軟體基金會的儲存庫,以及21個PyPI的儲存庫。

研究人員特別提及這個令牌曝光可能帶來的後果,有可能影響整個Python基礎設施,並導致供應鏈攻擊。

其中一種手法是將惡意程式碼埋藏於名為CPython的基礎程式庫儲存庫當中,這是以C語言打造的Python直譯器,一旦有人這麼做,形同在各式Python程式植入後門。

另一種可能濫用令牌的攻擊手法,則是將惡意程式碼植入PyPI的倉庫(Warehouse)程式碼,由於這種程式碼的功能是管理PyPI套件管理器,這麼做攻擊者就有機會操縱熱門PyPI套件,並能埋入惡意程式碼。

而對於這起事故發生的經過,研究人員表示,他們使用自家公司開發的身分憑證掃描引擎進行偵測,結果在其中一個公開的Docker Hub儲存庫發現重大問題,因為在當中的容器找到前述的私有存取令牌(Personal Access Token,PAT),而這個令牌存在於已經完成編譯的Python執行檔裡。

究竟為何開發人員造成這樣的情況,研究人員推測,開發者只是單純的想要將PAT納入原始碼,並執行Python指令碼將原始碼編譯成PYC二進位檔,然後清除了原始碼當中的PAT,最終將原始碼及二進位檔一併推送到Docker映像檔。

研究人員指出,這起事故代表了開發人員已留意原始碼是否存在相關機密,並透過IDE或是其他開發工具進行檢測來避免外洩,但這樣的情況無法確認已編譯的檔案是否曝險。對此,他們呼籲開發人員應採用新版的GitHub令牌,並限縮能夠存取的應用程式及資源範圍。

對此,PyPI也公布事故發生的經過。他們在6月28日接獲JFrog的通報,隨即註銷令牌並展開調查,這個令牌在去年建立,曾在去年3月3日、7月20日因推送PYC檔案到Docker Hub而曝光,後來到了今年6月21日因為某些原因才移除相關檔案。

曝光令牌的開發人員Ee Durbin表示,他在開發cabotage-app專案部分程式碼基礎(codebase)的時候,面臨GitHub的API限速的情況,因而偷懶將自己的PAT加入本機檔案,並不慎在PYC檔案納入機密。由於本機應用程式在共享磁區的Docker環境執行,含有PAT的PYC檔案因特定配置檔案未過濾而流出。

熱門新聞

Advertisement