Android security tags, read closely by Lightrion

CVE-2024-0052 AI-generated analysis

platform/packages/modules/HealthFitness (Health Connect service), change logs / ExerciseSessionRecord route storage

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

Makes the Health Connect change-log read path apply the same exercise-route access rules as the normal read path. ExerciseSessionRecord routes returned through getChangeLogs are now limited to the caller's own sessions unless the caller holds READ_EXERCISE_ROUTE.

Root cause

HealthConnectServiceImpl.getChangeLogs read the upserted records through ReadTransactionRequest(Map<Integer, List<UUID>>, long startDateAccess). That constructor called RecordHelper.getReadTableRequest(uuids, startDateAccess), which called ExerciseSessionRecordHelper.getExtraDataReadRequests(uuids, startDateAccess). The override only checked isExerciseRouteFeatureEnabled() and built the route read request with a WHERE clause on UUID and start time. It never received the caller package name or the READ_EXERCISE_ROUTE grant state, so it did not restrict routes to sessions owned by the caller. The readRecords path (getExtraDataReadRequests(request, packageName, startDateAccess, extraPermsState)) already enforced self-read when READ_EXERCISE_ROUTE was not granted. As a result, change-log responses could include exercise routes written by other apps.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to March 2024 · Findings