Bezpečnosť > Windows
Buffer overflow nepatri do šrotu
Bohužiaľ je to tak chyba pretečenia je stale reálna na Windows Vista a XP i novších. Dôvodom však nie sú operačné systémy
I napriek funkciám ako DEP (Data Execution Prevention) a ASLR (Address Space Layout Randomization) často dochádza k buffer overflow útokom (Pretečenie vyrovnávacej pamäte alebo preplnenie vyrovnávacej pamäte (angl. buffer overflow alebo aj buffer overrun) je chyba v programe, ktorá vedie k zápisu mimo vyhradeného priestoru v pamäti a k chybnému behu, prípadne aj k pádu programu. Je to jeden z najčastejších a najvyužívanejších spôsobov hackerských útokov. Pomocou výnimky v prístupe do pamäti je totiž možné spustiť cudzí kód. Viac na http://en.wikipedia.org/wiki/Buffer_overflow).
Pre objasnenie najprv uvediem čo to vlastne DEP a ASLR je.
DEP označí všetky oblasti pamäte kde sa nachádza spustiteľný kód ako chránené proti zápisu.
Pekné, jasné a jednoduché, ale...
Väčšinou tieto veci dodržiavajú a podporujú iba programy od Microsoftu (s výnimkami) a o to práve ide. S dobrej veci sa stala vec prinajmenšom nepoužiteľná pri 3rd party programoch. V horších prípadoch môže dôjsť k pádu systému. Mám to odskúšané, bohužiaľ.
Problém bol v DEP, a jeho nastavení. DEP má totiž 2 možnosti v štandardnom režime (v nastaveniach systému). Prvá ktorá je predvolená, a bez nebezpečia kolízie, je Turn on DEP for essential Windows programs and services only ( Zapnúť funkciu DEP pre dôležité programy a služby Windows) a nie je konfliktná s 3rd party programami. Druhá možnosť je Turn on DEP for all programs and services except those I sellect: (Zapnúť DEP pre všetky programy a služby okrem nasledujúcich) kde treba dať do výjnimiek VŠETKY programy ktoré DEP nepodporujú.
A tu je kameň úrazu. Väčšina programov to nepodporuje. Napríklad Firefox vo verzií 3.x je svetlou výnimkou. Naproti tomu ani Internet Explorer 7 funkciu DEP nepodporuje.
Mne osobne sú dôvody tvorcov neznáme a asi aj dlho ostanú.
ASLR náhodne prideľuje DLL (dynamic load library) knižniciam (http://en.wikipedia.org/wiki/Microsoft_Dynamic_Link_Library) miesto v pamäti a tým útočník nevie kam príde zápis. ASLR podporuje Windows Vista, Server 2008, Windows 7, OpenBSD, MacOS x (10.5 a vyšší), taktiež linuxové distribúcie s kernelom 2.6.12 a vyšším. Pri OS Windows to pracuje nasledovne: pri načítaní nejakej knižnice DLL, ktorá musí byť označené príznakom pre použitie ASLR sa danej dll priradí náhodná časť pamäte. Dll systému Windows to bežne používaju. 3rd party programy však nie. ASLR je vlastne inak nazvaná funkcia Dynamic Memory Allocation (Dynamické priraďovanie pamäte). Bohužiaľ sa však vďaka 3rd party programom táto funkcia vo Windows stáva nefunkčnou a zbytočnou. Riešením by možno bolo defaultne pridávať príznak OS (ako v *nix systémoch) ale to záleží od Microsoftu. Čo ale opäť privádza k veci, že zníženie bezpečnosti a diery v OS Windows sú často zásluhou externých aplikácií a nie priamo v systému.
Pre ukážku pár dier pre bufferoverflow (všetky sú ošetrené):
Mplayer - použitie funkcie demux_real_fill_buffer pri prehrávaní súborov Real Media.
MAC Illustrator CS2 - pri otvorení "upraveného" súboru
PHP 5.2.6 a menej - IMAP toolkit crash: rfc822.c
Apache 1.3.xx - chyba volaní strncpy a strncat
Apache na Debiane - „Chunked Requests" funkcia http 1.1
SlimFTP 3.15 - 3.17
Trend Micro ServerProtect - (chyba antivírového riešenia) Trend ServerProtect service a StRpcSrv.dll (RPC služba)
|