CamoLeakが示す開発環境の急所
セキュリティの脅威は今や、アプリケーション本体だけでなく開発者のローカル環境そのものにも向けられている。2025年にCVSS 9.6の深刻度で報告された脆弱性「CamoLeak」では、GitHub Copilotの弱点を突かれることで、.envファイルなどの機密情報が外部から取得可能な状態に置かれることが明らかになった。
また、セキュリティリサーチャーによる実証実験では、SNSで話題になったMCP(Model Context Protocol)サーバーをインストールすると、開発者と同等の権限で動作するAIエージェントが認証情報を外部に送信してしまう事例が示された。Kyohei氏は「エージェントは開発者と同じ権限で動作するため、.envの中身も容易に取得できてしまう」と警告する。
さらに、npmエコシステムを標的にした自己増殖型ワーム「シャイフルド(Shai-Hulud)」は2025年9月から猛威を振るった。侵害されたパッケージは800以上、流出したGitHubトークンは775個、悪意あるリポジトリは2万5000件超にのぼる。pdfmeの開発・運営を行うKyohei氏も「自身が感染源になるかもしれないと、非常に恐怖を感じた」と振り返る。
この対策として、npmとpnpmの双方でignore-scripts=trueを設定し、インストール時のスクリプト実行を無効化する手法がある。なお、pnpm v10からはこれがデフォルト設定となった。また、min-release-ageを設定し、リリースされたばかりの新しいパッケージを一定期間インストールしないように制限することも有効な防御策となる。
コーダーから「監督者」へ、反脆弱な開発を実践する手法
個人として反脆弱な状態を目指す上で、最も重要なマインドセットの転換は「コーダーから監督者へ」シフトすることだ。仕様をコードに変換する実作業はAIに任せ、開発者はセキュリティと品質を担保するゲートキーパーとしての役割を担う。
Kyohei氏が反脆弱な状態を目指す上で実践する習慣は以下の3つだ。
- AIの出力を即座に受け入れず、あくまで「ドラフト(下書き)」として扱う
- SQLインジェクション対策など、セキュリティ要件をプロンプトで明文化する
- テストと検証ツールを活用して「ループを閉じる(検証を自動化して完結させる)」
具体的な検証ツールとしては、以下の3つが挙げられた。これらはいずれも無料で導入可能だ。
- Semgrep(またはSonarQube):静的コード解析(SAST)
- npm audit / OSV:依存ライブラリの脆弱性チェック(SCA)
- TruffleHog:シークレット(機密情報)の検出
また、チームとしての取り組みでは、CI/CDパイプラインへのSASTやSCAの組み込みが鍵となる。脆弱なコードが出荷される前にフィードバックを受けるまでの時間、すなわち「MTTG(Mean Time to Guidance)」を短縮することで、四半期ごとのペネトレーションテスト依存から脱却できる。
加えて「ガードレール」の構築も重要だ。開発を禁止するのではなく「安全な道」を整備するという発現に基づき、たとえば『Claude Code』の/sandbox機能のように、サンドボックス環境でファイルシステムとネットワークを分離し、接続先を許可リストで制限するアプローチが有効である。
Kyohei氏は「セキュリティチームは開発を制限する『取締役』のような存在ではなく、開発者が安心してAIとともに開発できる環境を設計する『支援役』に回るべきだ」と言い切る。
最後に同氏は、「AIに使われるのではなく、AIを使いこなそう。自分のコードが裏で何をしているかを正しく理解することが、反脆弱への第一歩だ」と、生成AI時代の開発者に求められる姿勢を示し、セッションを締めくくった。
