【北朝鮮の偽求人ワナ】OtterCookieとは?Contagious Interviewから開発者を守る実践ガイド
要旨 北朝鮮系とされる攻撃キャンペーン「Contagious Interview」は、LinkedInなどで開発者に偽の求人を持ちかけ、「採用課題」と称してマルウェアを実行させる長期作戦です。中核ツールの一つが情報窃取バックドア「OtterCookie」。狙われるのは暗号資産だけではありません。GitHubトークン、クラウド認証情報、SSH鍵、社内リポジトリのアクセス権——開発者の端末そのものが標的になっています。
本稿では、2026年時点の最新動向、感染を見抜くチェックポイント、そして「もう実行してしまった」場合の初動までを整理します。
🎭 はじめに:面接が攻撃面になる時代
LinkedInのDMで、見覚えのない採用担当者から声がかかります。「あなたのGitHubを見て連絡しました。短いコーディング課題をお願いできますか?」。報酬は相場より少し高め。GitHubリポジトリのURLが送られてきて、git clone して npm install するだけの簡単な課題のはずだった——。
これが、Contagious Interview(伝染性面接) の入口です。北朝鮮関連とされる攻撃グループが、少なくとも2022年12月から続けている長期キャンペーンで、標的は世界中のソフトウェア開発者・暗号資産エンジニア・フリーランス開発者。Microsoft、Palo Alto Networks Unit 42、Socket、ReversingLabs、Sophos、Securonixといった主要セキュリティベンダーが追跡しており、2026年現在も活動は止まるどころか拡大しています。

え、採用課題でマルウェア感染って、そんなのあるの?

あるんだ。しかもSocketの調査では、2025年10月以降だけで197個の悪性npmパッケージが投入されて、累計31,000ダウンロードを記録してる。北朝鮮関連とされる、採用プロセスを悪用したサプライチェーン攻撃なんだ。
開発者が狙われる理由は、彼らの手元に「直接お金になる暗号資産ウォレット」と「お金になり得る権限の塊」(GitHubトークン、クラウド認証情報、社内システムへのSSH鍵)が同居しているからです。1台の開発者端末を制圧することは、攻撃者にとって企業1社のサプライチェーンに足場を築くことに等しいわけです。
👤 1. OtterCookieとは何か——関連名の整理
「OtterCookie」だけを単体で論じても、この脅威の全体像はつかめません。Contagious Interviewというキャンペーンの中で複数のマルウェアファミリー・命名が交錯しているからです。まずは登場人物を整理しましょう。
| 名前 | 位置づけ |
|---|---|
| Contagious Interview | 偽求人・偽面接を使う攻撃キャンペーンそのもの |
| OtterCookie | 情報窃取・遠隔操作を行うJavaScript系バックドア。2024年後半から確認 |
| BeaverTail | ダウンローダー兼情報窃取ツール。Qt版なども確認されている |
| InvisibleFerret | BeaverTailによって展開されるPython系バックドア |
| PyLangGhost RAT | ClickFix型誘導で配信されるPython製RAT |
| CL-STA-240 / Famous Chollima / DeceptiveDevelopment / UNC5342 / NICKEL ALLEY / Void Dokkaebi / WaterPlum | ベンダーごとの追跡名(Unit 42 / CrowdStrike / ESET / Google GTIG / Sophos / Trend Micro / NTT Security)。北朝鮮関連とされる近接した活動群を指す |

追跡名がやたら多くて混乱する…結局Lazarus Groupの仕業なの?

北朝鮮関連とみられる点は各社レポートで概ね一致してるんだ。ただ「Lazarus Group」という名前は、複数の北朝鮮系サイバー活動をまとめて指す広い呼び方として使われることがある。

