W wersjach OpenWrt poprzedzających 24.10.6 i 25.12.1 demon mdns zawiera podatność typu stack-based buffer overflow w funkcji parse_question, wyzwalaną przez specjalnie spreparowane pakiety DNS. Podatność umożliwia zdalnemu atakującemu przejęcie kontroli nad urządzeniem bez żadnego uwierzytelnienia.
▸ Pokaż oryginał (EN)
OpenWrt Project is a Linux operating system targeting embedded devices. In versions prior to 24.10.6 and 25.12.1, the mdns daemon has a Stack-based Buffer Overflow vulnerability in the parse_question function. The issue is triggered by PTR queries for reverse DNS domains (.in-addr.arpa and .ip6.arpa). DNS packets received on UDP port 5353 are expanded by dn_expand into an 8096-byte global buffer (name_buffer), which is then copied via an unbounded strcpy into a fixed 256-byte stack buffer when handling TYPE_PTR queries. The overflow is possible because dn_expand converts non-printable ASCII bytes (e.g., 0x01) into multi-character octal representations (e.g., \001), significantly inflating the expanded name beyond the stack buffer's capacity. A crafted DNS packet can exploit this expansion behavior to overflow the stack buffer, making the vulnerability reachable through normal multicast DNS packet processing. This issue has been fixed in versions 24.10.6 and 25.12.1.
Funkcja parse_question przetwarza zapytania PTR dla odwrotnych domen DNS (.in-addr.arpa oraz .ip6.arpa) odbieranych przez UDP na porcie 5353 (multicast DNS). Dane z pakietu są najpierw rozwijane przez funkcję dn_expand do globalnego bufora o rozmiarze 8096 bajtów, a następnie kopiowane bez sprawdzenia długości (unbounded strcpy) do bufora na stosie o rozmiarze zaledwie 256 bajtów. Kluczowym mechanizmem jest to, że dn_expand konwertuje niedrukowalne bajty ASCII (np. 0x01) na wieloznakowe reprezentacje ósemkowe (np. \001), co znacznie zwiększa rozmiar rozwinięcej nazwy, przekraczając pojemność bufora stosu. Atakujący może spreparować pakiet DNS wysyłany przez sieć multicast, który wywoła tę ekspansję i przepełni bufor stosu.
Udany atak pozwala atakującemu zdalnie wykonać dowolny kod (RCE) na urządzeniu bez uwierzytelnienia, co może prowadzić do pełnego przejęcia kontroli nad routerem lub urządzeniem embedded z systemem OpenWrt, a także do naruszenia poufności, integralności i dostępności całej sieci.
Należy zaktualizować OpenWrt do wersji 24.10.6 lub 25.12.1, w których podatność została naprawiona. Patche dostępne są w repozytoriach producenta pod adresami wskazanymi w referencjach. Jako środek tymczasowy warto rozważyć ograniczenie dostępu do portu UDP 5353 na poziomie firewall dla niezaufanych segmentów sieci.
OpenWrt we wszystkich wersjach poprzedzających 24.10.6 oraz 25.12.1 (urządzenia embedded z demonem mdns nasłuchującym na UDP port 5353)
Podatność dotyczy przetwarzania standardowego ruchu multicast DNS, co oznacza, że jest osiągalna w trakcie normalnej obsługi pakietów sieciowych — nie wymaga specjalnego stanu połączenia ani wcześniejszego dostępu do urządzenia.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XOpenwrt
OSOpenwrt< 24.10.625.12.0 – 25.12.1 (bez)
Powiązane podatności
Stack-based Buffer Overflow w mdns daemon OpenWrt — możliwy RCE
Out of bounds write w sterowniku wlan AP — eskalacja uprawnień na układach MediaTek
Out-of-bounds write w sterowniku WLAN AP MediaTek — privilege escalation
Out-of-bounds write w sterowniku WLAN AP MediaTek – privilege escalation
Brak weryfikacji uprawnień w sterowniku WLAN AP MediaTek — zdalne eskalowanie przywilejów