CVE-2026-115877
ŚrednieCVSS 5.4Streszczenie
W Twisted przed wersją 26.10.0rc1 metoda twisted.web.http.HTTPChannel.headerReceived odrzuca bajt NUL w wartości nagłówka HTTP, ale akceptuje samotny znak powrotu karetki lub samotny znak nowej linii. Ponieważ Twisted dzieli linie nagłówków tylko na CRLF, ukryty nagłówek Content-Length może pozostać wklejony w inną wartość, podczas gdy łagodny front end traktuje samotny znak jako terminator linii. Wynikająca z tego rozbieżność ramkowania może przemycić kolejne żądanie poza kontrolą dostępu front endu, zatruć współdzielone połączenie lub pamięć podręczną i narazić późniejszego klienta na niewłaściwą odpowiedź. Problem jest pozostałością niepełnej naprawy wcześniejszych zabezpieczeń Twisted przed przemytem żądań. Problem naprawiono w wersji 26.10.0rc1.
Ocena ryzyka
Atakujący może przemycić żądania HTTP poza kontrolą dostępu, zatruć pamięć podręczną lub połączenia i narazić innych klientów na niewłaściwe odpowiedzi. Ryzyko dotyczy usług HTTP opartych na Twisted stojących za front endem.
Rekomendacja
Zaktualizuj Twisted do wersji 26.10.0rc1 lub nowszej. Do czasu aktualizacji upewnij się, że front end odrzuca samotne CR/LF w nagłówkach i nie stosuje łagodnego parsowania.
Inne podatności w Twisted
Zobacz wszystkie- CVE-2026-83813Niskie
W bibliotece Twisted, w wersjach przed 26.10.0rc1, protokół DNSDatagramProtocol akceptuje odpowiedź UDP DNS na oczekujące zapytanie, jeśli zgadza się 16-bitowy identyfikator transakcji, ale nie weryfikuje źródłowego adresu IP i portu. Umożliwia to atakującemu wstrzyknięcie sfałszowanej odpowiedzi DNS.
- CVE-2026-115778Wysokie
W Twisted przed wersją 26.10.0rc1 metoda twisted.conch.telnet.Telnet.dataReceived dopisuje każdy bajt otrzymany po IAC SB do trwałego bufora subnegocjacji aż do odebrania IAC SE, bez limitu długości. Negocjacja opcji Telnet odbywa się przed uwierzytelnieniem, więc nieuwierzytelniony peer może pominąć terminator i stale powiększać bufor. Wynikające z tego wyczerpanie pamięci może zakończyć proces i wszystkie hostowane przez niego usługi. Problem naprawiono w wersji 26.10.0rc1.
- CVE-2026-115776Wysokie
W Twisted przed wersją 26.10.0rc1 metoda twisted.words.protocols.irc.IRC.dataReceived przechowuje wszystkie bajty otrzymane bez znaku nowej linii w buforze połączenia i nie stosuje limitu długości linii. Podklasa serwera twisted.words.service.IRCUser dziedziczy to zachowanie, a buforowanie odbywa się przed uwierzytelnieniem poleceniami PASS, NICK lub USER. Nieuwierzytelnione połączenie może stale powiększać bufor, aż współdzielony proces serwera zabraknie pamięci i rozłączy wszystkich użytkowników. Problem naprawiono w wersji 26.10.0rc1.
- CVE-2026-115775Wysokie
W Twisted przed wersją 26.10.0rc1 parser twisted.words.xish.domish ExpatElementStream pozwala nieuwierzytelnionemu zdalnemu peerowi utrzymywać otwarty element kontenera i stale dodawać elementy potomne. Parser przechowuje niedokończoną stanzę jako drzewo w pamięci bez limitu bajtów lub liczby elementów, a parsowanie strumienia XMPP przed uwierzytelnieniem udostępnia to zachowanie zanim poświadczenia zostaną zaakceptowane. Pojedyncze połączenie może zatem wyczerpać pamięć serwera i zakończyć proces. Problem naprawiono w wersji 26.10.0rc1.
- CVE-2026-115774Średnie
W bibliotece Twisted, w wersjach przed 26.10.0rc1, serwer IMAP4Server po uwierzytelnieniu i wybraniu skrzynki może otrzymać polecenie SEARCH z ujemną wartością rozmiaru literału. Powoduje to przesunięcie kursora parsera poniżej zera i zawieszenie pętli skanującej z powodu indeksowania ujemnego w Pythonie, co blokuje jednowątkowy reactor.
- CVE-2026-106454Średnie
W Twisted w wersji 25.5.0 i wcześniejszych funkcja wildcardToRegexp() w twisted/mail/imap4.py przekazuje znaki z wzorca LIST lub LSUB klienta bezpośrednio do re.compile(), co umożliwia atakującemu wywołanie katastrofalnego cofania się wyrażeń regularnych. Ponieważ Twisted używa jednowątkowego reaktora kooperacyjnego, blokujące dopasowanie zawiesza całą komunikację serwera.
Oryginalny opis (angielski, źródło NVD)
Twisted is an event-based framework for internet applications, supporting Python 3.6+. Prior to 26.10.0rc1, twisted.web.http.HTTPChannel.headerReceived rejects a NUL byte in an HTTP header value but accepts a bare carriage return or bare line feed. Because Twisted splits header lines only on CRLF, a hidden Content-Length header can remain folded into another value while a lenient front end treats the bare character as a line terminator. The resulting framing disagreement can smuggle a following request past front-end access controls, poison a shared connection or cache, and expose a later client to the wrong response. This issue is an incomplete-fix residual of earlier Twisted request-smuggling protections. This issue is fixed in version 26.10.0rc1.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

