#FlattSecurityMagazine

セキュリティとプロダクト開発の今を伝えるメディア

GitHub Actions侵害対応を40名で実体験 - ソフトウェアサプライチェーン攻撃演習 開催レポート

こんにちは。GMO Flatt Security株式会社 セキュリティエンジニアの石川です。

先日、弊社オフィスにて「ソフトウェアサプライチェーン攻撃演習」を開催いたしました。本稿では、当日の様子と、参加者の皆さまからいただいたアンケート結果をもとに、演習の内容をご紹介します。

「ソフトウェアサプライチェーン攻撃演習」とは

「ソフトウェアサプライチェーン攻撃演習」は、「axios」や「Bitwarden CLI」など実際に発生した依存パッケージの侵害事例をもとに、開発チーム自らがインシデント対応と判断を実践する演習サービスです。本演習では、実際に発生した侵害事例の手口やタイムラインをできる限り忠実に再現し、CI等のログをどう読むか、どの時点までの実行が汚染されていたのか、漏洩した可能性のある認証情報をどうローテーションするのかといった一連の対応を、参加者自身の手で実際に辿ってもらう設計としています。チェックリストや座学の説明だけでは終わらせず、実際のインシデント対応に近い緊張感の中で取り組んでもらうことで、自社の対応体制のどこに課題があるのかを具体的に洗い出せるようになることを狙いとしています。

今回は、実サービスとしての導入をご検討いただく企業さま向けに各社数人ずつご招待し、簡易的な侵害シナリオを用いた集合演習として開催しました。

flatt.tech

当日の流れ

当日は40名の方にお集まりいただき、ブリーフィング、演習、解説の3部構成で、合計2時間のプログラムとして実施しました。

受付完了後、まずは今回の演習の位置づけと、参加にあたっての注意事項をブリーフィングでお伝えしました。演習環境では、調査で見つけた不審なコードを自分の端末で実行しないこと、見つけた通信先や認証情報に実際に触れないことなど、実環境での調査を模した制約をいくつか設けています。これらは、参加者に「本物のインシデント対応」に近い緊張感を持ってもらうための工夫でもあります。

ブリーフィングのあとは、いよいよ演習本番です。参加者にはそれぞれのPCから演習環境にアクセスしてもらい、与えられたシナリオをもとに自分たちで調査を進めてもらいました。

演習に取り組む参加者の様子

会場では、多くの方が黙々とターミナルやブラウザを行き来しながら、コミットログやワークフローの実行結果を追っていく姿が印象的でした。

参加者が手元で調査を進める様子

演習の終盤には、弊社のセキュリティエンジニアによる解説の時間を設け、参加者それぞれが辿り着いた結論と、実際に起きていた事象とを照らし合わせました。

解説の様子

演習シナリオのご紹介

今回の演習は、「自社で利用しているサードパーティのGitHub Actionsの一つが侵害されているかもしれない」という一報を受け取るところから始まります。そこで、自社のアプリケーションが本当に影響を受けているのか、影響を受けているとしたら何がどこまで漏れているのか、どのように対応していくべきなのかを調査します。

参加者はまず、自社アプリケーションを模したリポジトリの中身(アプリケーションの内容や構成等)を確認しつつ、GitHub Actionsのログや監査ログ等を調査しました。

GitHub Actionsのログ

監査ログの画面

また、数分おきにセキュリティリサーチャーによる侵害の分析結果が公開されます。これは、弊社のブログの簡略版のような、どのOSSのどのバージョンが侵害されたのか、検体を解析した結果どのような挙動をするのか、などが記載されています。つまり、本演習は実際に侵害が発生したタイミングのタイムラインを模した設計となっています。

調査を進めると、自社アプリケーションが使用していたサードパーティアクションは、特定のタイミングで「実際に発生した侵害事例と同様の攻撃手法で侵害されていたこと」が分かりました。

最終的に参加者は、原因特定・影響範囲・封じ込めと再発防止という三つの観点からインシデント事後レポートを作成しました。特に、「影響範囲」は、「影響が確定していること」と「残っているログや権限の関係上、今ある情報からは影響を確定できないこと」をそれぞれ分けて詳細に調査結果をまとめました。例えば、「認証情報が外部に送信されていることはわかるが、それが使われたかどうかを確認するには外部サービスの管理者権限が必要。開発者はその権限を持っていない。」などの回答が見られ、自分たちの権限で確認できる範囲とできない範囲を切り分けたうえで、後者については関係部署への確認を促すという実務的な結論に至ったチームもありました。

参加者の声

演習後に収集したアンケートには、多くの参加者の方々から具体的なフィードバックをいただきました。満足度に関する設問では高い評価をいただいた回答が大半を占めています。

満足度アンケート結果グラフ

学びとして評価いただいた点

もっとも多く挙がったのは、「自社がアプリケーションの設定を何も変更していなくても、外部のOSSが侵害されただけで影響を受けうる」というソフトウェアサプライチェーン攻撃特有の怖さを、身をもって体感できたという声でした。ある参加者からは、「フィードで少しずつ情報が明らかになっていく構成そのものが、実際のインシデント対応の緊張感に近く、学びが大きかった」という感想もいただいています。

技術的な発見として参加者から多く挙がったのが、一見信頼できそうに見える情報が実は偽装されうるという気づきです。ある参加者からは、「調査を進める中で、表面的な情報を鵜呑みにせず自社側の記録から事実関係を組み立て直すことの大切さが、途中で一度考え方を誤りかけたからこそ実感できた」というコメントをいただきました。

調査や報告に関する気づきも多く寄せられました。「監査ログの重要性を初めて実感した」という声が複数ありました。「ログを探したが何も出てこなかったこと自体が今後の手がかりになると気づけた」という感想もあり、また「限られた時間の中で報告内容をまとめるのが難しかった」など、実際のインシデント対応さながらの緊張感を評価する声も目立ちました。

今回の無償の集合演習と、有償版との違い

今回は、より多くの方にソフトウェアサプライチェーン攻撃演習を体感していただくことを目的に、簡易的な侵害シナリオを用いた無償の集合演習として開催しました。実際に弊社がサービスとして提供している有償版では、今回の演習内容に加えて以下のような内容をご用意しています。

  • ソフトウェアサプライチェーン攻撃の基礎解説: セキュリティ担当ではない方や、バイブコーディングで開発するエンジニアの方でも分かりやすくソフトウェアサプライチェーン攻撃の仕組みや過去の事例について説明いたします。
  • より発展的な攻撃手法を用いた演習: npmパッケージの改竄、複数リポジトリに渡る侵害等の様々な現実の侵害に近いシナリオをご用意しております。また、参加者の属性に合わせて難易度のご調整も可能です。
  • ヒアリングのもと、貴社環境を一定再現した演習環境: 使用しているCI/CDツールやソースコードの構成等をお聞きした上で、より参加者の方々が身近に感じやすい演習環境をご用意いたします。
  • より詳細な演習解説: 今回は時間の都合上、調査結果の要旨のみを短くお伝えしましたが、有償版では各チームの調査内容に対する個別のフィードバックや、実際の攻撃者がどのような手順で侵害を進めていたかの技術的な解説まで、踏み込んだ内容をお伝えいたします。

おわりに

今回の集合演習では、ソフトウェアサプライチェーン攻撃への対応力は知識として知っているだけでは身につかず、実際に手を動かして初めて見えてくる部分が大きいということを、参加者の皆さまに身をもって体感いただけたのではないかと思います。お忙しい中ご参加いただいた皆さま、改めてありがとうございました。

「ソフトウェアサプライチェーン攻撃演習」にご興味をお持ちいただいた方、社内展開に向けた資料をご希望の方は、ぜひお気軽にお問い合わせください。サービスの詳細は下記のページでもご案内しています。

flatt.tech

ここまでお読みいただきありがとうございました。