TeamViewer – popularne oprogramowanie wykorzystywane często w pracy zdalnej – załatało poważną lukę (CVE-2020-13699, 8.8/10) w swojej aplikacji dla systemu Windows. Wykorzystanie błędu mogło pozwolić nieuwierzytelnionym atakującym na zdalne wykonanie kodu lub złamanie haseł użytkowników.
Problem tkwi w niepoprawnym korzystaniu z programów obsługi URI (ang. Uniform Resource Identifier) przez aplikację desktopową na Windowsa.
Uniform Resource Identifier (URI, ang. Uniform Resource Identifier, tłum. Ujednolicony Identyfikator Zasobów) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci – nazw (URN) lub adresów (URL). URI może zostać sklasyfikowane jako URL (ang. Uniform Resource Locator) lub URN (ang. Uniform Resource Name).
Aplikacje muszą identyfikować URI witryn, które będą obsługiwać. Ponieważ jednak mogą odbierać dane z niezaufanych źródeł, wartości identyfikatora URI przekazywane do aplikacji mogą zawierać złośliwe dane. W tym konkretnym przypadku wartości nie są „cytowane” przez aplikację. Oznacza to, że TeamViewer potraktuje je jako polecenia, a nie jako wartości wejściowe.
Osoba atakująca może osadzić złośliwą ramkę iframe w witrynie ze spreparowanym adresem URL, który uruchomi klienta pulpitu TeamViewer dla systemu Windows i zmusi go do otworzenia zdalnego udziału SMB.
Aby zainicjować atak, osoba atakująca może po prostu przekonać użytkownika TeamViewer do kliknięcia spreparowanego adresu URL wykorzystując techniki znane z ataków typu watering-hole.
Gdy aplikacja TeamViewer zainicjuje zdalny udział SMB, system Windows nawiąże połączenie za pomocą NT LAN Manager (NTLM). NTLM używa szyfrowanego protokołu do uwierzytelniania użytkownika bez użycia hasła ani nawet jego skrótu (hash). Poświadczenia NTLM są oparte na danych przechowywanych w bazie Managera kont zabezpieczeń lub bazie Active Directory.
W scenariuszu ataku atakujący mogą wykorzystać zestawy narzędzi typu Responder, przechwytywać sesje uwierzytelniania w sieci wewnętrznej oraz hashe haseł, które łamane są z użyciem ataków typu brute-force i przekazać je do maszyny docelowej, co daje to im dostęp do urządzeń ofiary.
Na szczęście dla użytkowników atak jest trudny do przeprowadzenia i wymaga interakcji użytkownika.
Podatne są wersje TeamViewer wcześniejsze niż 15.8.3. Błąd dotyczy również: teamviewer10, teamviewer8, teamviewerapi, tvchat1, tvcontrol1, tvfiletransfer1, tvjoinv8, tvpresent1, tvsendfile1, tvsqcustomer1, tvsqsupport1, tvvvidepport1 i tvvvidepport1.
Problem został rozwiązany w wersjach 8.0.258861, 9.0.258860, 10.0.258873, 11.0.258870, 12.0.258869, 13.2.36220, 14.2.56676, 14.7.48350 i 15.8.3.