
而對於這起事故發生的經過,研究人員表示,他們使用自家公司開發的身分憑證掃描引擎進行偵測,結果在其中一個公開的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檔案因特定配置檔案未過濾而流出。