LinkedInの求人詐欺に隠されたバックドア
原題: A backdoor in a LinkedIn job offer
なぜ重要か
供給チェーン攻撃やソーシャルエンジニアリングを組み合わせたサイバー脅威の実態を示し、開発者の警戒が必要であることを実証。npm installなど自動実行スクリプトの危険性が業界で認識される重要なケーススタディ。
開発者がLinkedInの採用担当者からのコードレビュー依頼を受け、GitHubリポジトリを調査したところ、npm installの実行時に自動的に悪意あるコードを実行するバックドアを発見。リポジトリのコミット履歴は実在する開発者の身元を詐称し、採用担当者は有名な芸術ジャーナリストのプロフィールを乗っ取られていた。
フルスタック開発者のローマン・イマンクロフ氏は先週、暗号資産スタートアップの採用担当者からLinkedInメッセージを受け取った。数日間のやり取りを経て、廃止されたNodeモジュール問題をレビューするよう公開GitHubリポジトリへのアクセスを求められた。
氏は疑わしさを感じ、本番環境ではなくHetznerの一時的なVPS上でリポジトリを調査することにした。Piというツールに読み込み機能のみを限定して使用したところ、app/test/index.jsファイル内にバックドアを発見した。
バックドアは約250行のテストスイートに見せかけており、フラグメントから「https://rest-icon-handler.store/icons/77」というURLを組み立てていた。サーバーから返されたコードを実行するペイロードが、コメントアウトされたテストの間に隠されていた。
バックドアはpackage.jsonの「prepare」スクリプト経由で動作し、npm install実行時に自動的にapp/index.jsを実行してペイロードが起動する仕組みだった。採用担当者の「Nodeモジュール問題をチェックしてほしい」という指示は、受信者にnpm installを実行させるためのおとりだった。
リポジトリのコミット履歴は実在する開発者が39コミット手がけたように装われていたが、その開発者はこのプロジェクトに関与していないと明かした。同開発者は過去にGitHubで身元詐称の被害を受けた経験があるという。採用担当者のプロフィールは、実在する有名な芸術ジャーナリストのアカウントが乗っ取られたものだった。氏がインストール失敗を報告した後、その「採用担当者」は突然npmやNodeバージョンについて詳細な議論を始め、npm installの実行を強く促した。