GHSA-899m-q6pp-hmp3: Ineffective size check due to assert() and buffer overflow in RIOT

Published May 1, 2024
·
Updated

RIOT is a real-time multi-threading operating system that supports a range of devices that are typically 8-bit, 16-bit and 32-bit microcontrollers. Most codebases define assertion macros which compile to a no-op on non-debug builds. If assertions are the only line of defense against untrusted input, the software may be exposed to attacks that leverage the lack of proper input checks. In detail, in the nimblescanlistupdate() function below, len is checked in an assertion and subsequently used in a call to memcpy(). If an attacker is able to provide a larger len value while assertions are compiled-out, they can write past the end of the fixed-length e->ad buffer. If the unchecked input above is attacker-controlled and crosses a security boundary, the impact of the buffer overflow vulnerability could range from denial of service to arbitrary code execution. This issue has not yet been patched. Users are advised to add manual len checking.

Affected Software

1 affected component
RIOT RIOT

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    Add an explicit manual bounds check for `len` in `nimble_scanlist_update()` before the `memcpy()` call, rather than relying on `assert()`, and reject values larger than the fixed-length `e->ad` buffer.

Event History

May 1, 2024
CVE Published
via OSV·06:14 AM
Data Sourced
via OSV·06:14 AM
DescriptionSeverityWeakness

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203