Skip to content
Matt D.

Coordinated disclosure

Anpviz camera security evidence, 2026

An evidence index for the V3.5.2.1 camera capture and Anpviz's wrong-board V3.6.3.1 remediation image.

This is the companion to my initial security report and remediation review. The complete evidence repository contains the C-like Ghidra exports, 146 labeled source captures, 68 versioned finding dossiers, manifests and supporting excerpts. The evidence documents and source exports below open in GitHub’s file view; the screenshots remain on this site. This page is served at both matthewd.xyz and matthewd.org.

Scope and disclosure

The old V3.5.2.1 image came from a read-only capture of my own IPC-D240W-S (MCA40E). Anpviz’s supplied V3.6.3.1 image is for MCA50E; Anpviz acknowledged that error and told me not to flash it. I did not run the new image. Its findings are static and need confirmation on a correct MCA40E build. I reported the work privately beginning 17 October 2026 and coordinated with CERT/CC (VRF #26-10-FZTVG) and CISA (case #116607). The repository README gives the full CVD timeline and evidence limits.

The F and N labels are research IDs, not assigned CVE identifiers. CWE mappings are proposed. Eight conditional scenarios have provisional CVSS v4.0 scores; unscored rows lack a defensible numeric assessment or are inapplicable. Anpviz’s model-scope review and response are ongoing. No vendor firmware binary, calculated credential, device identifier, or operational exploit packet is hosted here.

Earlier public disclosures

These reports show that related camera products and firmware families had published authentication, credential, debug-access and update concerns before this investigation. They concern different models or firmware branches; their CVEs are not automatically applicable to my IPC-D240W-S or Anpviz’s supplied MCA50E image. The comparison and source notes explain the limits.

I published a separate account of my disclosure decision and the wrong-board firmware Anpviz sent for verification.

Finding dossiers

Each page explains the old or new code, assessment limits, proposed CWE and CVSS status, and links its relevant source captures. The raw C exports are linked from the dossier pages.

FindingOld V3.5.2.1Supplied V3.6.3.1CWECVSS v4.0 old / new
F1 — Derived UDP recovery credentialoldnewCWE-798, CWE-2887.2 / 7.2
F2 — Debug command parser overflowoldnewCWE-121unscored / unscored
F3 — SADP reset verifier zero stateoldnewCWE-287unscored / unscored
F4 — Serial-gated factory restoreoldnewCWE-306unscored / unscored
F5 — Broadcast reset SDK callsoldnewCWE-306unscored / unscored
F6 — Unsigned firmware update patholdnewCWE-306, CWE-3476.0 / 6.0
F7 — Inconsistent password length limitsoldnewCWE-20unscored / unscored
F8 — Password change can leave account inaccessibleoldnewCWE-20unscored / unscored
F9 — URL-reserved password charactersoldnewCWE-20unscored / unscored
F10 — Unescaped password in XML attributesoldnewCWE-116unscored / unscored
F11 — Account password sent over HTTPoldnewCWE-3195.9 / 5.9
F12 — Protocol authentication disabled by defaultoldnewCWE-306, CWE-1188unscored / unscored
F13 — Reversible fixed-key service credentialsoldnewCWE-257, CWE-312unscored / unscored
F14 — Spoofable MAC/IP restrictionoldnewCWE-290unscored / unscored
F15 — Cloud update verificationoldnewCWE-347, CWE-494unscored / unscored
F16 — Credentials embedded in ONVIF media URIoldnewCWE-522, CWE-200unscored / unscored
F17 — Serial-gated UDP control operationsoldnewCWE-306, CWE-284unscored / unscored
F18 — Shell command construction from device settingsoldnewCWE-78unscored / unscored
F19 — Runtime-derived root passwordoldnewCWE-798, CWE-1393unscored / unscored
F20 — UDP serial parser stack copyoldnewCWE-121, CWE-787unscored / unscored
F21 — ONVIF scope parser stack copiesoldnewCWE-121, CWE-787unscored / unscored
F22 — Production debug and Telnet capabilityoldnewCWE-4898.5 / unscored
F23 — Debug SetVersion root command injectionoldnewCWE-788.5 / unscored
F24 — Hikvision-compatible URL parser overflowoldnewCWE-121, CWE-787unscored / unscored
N1 — Potential unauthenticated upload routesoldnewCWE-306, CWE-862unscored / unscored
N2 — UDP 22000 lead excludedoldnew—unscored / unscored
N3 — Config-file command channeloldnewCWE-78unscored / unscored
N4 — Case-insensitive account password comparisonoldnewCWE-178unscored / unscored
N5 — Plain-HTTP delta fetcholdnewCWE-319, CWE-494unscored / unscored
N6 — No N6 finding assignedoldnew—unscored / unscored
N7 — Plaintext password loggingoldnewCWE-532unscored / unscored
N8 — Weakened default password ruleoldnewCWE-521unscored / unscored
N9 — HTTP Digest replay checksoldnewCWE-294unscored / unscored
OTHER — Shared-memory bounds hardeningoldnew—unscored / unscored

Browse the raw evidence

Supporting files