なんとなく「ソフトウェアの安全って大丈夫かな?」って思ってたけど、最近の供給網攻撃、もうホントにやばくない?って思った話💭
つい昨日、Daniel Pereiraさんという開発者さんが「なんか変なリポジトリができてる!」って気づいたんだけど、調べてみたらnpmパッケージのtinycolorがマルウェアに感染してたって判明したんだって😳
でも最初はあんまりみんな信じてくれなかったらしくて…そこからSocketっていうサービスが調査してみたら、なんと40個のパッケージが感染してたことがわかったんだ✨
でも、これだけじゃ終わらなくて、さらに調査した研究者のCharlie Eriksonさんが見つけたのは、合計で187個ものパッケージが感染していたっていう事実。
しかもその中にはセキュリティ企業のCrowdstrikeの20パッケージも含まれてたんだよね💦
どんなマルウェアなの?🐛
このマルウェア(自己複製するワーム)は、こんなことをやってるみたい:
- 秘密情報を探しまくる:環境変数やAWSやGCPのメタデータから、インスタンスやサービスの認証情報をスキャン💡
- GitHubに情報を送る:乗っ取ったアカウントに「Shai-Hulud」っていうリポジトリ作って、そこに秘密情報のJSONファイルを保存しちゃう📂
- GitHub Actionsを悪用:秘密情報を攻撃者のURLにPOST送信。さらにログにも隠しコピーを残すんだって👀
- 感染拡大:見つけたnpmのトークンを使って、持ち主の別パッケージに勝手にアップデートを仕掛けてどんどん広がる🔥
- 公開設定にしちゃう:本来は非公開のリポジトリを700以上も公開に変えて情報漏洩を加速させてる😱
なぜGitHubの公開リポジトリに情報を送るの?🤔
ここがすごく不思議なところで、普通の攻撃なら秘密裏にコマンド&コントロール(C2)サーバーに送るはずなのに、わざわざ公開リポジトリに情報を置いて混乱を狙ってるのかな?って思ってる人も多いみたい。
みんなが使うnpmパッケージが狙われる理由🌐
今回感染したパッケージは187個もあって、たとえばCrowdstrikeのものや、@ctrl、@art-ws、@nstudio、@things-factoryなど、いろんな会社やコミュニティのものが含まれてるんだ。
これらは多くの開発者が普通に使ってるから、感染すると影響がとても大きいよね💥
まとめると…
- ソフトウェアの供給網って結構もろいってことがまたわかった
- マルウェアは秘密情報を狙って暴れまわってる
- しかも感染したパッケージはたくさんあって、有名どころも含まれてる
- 開発者やユーザーは常に最新の情報をチェックしたほうがいいかも
供給網攻撃って、知らないうちに自分の使ってるツールが感染源になっちゃうこともあるから、びっくりしちゃうよね🥺
これからはちょっと神経質になっても仕方ないかな〜って思うこの頃✨
コメント
ハンナ
Redditに表を再現してくれてありがとう。 あのサイト、パソコンで卵を焼いてるみたいに重いよ。
クリス
みんな俺がおかしいって言うけど、全部オフラインでコンパイルしなきゃ気が済まないんだ。 cmakeやmesonみたいな自動で依存関係をダウンロードするビルドシステムはホント怖い。
ノーラン
去年の大規模障害を起こしたあのCrowdstrikeのこと?
ジョージ
うちのIT部門は「全部の会社管理端末にCrowdstrike入れるから、会社端末だけ使え! セキュリティ事件? 全部認証取ってるから問題なし!」ってマジで言ってる。
ロバート
SocketやSnykみたいな自動セキュリティスキャンツールって役に立つのかな?
キンバリー
「Shai-Hulud」って名前のワームを付けるなんて、作者は読書家だよね、尊敬するわ。
サム
npmユーザーはマジでロックダウンしろ。 全部固定して手動で検証して、npmから切り離せもう終わりだ。
サラ
陰謀論だけど、これらの攻撃はLLM企業がプライベートリポジトリを収穫するための仕込みかもよ。
ワット
外部からコードをダウンロードして実行する意味を、そろそろ真剣に考えたほうがいいよ。
レオ
まずは不要な依存関係を減らすとこから始めようぜ。
ノーラン
CrowdstrikeがWindowsサーバー壊して、その後ワームをばらまいた? このセキュリティ怪しい薬が一番の問題っぽいな。
ミア
npmインストールの履歴をチェックして、危険なバージョンが入ってなかったか調べられるアプリやCLIないかな? 攻撃は毎日のように起きてて追いきれない…
ミア
追記:yarn berryの`yarn npm audit`で似たことはできたけど、全システムのnode_modulesをまとめてスキャンできるツールが欲しいな。
チャーリー
ジア・タンが勝った。
ジャック
関税のせいでクビになりそうで、採用チャンス広げるためにTypeScriptとかウェブ言語を勉強したけど、マジ最悪。
グレース
嫌われるかもだけど、結局は全部手動でコードレビューするしかないと思う。 アップロードの最低基準も上げるべきで、それでnpmに上がらないパッケージも出るだろうけど、それは仕方ない。