ディスカッション (11件)
現在進行中のCheckmarxによるサプライチェーン攻撃キャンペーンにおいて、Bitwarden CLIが標的となっていることが判明しました。セキュリティ上のリスクが高まっているため、関連ツールを利用しているエンジニアは注意が必要です。
BitwardenのCLIにはひどい目に遭わされた。bw listを実行した時、パスワード名の一覧が出ると思ってたら、まさかのパスワード本体やTOTPコードまで全部表示されたんだ。それだけならまだしも、SSHでサーバーに入ってtmux上でWeechat(IRCクライアント)を開いてたら、なんとWeechatの入力履歴の中に、さっき実行したbwコマンドの内容が丸ごと残ってたんだ。どうしてこうなったのか皆目見当もつかないけど、かなりゾッとしたよ。tmuxやWeechatのセッションをまたいでも消えなくて、サーバーを再起動するまで直らなかった。すぐさまbw CLIは削除したし、二度とインストールするつもりはない。ちなみにターミナルはGhosttyを使ってる。
CLIは使ったことないけど、ブラウザプラグインは愛用してるんだ。もしあれが乗っ取られたら大惨事だよね。何か対策はあるかな?古くて信頼できるバージョンを使い続けるとか?自分の平穏な生活が、これらの秘密情報に依存していると考えるとかなり奇妙な気分だよ。
今回影響を受けたのは@bitwarden/cli 2026.4.0みたいだね。悪意あるコードはパッケージに含まれるbw1.jsというファイルに仕込まれていたらしい。BitwardenのCI/CDパイプラインに含まれるGitHub Actionが乗っ取られたようで、今回のキャンペーンで被害を受けた他のリポジトリと同じパターンだね。
KeePass勢は相変わらずストレスフリーな人生を送ってるよ。自分はKeePassを自分のインフラでローカル運用してるおかげで、ここ5年だけでも何度かセキュリティ侵害を回避できたし。
「ロシア語ロケールでキルスイッチ発動:システムロケールがruで始まっていたら、Intl.DateTimeFormat().resolvedOptions().localeや環境変数のLC_ALL、LC_MESSAGES、LANGUAGE、LANGをチェックして、黙って終了する」……大胆なくせに臆病だな。
https://github.com/doy/rbw はBitwarden CLIのRust製代替ツールだね。RustのエコシステムもNPMみたいな方向(依存関係が巨大かつ深すぎる)に向かいつつあるけど、JavaScriptよりは信頼すべき作者の数がずっと少なくて済むよ。
npm/pnpm/yarn/bun/uvなんかで「最低リリース経過日数」を設定する以外に、もっといい自己防衛策を知ってる人はいる?npm 11.10以上で.npmrcにmin-release-age=7と書けば、19時間前に公開された@bitwarden/cli 2026.4.0をダウンロードしてしまった運の悪い334人を守れたはずなんだけど。axios、ua-parser-js、node-ipcなんかの時も同じ話だね。event-stream(2ヶ月以上潜伏してた)には効かなかっただろうけど、万全とはいかないか。p.s. 宣伝で悪いけど、設定の確認や修正ができるツールを探しても見つからなかったから、自分でオープンソース(MITライセンス)のやつを公開してみたよ。ワンクリックで済む方がみんな使ってくれるだろうしね。https://depsguard.com 興味があればどうぞ。追記:同じようなアイデアを持ってる人が他にもいたみたい。https://cooldowns.dev
今回の攻撃で特に印象的なのは、攻撃者がGitHubの障害が発生していないタイミングを見計らって、完璧に連携させてたってことだね。
要するに、ビルドパイプラインが乗っ取られて、毒入りのパッケージが出荷されたってことだ。忠告として言っておくと、ビジネスに不可欠なものならnpmを使う際、依存関係をピン留めすべきだよ。今まで他の開発者と散々議論してきたけど、みんなロックファイルがあるから大丈夫って言うんだ。でも^が付いたバージョン指定だと、ロックファイルが更新されるタイミングで、意図しない新しいバージョンが入る可能性がある。会社が潰れるレベルの損害が出るリスクがあるなら、手間をかける価値はあるよ。
一番重要なのは「npm installだけで終わった」という点だろうね。インストール前のフックが乗っ取られたら、「インストール後にコードを検査する」という一般的な考え方は通用しなくなる。その時点でペイロードは既に実行されてるんだから。エージェントやCI、使い捨てのサンドボックス環境だとさらに厄介だね。自動的かつ頻繁にインストールが行われる環境では、わずかな露出時間で十分事足りてしまう。あと、このペイロードは秘密情報だけでなくAIツールの設定も狙ってた点に注目すべきかな。シェルのプロファイル改ざんが、次にコーディングアシスタントが読み込むコンテキストを汚染する方法になる可能性は十分あるね。AgentSHの開発をしてるんだけど、その視点についてはここで詳しくまとめたよ。https://www.canyonroad.ai/blog/the-install-was-the-attack/