CVE-2024-53980

RIOT is an open-source microcontroller operating system, designed to match the requirements of Internet of Things (IoT) devices and other embedded devices. A malicious actor can send a IEEE 802.15.4 packet with spoofed length byte and optionally spoofed FCS, which eventually results into an endless loop on a CC2538 as receiver. Before PR #20998, the receiver would check for the location of the CRC bit using the packet length byte by considering all 8 bits, instead of discarding bit 7, which is what the radio does. This then results into reading outside of the RX FIFO. Although it prints an error when attempting to read outside of the RX FIFO, it will continue doing this. This may lead to a discrepancy in the CRC check according to the firmware and the radio. If the CPU judges the CRC as correct and the radio is set to `AUTO_ACK`, when the packet requests and acknowledgment the CPU will go into the state `CC2538_STATE_TX_ACK`. However, if the radio judged the CRC as incorrect, it will not send an acknowledgment, and thus the `TXACKDONE` event will not fire. It will then never return to the state `CC2538_STATE_READY` since the baseband processing is still disabled. Then the CPU will be in an endless loop. Since setting to idle is not forced, it won't do it if the radio's state is not `CC2538_STATE_READY`. A fix has not yet been made.
Configurations

Configuration 1 (hide)

cpe:2.3:o:riot-os:riot:*:*:*:*:*:*:*:*

History

05 Sep 2025, 13:57

Type Values Removed Values Added
References () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L183 - () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L183 - Product
References () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L417 - () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L417 - Product
References () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L419 - () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L419 - Product
References () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L421-L422 - () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/cpu/cc2538/radio/cc2538_rf_radio_ops.c#L421-L422 - Product
References () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/sys/net/link_layer/ieee802154/submac.c#L149 - () https://github.com/RIOT-OS/RIOT/blob/1a418ccfedeb79dbce1d79f49e63a28906184794/sys/net/link_layer/ieee802154/submac.c#L149 - Product
References () https://github.com/RIOT-OS/RIOT/pull/20998 - () https://github.com/RIOT-OS/RIOT/pull/20998 - Issue Tracking, Patch
References () https://github.com/RIOT-OS/RIOT/security/advisories/GHSA-m75q-8vj8-wppw - () https://github.com/RIOT-OS/RIOT/security/advisories/GHSA-m75q-8vj8-wppw - Exploit, Vendor Advisory
CPE cpe:2.3:o:riot-os:riot:*:*:*:*:*:*:*:*
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 7.5
Summary
  • (es) RIOT es un microcontrolador de código abierto que opera con sistema, diseñado para cumplir con los requisitos de los dispositivos de Internet de las cosas (IoT) y otros dispositivos integrados. Un actor malintencionado puede enviar un paquete IEEE 802.15.4 con un byte de longitud falsificado y, opcionalmente, un FCS falsificado, lo que eventualmente da como resultado un bucle sin fin en un CC2538 como receptor. Antes de la PR n.° 20998, el receptor verificaba la ubicación del bit CRC utilizando el byte de longitud del paquete al considerar los 8 bits, en lugar de descartar el bit 7, que es lo que hace la radio. Esto luego da como resultado una lectura fuera del FIFO RX. Aunque imprime un error al intentar leer fuera del FIFO RX, continuará haciéndolo. Esto puede generar una discrepancia en la verificación de CRC según el firmware y la radio. Si la CPU juzga que el CRC es correcto y la radio está configurada en `AUTO_ACK`, cuando se solicita el paquete y se confirma el acuse de recibo, la CPU pasará al estado `CC2538_STATE_TX_ACK`. Sin embargo, si la radio juzga que el CRC es incorrecto, no enviará un acuse de recibo y, por lo tanto, el evento `TXACKDONE` no se activará. Entonces, nunca volverá al estado `CC2538_STATE_READY` ya que el procesamiento de banda base aún está deshabilitado. Entonces, la CPU estará en un bucle sin fin. Dado que la configuración en inactivo no es forzada, no lo hará si el estado de la radio no es `CC2538_STATE_READY`. Todavía no se ha realizado una solución.
First Time Riot-os
Riot-os riot

29 Nov 2024, 19:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-11-29 19:15

Updated : 2025-09-05 13:57


NVD link : CVE-2024-53980

Mitre link : CVE-2024-53980

CVE.ORG link : CVE-2024-53980


JSON object : View

Products Affected

riot-os

  • riot
CWE
CWE-835

Loop with Unreachable Exit Condition ('Infinite Loop')