Unit 42はCL-STA-240という別クラスターとして追跡してるし、ReversingLabsは「Lazarus Group」と広めに括ってる。本記事では特定の組織を断定せず、Contagious Interview、Famous Chollima、NICKEL ALLEYなど各社の追跡名を併記してるよ。
OtterCookieは2024年後半に確認されたJavaScript系バックドアで、Microsoftは2024年9月初観測、NTT Securityは2024年11月の検体を分析しています。さらに2025年10月以降に難読化を強めた亜種も確認されています(Microsoft 2026年3月レポート)。当初はBeaverTailの後段で限定的に使われていたが、2025年以降はBeaverTail寄りの機能を取り込み、OtterCookie単体で「ダウンローダー+情報窃取+遠隔操作」を完結させる方向に進化しているのがポイントです(Socket 2025年11月レポート、Cisco Talos分析)。
🎯 2. なぜ開発者が狙われるのか
開発者の端末は、攻撃者から見ると 「鍵束のついた金庫」 です。
- ソースコードと社内リポジトリへのアクセス権
- GitHub/GitLab/Bitbucketのパーソナルアクセストークン
- AWS/GCP/Azureのクラウド認証情報
- 顧客データを扱う本番DBへの接続情報
- 暗号資産ウォレットと秘密鍵
- パスワードマネージャーのマスターキー
しかも多くの開発者は、「副業の課題」「個人プロジェクト」と「本業の開発環境」を同じ端末・同じシェル・同じブラウザプロファイルで扱っています。個人と業務の境界が曖昧な職種であることが、Contagious Interviewが成立する根拠です。
加えて、フリーランスや転職活動中の開発者は 「採用担当者から連絡が来ること自体が日常」 であり、警戒度を下げやすい状況にあります。攻撃者はその心理を突いてきます。
📨 3. 攻撃の流れ——5段階の侵入プロセス
Contagious Interviewの典型的な攻撃フローは、以下の5段階に分解できます。
ステップ1: 偽求人と偽採用担当者の接触
攻撃者はLinkedIn、Upwork、Freelancer、cryptojobslist、Wellfoundなどに偽求人を掲載する、あるいは採用担当者を装って候補者にDMを送ります。プロフィールはコピペで作られていることが多く、接続数が極端に少ない・作成日が新しい・写真がストック画像である等の特徴があります。
Sophosの2026年3月レポートによれば、攻撃者は 偽のLinkedIn企業ページとGitHub Organization を周到に作り込み、複数の「社員アカウント」をぶら下げて実在性を演出しているとのこと。BlockNovas LLC など実在する企業名を装ったケースも、2025年4月にFBIによってドメイン押収されています。
ステップ2: 採用課題の提示
書類選考や軽い会話を経て、採用担当者は「コーディング課題」を提示します。形式は様々です。
- GitHub/GitLab/Bitbucket上のリポジトリをクローンしてバグ修正
- npmパッケージをインストールして動作確認
- PyPIパッケージを試して機能拡張
- VS Codeで開いて「Trust the workspace」をクリック
- Qt/Electronアプリのビルド
ReversingLabsが2026年2月に発表した派生キャンペーン Graphalgo では、2025年5月以降にnpm/PyPIへ累計192個の悪性パッケージが投入され、JavaScript・Python開発者の双方が標的になっていることが判明しました。当初は「graph」プレフィックスのパッケージ(graphlib等の正規ライブラリを偽装)でしたが、2025年12月以降は「big」プレフィックスへ命名規則を切り替えています。
さらに2026年4月時点では、Go・Rust・PHPエコシステムにも拡散しており、Socketの集計では2025年1月以降の累計悪性パッケージは1,700以上に達しています。
ステップ3: 実行のトリガー
実行のきっかけには、いくつかのパターンがあります。
npm install時のpostinstallスクリプト- 課題の指示通り
node index.jspython main.pyを実行 - VS Code拡張機能の自動実行(workspace trust、
tasks.jsonのfolderOpenトリガー) - ClickFix型誘導:「ビルドエラーを修正するため、このコマンドをターミナルに貼り付けて実行してください」(Sophos 2026年3月)

ClickFixって聞き慣れない言葉だけど、何?

