W strongSwan, pakiecie VPN opartym na protokole IPSec, stosowanym w systemach Linux, Android, FreeBSD i macOS, odkryto lukę (CVE-2023-41913), którą można wykorzystać do zdalnego wykonania kodu przez atakującego. Luka wynika z błędu w procesie charon-tkm realizującym protokół wymiany kluczy (IKE) oparty na TKMv2 (Trusted Key Manager), prowadzącym do przepełnienia bufora podczas przetwarzania specjalnie skonstruowanych wartości schematu DH (Diffie–Hellman). Luka ujawnia się tylko w systemach używających charon-tkm i w wersjach strongSwan od 5.3.0. Problem został rozwiązany w aktualizacji strongSwan 5.9.12. Aby usunąć lukę w wersjach począwszy od 5.3.x, przygotowano również poprawki.
Błąd wynika z braku sprawdzania rozmiaru publicznych wartości Diffie-Hellman przed ich kopiowaniem do bufora o stałej wielkości na stosie. Przepełnienie może być wywołane przez wysłanie specjalnie skonstruowanej wiadomości IKE_SA_INIT, przetwarzanej bez uwierzytelnienia. W starszych wersjach strongSwan sprawdzenie rozmiaru odbywało się w obsłudze ładunku KE (Key Exchange), jednak w wersji 5.3.0 wprowadzono zmiany przenoszące sprawdzenie publicznych wartości na stronę obsługi protokołu DH (Diffie-Hellman) oraz dodające typowe funkcje do uproszczenia weryfikacji poprawności znanych grup DH. Przez przeoczenie nowe funkcje weryfikacji zostały pominięte w procesie charon-tkm, który działa jako proxy między procesem IKE a TKM (Trusted Key Manager), co spowodowało, że w funkcji memcpy() znalazły się niesprawdzone wartości, pozwalające na zapisanie do 10000 bajtów danych w 512-bajtowym buforze.
Źródło: opennet.ru
