Zadní vrátka
Zadní vrátka (anglicky backdoor) je v informatice název metody, která umožňuje obejít běžnou autentizaci, která za běžných okolností brání uživateli v neoprávněném využívání počítačového systému. Zadní vrátka jsou součástísoftwaru a mohou být využívána k seriózním účelům (např. pro servisní přístup), avšak často jsou zneužívána (crackerem jako exploit), takže jsou klasifikována jako bezpečnostní riziko, resp. zranitelnost.
Charakteristika
Zadní vrátka obchází standardní autentizační mechanismy, takže poskytují (typicky skrytou) metodu vstupu do programu nebo počítačového systému.
Pro svůj vnik do operačního systému mohou backdoors obejít firewall například tím, že se vydávají za webový prohlížeč.
Tento kód může mít formu samostatně instalovaného programu nebo se jedná o modifikaci stávajícího systému. Samotný vstup do systému pak mívá formu zadání fiktivního uživatelského jména a hesla, které napadený systém bez kontroly přijme a přidělí uživateli administrátorská práva.
Některé druhy malware, např. červi Sobig nebo Mydoom instalují zadní vrátka na nechráněné systémy. Napadené počítače poté mohou sloužit útočníkům k další činnosti např. k rozesílání spamu nebo k DOS útoku.
Zadní vrátka mohou být také v programu úmyslně zanechané programátorem nebo se může jednat o pomůcku pro ladění programu, která byla omylem ponechána i v ostré verzi.
Většinu cheatů lze považovat za druh zadních vrátek relativně neškodného druhu.
Základní požadavky na backdoor:
· neviditelnost - uživatel se nesmí dozvědět o tom, že je program spuštěn
· všestrannost - program se musí přizpůsobit podmínkám, jaké na daném pc jsou - šifry, certifikáty, hesla...
Úvahy o důvěře kompilátoru
Ken Thompson byl první, kdo v tištěné formě popsal otázky problémů se zadními vrátky.[1] Zdůrazňuje, že důvěra je pojem pouze „relativní“. Zjistil, že lidé jsou důvěřiví (nebo spíše neznalí zkompilovaných kódů). Běžní uživatelé vidí pouze texty, které přečtou na různých webových stránkách či programovací kódy, nikoliv však dále již zkompilované kódy, které kompiluje kompilátor, Uživatelé musí věřit, že se kompilátor chová tak, jak chtějí a že to není žádný škodlivý program, který se za kompilátor jen vydává. V případě nakažení jednoduše přeloží požadovaný kód, který si modifikuje, aby obstaral např. heslo.
Takto provedený útok byl naposledy objeven (srpen 2009) Sophos Labs: Virus W32/Induc-A, nakažený kompilátor pro vývojové prostředí Delphi, konkrétně jazyk Pascal. Jakmile je systém napaden tímto škodlivým kódem či trojanem, špatně se získává kontrola nad systémem. Jedinou možnou obranou je použití vlastního kompilátoru, což je pro většinu uživatelů (neprogramátorů) naprosto nesmyslné.
Reflections on Trusting Trust
Bylo vytvořeno schéma „důvěřivé důvěry“ (Trusting Trust), které má za cíl motivovat uživatelé, aby kontrolovali kompilátory, které používají. Schéma pojednává i o používání vlastních disassemblerů, které dokáží převést strojový kód do symbolického kódu v jazyce assembler, což umožňuje zkoumat kód tak, aby nedošlo k napadání systému. Zde je ovšem problém, že běžní uživatelé tomuto kódu nerozumí a i jazyk assembler se jim může zdát jako škodlivý. Dalším způsobem jak se takovýmto útokům bránit je studování HEX souborů, které vytvoří kompilátor, kde je detailně napsané, jak se program bude chovat, kam se jaké adresy kopírují a co se odkud maže. Existují i programy, které z tohoto HEX souboru dokáží vytvořit zpětně soubor v programovacím jazyce, ovšem je zde opět problém, že kompilátor na takovýto převod musí být opět neinfikovaný.
Rozdílné dvojité kompilace
Princip dvojí kompilací podle David A. Wheeler spočívá v tom, že se zkompiluje zdrojový kód do strojového kódu a poté vlastním kompilátorem nazpět. Výsledný soubor a soubor původní musí být shodné.[2]