OpenWrt 24.10.8 - Service Release
Hauke Mehrtens
hauke at hauke-m.de
Sun Jul 26 11:07:37 PDT 2026
Hi,
The OpenWrt community is proud to announce the newest stable release of
the OpenWrt 24.10 stable series.
This release fixes many security issues, several of them remotely
triggerable in network services that are enabled by default. We strongly
recommend everyone to upgrade.
The OpenWrt 24.10 series is in security maintenance (only security
problems are fixed), with end of life (EoL) projected for September
2026. We recommend migrating to OpenWrt 25.12 before then.
Download firmware images using the OpenWrt Firmware Selector:
* https://firmware-selector.openwrt.org/?version=24.10.8
Download firmware images directly from our download servers:
* https://downloads.openwrt.org/releases/24.10.8/targets/
Main changes between OpenWrt 24.10.7 and OpenWrt 24.10.8
==========================
Only the main changes are listed below. See
[changelog-24.10.8](https://openwrt.org/releases/24.10/changelog-24.10.8)
for the full changelog.
Security fixes
==========
This release fixes several remotely triggerable vulnerabilities in core
network
services that are enabled by default. Updating is strongly recommended.
* odhcpd (DHCPv6/DHCPv4/RA server, enabled by default): multiple
vulnerabilities reachable by a network-adjacent, unauthenticated
attacker were fixed:
* CVE-2026-53921 (Critical): stack buffer overflow in the DHCPv6 IA
reply serialization, triggerable with crafted DHCPv6 REQUEST packets.
https://github.com/openwrt/odhcpd/security/advisories/GHSA-7fwx-hhrg-3496
* Reconfigure-Accept stack buffer overflow (High, no CVE assigned):
the Reconfigure-Accept reply block wrote 36 bytes into the response
buffer without checking the remaining space, leading to a pre-auth
out-of-bounds write.
https://github.com/openwrt/openwrt/security/advisories/GHSA-q6wx-p68j-chp9
* CVE-2026-53918 (High): use-after-free through a dangling
first-lease pointer in the DHCPv6 IA handler.
https://github.com/openwrt/odhcpd/security/advisories/GHSA-44ff-jcwh-wgc2
* CVE-2026-53920 (High): stack memory disclosure via a truncated
DHCPv6 IA_NA/IA_PD option.
https://github.com/openwrt/odhcpd/security/advisories/GHSA-p769-5v73-pc4f
* CVE-2026-53922 (Moderate): pre-auth denial of service via a
size_t underflow in DHCPv6 IA handling.
https://github.com/openwrt/odhcpd/security/advisories/GHSA-7hcw-g2jh-pqv5
* Zero-length CLIENT_ARCH option (Moderate, no CVE assigned): stack
buffer over-read, and an unaligned read that crashes on strict-alignment
targets.
https://github.com/openwrt/odhcpd/security/advisories/GHSA-7x9h-5mxm-jg3f
* NDP hop-limit spoofing (Moderate, CVSS 5.4, no CVE assigned): the
NDP relay accepted IPv6 Neighbor Solicitations with a hop limit other
than 255 (RFC 4861 violation), letting an off-link attacker spoof NS
packets through the relay. Only relevant when the NDP relay is enabled.
https://github.com/openwrt/odhcpd/security/advisories/GHSA-qvg7-9jf5-wgjc
* odhcpd / LuCI stored XSS: CVE-2026-62948 (Critical): an
unauthenticated DHCPv6 client could inject lease-file lines through a
crafted FQDN hostname, resulting in stored cross-site scripting on the
LuCI DHCPv6 leases status page. Fixed by escaping client hostnames in
the lease state file.
https://github.com/openwrt/openwrt/security/advisories/GHSA-hhmc-92hw-535f
* uhttpd (web server, serves LuCI): three HTTP request smuggling
issues on keep-alive connections were fixed:
* CVE-2026-55614 (High): case-sensitive Transfer-Encoding matching.
https://github.com/openwrt/uhttpd/security/advisories/GHSA-mcfg-c4r7-pjpf
* CVE-2026-55612 (High): invalid chunk-length state reset.
https://github.com/openwrt/uhttpd/security/advisories/GHSA-p55c-rmhc-qfm5
* CVE-2026-55613 (Moderate): ubus POST body parse-error desync.
https://github.com/openwrt/uhttpd/security/advisories/GHSA-wgwp-64hh-f52p
* In addition uhttpd received hardening without an assigned CVE: a
one-byte overflow in `uh_urldecode()`, an off-by-one out-of-bounds read
in `uh_b64decode()`, constant-time password comparison and stricter
handling of `$p$` crypt-hash entries in the authentication realm.
* rpcd: ACL bypass through symlinks (High): the `file` plugin matched
ACL grants against the textual path but then followed symlinks
unchecked, so a symlink inside an ACL-covered directory let a limited
account read or write arbitrary root-owned files. The path is now
re-resolved and re-authorized for every operation that dereferences the
final component.
https://github.com/openwrt/openwrt/security/advisories/GHSA-q5gr-86pq-vvwr
* cgi-io (file upload/download helper used by LuCI, installed by
default with LuCI):
* CVE-2026-62947 (Moderate): ACL bypass and arbitrary root file
read — the download and exec paths were checked against the ACL before
being canonicalized, so path traversal let an authenticated user with
wildcard read permission read any root-readable file (e.g. `/etc/shadow`).
https://github.com/openwrt/openwrt/security/advisories/GHSA-jw5r-xhf5-2xcq
* Use-after-free (Moderate, no CVE assigned): decoding malformed
percent-encoded POST field data could use freed memory.
https://github.com/openwrt/openwrt/security/advisories/GHSA-wvhq-qmwj-grj2
* LuCI (web interface): several issues in LuCI modules and
applications were fixed. The privilege-escalation issues only apply if
the affected app is installed and a limited (delegated) account with the
relevant ACL exists:
* luci-app-ddns (High): the ucode status backend passed DDNS UCI
values such as `lookup_host`, `dns_server` and the section name to
`system()` as an unquoted shell string, so anyone able to write DDNS
configuration could execute commands as root. The invocations now use
the array form of `system()`.
https://github.com/openwrt/openwrt/security/advisories/GHSA-32r4-3wh2-qvq3
* luci-app-samba4 (High): the read ACL granted exec permission for
`smbd` in general rather than only `smbd -V`, allowing read-only
accounts to run arbitrary commands as root.
https://github.com/openwrt/luci/security/advisories/GHSA-vx64-mmp7-h36c
* luci-app-upnp (High): stored XSS — an unauthenticated LAN client
can inject JavaScript through a UPnP port-mapping description, which the
underlying daemon does not sanitize. The description is now HTML-escaped.
https://github.com/openwrt/luci/security/advisories/GHSA-8v49-6387-7f89
* luci-mod-status (High): stored XSS via a DHCP/DHCPv6 lease
hostname shown in the lease status tables. Together with the odhcpd fix
above this closes the injection path from an unauthenticated DHCP client
into the LuCI admin UI.
https://github.com/openwrt/luci/security/advisories/GHSA-686p-p8p9-x6fh
* luci-base: the dispatcher now escapes the URL path and user name
when logging, so crafted login requests can no longer pollute the system
log.
* The LuCI rpcd ACL files were adjusted for the symlink-aware rpcd
ACL check mentioned above, so that `/proc` paths that are symlinks (such
as `/proc/mounts`) keep working.
* umdns (mDNS responder): CVE-2026-55492 (Moderate, CVSS 6.5): an
unauthenticated attacker on the local network segment could flood the
daemon with unique mDNS records; the unbounded cache exhausted the heap
and took the whole device into out-of-memory. Fixed by bounding the
cache size and clamping hostile TTLs.
https://github.com/openwrt/mdnsd/security/advisories/GHSA-jg8f-fhfw-jg46
* ead (Emergency Access Daemon): CVE-2026-55490 (Moderate): an
integer underflow in `handle_send_a()` allowed an unauthenticated
attacker on the local segment to crash the daemon with a single crafted
packet.
https://github.com/openwrt/openwrt/security/advisories/GHSA-9558-77jp-g3fw
* hostapd / wpa_supplicant: the fixes from upstream hostap security
advisory 2026-1 were applied. Missing validation of multi-link (MLO /
IEEE 802.11be) information in received Management frames could terminate
the process or corrupt a small amount of memory; the frames need neither
authentication nor user interaction.
https://w1.fi/security/2026-1/missing-ml-parsing-validation.txt
https://github.com/openwrt/openwrt/security/advisories/GHSA-3hj7-gj5w-h68m
* dropbear (SSH): security fixes from upstream 2026.90 were backported:
* CVE-2019-6111: a malicious server could make the `scp` client
overwrite unexpected local files (missing OpenSSH patch). Note the
accompanying upstream behaviour change: `scp -r` is now rejected when
the target directory already exists.
* CVE-2026-35385: `scp` did not clear setuid/setgid bits on
received files.
* An authenticated user could bypass an `authorized_keys`
`forced_command` option when dropbear runs with `-t`; `authorized_keys`
is now opened non-blocking (local denial of service via special files);
and a `close()` on a file descriptor obtained from an out-of-bounds read
was fixed.
* musl libc: backport of the upstream fixes for CVE-2026-6042
(algorithmic-complexity denial of service in `iconv`) and CVE-2026-40200
(stack corruption in `qsort` with sufficiently large inputs).
* OpenSSL: update to 3.0.21, fixing multiple security vulnerabilities
(CVE-2026-45447, CVE-2026-34182, CVE-2026-45445, CVE-2026-7383,
CVE-2026-9076, CVE-2026-34180, CVE-2026-42766, CVE-2026-42770,
CVE-2026-45446).
* Linux kernel: update to 6.6.144, pulling in the upstream 6.6.142,
6.6.143 and 6.6.144 stable releases, which fix multiple security
vulnerabilities.
* dnsmasq: update to 2.93, which carries the security fixes that were
backported into 2.90 in the previous release (CVE-2026-2291,
CVE-2026-4890, CVE-2026-4891, CVE-2026-4892, CVE-2026-4893 and
CVE-2026-5172) plus further upstream fixes.
In addition, the `packages` feed shipped with this release moved a number of
optional packages to newer upstream versions that contain security
fixes, among
them curl (8.12.1 to 8.19.0), expat (2.7.4 to 2.8.2), BIND (9.20.23 to
9.20.26),
PHP 8 (8.3.29 to 8.3.32), Tor (0.4.8.22 to 0.4.9.10), unbound (1.24.2 to
1.25.1),
lighttpd (1.4.82 to 1.4.85), haproxy (3.0.19 to 3.0.25) and rsync (3.4.2
to 3.4.3).
collectd also received a fix for a use-after-free in the ping plugin. These
packages are not part of the default images — you have to update the
installed
packages on your device to receive them.
Beyond the issues listed above, this release fixes a number of further
security
and robustness problems in odhcpd, odhcp6c, rpcd and uhttpd for which no CVE
number or dedicated advisory was assigned. We strongly recommend
upgrading to
the latest OpenWrt release and installing all available package updates.
Device support
===========
No new devices were added in this security maintenance release.
Device fixes:
* airoha: update the PCS driver to a newer proposed upstream version
(EN7581 Ethernet SerDes)
* ipq806x: Extreme Networks AP3935 - disable PHY hibernation on LAN1,
which otherwise stayed dead when no cable was connected at power-on
WiFi fixes and improvements
====================
* mac80211: update the backported wireless stack and drivers from
6.12.61 to 6.12.96, containing many upstream fixes for ath10k, ath11k,
rtw88, rtlwifi and iwlwifi, among them:
* ath10k: skip WMI and beacon transmission when the device is wedged
* ath11k: fix a warning on unbind and fix peer resolution on the RX
path
* rtw88: fix memory leaks on USB write failures
* mac80211/nl80211: reject oversized EMA RNR lists and fix
multi-link element defragmentation
* hostapd / wpa_supplicant: multi-link (MLO) parsing validation
fixes, see the security section above
* wireless-regdb: update to 2026.05.30
Network and service improvements
========================
* odhcpd received many DHCPv6/DHCPv4 correctness and robustness fixes
on top of the security fixes listed above, among them bounded nested
relay recursion, correct handling of DHCPv4 Pad/End option encoding,
fixed reallocation error handling and a memory leak on reload
* odhcp6c: several fixes to DHCPv6 option parsing, RFC 6603
prefix-exclude handling, Reconfigure message validation and script
invocation
* rpcd: fixes for a use-after-free in the async exec reply path, a
double close of exec pipe descriptors, an integer overflow in the UCI
apply timeout and several memory leaks
* umdns: update to a current version with the cache limits mentioned
above
Other changes
==========
* busybox: the shell command history is now saved again. To avoid
flash wear, it is written only when a shell session exits and it is
stored in `/tmp`, so it is lost on reboot. The location can be changed
in `/etc/profile.d/busybox-history-file.sh`.
Core components update
==============
* Linux kernel: update from 6.6.141 to 6.6.144
* OpenSSL: update from 3.0.20 to 3.0.21 (multiple security fixes, see
above)
* dnsmasq: update from 2.90 to 2.93
* mac80211: update from 6.12.61 to 6.12.96
* wireless-regdb: update from 2026.03.18 to 2026.05.30
* ca-certificates: update from 20260223 to 20260601 (refreshed root
CA bundle)
Upgrading to 24.10
===================
Sysupgrade can be used to upgrade a device from 23.05 to 24.10, and
configuration will be preserved in most cases.
For for upgrades inside the OpenWrt 24.10 stable series for example from
a OpenWrt 24.10 release candidate [Attended
Sysupgrade](https://openwrt.org/docs/guide-user/installation/attended.sysupgrade)
is supported in addition which allows preserving the installed packages too.
* Sysupgrade from 22.03 to 24.10 is not officially supported.
* There is no configuration migration path for users of the ipq806x
target for Qualcomm Atheros IPQ806X SoCs because it switched to
[DSA](https://openwrt.org/docs/guide-user/network/dsa/start). You have
to upgrade without saving the configuration.
''Image version mismatch. image 1.1 device 1.0 Please wipe config during
upgrade (force required) or reinstall. Config cannot be migrated from
swconfig to DSA Image check failed''
* User of the Linksys E8450 aka. Belkin RT3200 running OpenWrt 23.05
or earlier will need to run installer version
[v1.1.3](https://github.com/dangowrt/owrt-ubi-installer/releases/tag/v1.1.3)
or later in order to reorganize the UBI layout for the 24.10 release. [A
detailed description is in the OpenWrt
wiki.](https://openwrt.org/toh/linksys/e8450#upgrading_an_ubi_installation_to_new_releases_after_2024-02_includes_all_snapshots_2410-snapshots_24100-rcx_releases_and_all_releases_in_the_foreseable_future)
Updating without using the installer will break the device. Sysupgrade
will show a warning before doing an incompatible upgrade.
* Users of the Xiaomi AX3200 aka. Redmi AX6S running OpenWrt 23.05 or
earlier have to follow a [special upgrade procedure described in the
wiki](https://openwrt.org/toh/xiaomi/ax3200#upgrading_from_2305_and_earlier_to_upcoming_2410_or_snapshot).
This will increase the flash memory available for OpenWrt. Updating
without following the guide in the wiki break the device. Sysupgrade
will show a warning before doing an incompatible upgrade.
* Users of Zyxel GS1900 series switches running OpenWrt 23.05 or
earlier have to perform a new factory install with the initramfs image
due to a changed partition layout. Sysupgrade will show a warning before
doing an incompatible upgrade and is not possible. After upgrading, the
config file /etc/config/system should not be restored from a backup, as
this will overwrite the new compat_version value.
* Users of `scp` from the dropbear package: recursive copies (`scp
-r`) into an already existing target directory are now rejected. This is
an intentional upstream change that comes with the fix for
CVE-2019-6111. Use `rsync` or copy into a non-existing directory instead.
Known issues
===========
* **LEDs for Airoha AN8855 are not yet supported.** Devices like the
Xiaomi AX3000T with an Airoha switch will have their switch LEDs powered
off. This will not be addressed in the OpenWrt 24.10 series any more, it
is fixed in OpenWrt 25.12.
* **5GHz WiFi is non-functional on certain devices with ath10k
chipsets.** Affected models include the Phicomm K2T, TP-Link Archer C60
v3 and possibly others. For details, see [issue
#14541](https://github.com/openwrt/openwrt/issues/14541).
-----------------
Full release notes and upgrade instructions are available at
https://openwrt.org/releases/24.10/notes-24.10.8
In particular, make sure to read the regressions and known issues before
upgrading:
https://openwrt.org/releases/24.10/notes-24.10.8#known_issues
For a detailed list of all changes since 24.10.7, refer to
https://openwrt.org/releases/24.10/changelog-24.10.8
To download the 24.10.8 images, navigate to:
https://downloads.openwrt.org/releases/24.10.8/targets/
Use OpenWrt Firmware Selector to download:
https://firmware-selector.openwrt.org?version=24.10.8
As always, a big thank you goes to all our active package maintainers,
testers, documenters and supporters.
Have fun!
The OpenWrt Community
---
To stay informed of new OpenWrt releases and security advisories, there
are new channels available:
* a low-volume mailing list for important announcements:
https://lists.openwrt.org/mailman/listinfo/openwrt-announce
* a dedicated "announcements" section in the forum:
https://forum.openwrt.org/c/announcements/14
* other announcement channels (such as RSS feeds) might be added in the
future, they will be listed at https://openwrt.org/contact
More information about the openwrt-devel
mailing list