脆弱性・CVE速報深刻度: 中

OpenWISP Controller の CRL 取得 API に脆弱性(CVE-2026-116677): 他の組織の CA の失効リストを取得できる

目次(5)

CVE-2026-116677

OpenWISP Controller(ネットワーク・Wi-Fi の管理基盤)の REST API で、認証局(CA)の証明書失効リスト(CRL)を取る処理に、組織ごとのアクセス制限が抜けていたとして、CVE-2026-116677 が公開されました。GitHub Advisory の深刻度は Medium、CVSS v4.0 は 5.3(CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N)、CWE-862(認可の欠落)です。CVSS v3.1 の値はありません。CISA の KEV には載っていません。EPSS は 0.18%(10/30 時点、順位は下位 7% 付近)です。

何が起きるか

  • 対象は GET /api/v1/controller/ca/<整数ID>/crl です。この処理は、CA を ID だけで探していて、ほかの API が使う「管理している組織だけに絞る」仕組みを通していませんでした。
  • そのため、ある組織の管理者(CA の閲覧権限あり)が、連番の CA ID を順に試すと、別の組織の CA の CRL を受け取れます。同じ CA の詳細 API は、別組織なら 404 を返します。
  • 取れるのは CRL だけです。発行者の情報と、失効した証明書のシリアル番号が分かります。CA の秘密鍵は漏れず、データの変更もできません。
  • 勧告は、django-x509 の既定では CRL は誰でも取得できる設定なので、既定のままの環境で新しく増える漏えいはない、と説明しています。影響が大きいのは、DJANGO_X509_CRL_PROTECTED = True で CRL を保護している環境です。勧告自身は実際の影響を低いとしています(GitHub の全体の評価は Medium)。

影響を受ける版と修正

  • 対象は pip の openwisp-controller 1.0.0 以上 1.3.2 未満、修正版は 1.3.2 です。
  • 1.3.2 は 2026 年 10 月 23 日(UTC)にリリースされ、リリースノートに「CA の CRL への組織をまたぐアクセスを防いだ」と書かれています。修正のコミットは 10 月 19 日から 20 日(UTC)です。
  • 修正は、CA を取り出すときに組織で絞った取得処理(self.get_object())を使う形です。同じ 1.3.2 には、設定のダウンロードなどに対する別の組織またぎの修正も入っています。
  • 勧告の公開は 10 月 30 日(UTC)で、リリースの約 1 週間後です。NVD には 10 月 27 日に登録されましたが、評価は「Deferred」(保留)です。

悪用の条件

  • 1.3.2 より前の OpenWISP Controller を使っている。
  • 攻撃者が、いずれかの組織の管理者としてログインでき、CA の閲覧権限を持っている。
  • CRL を保護する設定にしている環境ほど、影響が大きい。

対応

  1. 使っている openwisp-controller の版を確認します。
  2. 1.3.2 未満なら、1.3.2 以降へ更新します。
  3. すぐ更新できない場合は、CA の閲覧権限を持つ管理者を必要な人だけに絞ります。
  4. CRL を保護している環境では、更新前に別組織の CRL が取得されていないか、API のアクセスログで /ca/<ID>/crl への要求を点検します。

未確認の点

  • 悪用の報告は見つかっていません(KEV 掲載なし。EPSS は低い値です)。
  • NVD の評価は保留のままで、NVD 自身の深刻度は未確認です。上の CVSS v4.0 は GitHub の値です。
  • 実際の環境での再現は確認していません。記載は勧告・リリースノート・修正コミットの内容に基づきます。

この記事について

出典

この記事を共有