本文へ移動
情シスのミカタ
ニュース約6分で読めます

GhostActionが第2段 VS Codeの自動タスクと偽フォントで鍵を窃取

GitHubでワークフローを使って秘密を盗むGhostActionに、第2段が見つかりました。94のリポジトリに、VS Codeでフォルダーを開くと動く設定と、フォントに見せかけた盗みのコードが入れられています。手口、動く条件、開発者と情シスが今日確かめることを、研究者の公開から整理します。

公開 情シスのミカタ編集部AIにより執筆チェック済み
文字
GhostActionが第2段 VS Codeの自動タスクと偽フォントで鍵を窃取

この記事のまとめ

  • 研究者のOpenSourceMalwareは10月16日、GhostActionの第2段を公表しました。94のリポジトリに、VS Codeで開くと動く盗みのコードが入っていました。
  • フォントに見せかけたファイルが、AWSやnpm、SSHの鍵、ClaudeやGeminiのログインなどを集めて送り、5分ごとに命令を受けるcronを入れます。
  • ワークフローを消すだけでは足りません。GitHubの権限を取り消し、2つのファイルを消し、開いたパソコンのcronと鍵を確かめます。
こんな方に#20代#30代#40代#50代実務

GitHubのワークフローを使って秘密を盗む攻撃「GhostAction」に、第2段が見つかりました。研究者のOpenSourceMalwareは2026年10月16日、94のリポジトリに、VS Codeでフォルダーを開くと動く設定と、フォントに見せかけた盗みのコードが入れられていたと公表しました。盗む場所が、GitHubのCIから開発者のパソコンへ広がっています。

何が見つかったか

GhostActionは、盗んだGitHubの権限で、偽の「security audit」のワークフローをリポジトリに入れ、CIの秘密とgitの履歴の中の認証情報を盗む攻撃です。10月8日からの動きは、GitHubの346リポジトリに偽の監査ワークフロー、クラウドの鍵を窃取にまとめています。

OpenSourceMalwareによると、今回の第2段は、リポジトリに3つのファイルを足します。VS Codeの設定のファイル、フォントに見せかけたファイル、そして2つ目のワークフローです。

入れられたもの 中身
.vscode/tasks.json eslint-checkという名前の作業(タスク)。フォルダーを開いたときに、画面に出さずに動く設定
public/fonts/fa-solid-400.woff2 名前はWebフォントだが、中身は38行のNode.jsのプログラム。認証情報を集めて送る
2つ目のワークフロー lint.yml、ci-check.ymlなど7つの名前。第1段より多くの種類の認証情報を探す
OpenSourceMalwareのブログの『The launcher』の節。.vscode/tasks.jsonに、ふつうのリンティングに見えるタスクが1つあり、runOn: folderOpenがきっかけで、フォルダーを開くとVS Codeがタスクを動かし、表示の設定で目に付かないようにしていること、調べた79のリポジトリで同じファイルだったことが書かれている。下にtasks.jsonの中身があり、labelがeslint-check、commandがnode ./public/fonts/fa-solid-400.woff2、isBackgroundとhideがtrue、presentationのrevealがnever、runOptionsのrunOnがfolderOpenになっている
研究者が公開した、第2段のVS Codeの設定(tasks.json)出典: OpenSourceMalware「GhostAction Copycats PolinRider by Hiding a Stealer in a Fake Font File」(引用)

見つけたのは、Jamf Threat Labsの研究者です。北朝鮮の攻撃とされるPolinRiderの被害を探す中で、同じ手口の設定を持つ94のリポジトリを見つけました。ただし、送り先のIPアドレスがGhostActionのサーバーと同じで、中身も難読化されていませんでした。研究者は、PolinRiderの手口をまねた別の攻撃者とみています。

偽のフォントが集めるもの

研究者は、フォントに見せかけたファイルを動かさずに読み、次のものを集めて送ると説明しています。

  • 利用者名とホスト名、CIで動いたときはリポジトリの名前。
  • 認証情報のファイル8種類: AWS(.aws/credentials)、PyPI(.pypirc)、npm(.npmrc)、Git(.git-credentials)、.netrc、Claude(.claude/.credentials.json)、Gemini(.gemini/oauth_creds.json)、Kubernetes(.kube/config)。
  • SSHの秘密鍵(id_rsa・id_ed25519)。
  • ホームフォルダーの中にある、AWS・Anthropic・GitHub・npm・PyPIのトークンの形の文字列。
  • AWS_、ANTHROPIC、OPENAI、HF_TOKEN、GITHUB_TOKENで始まる環境変数。

集めた中身は、暗号化されないHTTPで攻撃者のサーバーへ送られます。そのあと、5分ごとに攻撃者のサーバーから命令を受け取って実行するcronの設定を入れます。印は「#ghc2」です。研究者は、このcronが入ると、そのパソコンは攻撃者の命令で動く状態になり、フォントのファイルを消してもcronは残ると警告しています。

