Android security tags, read closely by Lightrion

CVE-2026-0073 AI-generated analysis

platform/packages/modules/adb, adbd daemon TLS authentication (daemon/auth.cpp)

AI-generated: written from the bulletin and the fixing diffs by claude-fable-5-1, then checked against the code by claude-opus-5-5 (4 corrections). Verify against the commit before relying on it.

In adbd's TLS client-certificate verification (daemon/auth.cpp, adbd_tls_verify_cert), the EVP_PKEY_cmp result now counts as a key match only when it is exactly 1, not for any non-zero value. Error and non-comparable return codes are no longer treated as a match.

Root cause

adbd_tls_verify_cert goes through the stored authorized public keys (IteratePublicKeys). It decodes each one into an RSA key wrapped in an EVP_PKEY (known_evp) and compares it with EVP_PKEY_cmp against the public key taken from the peer's X509 certificate (evp_pkey). The original code used `if (EVP_PKEY_cmp(...))`, so every non-zero return counted as a match. The commit message says "Not all non-zero values mean success". In BoringSSL/OpenSSL, EVP_PKEY_cmp returns 1 for a match and negative values when the keys cannot be compared, for example because the key types differ (general platform knowledge). With the truthiness test, any non-zero non-1 result set verified = true, set *auth_key to the stored key and made the function return 1 (authorized). A certificate whose key did not actually match a stored key could therefore be accepted by this check.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to May 2026 · Findings