Python Software Foundationチームは、9月初旬に発生したGhostActionサプライチェーン攻撃で盗まれたすべてのPyPIトークンを無効化し、攻撃者がそれらを悪用してマルウェアを公開していなかったことを確認しました。
これらのトークンは、Python Package Index(PyPI)にパッケージを公開するために使用されます。PyPIは、Pythonのパッケージ管理ツールのデフォルトソースとして機能し、数十万のパッケージをホストするソフトウェアリポジトリです。
PyPI管理者のMike Fiedlerによると、GitGuardianの従業員が9月5日に、悪意のあるGitHub Actionsワークフロー(FastUUIDなど)がPyPIトークンをリモートサーバーに流出させようとしたことを報告しました。同じ日に別のGitGuardian研究者も追加の調査結果をPyPIセキュリティチームにメールしましたが、そのメッセージは迷惑メールフォルダに入ってしまい、インシデント対応が9月10日まで遅れることとなりました。
GitGuardianはサプライチェーン攻撃の全容を把握するとすぐに、影響を受けた570以上のリポジトリでGitHub issueを作成し、GitHub、npm、PyPIのセキュリティチームに通知しました。
多くのプロジェクト管理者は、GitGuardianからの通知を受けてPyPIトークンのローテーション、Actionsワークフローの変更の元に戻す、または影響を受けたワークフローの削除などの対応を行いました。PyPIチームは調査中にPyPIリポジトリが侵害された証拠を発見しませんでしたが、影響を受けたすべての公開用トークンを無効化し、プロジェクトオーナーに連絡してアカウントの安全確保を支援しました。
しかし、GitGuardianは当時、GhostActionキャンペーンで3,300以上のシークレットが盗まれたと推定しており、PyPI、npm、DockerHub、GitHub、CloudflareのAPIトークンや、AWSアクセスキー、データベース認証情報なども含まれていました。
「この分析により、Rustクレートやnpmパッケージなど、複数のパッケージエコシステムでトークンが侵害されていたことが判明しました」とGitGuardianは述べています。「いくつかの企業では、Python、Rust、JavaScript、Goのリポジトリが同時に悪意のあるワークフローの影響を受け、SDKポートフォリオ全体が侵害されていました。」

火曜日、FiedlerはGitHub Actionsを利用しているPyPIパッケージ管理者に対し、この種の攻撃への防御策として、長期間有効なトークンを短期間有効なTrusted Publishersトークンに置き換えるよう助言しました。さらに、アカウントにログインし、セキュリティ履歴に不審な活動がないか確認するよう呼びかけました。
「PyPIアカウントが侵害されていないことを確認した後、9月15日に影響を受けたプロジェクトの管理者に連絡し、状況を通知するとともに、トークンが無効化されたこと、今後のプロジェクト保護のためにGitHub ActionsとTrusted Publishersの利用を推奨しました」とFiedlerは述べています。
「攻撃者は、さまざまなリポジトリを標的とし、多くのリポジトリでPyPIトークンがGitHubシークレットとして保存されていたため、ワークフローを改変してそれらのトークンを外部サーバーに送信していました。攻撃者はいくつかのトークンの流出には成功しましたが、それらがPyPIで使用された形跡はありません。」
8月には、攻撃者がNxリポジトリ(非常に人気のあるビルドシステムおよびモノレポ管理ツール)で使われていた不備のあるGitHub Actionsワークフローを悪用し、別のサプライチェーン攻撃(s1ngularityと呼ばれる)を実行し、2,180アカウントと7,200リポジトリが影響を受けました。
その1か月前にも、Python Software Foundationは、偽のPython Package Index(PyPI)サイトを使ったフィッシングキャンペーンによって、ユーザーの認証情報が盗まれようとしていると警告していました。