EFAIL – podatność w S/MIME i PGP

EFAIL – podatność w S/MIME i PGP

Od wczoraj możemy sporo przeczytać na temat podatności pozwalającej na odczytywanie wiadomości szyfrowanych z wykorzystaniem standardów S/MIME i PGP. Zawdzięczamy to grupie naukowców z trzech niemieckich uczelni, którzy swoje odkrycie ochrzcili nazwą EFAIL.

Słowem wstępu – S/MIME i PGP

Szyfrowanie typu end-to-end to dobry sposób na zachowanie prywatności korespondencji pocztowej. Wiadomości szyfrowane są bezpośrednio przez nadawcę i deszyfrowane dopiero przez adresata – uniemożliwia to odczytanie wiadomości w trakcie jej transportu np. przez dostawcę internetu. Na tego rodzaju szyfrowaniu opierają się dwa popularne standardy: S/MIME (Secure/Multipurpose Internet Mail Extensions) i PGP (Pretty Good Privacy).

S/MIME jest silnie związany z infrastrukturą klucza publicznego (public key infrastructure – PKI) i certyfikatami x509. Domyślnie wspierają go popularne programy pocztowe tj. Outlook czy Thunderbird.

PGP z kolei bazuje na własnej sieci zaufania i najczęściej implementowany jest w ww. klientach pocztowych przez dodatkowe wtyczki.

Szczegóły podatności i ataku

Badacze w swojej pracy [PDF] zaprezentowali dwa rodzaju ataku. Pierwszy z nich wykorzystuje słabości w implementacji klientów pocztowych. Drugi natomiast uderza dodatkowo w specyfikacje standardów.

Pierwszy z wariantów ataku nie wymaga specjalistycznej wiedzy z zakresu kryptologii, ale wymaga przechwycenia szyfrowanej wiadomości co już może być sporym wyzwaniem. Gdy już atakującemu uda się przejąć tajną wiadomość (np. poprzez podsłuchanie ruchu sieciowego) jedyne co musi zrobić to obudować szyfrowaną cześć wiadomości w odpowiednio spreparowane tagi HTML, tak jak pokazuje to poniższy obrazek:

Po otrzymaniu takiej wiadomości podatny klient pocztowy zdeszyfruje ją, a następnie wyśle żądanie HTTP do wskazanego w tagu img serwera w URL podając odszyfrowaną treść wiadomości:

Drugi rodzaj ataku jest bardziej skomplikowany i bazuje na właściwościach (czyt. słabościach) trybu szyfrowania wiadomości CBC (Cipher Block Chaining) w przypadku S/MIME i CFB (Cipher Feedback) w przypadku PGP. Oba te tryby posiadają właściwość, która pozwala modyfikację szyfrogramu i w konsekwencji na zmianę tekstu który będzie wynikiem deszyfracji – wszystko to oczywiście bez znajomości klucza szyfrującego. Gdy dołożymy do tego wiedzę o charakterystycznych fragmentach tekstu jawnego, w przypadku szyfrowania S/MIME jest to np. ciąg Content-type: multipart/signed, który określa typ przesyłanej wiadomości i który znajduje się w każdej szyfrowanej wiadomości, to możliwe staje się znaczne modyfikowanie finalną treścią wiadomości która dotrze do niczego nieświadomej ofiary. W scenariuszu ataku opisanym przez naukowców wykorzystano te ułomności trybów szyfrowania do podstawiania kodu HTML, który tak jak w przypadku pierwszego ataku, pozwolił na odczytanie zaszyfrowanej wiadomości.

Jak opisują autorzy opracowania, drugi rodzaj ataku łatwiej przeprowadzić na wiadomościach szyfrowanych protokołem S/MIME z uwagi na to, że wiadomości nie są kompresowane przed ich zaszyfrowaniem. Z odwrotnego powodu atak ten trudniej jest przeprowadzić na protokole PGP.

Nie tylko HTML

Interesującą możliwością, związaną z atakiem na S/MIME są inne kanały którymi można wyłuskać zdeszyfrowane wiadomości. Zamiast podstawiać tagi HTML możliwe jest wykorzystanie właściwości protokołu S/MIME.

Jak wspominałem wcześniej S/MIME opiera swoje działanie na certyfikatach klucza publicznego wydawanych przez zaufane urzędy certyfikacji. Klucze z tych certyfikatów wykorzystywane są do podpisywania i szyfrowania wiadomości. Każdy taki certyfikat posiada w swojej strukturze pewne rozszerzenia, które pozwalają na sprawdzenie jego statusu oraz pobranie informacji o jego wystawcy. Rozszerzenie te zawierają URLe do konkretnych serwerów OCSP, CRL oraz repozytoriów z których można pobrać certyfikat wystawcy. Klient pocztowy odbierając podpisaną lub zaszyfrowaną wiadomość każdorazowo wysyła żądania pod ww. adresy w celu weryfikacji tego czy certyfikat nie został unieważniony (OCSP, CRL) oraz w celu zbudowania ścieżki certyfikacyjnej (repozytoria certyfikatów wystawców). Gdyby atakującemu udało się odnaleźć te adresy w szyfrogramie i podstawić je na własne to resztę roboty robi klient pocztowy, wykonując podstawowe operacje PKI.

Z uwagi jednak chociażby na to, że adresy serwerów OCSP i CRL są zawarte w cyfrowo podpisanej strukturze certyfikatu, a próba ich modyfikacji zostanie automatycznie wykryta, powyższe możliwości wydobycia odszyfrowanej wiadomości traktować należy raczej jednak jako ciekawostkę.

Co poradzić?

Porada o zaprzestaniu deszyfrowania wiadomości bezpośrednio w kliencie pocztowym i robieniu tego w zewnętrznym oprogramowaniu mnie osobiście nie przekonuje ze względów praktycznych. Jest to jednak  sposób najskuteczniej chroniący przed tym atakiem.

Rozsądnym rozwiązaniem wydaje się być wyłączenie w kliencie pocztowym wyświetlania wiadomości w formacie HTML. Przynajmniej do czasu, aż pojawią się łatki które zablokują lub znacznie utrudnią (jakby sam w sobie atak nie wymagał już sporo wysiłku) możliwość skutecznego wykonania ataku. Listę podatnych programów pocztowych znaleźć można w samym opracowaniu [PDF].

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *