OpENer 2.3.0 zawiera podatność typu out-of-bounds read (CWE-125) w mechanizmie parsowania wiadomości CIP, umożliwiającą zdalne odczytanie danych spoza bufora stosu oraz potencjalne wywołanie odmowy usługi. Podatność jest krytyczna ze względu na brak wymagań uwierzytelnienia i sieciowy wektor ataku.
▸ Pokaż oryginał (EN)
OpENer 2.3.0 (commit 76b95cf) has an out-of-bounds read issue in CIP message parsing when handling malformed explicit requests with a forged EPath size. An attacker can send a valid ENIP SendRRData frame carrying a very short CIP payload whose path_size field claims that many more path words are present than are actually available. Because the parser trusts the attacker-controlled path_size and continues decoding path segments without a remaining-length boundary, it reads beyond the end of the stack receive buffer.
Atakujący wysyła poprawnie sformatowaną ramkę ENIP SendRRData zawierającą celowo skrócony payload CIP, w którym pole path_size deklaruje znacznie więcej słów ścieżki (path words) niż faktycznie dostępnych w danych. Parser w OpENer bezkrytycznie ufa wartości path_size kontrolowanej przez atakującego i kontynuuje dekodowanie segmentów ścieżki bez sprawdzania granicy pozostałej długości bufora. W efekcie odczyt wychodzi poza koniec stosu bufora odbiorczego, co stanowi klasyczny out-of-bounds read.
Atakujący może zdalnie odczytać fragmenty pamięci stosu procesu (ujawnienie poufnych danych, np. adresów pamięci lub danych sesji) oraz spowodować awarię aplikacji i niedostępność usługi (Denial of Service).
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Monitorowanie zgłoszenia: https://github.com/EIPStackGroup/OpENer/issues/582. Do czasu wydania poprawki zaleca się ograniczenie dostępu sieciowego do urządzeń korzystających z OpENer (segmentacja sieci, firewall blokujący ruch ENIP/CIP z niezaufanych źródeł).
OpENer 2.3.0 (commit 76b95cf)
Dostępny jest publiczny proof-of-concept opisujący wektor ataku: https://gist.github.com/MrAlaskan/705c680856e48c535148265c0899ad4b
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HOpener Project Opener
APPOpener Project2.3.0
Powiązane podatności
Integer underflow w OpENer 2.3.0 — krytyczne uszkodzenie pamięci (RCE)
Out-of-bounds read w EIPStackGroup OpENer — przetwarzanie ForwardOpen
Stack Buffer Overflow w OpENer 2.3.0 przy parsowaniu pakietów CIP
Błędna kontrola dostępu w OpENer — przejęcie sesji encapsulation
RCE przez out-of-bounds write w OpENer EtherNet/IP Stack