CVE-2026-13479: Out-of-bounds read in LoRaWAN clock-sync AppTimeAns downlink handler

Published Aug 26, 2026
·
Updated

The LoRaWAN application-layer clock-synchronization service parses downlinks in clocksyncpackagecallback() (subsys/lorawan/services/clocksync.c). Its command loop only guarantees that the one-byte command id is in bounds; for the CLOCKSYNCCMDAPPTIME (AppTimeAns) command the handler then reads a 4-byte time correction via sysgetle32() plus a 1-byte token without checking that 5 bytes remain in the receive buffer (len - rxpos). A short or crafted AppTimeAns therefore reads up to 5 bytes past the end of the decrypted payload.

The payload (rxbuf/len) is the decrypted application frame delivered to the registered downlink callback (mcpsindication->Buffer/BufferSize). Reaching the handler requires a frame on the clock-sync port that passes LoRaWAN's MAC integrity check and FRMPayload decryption, so the practical attacker is a malicious or compromised network/application server (the designated sender of AppTimeAns) or a party holding the session keys, rather than an arbitrary radio listener.

The over-read is bounded: the backing store is a fixed 255-byte static buffer, so the few stray bytes do not fault, and the read values (timecorrection, token) are used only internally and never transmitted, so there is no disclosure to the attacker and no crash. The sole effect is that a stale token matching ctx.reqtoken can apply a garbage timecorrection to the device's own clock offset (ctx.timeoffset), a minor integrity impact confined to the victim's time estimate. The fix adds an explicit length check that drops a too-short AppTimeAns. Note the sibling one-byte reads in the periodicity and force-resync handlers remain unguarded with the same negligible impact.

Affected Software

1 affected component
LoRaWAN clock-synchronization service

Event History

Aug 26, 2026
CVE Published
via MITRE·02:03 PM
Data Sourced
via MITRE·02:03 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·03:16 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who can realistically send an exploit-triggering downlink?

A malicious or compromised network/application server, or another party that holds the relevant LoRaWAN session keys, can send it. An arbitrary radio listener cannot reach this handler because the frame must pass LoRaWAN MAC integrity validation and FRMPayload decryption.

2

What conditions are required for the affected code to process the frame?

The device must receive a downlink on the clock-synchronization port that reaches the registered application downlink callback. The payload must contain an AppTimeAns command with fewer than the five bytes the handler reads for its time correction and token fields.

3

Is this likely to cause a device crash or expose payload data?

The over-read is bounded to at most five bytes beyond the decrypted payload and occurs within a fixed 255-byte static backing buffer, so the described condition does not fault. The read values are used only internally, and the supplied vector indicates no confidentiality impact and low integrity impact.

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