GhostAction 第 2 段階:VS Code の自動タスクと偽フォントで開発端末を狙う手口への備え
侵害された GitHub アカウントのリポジトリに .vscode/tasks.json と「フォントに見せかけた JS」が追加され、フォルダーを開くと認証情報を盗み、5 分ごとに攻撃者のコマンドを実行する cron を登録する。ワークフローを消しても端末側の仕掛けは残る。
何が起きたか
- 第 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 を禁止する。
リポジトリが感染していたら
- きれいな別端末から、GitHub のセッション・PAT・OAuth 許可・GitHub App・SSH 鍵・デプロイキーを失効させ、パスワード変更とフィッシングに強い MFA を設定。セキュリティログで身に覚えのないサインインやトークン作成を確認する。
- 書き込み権限のある全リポジトリ(フォークや放置したものも)を探し、全ブランチからワークフロー・
tasks.json・偽フォントを消す。 - Actions のシークレットと、履歴に一度でも入った認証情報をすべて入れ替える。
- クローンした人に知らせる。
開いてしまったかもしれない端末では
task.allowAutomaticTasksがoffか確認し、そのフォルダーを VS Code で開き直さない。- macOS / Linux で
crontab -lを見て、#ghc2や不審なcurl ... | bashの行を消す。 - cron が見つかったら、5 分ごとに任意のコマンドが動いていたと考え、他の居座りも調べる。再構築も検討する。
- 端末を隔離した後、きれいな端末から SSH 鍵、クラウド・npm・PyPI・GitHub のトークン、kubeconfig、AI ツールのログインとキーを入れ替える。
出典
- @MalwareBibleJP · 2026-10-21
- OpenSourceMalware「GhostAction Copycats PolinRider by Hiding a Stealer in a Fake Font File」: opensourcemalware.com
- GitGuardian: blog.gitguardian.com