NPM リポジトリ内の任意のパッケージのアップデートがリリースされることを可能にする脆弱性

GitHub は、NPM パッケージ リポジトリ インフラストラクチャにおける 2 つのインシデントを公開しました。 XNUMX 月 XNUMX 日、サードパーティのセキュリティ研究者 (Kajetan Grzybowski と Maciej Piechota) は、Bug Bounty プログラムの一環として、NPM リポジトリに脆弱性が存在し、アカウントを使用して任意のパッケージの新しいバージョンを公開できるようになると報告しました。そのような更新を実行する権限がありません。

この脆弱性は、NPM へのリクエストを処理するマイクロサービスのコードにおける不正な権限チェックによって引き起こされます。 認可サービスは、リクエストで渡されたデータに基づいてパッケージのアクセス許可チェックを実行しましたが、更新をリポジトリにアップロードした別のサービスが、アップロードされたパッケージのメタデータ コンテンツに基づいて公開するパッケージを決定しました。 したがって、攻撃者は、アクセスできる自分のパッケージの更新の公開を要求しますが、最終的に更新される別のパッケージに関する情報をパッケージ自体に指定する可能性があります。

この問題は脆弱性が報告されてから 6 時間後に修正されましたが、脆弱性はテレメトリ ログがカバーするよりも長く NPM に存在していました。 GitHub は、2020 年 XNUMX 月以降、この脆弱性を利用した攻撃の痕跡はないと主張していますが、この問題が以前に悪用されていないという保証はありません。

26回目の事件は30月XNUMX日に発生した。 replicate.npmjs.com サービスのデータベースの技術作業中に、外部リクエストからアクセスできるデータベース内の機密データの存在が明らかになり、変更ログに記載されていた内部パッケージの名前に関する情報が明らかになりました。 このような名前に関する情報は、内部プロジェクトに対する依存関係攻撃の実行に使用される可能性があります (XNUMX 月には、同様の攻撃により、PayPal、Microsoft、Apple、Netflix、Uber、およびその他 XNUMX 社のサーバー上でコードが実行されることが許可されました)。

さらに、大規模プロジェクトのリポジトリがハイジャックされ、開発者アカウントの侵害を通じて悪意のあるコードが推進されるケースが増加しているため、GitHub は必須の 2022 要素認証を導入することを決定しました。 この変更は XNUMX 年の第 XNUMX 四半期に発効し、最も人気のあるリストに含まれるパッケージのメンテナと管理者に適用されます。 さらに、悪意のある変更を早期に検出するために、パッケージの新しいバージョンの自動監視と分析が導入されるインフラストラクチャの最新化についても報告されています。

2020 年に実施された調査によると、アクセスを保護するために 9.27 要素認証を使用しているのはパッケージ管理者のわずか 13.37% であり、12% のケースで、開発者は新しいアカウントを登録する際に、漏洩したパスワードを再利用しようとしたことを思い出してください。既知のパスワードの漏洩。 パスワード セキュリティのレビュー中に、「13」などの予測可能で簡単なパスワードの使用により、NPM アカウントの 123456% (パッケージの 4%) がアクセスされました。 問題のあるアカウントの中には、最も人気のあるパッケージのトップ 20 に含まれる 13 つのユーザー アカウント、月間 50 万回以上ダウンロードされたパッケージを持つ 40 アカウント、月間 10 万回以上ダウンロードされる 282 アカウント、月間 1 万回以上ダウンロードされる 52 アカウントがありました。 依存関係のチェーンに沿ったモジュールの読み込みを考慮すると、信頼できないアカウントの侵害は、NPM のすべてのモジュールの最大 XNUMX% に影響を与える可能性があります。

出所: オープンネット.ru

コメントを追加します