Android security tags, read closely by Lightrion

CVE-2024-23706 AI-generated analysis

platform/packages/modules/HealthFitness (Health Connect), change logs API: framework ChangeLogTokenRequest and service HealthConnectServiceImpl

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

Health Connect now rejects change-log token requests (and stored tokens) whose record-type set is empty, both in the framework ChangeLogTokenRequest constructor and in HealthConnectServiceImpl.getChangeLogToken / getChangeLogs. Previously the Builder documented that no record types meant all record types; getChangeLogToken now returns ERROR_INVALID_ARGUMENT in that case.

Root cause

Before the fix, ChangeLogTokenRequest.Builder documented that if no record type was added the request "includes all record types". In HealthConnectServiceImpl.getChangeLogToken the data permission check is mDataPermissionEnforcer.enforceRecordIdsReadPermissions(request.getRecordTypesList(), attributionSource), and getChangeLogs calls enforceRecordIdsReadPermissions on changeLogsTokenRequest.getRecordTypes() from the stored token. The fix adds empty-set rejection immediately before both calls. Taken together, this suggests an empty record-type set could get a token covering all types without matching read-permission enforcement; the internals of the enforcer and of ChangeLogsRequestHelper are not in the material. The Parcel constructor ChangeLogTokenRequest(Parcel in) does no validation, so a client-side check alone would not be enough.

How the fix works

Completeness

Behavior changes

Per major

Unknowns

Back to May 2024 · Findings