CVE-2021-21257

8.2 HIGH

📋 TL;DR

This vulnerability allows attackers to perform out-of-bounds memory writes by injecting specially crafted packets into Contiki-NG's RPL routing implementation. It affects IoT devices running Contiki-NG versions before 4.6, potentially leading to remote code execution or system crashes. The issue stems from insufficient validation of source routing header fields.

💻 Affected Systems

Products:
  • Contiki-NG operating system
Versions: All versions prior to 4.6
Operating Systems: Contiki-NG
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems using RPL-Classic or RPL-Lite routing protocols. Devices not using RPL routing are not vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Remote code execution leading to complete device compromise, persistence, and lateral movement within IoT networks.

🟠

Likely Case

Denial of service through system crashes or memory corruption, potentially disrupting IoT network operations.

🟢

If Mitigated

No impact if patched or if network segmentation prevents malicious packet injection.

🌐 Internet-Facing: HIGH - IoT devices often have internet exposure and use RPL for mesh networking.
🏢 Internal Only: MEDIUM - Internal IoT networks could still be vulnerable to insider threats or compromised devices.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Exploitation requires network access to inject packets but no authentication. The vulnerability is in core routing code that processes network packets.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Contiki-NG 4.6

Vendor Advisory: https://github.com/contiki-ng/contiki-ng/security/advisories/GHSA-mvc7-9p4q-c5cm

Restart Required: Yes

Instructions:

1. Update Contiki-NG to version 4.6 or later. 2. Rebuild and redeploy firmware to affected IoT devices. 3. Restart devices to apply the updated firmware.

🔧 Temporary Workarounds

Apply GitHub patch manually

all

Apply the specific fix from GitHub pull request #1431 to validate CMPR field before using addr_ptr.

git apply https://github.com/contiki-ng/contiki-ng/pull/1431.patch

🧯 If You Can't Patch

  • Segment IoT networks to prevent unauthorized packet injection
  • Implement network monitoring for anomalous RPL traffic patterns

🔍 How to Verify

Check if Vulnerable:

Check Contiki-NG version in device firmware or source code. If version < 4.6 and using RPL routing, device is vulnerable.

Check Version:

Check CONTIKI_VERSION_STRING in contiki-version.h or device firmware version

Verify Fix Applied:

Verify Contiki-NG version is 4.6 or later and confirm the memcpy calls in rpl-ext-header.c have proper bounds checking.

📡 Detection & Monitoring

Log Indicators:

  • System crashes, memory corruption errors, unexpected device reboots

Network Indicators:

  • Malformed RPL source routing headers, unusual packet injection patterns

SIEM Query:

Search for: (device_type:iot OR os:contiki) AND (event_type:crash OR error:memory_corruption)

🔗 References

📤 Share & Export