CVE-2026-46395
HAX CMS、破損したHMAC実装による秘密鍵の開示に対して脆弱
- 公開済み
- 2026/06/05
- 更新済み
- 2026/06/05
- CNA の割り当て
- GitHub_M
- 観察された証拠
- 2026/08/08
プライマリ CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X低 · 今後 30 日間
- パーセンタイル
- 22.3%
- モデルの日付
- 2026/09/21
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
概要
HAX CMSは、PHPまたはNode.jsバックエンドを使用してマイクロサイトのユニバースを管理するのに役立ちます。バージョン26.0.0より前のバージョンでは、HAXcmsのNode.jsバックエンドの`hmacBase64()`関数に2つの重大な暗号実装エラーが含まれており、これらが組み合わさることで、認証されていない任意の攻撃者がシステムの秘密署名鍵を抽出し、任意の管理者レベルのJSON Webトークン(JWT)を偽造して、単一のHTTPリクエストで完全な管理者アクセスを取得できるようになります。まず、この関数はkeyパラメータの代わりにリテラル文字列「"0"」をHMAC署名鍵として渡すため、すべてのHAXcmsインスタンスが同じ入力に対して同一のHMACを計算することになります。次に、HMACを計算した後、この関数は実際のkeyパラメータ(「this.privateKey + this.salt」、つまりシステムのマスター署名シークレット)を出力に直接連結します。結合されたバッファはbase64エンコードされ、トークンとして返されます。生成されるすべてのbase64urlトークンは同じ構造を持ちます:「"0"」を鍵とする32バイトのHMACと、`privateKey+salt`のNバイトです。攻撃者は任意のトークンをbase64デコードし、最初の32バイトを破棄して、秘密鍵を直接読み取ることができます。`/system/api/connectionSettings`エンドポイントは認証されておらず、この関数によって生成された複数のトークンを返します。このエンドポイントへの単一のGETリクエストで秘密鍵が公開されます。PHPバックエンドはこの関数を実際の鍵で正しく実装しており、ハッシュのみを返します。PHPバージョンは44文字のトークンを生成するのに対し、壊れたNode.jsバージョンは139文字以上のトークンを生成します。バージョン26.0.0でこの問題は修正されています。
ソース
1CVE-2026-46395 の PoC および writeup: HAXcms Node.js における壊れた HMAC を介した未認証の秘密鍵開示 (CWE-321/CWE-200)。認可されたセキュリティ研究のみに使用してください。
責任ある使用
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。