テック技報最新号へ →
セキュリティ

GhostAction 第 2 段階:VS Code の自動タスクと偽フォントで開発端末を狙う手口への備え

侵害された GitHub アカウントのリポジトリに .vscode/tasks.json と「フォントに見せかけた JS」が追加され、フォルダーを開くと認証情報を盗み、5 分ごとに攻撃者のコマンドを実行する cron を登録する。ワークフローを消しても端末側の仕掛けは残る。

@MalwareBibleJP · 2026-10-21
#supply-chain#github#vscode#developer-endpoint#credential-theft#incident-response

何が起きたか

  • 第 1 段階(偽の「セキュリティ監査」ワークフローで Actions のシークレットを抜く)は GhostAction 系「偽セキュリティ監査」ワークフローが混入したときの初動 を参照。GitHub がこのワークフローの実行を止め始めた後、攻撃者は端末側に重心を移した。
  • 追加されるのは 3 つ:label: eslint-check・runOn: folderOpen・画面に出さない設定の .vscode/tasks.json、中身は Node.js の public/fonts/fa-solid-400.woff2、名前を変えた第 2 のワークフロー(lint.yml、ci-check.yml など)。
  • 偽フォントは ~/.aws/credentials、.npmrc、.pypirc、.git-credentials、.netrc、~/.kube/config、Claude / Gemini のログイン情報、SSH 秘密鍵を読み、ホーム全体からトークン形式の文字列を探して送る。さらに #ghc2 付きの cron を登録する。
  • ワークフローだけ消したリポジトリが、6 日後に第 2 段階を入れられた例がある。ファイルを消してもトークンは失効しない。

予防

  • VS Code の task.allowAutomaticTasks は既定の off のままにする。自動タスクを許可するかの確認が出ても、信頼できないリポジトリでは許可しない。
  • 見知らぬリポジトリは「信頼しない」モード(制限モード)で開く。
  • .vscode/tasks.json の runOn: folderOpen と、public/fonts などにある「フォント名なのに中身がテキスト」のファイルを点検する(点検コマンドは AI 開発ツール・エディタ設定ファイル経由の永続化をチェックする)。
  • .github/workflows をコードオーナーのレビュー必須にし、ワークフロー実行に承認を必須にし、force push を禁止する。

リポジトリが感染していたら

  1. きれいな別端末から、GitHub のセッション・PAT・OAuth 許可・GitHub App・SSH 鍵・デプロイキーを失効させ、パスワード変更とフィッシングに強い MFA を設定。セキュリティログで身に覚えのないサインインやトークン作成を確認する。
  2. 書き込み権限のある全リポジトリ(フォークや放置したものも)を探し、全ブランチからワークフロー・tasks.json・偽フォントを消す。
  3. Actions のシークレットと、履歴に一度でも入った認証情報をすべて入れ替える。
  4. クローンした人に知らせる。

開いてしまったかもしれない端末では

  1. task.allowAutomaticTasks が off か確認し、そのフォルダーを VS Code で開き直さない。
  2. macOS / Linux で crontab -l を見て、#ghc2 や不審な curl ... | bash の行を消す。
  3. cron が見つかったら、5 分ごとに任意のコマンドが動いていたと考え、他の居座りも調べる。再構築も検討する。
  4. 端末を隔離した後、きれいな端末から SSH 鍵、クラウド・npm・PyPI・GitHub のトークン、kubeconfig、AI ツールのログインとキーを入れ替える。

出典

X の元の投稿を開く