偽の「エラーメッセージ」を見せて、「これを直すにはこのコマンドをコピペして実行してください」と誘導する手口だよ。被害者は「自分でコマンドを打った」という意識があるから警戒心が緩む。Sophosが追跡してるNICKEL ALLEYは、この方式でPyLangGhost RATを配信してる。
2025年12月以降は、VS Codeの tasks.json 自動実行を悪用する「StoatWaffle」も確認されています(NTT Security報告)。プロジェクトフォルダを開いた瞬間にVS Codeがタスクを実行する仕組みを使い、被害者が何もボタンを押さなくても感染する仕掛けです。
ステップ4: C2通信の確立
OtterCookieは Socket.IO WebSocket を使ってC2サーバーと暗号化された接続を確立し、JSON形式で命令を受け取ります。HTTPSの一般的なリクエストに紛れやすく、シグネチャベースの検出を回避しやすい設計です。
Socketの2025年11月調査では、攻撃者がnpm + Vercel + GitHubの三段配信構造を採用していることも判明しました。npmパッケージがVercelホストのステージング先からペイロードを取得し、最終ペイロードはGitHubアカウント(stardev0914など)から取得する形です。一部が遮断されても他で穴埋めできる、再生可能な攻撃インフラになっています。
ステップ5: 情報窃取と横展開
C2接続が成立すると、OtterCookieは情報を吸い上げ始めます(詳細は次章)。さらに最新亜種では、追加ペイロードとしてBeaverTailやInvisibleFerretを呼び込み、永続化と横展開を図ります。Windows環境ではレジストリ改変と「NodeUpdate」という名前のスケジュールタスクで永続化することも確認されています(Socket 2025年11月)。
💸 4. 何が盗まれるのか
「暗号資産だけ気をつければいい」という認識は2024年までの話です。2025〜2026年のOtterCookie亜種が窃取対象に含めるものは、はるかに広がっています。
| カテゴリ | 具体例 | リスクレベル |
|---|---|---|
| 暗号資産関連 | MetaMask等の拡張機能データ、イーサリアム秘密鍵、ウォレット設定ファイル | 致命的 |
| 開発者シークレット | .env、APIキー、GitHub/GitLab/Bitbucketのトークン、SSH鍵 | 致命的 |
| クラウド認証情報 | ~/.aws/credentials、GCPサービスアカウントキー、Azureプロファイル | 致命的 |
| CI/CD関連 | GitHub Actions secrets、CircleCI/Jenkins構成 | 高 |
| パスワードマネージャー | 1Password・Bitwarden・KeePass関連ファイル | 致命的 |
| ブラウザ情報 | 保存パスワード、Cookie、セッション、ブラウザプロファイル | 高 |
| クリップボード | コピーされたパスワード・シードフレーズ・APIキー(常時監視) | 致命的 |
| 画面・入力 | スクリーンショット、キーログ | 高 |
| システム情報 | OS、ホスト名、ネットワーク構成、実行中プロセス | 中(横展開準備) |

クリップボード監視まであるの? それは怖すぎる…

そう、ここが一番厄介。多くの開発者はパスワードマネージャーやウォレットからシードフレーズ・秘密鍵をコピーする運用をしてる。攻撃者はそれを待ち続けるだけでいいんだ。
Microsoftの2026年3月レポートでも、開発者端末からAPIトークン、クラウド認証情報、署名鍵、暗号資産ウォレット、パスワードマネージャー関連情報が狙われると整理されています。
🚨 5. 偽求人・偽コーディングテストの見分け方
「自分が今やり取りしている案件は大丈夫か?」を判定するためのチェックリストです。3つ以上当てはまったら危険信号と考えてください。
求人プラットフォーム側の赤信号
- 採用担当者のLinkedInアカウントが作成3〜6か月以内
- 接続数が異常に少ない、または逆に「全員が外国人開発者」で偏っている
- プロフィール写真がストック画像っぽい(Google画像逆検索でヒット)
- 会社名でGoogle検索しても、その求人プラットフォーム以外で実在性が確認できない
- 報酬が業界相場より明らかに高い、または交渉前から高額提示
採用担当者の赤信号
- メールドメインがフリーメール(Gmail等)、または会社の正規ドメインと微妙に違う(
-corp.com-inc.io等) - 面接が異常に短い、または「コーディング課題が先」を強調する
- ビデオ面接を拒否する、または顔を映さない(逆にAI生成のディープフェイクを使うケースも)
- 「急募なので24時間以内に課題を提出してほしい」と急かす
コーディング課題の赤信号
- リポジトリのコミット履歴が1〜2件しかない、READMEが極端に薄い
package.jsonにpostinstallスクリプトがある(必ず中身を確認)- 依存パッケージに見覚えのない名前、または有名パッケージのタイポスクワット(
react-dom-utilsのような偽物) - ソース内に難読化コード、Base64長文、
eval()、Function()動的実行 - 課題の説明に短縮URL(bit.ly等)が含まれる
- 「ビルドエラーが出るので、このコマンドを実行して直してください」とコマンドのコピペ実行を要求される(ClickFix型)
.vscode/tasks.jsonにrunOn: folderOpenや見覚えのないコマンドが書かれている
🛡 6. 開発者が今日から実装する5つの防御
ここからは具体策です。今日から導入できる順に並べます。
① 採用課題は必ず非永続の隔離環境で実行する
最も重要な原則です。本業の認証情報・SSH鍵・社内リポジトリにアクセスできるメイン端末で、未知の採用課題を実行しないでください。
Microsoftも2026年3月の推奨で、コーディングテストや持ち帰り課題には「非永続の仮想マシンなど、専用の隔離環境を使用し、本番認証情報や社内リポジトリへアクセスできるメイン端末で実行しないこと」を明記しています。
具体的な選択肢:
- 使い捨てVM:VirtualBox/UTM/Hyper-Vでスナップショット運用。実行後はスナップショットに戻す
- クラウド開発環境:GitHub Codespaces、Gitpod、Replit等。ホスト端末から完全に分離
- 物理的に別の端末:古いノートPC、安価なミニPCを「採用課題専用機」として用意

Dockerで隔離じゃダメなの?

Dockerは「本命の隔離環境」にはしないほうがいい。Dockerソケットのマウント、ホストFSのマウント、--privileged 等の設定次第で、ホストOSへの脱出は容易なんだ。Dockerはあくまで補助、本命はVMかクラウド開発環境にしよう。
② パッケージの事前チェックを習慣化する
npm install する前に、以下のコマンドを習慣にしてください。
# package.jsonを直接読んで postinstall の有無を確認
cat package.json | grep -E "(postinstall|preinstall|install)"
# 依存パッケージの公開情報を確認
npm view <package-name>
# 既知の脆弱性をスキャン
npm audit
# socket.devで悪性パッケージ判定を確認(Webブラウザで)
# https://socket.dev/npm/package/<package-name>socket.dev はContagious Interview関連の悪性npmパッケージを大量に検出しています(2025年11月時点で197件、累計31,000超ダウンロードを確認)。ブックマークしておく価値があります。
PyPI側も同様で、pip install 前に safety や pip-audit を通すべきです。
③ 暗号資産ウォレットを開発機から物理分離する
開発機にMetaMask等のホットウォレットを置かない。これは2026年の常識として運用したいところです。
- 主要資産はハードウェアウォレット(Ledger、Trezor等)に移す
- 検証用の少額ウォレットは別ブラウザプロファイル、できれば別端末
- シードフレーズを開発機のクリップボードに絶対にコピーしない
④ シークレットを端末に直置きしない
.envファイルをリポジトリ外に置く運用に切り替える- AWS等のクラウド認証は 短命なセッショントークン で運用(
aws sso login等) - GitHub PATは fine-grained tokens で必要最小権限・短命設定
- SSH鍵にはパスフレーズを必ず設定
⑤ 開発環境の最小権限化
- 業務用と個人用のブラウザプロファイルを分ける
- パスワードマネージャーは自動ロック時間を短く設定
- macOSならFull Disk Access を持つアプリを定期監査
- WindowsならDefender ASRルールを有効化
- VS Codeでは未知のリポジトリを安易にTrustしない。
.vscode/tasks.jsonのrunOn: folderOpenや見慣れないコマンドを必ず確認する
🆘 7. もしコーディングテストを実行してしまったら
「もしかして、さっき走らせたあの npm install ……?」と気づいてしまった方のための章です。この順番で実行してください。

あ、もしかして…って気づいたとき、まず何すればいい?

