ブログ一覧に戻る
ベストプラクティス2026年6月24日4分で読めます

GitHubアクション「codfish/semantic-release-action」が侵害され、CI/CDシークレットを窃取

Compromised GitHub action codfish/semantic-release-action steals CI/CD secrets

ベストプラクティス

この記事のポイント

【なぜ重要か】 2026年6月24日、広く利用されているGitHubアクション「codfish/semantic-release-action」が攻撃者による不正コミットの強制プッシュによって侵害された。v2〜v5を含む主要な浮動タグ16個が悪意あるコミットに書き換えられており、これらのタグを参照するワークフローはすべて次回のCI実行時に攻撃者のコードを自動的に取り込んで実行してしまう。このアクシ...

【なぜ重要か】 2026年6月24日、広く利用されているGitHubアクション「codfish/semantic-release-action」が攻撃者による不正コミットの強制プッシュによって侵害された。v2〜v5を含む主要な浮動タグ16個が悪意あるコミットに書き換えられており、これらのタグを参照するワークフローはすべて次回のCI実行時に攻撃者のコードを自動的に取り込んで実行してしまう。このアクションは2019年以来semantic-releaseをGitHub Actionsに組み込む標準的な手段として使われており、自動リリースワークフローではGITHUB_TOKENやNPMのパブリッシュ権限を持つNPM_TOKENが利用されるケースが多く、攻撃者の標的として最適な環境となっている。

【ポイント】

  • タグの乗っ取り手法: Gitタグはデフォルトで保護されていないため、攻撃者はリポジトリへのプッシュ権限を悪用してタグを強制的に別コミットへ付け替えた。GitHubActionsはワークフロー実行時にタグを解決するため、ワークフローを書いた開発者には一切通知されない。
  • 偽装工作: 悪意あるコミットは2023年11月の実在するコミットのメタデータ(作者情報・日付・コミットメッセージ)をそのまま流用しており、git logを流し見しただけでは発見しにくい。また元々のDockerfile等のファイルはそのまま残されており、ファイル一覧を見ても異常に気づきにくい構造になっている。
  • ペイロードの動作: action.ymlがコンポジットアクションに差し替えられており、正規の処理を実行したうえでif: always()で必ず起動するステップが追加されている。Bunランタイムを導入した後、781,580バイトの難読化されたJavaScript(index.js)を実行してシークレットを窃取する。
  • Miasmaキャンペークとの関連: ペイロード内には「thebeautifulsnadsoftime」という文字列が埋め込まれており、2026年6月10日に公開流出したクレデンシャル窃取ツールキット「Miasma」のデッドドロップマーカーと一致する。Miasmaは従来型のC2サーバーを使わず、GitHubのコミット検索APIを定期的に照会してコマンドを受け取りeval()で実行する仕組みで、外部への不審な通信を生じさせにくい設計になっている。同マーカーはnpmの@redhat-cloud-servicesスコープへの攻撃など他のキャンペーンでも確認されている。
  • 影響を受けるタグと安全なタグ: 侵害されているのはv2(v2.2.1)、v3(v3.0.0〜v3.5.0)、v4(v4.0.0〜v4.0.1)、v5(v5.0.0)。一方、v1.0.0〜v1.10.0およびv2.0.0は安全であることが確認されている。

【まとめ】 「codfish/semantic-release-action」の主要タグを参照しているすべてのワークフローは、次回CI実行時に攻撃者のコードが動作する状態にある。直ちにワークフロー内のタグ参照を確認し、侵害されていないバージョン(v1系またはv2.0.0)への切り替え、もしくはコミットSHAによる固定ピン留めを実施することが急務である。Aikidoユーザーは管理画面でマルウェアスキャンを手動実行し、未使用者も無料プランで即時スキャンが可能。

原文を読む

Aikido Security Blog

英語で詳細な技術情報を確認

原文を読む

コメント・質問

この記事についてのコメントや質問を投稿できます

コメントを投稿するにはログインが必要です

ログインする

読み込み中...