図解。第1段(10月8日から): 盗んだGitHubの権限で偽のsecurity auditワークフローを書き込めるリポジトリすべてに入れ、リポジトリのシークレットとgit履歴の中の認証情報を盗む。動く場所はGitHubのCI。第2段(10月14日から15日): .vscode/tasks.jsonのeslint-checkがフォルダーを開くと隠れて動き、public/fonts/fa-solid-400.woff2の中身は38行のNode.jsで認証情報を集めて送り、5分ごとに攻撃者のサーバーから命令を受けて実行するcron(#ghc2)を入れる。数字: 94リポジトリ・66の持ち主、読めた79件すべてに第2段、65件が1年以上更新なし。集める認証情報: AWS、npm、PyPI、Git、Kubernetes、SSHの秘密鍵、ClaudeとGeminiのログイン、環境変数のトークン。動く条件: 信頼したワークスペース(制限モードでは自動タスクは動かない)、自動タスクの許可(task.allowAutomaticTasksの既定はoffで初回に聞かれる)。まとめ: ワークフローを消すだけでは終わらず、権限を取り消し、tasks.jsonと偽のフォントを消し、開いたパソコンのcronを確かめる
GhostActionの第1段と第2段、集める認証情報と動く条件(編集部作成)作成: 編集部 / もとの資料: OpenSourceMalwareのブログとVS Codeの公式の説明を編集部が整理

動く条件

研究者は、リポジトリをcloneしたり開いたりしただけでは、盗みのコードが動いたとは言えないとしています。VS Codeが自動のタスクを動かすには、2つの条件があります。

条件 VS Codeの公式の説明
信頼したワークスペース 信頼していないワークスペース(制限モード)では、自動タスクは設定にかかわらず動かない
自動タスクの許可 task.allowAutomaticTasksの既定はoff。初めてのワークスペースでは、許すか許さないかを1度だけ聞かれる。onにすると聞かずに動く

開くときに「信頼する」を選び、自動タスクを「許可」していれば、動いたとみなす必要があります。研究者は、フォントのファイルをnodeで直接動かしても同じだとしています。

消しても、また入れられた

研究者が調べた79のリポジトリでは、第1段は10月8日、第2段は主に10月15日に入れられていました。65件は、1年以上更新の無いリポジトリでした。攻撃は、権限を持つアカウントが書き込めるリポジトリすべてに入れるため、放置されたものにも入ります。

目を引くのは、第1段のワークフローを10月9日に消した2つのリポジトリにも、15日に第2段が入れられていたことです。研究者は、第1段を入れたときの権限が取り消されていなかったと読んでいます。ワークフローを消しても、トークンは取り消されません。

影響する会社・しない会社

  • 影響する: GitHubで、社員や委託先のアカウントが書き込めるリポジトリを持つ会社です。放置された古いリポジトリやフォークも含め、第1段・第2段のファイルが無いかを確かめます。
  • 影響する: 開発者がVS Codeで、ほかの人のリポジトリを信頼して開き、自動タスクを許している会社です。開いたパソコンの認証情報が盗まれたおそれがあります。
  • 影響する: 開発者のパソコンに、クラウドの鍵やnpm・PyPIのトークン、AIのツールのログインを置いている会社です。盗まれたときの影響が大きくなります。
  • 影響しない: VS Codeで制限モードのまま開いた場合と、task.allowAutomaticTasksがoffのまま自動タスクを許していない場合です(VS Codeの説明のとおり)。
  • 影響しない: Windowsのパソコンでは、cronの登録はされません。ただし、認証情報を盗む部分は動くので、作り直しは要ります。

情シスが今日やること

  1. 社内のリポジトリを2つのファイルで探します。 GitHubの組織のコードの検索で、.vscode/tasks.jsonのeslint-checkと、public/fonts/fa-solid-400.woff2を探します。研究者が公開した送り先のIPアドレス(193.32.204.199)も、ワークフローの中を検索します。フォークと、すべてのブランチも見ます。
  2. 見つかったら、先に権限を取り消します。 きれいな端末から、そのアカウントのセッション、個人用のアクセストークン、OAuthの許可、GitHub App、SSHの鍵、デプロイキーを取り消し、パスワードを変えて、フィッシングに強い多要素認証にします。そのあとでファイルを消します。
  3. 秘密を作り直します。 リポジトリのActionsのシークレットと、gitの履歴に一度でも入った認証情報を作り直します。パッケージを公開しているなら、覚えのない版が出ていないかを確かめます。
  4. 開発者のパソコンを確かめます。 macOSとLinuxは crontab -l で「#ghc2」や上のIPアドレスを含む行が無いかを見ます。見つかったら、パソコンの作り直しを考え、SSHの鍵、クラウドの鍵、npm・PyPI・GitHubのトークン、AIのツールのログインを、きれいな端末から作り直します。
  5. VS Codeの設定を決めます。 社員のVS Codeで task.allowAutomaticTasks を off にそろえ、知らないリポジトリは制限モードのまま開く決まりにします。ワークフローの実行に承認を求める設定と、.github/workflows の変更にレビューを求める設定も入れます。

公表に書かれていないこと

  • 第2段を入れた方法(どの権限が使われたか)。研究者は、確かめられていないとしています。
  • cronが攻撃者のサーバーから受け取る、次の段の命令の中身。
  • GitHubの公式の対応。確かめた範囲では、GitHubの発表は見つかりませんでした。

2026年10月19日時点の内容です。

よくある質問

Qリポジトリをcloneしただけで感染しますか?

A研究者は、cloneや開くことだけでは動いたとは言えないとしています。VS Codeが自動タスクを動かすのは、信頼したワークスペースで、自動タスクを許したときだけです。VS Codeの公式の説明でも、信頼していないワークスペースでは自動タスクは動かず、task.allowAutomaticTasksの既定はoff(初回に許すか聞かれる)です。

QWindowsのパソコンでも危ないですか?

A研究者によると、Windowsにはcrontabが無いため、認証情報を盗む部分は動いても、cronの登録はされません。盗まれた認証情報は作り直しが要ります。

Q以前のGhostActionの記事と同じ話ですか?

A同じ攻撃の続きです。10月8日からの第1段は、GitHub Actionsの偽のワークフローでCIの秘密を盗むものでした。今回の第2段は、開発者のパソコンで動く仕組みです。

出典・参考

チェック済み。この記事は監修者によってチェックされました。(2026年10月19日)

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします