Bezpieczeństwo naszego silnika

Założony przez  Arthu.

Witam !

Ostatnio przeglądając wiele artów o zabezpieczaniu MyBB i kilku podstawowych stron dot. exploit'ów znanych przez inteligentnych administratorów śmiem twierdzić że MyBB góruje w porównaniu z innymi skryptami (nawet komercyjnymi) pod względem bezpieczeństwa.

Kilka argumentów... Proszę zwracać uwagę na wersje !

Exploits for MyBB

Exploits for vBulletin
Exploits for IP.Board
Exploits for phpBB3

Exploits Databases:

1337 (l33t) Day
Packet Storm
Hoobie
InSecure
SecuriTeam
Milw0rm

Na Packet Storm znalazłem tylko 1 exploit pod aktualną wersję, ale dość 'agresywny', konkretniej SQL Injection, ale to chyba nic w porównaniu do innych skryptów, szczególnie vBulletin... :)

Co o tym sądzicie ?
Ja osobiście jestem pod wrażeniem, w wielkim stopniu zaskoczyły mnie w/w wyniki wyszukiwania.

Komentujcie... :)
W MyBB nadal nie znajdowanych aż tak dużo dziur, bo jest mimo wszystko mniej popularny niż wypromowane IPB/vB, czy działające od nie wiadomo kiedy phpBB.
Niemniej, sytuacja się zmienia, ale jest dobrze, na dev mybb też nie ma wiele zgłoszeń o lukach, więc albo ich nie ma, albo ludzie nie szukają (a szuka jednak sporo).

Gorzej jak weźmiemy pod uwagę dodatki. Niestety te dla MyBB nie przechodzą przez żadną walidację, w efekcie sporo z nich posiada poważne luki.
Potwierdzam, im więcej modyfikacji tym większa szansa na atak, nie mamy pewności że jakaś modyfikacja nie posiada backdoora nieumyślnie stworzonego przez autora modyfikacji, kwestię popularności trochę rozwieję, ponieważ IP.Board w porównaniu do MyBB ma o wiele mniejszą ilość exploitów, ale bierzmy pod uwagę iż jest to skrypt komercyjny, tam łatanie dziur itp. akcje są priorytetem, w MyBB nie można tego powiedzieć podreślając ten fakt, iż opiera on się na zasadzie wolontariatu.
Otóż to. MyBB jest dość bezpiecznym silnikiem, zdecydowanie większa szansa jest na to, że atak spowodowany byłby luką w pluginie. Przykładowo, załóżmy, że w pluginie jest taki wers:
$row $db->write_query("SELECT * FROM mybb_users WHERE uid = $_GET[uid]"); 
Ja tutaj widzę z 5 błędów, w tym dwa bardzo poważne, gdyż dotyczą bezpieczeństwa. Niech teraz atakujący dowie się, że taki plugin jest na forum i obejrzy kod. Przy lekkiej zabawie z GET można wyciągnąć nawet hashe i emaile wszystkich użytkowników. Poprawny kod powinien tak wyglądać:
$mybb->input['uid'] = (int)$mybb->input['uid']; // UID to zawsze cyfra, co nie?
$row $db->simple_select('users''username, uid''uid = '.$mybb->input['uid']); 
Założyłem oczywiście, że wystarczy tylko nick i uid użytkownika, po co czytać wszystko, w tym hasła i emaile?

Dlatego też oprócz aktualnej wersji MyBB równie bardzo ważna (a moim zdaniem nawet jeszcze ważniejsza) jest aktualna wersja pluginu(ów). I powinno się pobierać pluginy z zaufanych źródeł, większa szansa, że jakaś "randomowa" strona będzie miała plugin z backdoorem niż takie np. mods.mybb.com (choć nie przeczę, tam też może być).

// Edit
(09.08.2012, 10:21)Arthu napisał(a): Na Packet Storm znalazłem tylko 1 exploit pod aktualną wersję, ale dość 'agresywny', konkretniej SQL Injection, ale to chyba nic w porównaniu do innych skryptów, szczególnie vBulletin... :)
Znalazłem tego exploita i sprawdziłem na różnych forach (od 1.6.6 do 1.6.8) i hostingach, na żadnym nie zadziałał.
Siper napisał(a):I powinno się pobierać pluginy z zaufanych źródeł, większa szansa, że jakaś "randomowa" strona będzie miała plugin z backdoorem niż takie np. mods.mybb.com (choć nie przeczę, tam też może być).

No to ja powiem, że na mods.mybb.com nie ma kontroli i da się trafić kwiatki.
Zgłaszałem zresztą błąd w jednym z pluginów (tego typu jak podałeś, sql inj.) tak administratorom, jak i autorowi.
Nie został on usunięty po dziś dzień.

BTW. Co do tego $mybb->input - tu się nie zgodzę. Czasami powoduje to większy bałagan niż używanie $_GET / $_POST itd. bo na dobrą sprawę nie wiemy z jakiego źródła to idzie - od tego trzeba by wykonywać dodatkowego if'a. Poza tym, tam w inpucie leżą nadal w pełni niezabezpieczone rzeczy.
Ale dobra, te szczegóły to już chyba nie na taki ogólny temat :)
(09.08.2012, 14:11)lukasamd napisał(a): /.../
BTW. Co do tego $mybb->input - tu się nie zgodzę. Czasami powoduje to większy bałagan niż używanie $_GET / $_POST itd. bo na dobrą sprawę nie wiemy z jakiego źródła to idzie - od tego trzeba by wykonywać dodatkowego if'a. Poza tym, tam w inpucie leżą nadal w pełni niezabezpieczone rzeczy.
Ale dobra, te szczegóły to już chyba nie na taki ogólny temat :)

Łukasz, to może napiszesz jakiegoś felka w wolnej chwili w rodzaju "Najczęściej popełniane błędy (bezpieczeństwa) w pluginach"? :)
DamYan napisał(a):Łukasz, to może napiszesz jakiegoś felka w wolnej chwili w rodzaju "Najczęściej popełniane błędy (bezpieczeństwa) w pluginach"?

To byłby świetny pomysł, dla tych początkujących developerów jak i starych elit :D
Rozumiem, że na mods.mybb.com również są backdoory, ale tak szczerze: Gdzie szybciej trafimy na plugin z backdoorem? Może np. być czysty na MyBB Mods (np. Google SEO, bo bardzo popularny), ale ktoś go zmodyfikuje i wrzuci na swój host. Niedoświadczony użytkownik, który usłyszał tylko nazwę pluginu weźmie zapewne pierwszy link z brzegu w Google.

A co do tego inputa (bezpieczeństwo), mógłbyś powiedzieć nieco więcej o tym? :P

// Edit
Jestem za pomysłem DamYana, bo to ciekawy temat :)
Przydało by się przyjrzeć pluginom pod które napisano już exploity, np.:

- MyStatus
- Forum Userbar Plugin
- Advanced Forum Signatures

... i je zfixować, o ile nie wyszły aktualizacje które naprawiły te problemy, lub alternatywą może też być zrobienie 'Czarnej listy pluginów', analizując ich kod :P
Można o to poprosić Zinga. Na swoim forum przeprowadza analizę kodów niektórych pluginów: http://mybbhacks.zingaburga.com/forumdisplay.php?fid=36
DamYan napisał(a):Łukasz, to może napiszesz jakiegoś felka w wolnej chwili w rodzaju "Najczęściej popełniane błędy (bezpieczeństwa) w pluginach"?

Szczerze to nie wiem czy mam na tyle doświadczenia, żeby to opisywać jak jakiś "guru" i dawać wskazówki. Coś takiego musiałoby być raczej ogólne i w odniesieniu do całego php/mysql/js. Nie wiem, ale wydaje mi się, że Riess byłby lepszym kandydatem na napisanie takie poradnika, o ile byłby zainteresowany.
Grzebiąc w Internecie znalazłem bardzo ciekawy zestaw informacji o bezpieczeństwie aplikacji (czyli jak wspomniałeś Łukasz, ogólnie): http://threats.pl/bezpieczenstwo-aplikac...ernetowych
Hoho, całkiem ciekawe znalezisko DamYan, napewno się przyda :)
@DamYan:
Kiedyś się na to natknąłem, mam gdzieś w zakładkach chyba nawet.
Polecam, dobrze opisane wiele kwestii z wieloma przykładami, ja się stamtąd dowiedziałem o kilku typach ataków, o których próżno było szukać informacji w kilku książkach.
@Siper

Nie musisz intval'ować (int) zmiennej $mybb->input['uid'] gdyż już inc/class_core.php ją filtruje.



Użytkownicy przeglądający ten wątek:

1 gości