2 ポイント 投稿者 GN⁺ 4 시간 전 | 1件のコメント | WhatsAppで共有
  • リクルーターがLinkedInメッセージで接触し、リードエンジニア採用を名目に公開GitHubリポジトリのレビューを依頼したソーシャルエンジニアリング攻撃の事例
  • レビュー依頼されたコードにはテストスイートを装ったバックドアが隠されており、「deprecated Node modules の問題を確認してほしい」という依頼が npm install の実行を誘うおとりになっていた
  • 不審に感じてローカルではなく使い捨てVPS上で読み取り専用エージェントを使ってコードを点検したところ、問題のファイルが数秒で検出された
  • リポジトリのコミットとリクルータープロフィールはいずれも実在人物の身元を盗用しており、それぞれ実在の開発者と芸術分野のジャーナリストになりすましていた
  • 疑念を持つこととセキュリティ衛生(security hygiene)、そして読み取り専用エージェントの活用が、直接コードを読むより効果的だったという実践的な防御の教訓を示している

接触の経緯

  • 先週、小規模な暗号資産スタートアップのリクルーターからLinkedInメッセージを受け取った
    • 数日にわたって何度かメッセージをやり取りし、リードエンジニアを必要としている壊れた proof-of-conceptについて説明を受けた
    • レビュー用として公開GitHubリポジトリを渡され、「deprecated Node modules の問題を確認してほしい」と依頼された
  • 既存コードベースのレビュー依頼自体は珍しくないが、違和感を覚えて一段と警戒した

点検方法

  • クローン後に依存関係をインストールする代わりに、Hetzner使い捨てVPSを立ち上げ、そこでリポジトリをクローンした
  • Pi読み取り専用モードに設定し、ファイル読み取りツールだけを有効にした状態で実行した
    • 使用コマンド: pi --tools read,grep,find,ls
  • エージェントにコードベースのレビューと疑わしい項目の指摘を求めると、app/test/index.js でほぼ即座に停止した

バックドアの構造

  • リポジトリはReactフロントエンド + Nodeバックエンドの構成
  • 罠は約250行app/test/index.js にあり、テストスイートを装っていた
  • 内部ではURLを断片に分割して組み立てることで隠していた
  • コメントアウトされたテストのダミーの間にペイロードが隠されており、サーバーが送ってきたものを何でもユーザーのマシン上で実行する仕組みだった
    • ペイロードは225行目にあった

トリガーメカニズム

  • このファイルはテスト実行を待たない
    • app/index.jsconst test = require('./test') を実行して app/test/index.js をロードし、起動する
  • package.jsonapp/index.js起動段階に接続している
  • 核心は**prepare スクリプト**で、npm は npm install の後に prepare を自動実行する
    • そのため、依存関係のインストールだけでバックドアが実行される
  • 「deprecated Node modules の問題を確認してほしい」という指示は、結局**npm install の実行を誘うおとり**だった
  • サンドボックスでペイロードを実行して第2段階ペイロードを観察することもできたが、サーバーが渡すコードを実行するという証拠だけで中断した

1人目の盗用された身元

  • コミットは実在するフルスタック開発者の名前とメールアドレスで作成されていた
    • 普通のLinkedInプロフィール、個人ウェブサイト、長い履歴を持つGitHubアカウントを保有していた
  • コードベースを引き継いだふりをして、その開発者に問い合わせた
    • 彼はその会社で働いたことはなく、以前にもGitHubでなりすましに遭ってリポジトリが削除されたことがあり、このリポジトリとも無関係だと答えた
    • 本人もこうしたリポジトリを報告している最中だと明かした
  • コミット履歴全体の39件のコミットが、そのリポジトリに一度も触れたことのない1人の開発者名義に帰属していた

2人目の盗用された身元

  • リクルータープロフィールは実在する芸術分野のジャーナリストのもので、文化分野の経歴しかなく、技術的要素は皆無だった
  • インストールできないと返すと、非技術職のジャーナリストが即座に npm・Node バージョンの専門家に変貌し、npm install の実行を強く迫ってきた

