
Root-cause analysis and safety-gated verification tool for CVE-2025-0324, a privilege-escalation flaw in AXIS OS VAPIX allowing any authenticated user to gain admin via a crafted Host header.
A client-controlled Host header as a root-group backdoor in the AXIS OS VAPIX Device Configuration framework.
Axis Communications disclosed CVE-2025-0324 on 2025-06-02 as a critical (CVSS 9.4) privilege-escalation flaw in the VAPIX® Device Configuration framework used across the AXIS OS platform, crediting bug-bounty researcher Malacupa for the find — but explicitly declined to publish any technical detail: "Axis will not provide more detailed information about the vulnerability."
More than fourteen months after a patch became generally available, this repository publishes an independent root-cause reconstruction, obtained entirely through comparative firmware (patch-diff) analysis of publicly distributed Axis firmware images, with the finding empirically confirmed on real hardware the author owns.
The bug, in one sentence: an Apache authorization module shipped by
Axis (mod_authz_axisgroupfile.so) grants a session every administrative
role it defines if the client's Host: HTTP header resolves to the string
localhost-acap — and because the device runs Apache's default
UseCanonicalName Off, that value is fully attacker-controlled. Any
account with any valid, non-anonymous credential — including the
lowest-privileged viewer role — can become a full administrator by adding
one HTTP header.
Read the full report for: the disclosure timeline, affected version
ranges, the VAPIX Device Configuration framework's request-flow
architecture, the disassembly-level root cause with before/after code
listings, the live proof-of-concept transcripts, a discussion of why this
research supports NVD's PR:LOW CVSS assessment over the vendor's own
PR:NONE self-score, detection guidance for defenders, and full
remediation steps.
| Track | Vulnerable | Fixed |
|---|---|---|
| AXIS OS LTS 2024 | ≥ 11.8.0, < 11.11.140 | 11.11.140 |
| AXIS OS Active Track | ≥ 12.0.0, < 12.3.33 | 12.3.33 |
If you administer Axis devices, patch to the versions above (or your
model's next available build after 2025-06-02) before doing anything else.
The verification tool in poc/ can confirm your device's exposure in
read-only, non-destructive mode in under a second.
cd poc
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python3 verify_cve_2025_0324.py \
--target <device-ip> \
--username <any-valid-account> \
--password '<password>'
This performs a firmware-version check plus a read-only behavioral test and
never modifies device state. See poc/README.md for the
opt-in, fully conclusive (state-changing, auto-cleaning) confirmation mode,
and for exactly which HTTP requests are sent.
ap_get_server_name() — which reflects the client's Host header under
Apache's default configuration — for a security decision) for the wider
research community.All testing was performed exclusively against hardware owned by the
author, on an isolated lab network, with no production systems or
third-party devices involved at any point. See §12 ("Ethics and
Disclosure") of the full report and SECURITY.md for more.
poc/ is licensed under the MIT License.report/report.html, report/report.pdf, and this
README) is licensed under
Creative Commons Attribution 4.0 International (CC BY 4.0).
You are free to share and adapt it, including commercially, provided you
give appropriate credit.This repository is provided for defensive security research and asset-owner self-verification purposes only. The author is not responsible for misuse. Do not use any tool in this repository against a device you do not own or are not explicitly authorized to test.
poc/verify_cve_2025_0324.py| Safety-gated verification tool for device owners |
poc/README.md | Exact requests the tool sends, and its safety model |
SECURITY.md | How to report issues with this repository's content or tooling |