GHSA-ch63-jxm5-vmvf: ESP-IDF: Stack-based memory corruption in lwIP DNS/SNTP handling for multi-IP DNS responses
ESP-IDF is the Espressif Internet of Things (IOT) Development Framework. From 5.2.3 until 5.3.7, 5.4.5, 5.5.6, and 6.0.3, the lwIP DNS resolver's cached-lookup path in dnslookup() in dns.c copies every cached address into a caller-provided single ipaddrt output buffer without a length parameter or bounds check. When CONFIGLWIPDNSMAXHOSTIP is greater than 1 and a cached hostname has multiple A or AAAA records, a subsequent lookup through dnsgethostbyname() or dnsgethostbynameaddrtype() writes beyond the single-element buffer into adjacent stack memory. A network-positioned attacker who influences DNS responses can cause a reboot through stack-canary corruption or, without stack protection, overwrite stack variables with attacker-controlled address bytes and potentially redirect control flow. This issue is fixed in versions 5.5.6 and 6.0.3 and is scheduled to be fixed in versions 5.3.7 and 5.4.5. No fixed release is available for the end-of-life 5.2 line.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ESP-IDFto a version that resolves this vulnerability.Fixed in 6.0.3