Kontrola pachu - Taint checking - Wikipedia

Kontrola pachu je funkce v některých programování jazyky, jako Perl[1] a Rubín,[2] navrženo ke zvýšení bezpečnosti tím, že zabrání uživatelům se zlými úmysly ve vykonávání příkazů na hostitelském počítači. Kontroly slabosti zdůrazňují konkrétní bezpečnostní rizika primárně spojená s webovými stránkami, které jsou napadeny pomocí technik, jako je Vložení SQL nebo útok přetečení vyrovnávací paměti přístupy.

Přehled

Koncept kontroly nákazy spočívá v tom, že jakákoli proměnná, kterou může upravit vnější uživatel (například proměnná nastavená polem v webový formulář ) představuje potenciální bezpečnostní riziko. Pokud ano proměnná se používá ve výrazu, který nastavuje druhou proměnnou, tato druhá proměnná je nyní také podezřelá. Nástroj pro kontrolu poškození pak může pokračovat proměnnou po proměnné a vytvořit seznam proměnných, které jsou potenciálně ovlivněny vstupem zvenčí. Pokud se některá z těchto proměnných používá k provádění nebezpečných příkazů (například přímých příkazů do databáze SQL nebo hostitelského počítače) operační systém ), kontrola pachu varuje, že program používá potenciálně nebezpečnou zkaženou proměnnou. Počítačový programátor pak může program přepracovat a postavit bezpečnou zeď kolem nebezpečného vstupu.

Kontrola poškození může být považována za konzervativní aproximaci úplného ověření nevměšování nebo obecnější pojem zabezpečený tok informací.[3] Vzhledem k tomu, že tok informací v systému nelze ověřit zkoumáním jedné stopy po spuštění tohoto systému,[4] výsledky slabé analýzy budou nutně odrážet přibližné informace týkající se charakteristik toku informací systému, na který se vztahují.[5]

Příklad

Následující nebezpečné Perl kód otevře velký Vložení SQL zranitelnost nekontrolováním hodnoty souboru $ jméno proměnná:

#! / usr / bin / perlmůj $ jméno = $ cgi->param("název");  # Získejte název z prohlížeče...$ dbh->{TaintIn} = 1;$ dbh->vykonat("SELECT * FROM users WHERE name = '$ name';"); # Proveďte dotaz SQL

Pokud je zapnuta kontrola nakažlivosti, Perl by odmítl spustit příkaz a ukončit s chybovou zprávou, protože v dotazu SQL se používá zkažená proměnná. Bez kontroly nákazy mohl uživatel vstoupit foo '; Uživatelé DROP TABLE -, čímž se spustí příkaz, který odstraní celou databázovou tabulku. Mnohem bezpečnější by bylo zakódovat zkaženou hodnotu $ name do SQL řetězec doslovný a použít výsledek v dotazu SQL, což zaručuje, že v něm není vložen žádný nebezpečný příkaz $ jméno budou hodnoceny. Dalším způsobem, jak toho dosáhnout, je použít a připravené prohlášení dezinfikovat všechny vstupy proměnných pro dotaz.

Je třeba si uvědomit jednu věc Perl DBI vyžaduje, aby jeden nastavil TaintIn atribut popisovače databáze stejně jako povolení režimu nakazit ke kontrole něčí řetězce SQL.[6]

Dějiny

Perl podporoval zkaženost setuid skripty minimálně od verze 3.0 (vydáno v roce 1989)[7], ačkoli to nebylo až do verze 5.0 (vydané v roce 1994)[7] že -T přepínač[1] byla zavedena integrace taintingu do jediného modulu runtime.

V roce 1996 Netscape implementováno zkažení dat v JavaScript na straně serveru v Netscape Communications Server,[Citace je zapotřebí ] stejně jako na straně klienta pro Netscape Navigator 3.[8]Jelikož však podpora na straně klienta byla považována za experimentální, dodávala se deaktivovaná (vyžadující aktivaci zásahem uživatele) a vyžadovala, aby autoři stránky upravovali skripty tak, aby z toho měli prospěch. Jiní prodejci prohlížečů tuto funkci nikdy neimplementovali; ani primární konkurence komunikačního serveru, (tehdy) nová společnost Microsoft Internetový informační server.

Reference

  1. ^ A b "perlsec - zabezpečení Perl". Vývojový tým Perl 5. Citováno 2012-05-20.
  2. ^ Programming Ruby --- The Pragmatic Programmer's Guide. Addison Wesley Longman. 2001. s. 253 (kap. 20).
  3. ^ A. Sabelfeld a A. C. Myers, „Jazyková bezpečnost toku informací“, IEEE Journal on Selected Areas in Communications, 2003.
  4. ^ J. Ligatti, L. Bauer, D. Walker. "Upravit automaty: Mechanismy prosazování zásad zabezpečení za běhu". International Journal of Information Security, 2005
  5. ^ T. Terauchi a A. Aiken. "Zabezpečit tok informací jako bezpečnostní problém". v 12. mezinárodní symposium statické analýzy, Září 2005.
  6. ^ "DBI - rozhraní nezávislé na databázi pro Perl". Citováno 2020-08-29.
  7. ^ A b "perlhist - záznamy historie Perlu". Perl 5 vývojový tým. Citováno 2020-08-29.
  8. ^ Flanagan, David (1997). JavaScript: Definitivní průvodce (2. vyd.). O'Reilly & Associates. str. 321. ISBN  9781565922341. [...] model zabezpečení znečištění dat je v Navigátoru 3.0 experimentální a není ve výchozím nastavení povolen. Očekává se však, že se jedná o výchozí model zabezpečení ve verzi 4.0 aplikace Navigator.

externí odkazy