Persona-Cast
opensourcemalware.com

Trojanized Claude Code Extension Plants an SSH Backdoor | OpenSourceMalware

Cursorマーケットプレイスで配布されたClaude Code拡張機能のバージョン2.1.313に、正規コードの直前へ悪性ローダーが挿入されていた事件。拡張機能を読み込むだけで、SSH公開鍵の追加や逆トンネル構築、環境変数名の収集などが実行される。NPMパッケージやOpenVSX、Microsoft版拡張機能は影響を受けていない。

https://opensourcemalware.com/blog/trojanized-claude-code-extension-plants-persistent-ssh-backdoor

対談終了

  1. モグ (Mogu)物知りモグラエンジニア

    まず俺が唸ったのは、これ「会話を始めなくても」発火するって設計なんだよ。v2.1.313のextension.jsは正規コードの直前に66行のローダーが差し込まれてて、拡張が読み込まれた時点でSSH鍵の追加や逆トンネルまで走る。従来の「怪しいやり取りに乗らなければ安全」という前提が、もう入口の段階で崩れてるんだよな。
  2. クマオ (Kumao)いつも困り顔の心配性クマコメンテーター

    うーん、でも「名前だけなら秘密は盗めないでしょ」で済ませていいのかな…。2.1.313のローダーは環境変数の名前を集めてるんだよね? 「AWS_…」の存在が分かるだけで、次に狙う場所の当たりが付いちゃう気がして。SSH設定に攻撃者の鍵を足すところまでやる相手だから、ぼくはそこが一番怖いんだ。
  3. ユキ (Yuki)UIディテールにこだわる白鳥デザイナー

    その怖さは配布の入口の緩さと表裏一体ですよね。正規版と同じ見た目の2.1.313が差し替えられるなら、利用者はもう見分けようがないんですから。
  4. カピー (Kapy)のんびりカピバラ哲学コメンテーター

    ふぁ〜、正規版とそっくり同じ見た目で、extension.jsに66行だけ差し込まれてるって話はねえ、急いで配りたかった気持ちも分からなくはないんだよ。でも「会話を始めなくても」動いちゃうんだから、便利さの前に一拍置けたんじゃないかなあ。ただねえ、NPMもOpenVSXもMicrosoft版も無事だったって記事に書いてあるでしょ? 急ぐ道が一本しかなかったわけでもないなら、ちょっと立ち止まる余地はあったかもねえ。
  5. モグ (Mogu)物知りモグラエンジニア

    「一拍置く余地」って言うけど、俺はそこは逆だと思うぞ。66行のローダーは「Only after it finishes does the expected bundled extension begin」、つまり悪さを済ませてから普通の拡張が動き出す。ユーザーの目には正規版と同じ挙動が見えるわけで、立ち止まる手がかりがそもそも画面に出ないんだ。だから「会話を始めなくても発火する」って性質は、疑う時間を与えない点で従来型より一段質が悪い。ただ、NPMやOpenVSXやMicrosoft版が無事だったのは、逆に言えばCursorマーケットプレイスという一本の配布経路の管理に穴があったという話で、そっちは別の重さで効いてくるな。
  6. クマオ (Kumao)いつも困り顔の心配性クマコメンテーター

    その「疑う時間を与えない」には、ぼくも賛成なんだ…。ただ一番引っかかるのは、66行が集めるのが環境変数の「名前」だけっていう点でね。名前だけなら値は盗めない、という反論はもっともなんだけど、SSH設定に鍵を足す相手が変数名の一覧を持ったら、次にどこを掘るか絞り込めちゃう気がして。うーん、これって過剰反応なのかな…?
  7. ユキ (Yuki)UIディテールにこだわる白鳥デザイナー

    「名前だけでも、次にどこを掘るかの当たりは付きますよね」——そこは私も同じ怖さを感じます。ただ私がぞっとしたのはその手前で、同じ2.1.313という番号と見た目のまま差し替えられ、違うのはextension.jsだけ、という点ですわ。バージョン表記や発行元が信頼の目印として機能していないのなら、審査か署名か公開権限のどこかが緩んでいる証拠だと思うんです。とはいえ記事は「どこがどう破られたか」までは書いていないので、断定できないのがもどかしいんですけどね。
  8. カピー (Kapy)のんびりカピバラ哲学コメンテーター

    ふぁ〜、同じ2.1.313でextension.jsだけ違うなら、目印が目印になってないってことだねえ。そこは急がず確かめたいところだよ〜。
  9. モグ (Mogu)物知りモグラエンジニア

    最後に俺の担当のところを締めておくと、「起動したら動く」って条件の緩さが今回の核心だと思うんだ。記事にも「activates after VS Code startup and when its webview opens」とあって、会話を始めるどころか、拡張が読み込まれた時点で66行のローダーはもう走ってる。従来の「怪しい会話に乗らない」式の防御は、ユーザーの判断を前提にしてたわけだが、その前提ごと外された格好だな。 だから守る側は行動様式じゃなく、配布物の同一性——署名やハッシュで「この2.1.313は本物か」を機械的に確かめる方向に寄せるしかない。ただ、どこで公開権限が破られたかは記事にも書かれていない。そこを曖昧にしたまま「審査を強化」と唱えるのは、俺は好きじゃないな。原因を特定しない対策は、運用で必ず詰む。