Grupa badawcza z kilku niemieckich uniwersytetów opracowała nową metodę ataku MITM na HTTPS, która umożliwia wyciągnięcie ciasteczek z identyfikatorami sesji oraz innych poufnych danych, a także wykonanie dowolnego kodu JavaScript w kontekście innej strony. Atak został nazwany ALPACA i może być stosowany na serwerach TLS, które implementują różne protokoły warstwy aplikacji (HTTPS, SFTP, SMTP, IMAP, POP3), ale używają wspólnych certyfikatów TLS.
Istota ataku polega na tym, że przy kontroli nad bramą sieciową lub punktem dostępu bezprzewodowego, atakujący może przekierować ruch webowy na inny port sieciowy i zaaranżować nawiązanie połączenia z serwerem FTP lub pocztowym, które obsługują szyfrowanie TLS i używają wspólnego z serwerem HTTP certyfikatu TLS, a przeglądarka użytkownika będzie sądzić, że połączono się z żądanym serwerem HTTP. Ponieważ protokół TLS jest uniwersalny i nie jest związany z protokołami warstwy aplikacji, ustanowienie szyfrowanego połączenia dla wszystkich usług jest identyczne, a błąd w wysyłaniu żądania do niewłaściwej usługi można zidentyfikować dopiero po ustanowieniu szyfrowanej sesji podczas przetwarzania poleceń z wysłanego żądania.
Jeśli na przykład przekieruje się połączenie użytkownika, początkowo kierowane do HTTPS, na serwer pocztowy, na którym używany jest wspólny z serwerem HTTPS certyfikat, połączenie TLS zostanie pomyślnie nawiązane, ale serwer pocztowy nie będzie w stanie przetworzyć przesyłanych komend HTTP i zwróci odpowiedź z kodem błędu. Ta odpowiedź będzie przetwarzana przez przeglądarkę jako odpowiedź żądanej strony, przesyłana wewnątrz poprawnie nawiązanej szyfrowanej ścieżki komunikacji.
Proponowane są trzy warianty ataku:
- «Upload» do wyodrębnienia ciasteczek z parametrami uwierzytelnienia. Metoda ta jest stosowana, jeśli FTP-serwer objęty certyfikatem TLS pozwala na załadowanie i wydobycie swoich danych. W tym wariancie ataku, atakujący może uzyskać zachowanie części pierwotnego żądania HTTP użytkownika, takich jak zawartość nagłówka ciasteczka, na przykład, jeśli serwer FTP interpretuje żądanie jako plik do zapisania lub całkowicie loguje przychodzące żądania. Aby atak był skuteczny, przestępca musi następnie w jakiś sposób wyodrębnić zapisane treści. Atak jest stosowany w Proftpd, Microsoft IIS, vsftpd, filezilla i serv-u.
- «Download» do organizowania międzystronowego skryptowania (XSS). Metoda ta zakłada, że atakujący w wyniku jakichś manipulacji może umieścić dane w usłudze, która korzysta z wspólnego TLS certificate, które następnie mogą być wydane w odpowiedzi na żądanie użytkownika. Atak ten ma zastosowanie do wyżej wymienionych serwerów FTP, serwerów IMAP i POP3 (courier, cyrus, kerio-connect i zimbra).
- «Reflection» do uruchamiania JavaScript w kontekście innej strony. Metoda ta polega na zwracaniu klientowi części żądania, w której zawarty jest wysłany przez atakującego kod JavaScript. Atak ten ma zastosowanie do wymienionych wcześniej serwerów FTP, serwerów IMAP cyrus, kerio-connect oraz zimbra, a także do serwera SMTP sendmail.

Na przykład, gdy użytkownik otworzy stronę kontrolowaną przez atakującego, może z tej strony zostać zainicjowane żądanie zasobu z witryny, na której użytkownik ma aktywne konto (na przykład, bank.com). W trakcie ataku MITM, to żądanie, skierowane do witryny bank.com, można przekierować na serwer pocztowy, który używa wspólnego z bank.com certyfikatu TLS. Ponieważ serwer pocztowy nie kończy sesji po pierwszym błędzie, nagłówki sterujące i komendy, takie jak „POST / HTTP/1.1” i „Host:”, będą przetwarzane jako nieznane komendy (serwer pocztowy zwróci dla każdego nagłówka „500 unrecognized command”).
Serwer pocztowy nie interpretuje szczegółów protokołu HTTP i dlatego nagłówki robocze oraz blok danych żądania POST są przetwarzane w ten sam sposób, więc w treści żądania POST można wskazać ciąg z poleceniem do serwera pocztowego. Na przykład, można przesłać: MAIL FROM: na co serwer pocztowy zwróci komunikat o błędzie 501 : malformed address: alert(1); may not follow
Ta odpowiedź zostanie odebrana przez przeglądarkę użytkownika, która wykona kod JavaScript w kontekście nie zainicjowanej strony atakującego, lecz strony bank.com, do której wysłano zapytanie, ponieważ odpowiedź przyszła w ramach poprawnej sesji TLS, której certyfikat potwierdził autentyczność odpowiedzi bank.com.

Skanowanie globalnej sieci wykazało, że problem w ogólnym ujęciu dotyczy około 1,4 miliona serwerów WWW, które mogą być narażone na atak z wykorzystaniem mieszania zapytań w różnych protokołach. Możliwość rzeczywistego przeprowadzenia ataku zidentyfikowano dla 119 tysięcy serwerów WWW, które miały współpracujące serwery TLS oparte na innych protokołach aplikacyjnych.
Przykłady exploitów przygotowano dla serwerów ftp pureftpd, proftpd, microsoft-ftp, vsftpd, filezilla i serv-u, serwerów IMAP i POP3 dovecot, courier, exchange, cyrus, kerio-connect i zimbra oraz serwerów SMTP postfix, exim, sendmail, mailenable, mdaemon i opensmtpd. Badacze zbadali możliwość przeprowadzenia ataku wyłącznie w połączeniu z serwerami FTP, SMTP, IMAP i POP3, nie wykluczając, że problem może występować także w przypadku innych protokołów aplikacyjnych wykorzystujących TLS.

W celu zablokowania ataku zaproponowano użycie rozszerzenia ALPN (Application Layer Protocol Negotiation) do negocjacji sesji TLS z uwzględnieniem protokołu aplikacyjnego oraz rozszerzenia SNI (Server Name Indication) do powiązania z nazwą hosta w przypadku stosowania certyfikatów TLS obejmujących kilka. nazw domenPo stronie aplikacji zaleca się ograniczenie limitu liczby błędów podczas przetwarzania poleceń, po osiągnięciu którego należy zerwać połączenie. Proces opracowywania działań mających na celu blokowanie ataku rozpoczął się już w październiku ubiegłego roku. Podobne środki ochrony zostały już wprowadzone w Nginx 1.21.0 (proxy pocztowe), Vsftpd 3.0.4, Courier 5.1.0, Sendmail, FileZilla, crypto/tls (Go) i Internet Explorer.
Źródło: opennet.ru
