Przy okazji pojawienia się ponownie informacji o tym że Google Chrome ściąga pliki bez pytania na bugtraq wznowiła się dyskusja o tym czy jest to bug, feature, czy może vuln (luka w bezpieczeństwie).
Przede wszystkim należy zauważyć że panowie z Google uznają to za domyślnie włączony feature, który można bardzo łatwo wyłączyć wchodząc w opcję i zaznaczając checkbox przy 'Pytaj przed pobraniem...'. Czy można nazwać więc bugiem coś co zostało przewidziane i można to wyłączyć? Raczej nie.
Czy można to nazwać vulnem? James C. Slora Jr. na bugtraq twierdzi że tak, i ma nawet sensowne argumenty. Podsumowując to co napisał: automatyczne ściąganie plików na dysk nie jest może atakiem samym w sobie, ale tworzy pewien wektor ataku który umożliwia zaistnienie innym atakom. Jako przykłady podaje choćby plik desktop.ini (chociaż afaic dużo z nim zrobić nie można), pliki skanowane przez antywirusy (o vulnach w antywirach słyszy się stosunkowo często), czy inne pliki które powodują jakąś akcję (jako przykład często podawany był vuln z code exec w animowanych kursorach rezydujących w plikach .ani).
Dorzucę i swoje 3 grosze do tego. Czy pamiętacie technikę zwaną DLL spoofingiem? W skrócie, stanowcza większość plików wykonywalnych importuje jakieś zewnętrzne biblioteki DLL. To gdzie loader PE będzie szukał danej DLLki zależy od tego czy DLLka znajduje się na liście znanych (systemowych) DLLek. Jeżeli DLL znajduje się na tej liście, to loader zacznie poszukiwania od katalogu System32/SysWOW64. A jeżeli jej tam nie ma, to loader poszuka jej w katalogu uruchamianego pliku wykonywalnego. Przykładowa lista systemowych DLLek z systemu Microsoft Windows Vista SP1 zawiera następujące DLLki:
clbcatq.dll
ole32.dll
advapi32.dll
COMDLG32.dll
gdi32.dll
IERTUTIL.dll
IMAGEHLP.dll
IMM32.dll
kernel32.dll
LPK.dll
MSCTF.dll
MSVCRT.dll
NORMALIZ.dll
NSI.dll
OLEAUT32.dll
rpcrt4.dll
Setupapi.dll
SHELL32.dll
SHLWAPI.dll
URLMON.dll
user32.dll
USP10.dll
WININET.dll
WLDAP32.dll
WS2_32.dll
Dodam że w XP była tam defaultowo jeszcze VERSION.DLL, ale na Vista jej tam nie uświadczymy. Dodam że wszystkie DLLki które są importowane przez w/w biblioteki również są uznawane za DLLki systemowe.
OK. A teraz załóżmy że user wchodzi Chrome na jakąś stronę, i bez żadnego potwierdzenia ściąga się mu VERSION.DLL, WS2_32.DLL i WSOCK32.DLL, wszystkie oczywiście są zdecydowanie szkodliwe.
User zapomina o tym / nie zwraca uwagi i serfuje dalej. Za dzień, może dwa, user ściąga sobie instalkę np. najnowszego Blendera, i zaczyna instalować.
No i tu następuje uruchomienie zaplanowanej pułapki - instalka Blendera importuje VERSION.DLL, które na Viście nie jest systemowe, więc zostaje uruchomione wcześniej podłożone VERSION.DLL. Co się dalej dzieje to aż strach pisać ;>
Dodam że instalka Blendera w żadnym wypadku nie jest wyjątkiem. Sprawdziłem tylko kilka instalek które leżały u mnie w katalogu ze ściągniętymi plikami, i połowa z nich miała w importach jakąś niesystemową DLLkę. Jako przykład mogę podać np. instalkę Open Office (wersja UX) czy Pluginu WGA (plugin do weryfikacji autentyczności Windowsa do FF by Microsoft).
Wymieniłem również pliki WS2_32.DLL i WSOCK32.DLL. Załóżmy że user ściągnie nie tyle instalkę, co program gotowy do uruchomienia - np. pewien bardzo popularny klient SSH - putty. Ów klient importuje oczywiście jedną z wymienionych DLLek, i dochodzi o analogicznego uruchomienia złośliwego kodu.
Podsumowując: moim zdaniem feature stanowi pewne niebezpośrednie zagrożenie, i defaultowo powinien być raczej wyłączony, lub, powinna być możliwość podawania typów plików które mają być weryfikowane (DLL, EXE).
PS. Na milw0rm pojawił się kolejny exploit na Chrome, tym razem również wymagający interakcji remote DoS związany z (prawdopodobnie) buffer overflow w Inspect Element (czyżby drugi bug w Inspect Element? o jednym takim już pisałem).
Sections
- lang: |
- RSS: |
- About me
- Tools
- → YT YouTube (EN)
- → D Discord
- → M Mastodon
- → T Twitter
- → GH GitHub
Links / Blogs
- → dragonsector.pl
- → vexillium.org
- Security/Hacking:
- Reverse Eng./Low-Level:
- Programming/Code:
Posts
- Paged Out! #5 is out,
- CVEs of SSH talk this Thursday,
- Debug Log: Internet doesn't work (it was the PSU),
- FAQ: The tragedy of low-level exploitation,
- Solving Hx8 Teaser 2 highlight videos!,
- Gynvael on SECURITYbreak podcast,
- Paged Out! #4 is out,
- I won't be able to attend CONFidence'24 after all :(,
- xz/liblzma: Bash-stage Obfuscation Explained,
- Two of my bookmarklets: image extraction and simple TTS,
- → see all posts on main page
// copyright © Gynvael Coldwind
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* the author and owner of this blog hereby allows anyone to test the security of this blog (on HTTP level only, the server is not mine, so let's leave it alone ;>), and try to break in (including successful breaks) without any consequences of any kind (DoS attacks are an exception here) ... I'll add that I planted in some places funny photos of some kittens, there are 7 of them right now, so have fun looking for them ;> let me know if You find them all, I'll add some congratz message or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* the author and owner of this blog hereby allows anyone to test the security of this blog (on HTTP level only, the server is not mine, so let's leave it alone ;>), and try to break in (including successful breaks) without any consequences of any kind (DoS attacks are an exception here) ... I'll add that I planted in some places funny photos of some kittens, there are 7 of them right now, so have fun looking for them ;> let me know if You find them all, I'll add some congratz message or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
Add a comment: