9月、JavaScript開発者の世界は再び大きなスキャンダルの渦中に巻き込まれました。 npm、最大のパッケージレジストリは、近年最大規模の攻撃の1つでした。いくつかの人気のあるライブラリが侵害され、悪意のあるコードが配布されました。
このようなケースは新しいものではありませんが、現代の開発はコードだけでなく、 サプライチェーンの安全性 (サプライチェーンのセキュリティ)何が起こったのか、そしてどのような教訓を学ぶべきかを見てみましょう。

何が起こったのですか?
ハッカーは、広く使用されているいくつかのパッケージのメンテナーのアカウントにアクセスしました。アップデート内に次のコードが追加されました。
トークンと開発者環境のデータを盗みました。
CI/CDシステムへの攻撃に使用される可能性があります。
追加の悪意のある依存関係をインストールすることができました。
主な問題は、多くのプロジェクトがパッケージを自動的に更新することです。その結果、数千人の開発者と企業がわずか数時間で攻撃を受けました。
なぜこれが危険なのですか?
パッケージの人気度 — 1 つの脆弱なパッケージが、他の何百ものパッケージを引きずり込む可能性があります。
自動化 — 手動で依存関係をチェックしない CI/CD は、攻撃の理想的なターゲットです。
オープンソースへの信頼 — 攻撃者がアップデートに侵入した場合、コードの透明性が脆弱性になります。

学ぶべき教訓:
1.依存関係を最小限に抑える
パッケージが少ないほど、リスクが少なくなります。場合によっては、新しいライブラリをインストールするよりも、独自のコードを10行作成する方が信頼性が高くなります。
2. バージョンロックを有効にする
package-lock.jsonまたはnpm shrinkwrapを使用して、チェック後に手動でのみ更新を行います。
3. メンテナーをチェックする
アクティビティを監視する:所有者の急激な変更や不審なコミットは警告サインです。
4. モニタリングを設定する
ツールのようなもの npm audit、SnykまたはGitHub Dependabotは、脆弱性をより迅速に検出するのに役立ちます。
5. CI/CDを保護する
秘密を安全なストレージ(Vault、Secret Manager)に保存し、最小権限の原則と環境の分離を使用します。
エコシステムはどこに向かっていますか?
インシデントの後、npmとGitHubは制御を強化しました。
メンテナーに対する二要素認証の義務化、
改善された不審なバージョンの警告メカニズム。
ただし、プラットフォームのみに依存することはできません。安全性の責任は開発チームにもあります。
9月の攻撃は、サプライチェーンが現代のITの主な弱点の1つであることを示しました。小さなライブラリの脆弱性が巨大なプロジェクトを麻痺させる可能性がある時代に生きています。
プロジェクトを大切にしましょう: 賢くアップデートし、2FAを使用し、オープンソースの信頼はリラックスする理由ではないことを忘れないでください。
プラットフォームのために記事を準備しました コディック。より多くの役立つ資料やディスカッションについては、 Telegramチャンネル
