世界を動かす技術を、日本語で。

私たちは皆、危機を回避した

概要

  • セキュリティ対策 のための接続確認について説明
  • bot判定 や待機メッセージの意味を簡潔に解説
  • NPMパッケージ のセキュリティ問題に関する関連情報を紹介
  • debug および chalk パッケージの脆弱性事例を言及
  • 開発者や利用者が取るべき 注意点 を提示

セキュリティ確認メッセージの意味

  • 「Making sure you're not a bot!」 は、ユーザーが 自動化されたプログラム(bot) ではないことを確認するためのメッセージ
  • 「Loading...Please wait a moment while we ensure the security of your connection.」 は、 接続の安全性 を確保するための一時的な待機指示
  • サイト側が 不正アクセススパム を防止するために実施する 一般的なセキュリティ対策
  • このプロセスには CAPTCHA認証IPアドレスチェック などが含まれる場合が多い
  • ユーザーは通常、 数秒待つだけ でアクセスが許可される仕組み

NPMパッケージ「debug」と「chalk」のセキュリティ問題

  • debug および chalk は、 Node.jsJavaScript 開発で広く利用される NPMパッケージ
  • 2024年6月、両パッケージが マルウェア混入 による セキュリティ侵害 を受けた事例が報告
  • 攻撃者が パッケージ管理権限 を奪取し、 悪意あるコード を含むバージョンを公開
  • 影響を受けたパッケージをインストールした場合、 情報漏洩システム侵害 のリスク
  • 詳細は Hacker News該当スレッドで確認可能

開発者・利用者が取るべき対策

  • NPMパッケージ のインストール・アップデート時は 公式情報セキュリティアドバイザリ を必ず確認
  • 怪しい挙動や 不審な更新 があった場合は、 即時利用停止 および 調査
  • パッケージのバージョン管理依存関係の監査 を定期的に実施
  • 多要素認証(MFA)強固な認証情報管理 によるアカウント保護
  • 公式以外の ソースや非推奨パッケージ の利用は極力避ける

まとめ

  • bot判定メッセージセキュリティ待機 は、 ユーザーとシステムの安全 を守るための措置
  • NPMパッケージの脆弱性 は、 開発現場全体 に影響を及ぼす重大な問題
  • 最新情報の収集適切な対策 が、安全な開発・運用の鍵

Hackerたちの意見

こういう大きなオープンパッケージのリポジトリには、もっといいセキュリティソリューションが必要だと思う。少なくとも、厳選されたコアのサブセットがあればいいんだけど。PythonやRustなんかも同じ問題があるよね。結局、信頼に頼ってる感じ。

こういうケースでは、パッケージのメンテナのアカウント自体がハッキングされてるから、意味があるかどうかわからないな。唯一の解決策は、すべてのリリースを即時適用しないようにすることだね。

npmの根本的な問題って、まだ名前空間の強制がないことなのかな?Javaの世界では、「なんでMavenはnpmみたいに簡単じゃないの?」って、主にジュニアから文句が出てるのを知ってる(そういう人たちと一緒に仕事してるから)。このブログ記事を教えてあげてるよ:https://www.sonatype.com/blog/why-namespacing-matters-in-pub... Mavenは昔、いろんなことをうまくやってたんだ。確かにPOMファイルはXMLだし、XMLが嫌われてるのはみんな知ってるけど、それを除けば、堅牢性や慎重に考えられた変更に対するこだわりは、ますます印象的になってる。

小規模なところには難しいかもしれないけど、大手(例えばNPM)は「npm」のTLDバージョンを全部買うべきだと思うんだよね(npm.io、npm.sh、npm.helpとか)。これが効果的だった理由の一つは、攻撃者が「npm.help」を手に入れたからだよ。

TLDは1500個くらいあるけど、一部は制限されてたり国コードのTLDだったりする。でも、制限のないTLDを全部登録し続けるのに、実際にどれくらいのコストがかかるのか気になるな。きっとそれをやってくれるSaaS企業があるはず。

標準的なドメインを持つことに比べたら、これは悪いアイデアに思える。人々は「npm.」を見ることに慣れてしまって、本物だと勘違いするかもしれない。そして、NPMが新しいTLDの登録に遅れるだけで、誰かがそのドメインを使って悪いことをすることができる。

AWSみたいな会社があって、以前は no-reply-aws@amazon.com から請求書を送ってたんだけど、先月から no-reply@tax-and-invoicing.us-east-1.amazonaws.com に変わったんだよね。これ、なんかランダムなEC2インスタンスを使ったフィッシングの試みみたいに見えるけど、どうやら本物らしい。と思う。事前に送られた「お知らせ」メールもフィッシングっぽかったから、実際の請求書がそのアドレスから来るのか待ってたんだけど、今でも添付のPDFは開いてないよ。こういう会社はフィッシングに気をつけろって言うくせに、こんなことするんだよね。

先延ばしで救われた!マジで、これが私の生存メカニズムの一つなんだ。小さなサービス会社でシステム管理者になった時には、他の人にベータテストを任せることを学んでた。Microsoft Office 2000を12年間使って、アップグレードの頭痛をめっちゃ回避できたんだ。再教育の必要もなくて、ほんと助かった。それに、他の人が言ってたように…メールのリンクは絶対にクリックしないこと。

明日返信するね。

"npmエコシステム"ではないよ。最後の54秒間に更新してないなら、もう手遅れだね。

「新しいバージョンをデフォルトで使うのは2週間待つだけ」って、サプライチェーン攻撃に対する素晴らしい防御方法だね。

npm経由のnxサプライチェーン攻撃は、多くの企業が避けられなかった弾だったね。VS Codeのnxプラグインをインストールしておくだけでよかったから、常にnpmで最新のnxバージョンをチェックしてたんだ。もしGitHubとローカルセッションがあったり(例えば、GH CLIを使って会社のアカウントにログインしてたら)、.envファイルに重要なクレデンシャルがあったら…それが流出してた。依存関係を固定していても、セキュリティアップデートをしっかりやっていても、こういうことが起こるんだよね。エコシステムにはもっと深い変化が必要だと思う。

エコシステムの問題とは別に、フィッシングの件について、他の関連投稿で私が返答したことを再投稿するね。あなたがフィッシングに騙されることはないと思うけど、あなたの発言や他の人の発言を基に、注意喚起として:自分の感覚を信じて「ドメインが正しいか」とか「メールが正しいか」とか「文言に緊急性があるか」とかを「チェック」するのは、かなり失敗することが多いよ。ほとんどのフィッシング対策のアドバイスがそこに集中してるのが理解できない。役に立たないし、逆効果になることもある。フィッシングに対抗するために本当に役立つこと:1. メールのリンクからログインするのは絶対にやめて。絶対に。正当なメールとフィッシングメールが混ざってるから、見分けるのはほぼ不可能。勝つための唯一の方法は、試みないこと。2. U2F/Webauthnキーを第二要素として使うのがフィッシングに強い。TOTPはダメ。これが全て。その他の方法や「指標」は役立つけど、エラーが起こりやすいから、どこかで誰かがフィッシングに引っかかることになる。特にストレスがかかってたり、疲れてたり、急いでいるときに。今回はあなたがそのターゲットになっただけだよ。

  1. U2F/Webauthnキーは二要素認証としてフィッシングに強いけど、TOTPはそうじゃない。ブラウザに統合されたパスワードマネージャーを使っているなら、TOTPはフィッシングに強くなくても大丈夫だよ。

Stripeの内部エンジニアのプレゼンをどこかで見たんだけど、彼女はセキュリティ関連の仕事をしていて、自分の会社の半分をフィッシングしたんだ(もちろんテスト目的で)。彼女の結論は、非常に規律がありセキュリティ意識の高い場所でも、実際には不可能だってことだった。人間の対策では減らせないって。唯一効果的なのはYubiKeyで、これがこの種の認証情報や二要素認証のフィッシング攻撃を防ぐんだ。

#1は本当に大事なことだよ。予期しない電話には個人情報を絶対に教えないのと同じ。知っている番号からかけ直すべきだね。

  1. 絶対にメールのリンクからログインしないこと。定期的にGoogleドキュメントのリンクがメールで届くけど、幸いなことにほとんど重要じゃないから実際にログインして中を見ることはほとんどないんだ。ただ、誰かがドキュメントのリンクを送ってきたとき、実際の代替手段がないのが問題なんだよね。リンクをたどるか、彼らに連絡して別の配信方法を尋ねるかしかない。(それとも、常にプラットフォームにログインしておくかだけど、私はGoogleに常にログインしているのは避けたい。)この状況については、一般的にどうすればいいのか分からないな。
  1. メールのリンクからログインするのは絶対にやめて。絶対に。正当なメールとフィッシングメールがこれを求めてくるから、どっちがどっちか見分けるのはほぼ不可能。勝つための唯一の方法は、試さないこと。パスワードログインをやめて、ログインプロセスを始めてからメールクライアントで「マジックリンク」をクリックさせるサイトは、ここで良い習慣を育てるには最悪だし、一般的なアドバイスとしてもダメだよ。:c

緊急性もフィッシング(今すぐログインしないと24時間以内にアカウントをロックします)か、マーケティング(このプロモーションを利用して!24時間以内に終了します!)のどちらかだよ。だから…やめとけ。

TOTPの利点と欠点についてもっと読めるところ、どこかおすすめある?この認証アプリは、俺がよく遭遇する2FAのセカンドファクターだから、安全のためにいい情報源が欲しいんだ。

U2F/Webauthnキーをセカンドファクターにするとフィッシングに強い。TOTPはそうじゃない。最後に確認したとき、重要なオンラインアカウント(例えば銀行の口座で、オンラインバンキングを完全に無効にするオプションがないかもしれないところ)を持っている人の大多数は、そういうものが何かを言えないし、ほとんどのオンラインサービスではSMSベースのTOTP以外使えないし、残りのほとんどでは「アプリ」ベースのTOTP(稀にデスクトッププログラムも!)しか使えない状態だよ。そもそも2FAを持っているかどうかも怪しいけど。

本当に危機を逃れたね。こんなパッケージにアクセスできるなんて信じられないし、ただクソみたいな暗号盗むだけって。君は一万分の一のチャンスを持った犯罪者だよ。もっとしっかりしたエクスプロイトを推進するのに、余分に一週間投資しないの? APIキーを抜き出したり、サーバーにSSH公開鍵を追加して、サーバーのIPアドレスを抜き出して手動でスヌーピングすることもできるし、開発者のマシンにいるならブラウザのプロファイルや、セッショントークン、一般的な販売サイトの情報も狙えるよ。私の個人用デスクトップにはAmazonに保存されたカード情報が全部入ってるし、仕事用のノートパソコンも、私の人生の時期によっては信じられないような情報にアクセスできたかもしれない。そんな情報を使わなくても、売るためのフォーラムがあるし。きっと何か理由があるんだろうけど、良いサイバー犯罪者はテック業界で安定した高給の仕事を持っていて、残りはこんな感じなのかな?

君は一万分の一のチャンスを持った犯罪者だよ。もっとしっかりしたエクスプロイトを推進するのに、余分に一週間投資しないの? だって、これが実行された方法ではすぐにバレるだろうし。微妙な挿入じゃなくて、完全にアカウントを乗っ取る形だったから。攻撃者は発見されるまで数時間しかなかったから、論理的にはヒットアンドランが最善の策だよね。自動的に数時間で引き出せる最大の金額は何かって聞かれたら、暗号が明らかに答えだよ。バックドアがすごくて、攻撃コードを半分の世界が解析しても発見されないってことがない限り、試す意味はなかったんだ。

僕の仕事用のノートパソコンは、人生の時期によっては信じられないような情報にアクセスできたこともあるよ。みんなこのことを認めてるのに、HNではITチームが開発用ノートパソコンにかけた制限やEDRについて非難するコメントが溢れてるのが不思議。運用側の僕たちはこのリスクを何年も前から知っていて、その知識が組織のセキュリティポリシーやエンドポイントの設定を推進してるんだ。セキュリティは難しいし、すごく不便だけど、ますます必要になってきてる。

盗まれた暗号通貨は確実にやばいよ。詐欺的な取引は止められないし、逆転もできないからね。ランダムな開発者のAPIやSSHキーなんて、運が良くない限りほとんど価値がないし、運が良くてもその認証情報を売ったりしてお金を得る方法を見つけないといけないけど、その収益も結局暗号通貨で表されることになるから。

一度このマルウェアに引っかかったことがある。バックグラウンドでMBを動かしてても、ノートパソコンにマルウェアが入ってた。アドレスをコピー&ペーストして、チェックもせずにそのまま送信した。ほんとに自分が悪いよ。あいつらはこの「一発勝負」でたくさんお金を稼いでるんだ。

お前は一万分の一のチャンスを持った犯罪者だ。もっと練り込まれた悪用を推進するために、もう一週間投資しないか?『オフィス・スペース』のプロットがヒントをくれるかも。あと、欲張りな犯罪者が捕まる可能性が高いって、犯罪の基本じゃない?

中に入って、数十万ドルを盗んで出て、数ヶ月後に同じことを繰り返す。何回か繰り返せば、警察を避ける方法さえ知っていれば、退職まで心配なしで生きられる。別のものを盗んでも、結局は全部を暗号通貨に変えなきゃならないし、AWSキーがどれだけ稼げるかなんて大したことないよ。パスワードやパスワードマネージャーのデータベースを狙う犯罪者もいるけど、彼らも結局は暗号通貨のウェブサイトを狙うことが多い。完璧なタイミングを待って、静かに企業に潜入する犯罪者もいるだろうけど、暗号通貨のウォレットを抜くような連中よりは捕まりにくいね。

北朝鮮だから、暗号通貨が実用的な理由で手に入る最良の資産なんだ。他のものには法定通貨の市場が必要だけど、リモートで扱うのは難しい。

誰かのマシンで手動でスヌーピングして、クレジットカード番号みたいな敏感な情報を抜き取るっていう、すごくターゲットを絞った攻撃の例を挙げてるけど、(1) それを何百、何千ものSSH/APIキーでどうやってやるの? (2) それで実際にどうやってお金を稼ぐの? SSHや特定のAPIキーのリストを手に入れて、そこからもっと秘密を集めるクローラーを書くってこと?クレジットカードの詳細とか(それってどうやってやるの?)それからどうするの?「資格情報を売る方法」をググって、映画みたいにフォーラムに登録して取引を仲介するの?それは飛行中に暗号アドレスを入れ替えるよりも、ずっと複雑で危険な感じがするね。

誰かがあなたが説明した通りの攻撃を実際にやって、ただ捕まらなかったって可能性もあると思う。

プッシュされたペイロードは新しいトラフィックを生成しなかった。ただ、暗号取引の受取先を別のアカウントに置き換えただけ。検出するのは本当に難しかっただろうね。APIキーを抜き取るのはもっと早く見つかってたはず。一方で、この手法は、開発者のアカウントを乗っ取ってコードを公開したやり方とは完全に矛盾してる。これはすぐに気づかれることになるからね。もしペイロードがもっと微妙な方法で注入されていたら、気づくのに時間がかかったかもしれない。特に、被害者が自分のせいで何かを間違えたと思わせるようなレーベンシュタインのロジックがあったら。

それを考えると、セキュリティのために二要素認証の認証情報を変更するっていうのは、一見合理的じゃない?そう思わない?どうやって2FAを変更するの?新しい電話を買うの?新しいYubikey?

彼のメールクライアント、偽のNPMメールの横に緑のチェックマークまで付けてる。UXの失敗だね。

その主張は正当だよ。npm.helpからの正規のものだから。もしnpm.helpを何か別のものだと思っているなら、それはDKIMとかではどうにもならないことだよ。

「私たちは大きな危機を回避した」って言うけど、そうは思わないな。もっと高度な攻撃がnpmエコシステムに入ってきてる可能性は十分あると思う。

このフィッシングメールは赤信号だらけだね。以下はそのメールからの赤信号の例だよ:- 2FAの資格情報を更新してくださいって、そもそもそれはどういう意味?更新できるものじゃないし、2FAの目的から外れてるよ。- 最後の2FAの更新から12ヶ月以上経ってるって、これも無意味なことだね。2FAの更新なんて存在しないよ。受取人が「パスワード更新」を考えてたのかもしれないけど、パスワードを定期的に更新するのも良くない習慣だし。- 「ご親切にお願い申し上げます…」って、正式なセキュリティ通知でそんな書き方は普通しないよ。- 「あなたの資格情報は一時的にロックされます…」って、「一時的にロック」って何?そんなの存在しないよ。緊急感を煽るのはクラシックなフィッシング手法で、赤信号だね。- 資格情報を変更するためのリンクがあるけど、正当なセキュリティメールには資格情報を変更するためのリンクは含まれないはず。- 変なドメインから来てる - .help みたいな非標準のドメインは赤信号だよ。私はNPMを使ってないけど、もしこれが本当にNPMが送るメールに見えるなら、NPMには深刻な問題があるね。でも、セキュリティに無知な企業はこういうメールを送ることがある。だから、こういうメールを受け取って本物かもと思ったら、直接NPMにログインしてアカウント設定を更新するのが第二の防衛策だよ。メールのリンクをクリックしないこと。セキュリティ警告メールのリンクは絶対にクリックしちゃダメ。これに引っかかった人を責める気はないけど、広く使われているパッケージに公開アクセスを持つ人たちの間で、セキュリティ意識やトレーニングが限られているのは心配だね。