最初の数分が勝負だよ。順番を間違えると被害が広がるから、慎重に。
1. ネットワークから即時切断
- 物理LANケーブルを抜く、Wi-Fiをオフにする
- C2通信と進行中の窃取を止めるのが最優先
2. 感染端末上ではパスワード変更しない
キーロガー・スクリーンショット機能が動いている可能性があるため、感染した端末で新しいパスワードを入力するのは厳禁です。次のステップで別端末を使います。
3. 別の安全な端末から、優先順位順にパスワード変更
- GitHub / GitLab / Bitbucket(2FAも再設定)
- Google / Apple ID / Microsoftアカウント
- 暗号資産取引所のすべて(出金パスワードも)
- メールアカウント
- パスワードマネージャーのマスターパスワード
4. APIキー・トークン・鍵類の失効と再発行
- GitHub PAT、GitLabトークンを全失効
- AWS/GCP/Azureのアクセスキーを無効化
- SSH鍵を再生成し、authorized_keysから旧鍵を削除
- CI/CDのシークレット(GitHub Actions、CircleCI等)を全更新
5. 暗号資産資産の移管
- ハードウェアウォレットで作成した新規アドレスへ全資産を移す
- 旧ウォレットは「侵害済み」と扱い、二度と使わない
- DeFiのallowance(承認済みコントラクト)も
revoke.cash等で取り消す
6. 会社端末・業務利用端末なら情シス/SOCに即連絡
- 隠さない。隠すと被害が拡大します
- 横展開の可能性があるため、ネットワーク隔離・フォレンジック調査が必要
- 国内ならJPCERT/CCへの相談窓口も活用できます
7. 端末は初期化前提で考える
- 完全クリーンインストール
- バックアップから戻す場合も「侵害日以前のバックアップ」のみ
- ブラウザ拡張機能はゼロから入れ直す
「自分は技術者だから手動でクリーンアップできる」と考える誘惑に負けないでください。OtterCookieの最新亜種は永続化機構が複雑化しており、表面的な削除では取りきれません。
🏢 8. 採用企業側の責任
ここまで読んで、もしあなたが採用担当者・エンジニアリングマネージャーなら、自社の採用プロセスが応募者から見て「Contagious Interviewと区別がつかない」状態になっていないかを点検してみてください。
- コーディング課題は 実行不要な形式 で出す(コードレビュー、設計議論、ホワイトボード問題)
- どうしても実行が必要なら クラウドのサンドボックス環境 を企業側で提供する
- 採用担当者の 公式メールドメイン・LinkedIn企業ページ・GitHub Organization を求人票に明記する
- 急かさない。24時間以内提出を求める課題は応募者の警戒心を下げてしまう
透明な採用プロセスは、自社のブランドを守ると同時に、業界全体を攻撃者から守ることにつながります。
✊ おわりに——面接が攻撃面になる時代へ
LockBitのようなランサムウェアグループが企業の境界(VPN・公開サーバー)を狙うのに対し、Contagious Interviewは 「働く人の意思決定そのもの」 を攻撃面にしています。「採用課題を実行する」という、ごく日常的な行為が、組織のサプライチェーン全体を侵害する起点になりうる時代になりました。
しかし、防ぐ手段はすべて揃っています。非永続VMで実行する。シークレットを端末に置かない。クリップボードに秘密鍵を貼らない。怪しい採用担当者は無視する。今日から始められる、地味で確実な習慣の積み重ねです。

DMで来る採用案内、全部疑ったほうがいいの?

全部疑う必要はないよ。求人DMの多くは正規の連絡かもしれない。でも、危険な1件が混ざったときに、それを見分けられる準備があるかどうか——それが2026年の開発者に問われていることなんだ。
関連記事
- 【1,000万ドルの賞金首】LockBit首魁コロシェフはなぜ捕まらないのか|ランサムウェア帝国の正体
- 【ファイルアップロード編】二重拡張子・MIME偽装・RCEの入り口|CTF思考フレームワーク #06
参考情報源
- Microsoft Threat Intelligence(2026年3月)— Contagious Interview / OtterCookie亜種解析
- Palo Alto Networks Unit 42 — CL-STA-240 Contagious Interview追跡レポート(2023年11月初出)
- Socket Threat Research Team(2025年11月)— 197個の悪性npmパッケージと累計31,000超ダウンロード分析
- ReversingLabs(2026年2月)— Graphalgoキャンペーン 192パッケージ解析
- Sophos Counter Threat Unit(2026年3月)— NICKEL ALLEY追跡レポート、ClickFix・PyLangGhost RAT
- NTT Security Holdings(2026年3月)— StoatWaffle / VS Code tasks.json悪用
- ESET Research(2025年9月)— DeceptiveDevelopment詳細解析
- Securonix Threat Research(2024年12月)— OtterCookie初期解析・DEV#POPPER
- Cisco Talos / SentinelLABS — OtterCookie・BeaverTail機能融合分析
- JPCERT/CC — LinkedIn経由のLazarus関連攻撃・国内事例に関する注意喚起
本稿は2026年5月10日時点の公開情報に基づいています。最新の動向は各ベンダーの脅威インテリジェンスレポートをご参照ください。
