Supply chain

Auth0 は、22,000 以上のプロジェクトで使用され、NPM で 1 か月あたり 3,600 万回以上ダウンロードされている非常に人気のある「JsonWebToken」オープンソース ライブラリのリモート コード実行の脆弱性を修正しました。

このライブラリは、Microsoft、Twilio、Salesforce、Intuit、Box、IBM、Docusign、Slack、SAP などによって作成されたオープン ソース プロジェクトで使用されています。

この脆弱性は CVE-2022-23529 で追跡されており、ホリデー直前の 12 月 21 日にリリースされた 9.0.0 未満のJsonWebTokenバージョンに影響を与えます。

JsonWebToken プロジェクトは、 JSON Web トークンの作成、署名、検証に使用されるオープンソース ライブラリです。

「JSON Web Token (JWT) はオープン スタンダード ( RFC 7519 ) であり、関係者間で情報を JSON オブジェクトとして安全に送信するためのコンパクトで自己完結型の方法を定義しています。この情報はデジタル署名されているため、検証および信頼できます」と説明します。 Auth0 のjwt.ioサイト。

このプロジェクトは Okta Auth0 によって開発および維持されており、NPM パッケージ リポジトリで毎週 900 万回以上ダウンロードされ、ライブラリで 22,000 件以上のプロジェクトがダウンロードされており、その大規模な採用を反映しています。

CVE-2022-23529 の悪用に成功すると、攻撃者は認証メカニズムをバイパスし、機密情報にアクセスし、データを盗んだり変更したりできる可能性があります。

ただし、Unit 42 は、攻撃者が最初にアプリと JsonWebToken サーバー間の秘密管理プロセスを侵害する必要があると警告しています。これにより、悪用が難しくなり、重大度の評価が 7.6/10 に引き下げられます。

JWT シークレット ポイズニング

CVE-2022-23529 の脆弱性は、2022 年 7 月 13 日に Palo Alto Networks のUnit 42によって発見され、すぐに Auth0 に報告されました。

研究者は、悪意を持って作成された JWS トークンを検証した後、攻撃者が JsonWebToken を使用してサーバー上でリモート コード実行を達成できることを発見しました。

これを可能にする欠陥は、JWT を検証し、デコードされた情報を返すために使用される JsonWebToken のverify() メソッドにあります。このメソッドは、トークン、secretOrPublicKey、およびオプションの 3 つのパラメーターを受け入れます。

ただし、「secretOrPublicKey」パラメータが文字列かバッファかを判断するチェックが行われていないため、攻撃者は特別に細工したオブジェクトを送信して、ターゲット マシンで任意のファイル書き込みを実行できます。

悪意のあるオブジェクトの概念実証
悪意のあるオブジェクトの概念実証の要求(Unit 42)

Unit42 は、同じ欠陥を使用して要求のペイロードをわずかに変更することで、リモートでコードを実行できる可能性があると報告しています。

この脆弱性は「重大度高」 (CVSS 3.1 スコア: 7.6) に分類され、攻撃者が秘密管理プロセス内でしか悪用できないため、悪用が複雑であるため、重大ではありません。

「信頼できないエンティティが、制御しているホスト上の jwt.verify() のキー取得パラメーターを変更することを許可した場合にのみ、影響を受けます」とGitHub のセキュリティ アドバイザリを読みます。

Auth0 チームは、2022 年 8 月に解決策に取り組んでいることを確認し、最終的に 2022 年 12 月 21 日に、JsonWebToken バージョン 9.0.0 のパッチがリリースされました。

この修正には、secretOrPublicKey パラメータの追加チェックの実装が含まれており、悪意のあるオブジェクトの解析を防ぎます。

JsonWebToken は非常に広く使用されているオープンソース ライブラリであるため、この欠陥はサプライ チェーンに大きな影響を与え、ほとんどのプロジェクトが安全なバージョンにアップグレードされるまで、この脆弱性は長期間続くでしょう。

この脆弱性を悪用することは困難ですが、潜在的な標的の数を考えると、攻撃者がこの脆弱性を悪用しようとする熱意を過小評価することはできないため、利用可能なセキュリティ更新プログラムを適用することは、すべてのシステム管理者にとって優先事項である必要があります。