Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain on-path MITM on non-TLS channel
-
DeliveryObserve victim's authenticated auth-int request
-
ExploitRewrite entity body, keep Authorization header
-
ExecutionBody-less digest verification accepts request
-
ImpactExecute state-changing action as victim principal
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Requires all of: (1) the non-default configuration ServerFilters.DigestAuth(..., qop = listOf(Qop.AuthInt), ...) - the default Qop.Auth is not exploitable for this issue; (2) a non-TLS (cleartext) transport, since TLS independently protects the body; (3) an active man-in-the-middle position able to read and rewrite in-flight requests; and (4) interoperability only with a body-omitting peer such as http4k's own DigestAuthReceiver (a strictly RFC 7616-conformant client that hashes the body would fail to authenticate). No credentials are needed and no victim action beyond sending a normal authenticated request is required. These limiting factors - non-default QoP, cleartext channel, and MITM foothold - substantially constrain realistic exploitation despite the unauthenticated (PR:N) nature of the attack. |
| Impact | Signals point to a genuine but condition-bound integrity flaw rather than a broad emergency. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N) scores 8.2 and correctly reflects that no credentials are needed (PR:N) but that success depends on specialized conditions: AC:H and AT:P capture the need for an active on-path position on a non-TLS channel plus a non-default QoP configuration. KEV status is NO (not CISA-listed) and no EPSS score was provided, so there is no evidence of widespread or automated exploitation; the vuln.today Decision label is 'this_week', consistent with prompt remediation but short of act_now/emergency. A public PoC reference exists in the GHSA advisory - a dependency-free harness that recomputes the auth-int pre-image and shows identical digests for two different bodies - but it demonstrates the digest collision, not a turnkey network MITM exploit, so PoC availability must not be conflated with active exploitation. Note two data caveats: the input Tags label this 'Information Disclosure', which conflicts with the vector (VC:N, VI:H) - this is a message-integrity/tampering flaw, not confidentiality loss; and the fixed version shows a discrepancy (CVE metadata says fixed in 6.60.0.0, while the GHSA source snapshot examined at 6.59.0.0 reported 'not fixed' because 6.60.0.0 was not yet published). Net: a real, high-integrity-impact issue for the specific deployments that enabled auth-int over cleartext, but the non-default configuration and MITM prerequisite meaningfully bound real-world exposure. |
| Exploit ScenarioDerived | An operator enabled http4k Digest auth with qop=auth-int over a non-TLS channel, trusting auth-int to protect the request body. An on-path attacker with no knowledge of the credentials observes a victim's authenticated state-changing POST (e.g. amount=10&to=alice) and rewrites the body to amount=999999&to=attacker while leaving the method, URI, nonce and Authorization header untouched; the server recomputes a body-independent digest, accepts the tampered request, and executes it as the victim. A public PoC harness in the advisory demonstrates that both bodies produce an identical auth-int digest. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 02, 2026
http4k's Digest authentication advertises the RFC 7616 auth-int quality-of-protection but never binds the request entity body into the digest, so an on-path attacker on a cleartext channel can rewrite the body of an already-authenticated, state-changing request while leaving the Authorization header valid. Affected is the org.http4k:http4k-security-digest module from 4.9.10.0 through 6.59.0.0, and only when an operator explicitly configures ServerFilters.DigestAuth with qop = listOf(Qop.AuthInt); the default Qop.Auth is not affected. The attack is unauthenticated - no credentials are needed - but requires a non-default QoP setting, no TLS, an active MITM foothold, and a body-omitting peer such as http4k's own DigestAuthReceiver, so a strictly RFC 7616-conformant client that hashes the body would simply fail to authenticate. A public PoC reference exists (a dependency-free digest-equivalence harness published with the advisory); it is not verified as working exploit code, and there is no confirmed active exploitation.
RemediationAI
Upgrade org.http4k:http4k-security-digest to 6.60.0.0, the vendor-released fix version, which binds the entity body into the auth-int digest; no released patched version short of that is confirmed. Until the upgrade can be staged, the most direct mitigation is to stop relying on auth-int for integrity: configure qop = listOf(Qop.Auth) instead of Qop.AuthInt, which removes the false guarantee but leaves the body protected only by transport security, or reject auth-int on the verifier and omit it from generateChallenge() if clients must be forced off it - both approaches break interoperability with peers that negotiate auth-int. Terminate digest authentication behind TLS so the body is protected independently of the digest QoP; this fully closes the tampering path but requires certificate management and changes the deployment model in which digest auth is typically chosen as a TLS substitute. Operators who cannot do either should treat every auth-int-protected non-TLS request as body-unauthenticated and avoid carrying state-changing parameters in it. Note that patching involves threading the request body through DigestAuthProvider.verify and ServerFilters.DigestAuth, so streaming-body handlers must be buffered or explicitly restricted once the fix is applied. Advisory: https://github.com/http4k/http4k/security/advisories/GHSA-9xx4-xjpj-xqcf.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
HTTP Digest authentication (RFC 7616) uses the qop parameter to select what the response digest protects: qop=auth covers only the method and request URI, while qop=auth-int is specified to additionally bind the entity body via A2 = method:request-uri:H(entity-body). In http4k the encoder at core/security/digest/src/main/kotlin/org/http4k/security/digest/DigestEncoder.kt computes ha2 as H(method:digestUri) for both Auth and AuthInt, so the two pre-images differ only by the literal QoP label; a standing TODO in that file acknowledges the MD5(method:digestURI:MD5(entityBody)) form was never implemented. The server side compounds this: DigestAuthProvider.verify(credentials, method, requestUri) has no body parameter at all, so there is no point in the verification path where the received entity body could be checked against what the client digested. The flaw maps to CWE-345 (insufficient verification of data authenticity), with CWE-924 (improper enforcement of message integrity) also assigned by the project. Because MessageDigest.isEqual compares against a body-independent recomputed digest, method, URI, nonce, nonce-count and Authorization header all remain valid across a body substitution; the demonstrated primitive is full attacker control of the body of an authenticated, state-changing request. The trigger mechanism is documented in the advisory source: the body is never incorporated into the hash, and the weakness has been present since the module was introduced at 4.9.10.0 without any CHANGELOG entry addressing auth-int or entity-body integrity.
Know when Http4K gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
On-path MITM over cleartext plus a non-default auth-int config makes AC:H; attacker needs no credentials (PR:N); only request-body integrity is affected (I:H, C:N/A:N), scope unchanged.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
http4k from 4.9.10.0 before 6.60.0.0 contains a missing integrity check vulnerability because DigestEncoder computes the auth-int digest without hashing the request entity body. On-path attackers on non-TLS channels can rewrite the body of authenticated requests while keeping the Authorization header valid, executing state-changing actions as the victim.
Technical POC Analysis
CWE-345 (Insufficient Verification of Data Authenticity), with the advisory cross-tagging CWE-924 (Improper Enforcement of Message Integrity During Transmission).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A HIGH-severity flaw in http4k's Digest authentication module (http4k-security-digest) can allow an on-path attacker to tamper with state-changing requests on cleartext connections when operators have opted into the non-default auth-int quality-of-protection. Exposure is narrow-limited to teams running affected versions (4.9.10.0-6.59.0.0) with this non-default configuration over unencrypted channels-but any organization relying on that configuration could face unauthorized transaction or data modification. Leadership should care because an unpatched design weakness in a widely used JVM HTTP toolkit can undermine request integrity wherever that configuration is deployed.
Apply vendor patch. Until then, switch configurations to the default Qop.Auth, enforce TLS on all authenticated endpoints, and deploy network-level integrity controls (mTLS or signed request bodies) to prevent on-path body tampering.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Related Vulnerabilities in http4k Path Traversal and Integrity Check Flaws
View all 2Cookie scoping bypass in the http4k client-side cookie jar (Maven org.http4k:http4k-core) causes cookies stored by Basic
Replay of captured Digest authentication credentials is possible in the http4k http4k-security-digest module (org.http4k
Host-header routing bypass in http4k (Maven artifact org.http4k:http4k-core) before 6.49.0.0, 5.42.0.0 and 4.51.0.0 lets
EUVD-2026-115006
GHSA-65gw-vqgg-jvcf
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB