
CakePHP 5.2.13のFunctionsBuilder::castを介したSQLインジェクションに関するCVE-2026-79752の開示パック。許可された再現用のPython PoCスクリプトとDockerラボ付き。
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-79752
解説記事: https://abraxaslabs.tech/research/CVE-2026-79752
CakePHP 5.2.13 - cakephp
私は @abraxas_null です。ループバックラボです。クライアントは CVE-2026-79752-Abraxas-Labs.py です。
CAST AS リテラル。FunctionsBuilder::cast(および extract / datePart / dateAdd)は、呼び出し元の dataType / part / unit をエスケープされていない構造として SQL に挿入します。ラボでは sqlite 上で GET /?type= を cast('body', $_GET['type']) に渡します。WordPress ではありません。CVE-2026-77635(jsonValue / Postgres)の類似案件です。5.2.14、5.3.7、5.1.9、4.6.5、4.5.12 で修正済みです。
| CVE | CVE-2026-79752 · CVE.org |
| CWE | CWE-89 |
| CVSS | Critical: 9.2 CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N |
| 製品 | CakePHP |
| 影響範囲 | 5.2.x 5.2.13 まで(加えて 4.5.x < 4.5.12、4.6.x < 4.6.5、5.1.x < 5.1.9、5.3.x < 5.3.7) |
| 修正済み | 5.2.14、5.3.7、5.1.9、4.6.5、4.5.12 |
| 認証 | 不要 |
| ライセンス | GNU Affero GPL v3.0 |
| ラボ | 127.0.0.1 のみ |
リクエストデータを func()->cast(..., $type)(または他の3つ)に渡すアプリケーションでは、呼び出し元が CAST を閉じて任意のものを UNION できます。ラボでは notes.body が漏洩します。これは CakePHP クエリビルダーにおける SQL インジェクションであり、Postgres jsonpath におけるものではありません。
GHSA は4つのメソッドを挙げていました。私は cast を読み、次に GET をそこへ渡す sqlite アプリを構築しました。
デフォルトの GET / は CAST(body AS INTEGER) と [{"v":0}] を返します。これは製品が正常に動作している状態です。インジェクション用の GET は、sql= にフラグメントを挿入し、かつ POCWitness79752 を返さなければなりません。
回り道: イメージが composer install をスキップしたため composer が 500 を返したこと、PHP ソースから witness を grep で探したこと、インジェクション用 GET の後も sql= が CAST(body AS INTEGER) のままだったこと。
ポート 8088。cakephp/database 5.2.13。ラボアプリは lab/lab-www 配下。sqlite の notes.body = POCWitness79752。
対象は 127.0.0.1:8088 のみ(またはバインドしたループバック)。
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-79752-Abraxas-Labs.py
Witness: HTTP ボディ内の POCWitness79752 かつ sql= に注入フラグメントが現れること。CAST(body AS INTEGER) だけでは不十分です。
何も学べずに失敗するパターン:
sql= に注入フラグメントがないCakePHP を 5.2.14(または 5.3.7 / 5.1.9 / 4.6.5 / 4.5.12)に更新してください。パッチ適用済みのビルドに対して CVE-2026-79752-Abraxas-Labs.py を再実行し、注入フラグメントが sql= に現れないことを確認してください。
github.com/cakephp/cakephp/commit/3349584ca3a891afaff2dbc324d6b1c09fb880f0
github.com/cakephp/cakephp/commit/3f4d13ea4280067f3381ecf935a8bef5b7cdcc2e
github.com/cakephp/cakephp/commit/79e1d6bc6f3a50fa01805579076a02c77370c676
github.com/cakephp/cakephp/commit/8699d6f38e25fe46fcc24f2b698809948e71ad7d
github.com/cakephp/cakephp/commit/ab608711674ac662af7315c5cdf1e0fbe2000e45
github.com/cakephp/cakephp/security/advisories/GHSA-vjqc-q4mp-2rvf
github.com/CVEProject/cvelistV5/tree/main/cves/2026/79xxx/CVE-2026-79752.json
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0。LICENSE を参照してください。
このクライアントはループバックと通信します。所有していないシステムに対して使用することは、Abraxas Labs によって認可されていません。保証はありません。