Auth0 が JsonWebToken の脆弱性を FIX:22,000 以上プロジェクトに影響か?

Auth0 fixes RCE flaw in JsonWebToken library used by 22,000 projects

2023/01/09 BleepingComputer — Auth0 が修正したリモートコード実行の脆弱性は、22,000 以上プロジェクトで使用され、NPM からは毎月 3600 万回以上もダウンロードされている、人気のオープンソース・ライブラリ JsonWebToken に存在するものだ。このライブラリは、Microsoft/Twilio/Salesforce/Intuit/Box/IBM/Docusign/Slack/SAP などのオープンソース・プロジェクトでも使用されている。

この脆弱性 CVE-2022-23529 は、クリスマス休日直前の 12月21日にリリースされた、JsonWebToken バージョン 9.0.0 未満に影響を及ぼす。JsonWebToken プロジェクトは、JSON Web トークンの作成/署名/検証を行うためのオープンソース・ライブラリである。


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

このプロジェクトは、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() メソッドに、この欠陥は存在する。そして、このメソッドが受け付けるパラメータには、token/secretOrPublicKey/options の3つがある。

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

Proof of concept malicious object
Proof of concept malicious object in request (Unit 42)

さらに、この欠陥を同じように使用しながら、リクエスト上のペイロードを変更することで、リモートコード実行が可能になると、Unit42 は報告している。

この脆弱性は、High (CVSS:7.6) に分類され、秘密管理プロセス内だけで悪用を許すものであり、悪用自体が複雑であることから、重要視されていない。

GitHub のセキュリティ・アドバイザリには、「信頼できないエンティティに対して、自分がコントロールするホスト上の jwt.verify() の、キー検索パラメータを変更させた場合にのみ、影響が生じることになる」と記されている。

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

この修正では、secretOrPublicKey パラメータに対するチェックを実装し、悪意のオブジェクトのパースを防止している。

JsonWebToken は、オープンソースのライブラリとして広く利用されているため、この欠陥はサプライチェーンに大きな影響を与える。つまり、大半のプロジェクトが安全なバージョンにアップグレードされるまで、長期に渡って影響を生じ続けることになるだろう。

この欠陥の悪用は困難だが、潜在的な標的の数量を考えると、この欠陥を悪用しようとする脅威アクターの意欲は侮れない。したがって、すべてのシステム管理者は、利用可能なセキュリティ更新プログラムの適用を、優先する必要があるだろう。

この JsonWebToken の脆弱性 CVE-2022-23529 ですが、Auth0 に加えて Microsoft/Twilio/Salesforce/Intuit/Box/IBM/Docusign/Slack/SAP などでも使われているということで、ちょっとした騒ぎになりましたが、悪用が難しいということで沈静化したようです。Log4j みたいなことにならず、ホッとした方も多いのではないかと思います。よろしければ、Auth0 で検索も、ご利用ください。