GHSA-fj9w-c36g-h5x8: Low severity maven/org.asynchttpclient:async-http-client vulnerability

Published Sep 17, 2026
·
Updated

Impact For SCRAM, and for Digest with mutual authentication, the client computes the server's verification value (the SCRAM ServerSignature, or the Digest rspauth) but does not act on the result. If the value is present and does not verify, the client only logs it and still delivers the response to the application as a successful, authenticated result. A server that never proved knowledge of the shared secret is accepted, so the client loses its ability to detect an impostor. Over TLS the real server always returns a valid value and the issue is inert; it matters over a non TLS transport, or when the transport is already compromised, where it removes the client's only signal that the peer does not know the secret.

Affected versions 3.x: 3.0.8 through 3.0.11

Earlier 3.0.x releases are not affected: neither SCRAM nor the Digest Authentication-Info handling existed before 3.0.8. The 2.x line is not affected either: it has no SCRAM support, and its interceptor chain does not implement Digest mutual authentication, so there is no verification result to act on.

Patches Fixed in 3.0.12. A present ServerSignature (SCRAM) or rspauth (Digest) that does not verify now fails the request instead of being logged and ignored, on both the origin and proxy paths.

Known limitations Verification is only enforced when the value is present and the parameters the client sent can be recovered. A response that omits the Authentication-Info header entirely, or that carries the header without a recognisable verification parameter, is still accepted: a well behaved server may send the value in chunked trailers, which the client does not read. An impostor that simply omits the value is therefore still accepted. The two schemes differ on malformed input: SCRAM aborts when the data parameter is present but is not valid base64, whereas Digest treats an unparseable rspauth (an unterminated quote, an empty unquoted value, or a bare rspauth token) as absent and accepts the response. Enforcing presence is tracked as a follow up.

Verification is also skipped when the parameters the client sent cannot be recovered from its own Authorization header, in which case the exchange is delivered rather than failed.

Details In the auth interceptor, processScramAuthenticationInfo and processAuthenticationInfo computed the verification value and compared it, but did not stop the response from being delivered. Both now abort the exchange when the value is present and does not verify. The Digest expected value must be computed over the parameters actually sent on the wire, which the client recovers from its own Authorization header, because the realm carried on the response future is rebuilt for header emission and does not hold the values that were sent.

Note that 3.0.12 is itself affected by a separate issue, GHSA-rqf5-2wxv-rjf4, where a Digest challenge the client cannot read downgrades to Basic and sends the password in cleartext. Upgrade to 3.0.13 to pick up both fixes.

Known limitation

This fix does not cover Digest exchanges negotiated with qop="auth-int". Under auth-int the rspauth signs the response entity-body, which has not been read when the header is processed, so the expected value cannot be derived at that point. The client logs a warning and delivers the response without enforcing mutual authentication.

A peer that controls the challenge can select this deliberately by offering qop="auth-int" alone, which switches mutual authentication off for the whole exchange. Offering auth,auth-int does not work, because the client prefers auth. Verification under auth-int needs to be deferred until the body has been read, which is tracked separately as GHSA-qhv6-3pmh-95q4.

Affected Software

1 affected componentFixes available
maven/org.asynchttpclient:async-http-client>=3.0.8<=3.0.11
3.0.12

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade maven/org.asynchttpclient:async-http-client to a version that resolves this vulnerability.

    Fixed in 3.0.12
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 3.0.13

Event History

Sep 17, 2026
Advisory Published
via GitHub·05:18 PM
Data Sourced
via GitHub·05:18 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which deployments are meaningfully exposed to this issue?

Deployments using Async Http Client 3.0.8 through 3.0.11 with SCRAM, or Digest authentication with mutual authentication, are affected. The issue is inert when TLS is used with the real server; it matters on non-TLS connections or when the transport has already been compromised.

2

What must an attacker be able to do to exploit this?

An attacker must be able to impersonate or interfere with the server connection in a situation where the client relies on SCRAM ServerSignature or Digest rspauth to confirm that the peer knows the shared secret. The client logs a failed verification but still reports authentication as successful.

3

Are older Async Http Client releases affected?

Versions earlier than 3.0.8 in the 3.0.x line are not affected because they lacked SCRAM and Digest Authentication-Info handling. The 2.x line is also not affected because it has no SCRAM support and does not implement Digest mutual authentication in its interceptor chain.

4

What is the remediation?

Upgrade to Async Http Client 3.0.12, which fails authentication when a present SCRAM ServerSignature or Digest rspauth does not verify. If upgrading is not immediately possible, use TLS so the described verification failure is inert against the real server connection.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203