Vyšlo v týdeníku Computerworld č. 21/94 v roce 1994
Vytištěno z adresy: http://www.earchiv.cz/a94/a421c120.php3

Trap door

Ne nadarmo se říká, že v každém programu je chyba. To přitom platí i pro poněkud specifickou kategorii programů, které mají za úkol dohlížet na bezpečnost informačních systémů a implementovat nejrůznější zabezpečovací mechanismy. Každá chyba v takovémto programu však může mít dalekosáhlé důsledky: může se stát místem či prostředkem neoprávněného vniknutí do zabezpečeného systému. Například když někdo chybně naprogramuje rutinu vyhodnocující správnost zadaného hesla, může tím otevřít přístup do systému i někomu, kdo by k tomu neměl být oprávněn - kdo sice nezná správné heslo, ale dokáže správně otevřít "zadní vrátka", která se vinou chyby v programu vytvořila.

Takovýmto zadním vrátkám v nejrůznějších programech se v angličtině říká příznačně back door nebo alternativně trap door. Za svou existenci mohou vděčit zcela neúmyslným chybám, ale stejně tak dobře mohou být vytvářena záměrně: například různé operační systémy pamatují na potřeby servisních techniků, kteří přichází k zákazníkům opravovat všelijaké závady, a mají v sobě předem zabudovány zvláštní uživatelské účty a hesla, jejichž pomocí se tito technici mohou dostat všude tam, kam potřebují. Někdy pak mohou být zadní vrátka způsobována i souběhem programových chyb a organizačních opatření, případně mohou mít i čistě organizační charakter. Jako například tehdy, když na boku monitoru jinak velmi dobře zabezpečeného systému je samolepka a na ní je napsáno heslo některého superuživatele - zřejmě kdyby někdo zapomněl ....

Zadní vrátka (trap doors, back doors) jsou příležitostí k neoprávněnému vniknutí do zabezpečeného systému nejen pro "lidské" narušitele, ale i pro nejrůznější viry, trojské koně (Trojan horses) a červy (worms, viz minule). Například slavný červ, který v roce 1988 dostal na kolena celý Internet (viz minule), využíval ke svému šíření právě takováto zadní vrátka v tehdy provozovaných verzích BSD Unixu a operačním systému SunOS a v některých jejich systémových utilitách.

Zřejmě neslavnější a nejdokonalejší zadní vrátka v celé počítačové historii má na svědomí pan Ken Thompson, jeden z autorů Unixu. V roce 1983 při přebírání prestižní Turingovy ceny (The Turing Award) sám na sebe vyzradil, že do prvních verzí Unixu si zabudoval velmi důmyslná zadní vrátka: do překladače jazyka C (kterým je operační systém Unix překládán) zabudoval takový kus kódu, který dokázal rozpoznat, že právě kompiluje příkaz login (pro přihlašování do systému), a vygenerovaný kód upravit tak, aby správně vyhodnotil i jedno konkrétní heslo, které bylo známo právě a pouze panu Thompsonovi. Ten tak získal možnost vstupu do kteréhokoli unixovského systému, bez ohledu na to, zda na něj měl vytvořen uživatelský účet či nikoli.

Zajímavá byla na těchto zadních vrátkách i jejich maximální "výdrž" - za běžných okolností by totiž stačilo odstranit ze zdrojového tvaru překladače jazyka C tu část kódu, která příslušná vrátka v přeloženém programu vytváří. Ovšem Ken Thompson se proti tomu pojistil: chcete-li přeložit novou verzi kompilátoru jazyka C (napsaného opět v jazyce C), musíte k tomu použít stávající verzi tohoto kompilátoru. Thompson ale zařídil věci tak, že kompilátor pozná, kdy překládá sám sebe, a do nové verze vloží kód, který se postará nejen o samotná zadní vrátka, ale který dá i nové verzi schopnost rozpoznat, že kompiluje sama sebe atd. Díky tomu se pak Thompsonova zadní vrátka stala prakticky neostranitelnými - sama se s novými verzemi Unixu šířila dál.

Uznejte, není ten Unix báječný?