Android security tags, read closely by Lightrion

CVE-2025-48595 AI-generated analysis

platform/external/sqlite (libsqlite3 amalgamation dist/sqlite3.c, dist/orig/sqlite3.c, shell.c); platform/build/release RELEASE_PACKAGE_LIBSQLITE3 flag on Android 15/16

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 (8 corrections). Verify against the commit before relying on it.

Google fixed CVE-2025-48595 by moving the bundled SQLite library to a patched upstream point release instead of applying a single targeted patch. On Android 14 that meant 3.42.0 to 3.42.1, after a first 3.39.6 update was reverted. On Android 15 and 16 it meant RELEASE_PACKAGE_LIBSQLITE3 flag changes (Android 15: trunk_staging flag file deleted; Android 16: ap3a moved to 3.44.5).

Root cause

The material does not isolate the vulnerable code. The fix is a cumulative upstream SQLite patch-release update, and the bulletin only states High severity EoP. The 3.42.0 to 3.42.1 diff in effect on Android 14 contains several memory-safety and corruption-handling hardenings in the amalgamation: - defragmentPage copied only part of the page into temp space. - lockBtree set BTS_PAGESIZE_FIXED before validating the page size. - loadStatTbl padded stat4 samples with only 2 zero bytes. - sessionReadRecord read 8-byte INTEGER/FLOAT values without checking the remaining input. - fts5DoSecureDelete copied nPrefix2-nPrefix bytes from pSeg->term.p without checking nPrefix2 against pSeg->term.n, and recomputed page-index offsets differently. - fts5DlidxLvlNext and fts5WriteDlidxAppend did signed rowid delta arithmetic. - findOrCreateAggInfoColumn stored iAgg as (i16)k without masking and had no early return for an already-registered expression. - valueNew did not reset the returned aMem slot to NULL. The material does not show which of these corresponds to the CVE.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to June 2026 · Findings