Libaom: libaom: arbitrary address write via svc layer context oob and cyclic refresh map pointer hijack
An arbitrary address write vulnerability was found in libaom, the reference AV1 codec implementation. A missing bounds check in the SVC (Scalable Video Coding) layer ID control function allows an attacker to inject an arbitrary pointer into the cyclic refresh map field via crafted image pixel values. The encoder then writes approximately 1,200 bytes at the attacker-controlled address. This is fully deterministic and does not require a separate information leak. An attacker who can supply frames to a network-facing libaom encoder with SVC enabled could exploit this for denial of service or potential code execution.
There is no complete mitigation for this vulnerability. The following measures can reduce risk:
1. If using libaom as a standalone encoder library with SVC enabled, validate that spatial_layer_id and temporal_layer_id values are within the configured range [0, configured_layers) before calling aom_codec_control with AV1E_SET_SVC_LAYER_ID.
2. Restrict access to encoding services to trusted clients only. Do not expose libaom SVC encoder configuration to untrusted input.
3. For Firefox and Thunderbird, ensure browsers are updated to versions that include the patched libaom (v3.14.0 or later).
4. Deploy encoding services with ASLR, stack canaries, and other exploit mitigation technologies enabled.
Exploits
Credits
Red Hat would like to thank The FuzzAnything Team (FuzzAnything) for reporting this issue.