誰にでも起こりうる

  • こうした攻撃の話は聞いており、HNでも読んでいたが、自分が直接標的になるとやや不意を突かれた
    • 最初のメッセージの時点で疑ってはいたが、疲れていた日や急いでいた日なら、深く考える前に npm install を実行していたかもしれない
  • リポジトリレビュー依頼を含むLinkedInメッセージには、少しの警戒心とセキュリティ衛生が必要だ
  • 読み取り専用エージェントでコードをレビューしたことは、直接読むより効果的だった
    • バックドアは不器用な初心者コードのように偽装されていたが、エージェントは数秒で検出した
  • リポジトリはGitHubに、リクルーターはLinkedInに通報したが、現時点でも変化はなく、コードは依然として公開されたまま

1件のコメント

 
GN⁺ 4 시간 전
Hacker Newsの反応
  • 小規模な暗号資産スタートアップのリクルーターが、壊れた概念実証リポジトリを見てほしいとして公開GitHubリポジトリを送り、「deprecated Node modules issue」を確認してほしいと言ってきた、という流れ自体が npm install を誘導するフィッシング だった
    prepare スクリプトが npm install の後に自動実行され、サーバーが配信する任意コードをローカルで実行させるバックドアであり、LinkedInでこうしたフィッシングに遭いうるというのは驚くほど深刻に見える

    • LinkedInは、$company で働いていると主張するユーザーについて、会社側がそれを否定する手段を提供しておらず、プロフィールに書かれているだけで 公式企業ページ に表示される
      うちの会社にも同じ詐欺を働く偽リクルーターがいたが、LinkedIn Premiumでの活動履歴も多いかなりもっともらしい偽プロフィールだったものの、実際の社員ではなかった
      何度報告しても削除されず、最終的にはLinkedInで働く知人に酒をおごって解決したが、すべてのスタートアップがそんなコネを持っているわけではない
    • 友人なら、友人に NPM を使わせるべきではない
      今のように人が次々やられているのを見ると、PNPMのようなツールを使ったり、コードを取得する過程での任意コード実行という、最も obvious で最も悪用されやすい穴を塞がないのが理解できない
      コードをダウンロードしようとした瞬間に任意コードを実行するツールは、もうやめるべきだ
    • この手口は特に2021〜2022年の暗号資産/NFTブーム時に Upwork で定番の手法として確認されており、ある時点から暗号資産プロジェクトを超えてさまざまなカテゴリへ広がった
      最後に覚えているのは、Windowsの .scr スクリーンセーバーファイルに偽装したダウンロードで、LinkedInにまで来たのはさらに悪い段階だ
      プラットフォーム側には「求人が増えている」ように見えるだろうから、あまり気にしないのではないか。GoogleやMetaのような広告ネットワークが詐欺広告をそれほど気にしないのと似ている
    • メールアドレスを抜き出して bullshitpowershellladendoucument.pdf.docx のようなものを送ってくるフィッシングは経験したことがあるが、LinkedIn DM で直接送ってくるのはかなり大胆な戦略だ
    • 最近かなり面接を受けていて、明らかな詐欺師にも何度か遭遇したが、自分がだまされそうなほど間抜けに見えたからではなく、こうした詐欺がより一般的になっているからだと信じたい
  • これは明らかに犯罪のはずだが、こういうことを通報して助けを求められる、サイバー犯罪版の 911 のような有名な窓口がなぜないのかわからない
    社会は現実のリスクに追いつき、支援網をもっと早く整えるべきであり、組織犯罪には組織的な防御が必要だ

    • 残念ながら悪質なサイバー犯罪者たちは、「犯罪を気にしない国で犯罪を行う」という ひとつの奇妙な裏技 を知っている
    • https://www.ic3.gov
      返信は来ない可能性が高いが、米国市民にとっては、あるいはもしかすると誰にとっても、自分の知る限り インターネット版911 に最も近い存在だ
    • 核心的な問題は、世界的に通用する グローバル911 が存在しないことだ
      もう一つの問題は、この種の詐欺を作るための労力はほぼゼロに近い一方で、捕まえて起訴するには膨大な労力と天文学的なコストがかかるという非対称性だ
    • シニカルに言えば、人々が互いにしでかす悪事という木の中でも、これはかなり手の届きにくい高い枝にある
      Microsoftサポートを装って高齢者を狙う詐欺電話と似た位置づけで、容疑者を捕まえるのはほぼ不可能だ
      痕跡を非常にうまく隠しているか、あるいはもっとよくあるのは、西側の人間を相手に詐欺を働くことを政府が気にしない、あるいは黙認する国に住んでいるからだ
    • FBIにも IC3 はあるが、サイバー犯罪対応はひどく、事実上役に立たない
      犯罪を通報しても、助けてもらえたり連絡をもらえたりする可能性は低い
  • これは今や、ありふれた面接課題と不快なほど近い
    誰かがリポジトリを送ってきて、インストールが壊れているので見てほしいと言う状況は自然で、多くの開発者は疲れていたり求職中だったりすると、深く考える前に npm install を実行してしまうかもしれない

    • 面接という文脈なのでさらに悪い
      鈍く見られたくなくて、そもそも実行してよいかを確認する段階を飛ばしてしまう
  • 「リポジトリはGitHubに、リクルーターはLinkedInに報告したが、まだ何も変わっておらず、コードもそのまま残っている」とは、ああ、Microsoft

    • LinkedInで、CBCカナダニュースのように見せかけた広告を見たことがある
      カナダ首相が全カナダ国民向けの暗号資産投資計画を発表する偽動画にリンクしており、登録リンクまで付いていたが、通報したところ、調査の結果ポリシー違反は見つからなかったという返答が来た
    • おかしくないか? Microsoftは LinkedIn、GitHub、NPM をすべて所有している
      3つともセキュリティや安定性に問題があり、MicrosoftがAIにさらに深く入り込むほど、改善するどころか悪化しているように見える
      社内のAI生産性、ある人たちが10倍だと言っていたその生産性が、いったいどこへ向かっているのかわからない
    • DMCA違反として通報すべきだった
      そうすればすぐに削除されていただろう
  • 同じドメインを複数の標的に使っているようだ
    3か月前のRedditスレッドにも似た話がある: https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...

  • なぜ世界中のすべてのOSがいまだに npm をブロックしていないのか理解できない
    この人たちは絶対に学ばないようだ

    • npm自体の問題ではない
      この種の詐欺はさまざまな技術で可能だったし、Makefile ですら成立していただろう
  • Macに、ようやくまともな 仮想化フレームワーク ができてほしい
    1995年みたいに、保護もなしにインターネットからランダムなスクリプトを落としてくるのにはもうかなりうんざりしている
    見知らぬ相手に会って、その相手の持ち物を自分のコンピュータの奥深くに入れるときは、防護具を使うのを忘れるべきではない

    • GitHub、AUR、NPMでランダムな curl | bash スクリプトを実行するのも同じくらいひどいが、ここにいる多くの開発者はいまだにこの悪習について疑わしい前提を持っている
      ここ数週間で出回ったいくつかの小規模な Shai-Hulud 系インシデントが、これがどれほど悪いかを示している
    • Macにはすでに実用的な方法がある
      IntelliJでnpmコマンドを Dockerコンテナ 内で実行するよう設定できる
  • LinkedInで受け取った求人提案はどれもあまりに怪しかった
    プラットフォーム上で応募しろとか、自己紹介動画を録画しろとか、コードプラットフォームの裏にある 補正用コーディングテスト を解けといったものだった

    • うちの兄弟は病気で長く失業していたあと、LinkedInでそれらしく見える「求人提案」を受け取った
      会社ノートPCの保証金名目で小切手を書いてくれと言われたが、表面的に見てもおかしい話なのに、長く求職していて切迫しており、ついに仕事が得られたと本当に喜んでいた
      長期失業者は、十分な貯蓄がある人や転職しようとしている在職者なら絶対に見逃さないような重大な危険信号すら、見過ごしてしまうほど追い詰められることが多い
  • 最近の NPMパッケージ作者 の多くは、こういう形でハックされているのではないか?
    axiosの担当者も、LinkedIn経由の同様のアプローチに引っかかったように見える

    • 自業自得な感じもする
  • LinkedInは求人情報のためだけに使っているが、この数か月で無駄な求人があまりにも増えた
    Ladders、Swooped のようなところと似た会社の求人が大量に見えるし、もうLinkedInを完全にやめる時期なのかもしれない