Audit kódu - Code audit
Software audit kódu je komplexní analýza zdrojový kód v programování projekt se záměrem odhalit chyby, narušení bezpečnosti nebo porušení programových konvencí. Je nedílnou součástí obranné programování paradigma, které se pokouší snížit chyby před vydáním softwaru. Zdrojový kód C a C ++ je nejběžnějším kódem, který se má auditovat, protože mnoho jazyků vyšší úrovně, například Python, má méně potenciálně zranitelných funkcí (např. Funkce, které nekontrolují hranice)[Citace je zapotřebí ].
Pokyny
Při auditu softwaru by měla být každá kritická součást auditována samostatně a společně s celým programem. Je dobré hledat vysoce rizikové zranitelnosti nejprve a pracujte na slabých místech s nízkým rizikem. Zranitelnosti mezi vysoce rizikovým a nízkým rizikem obecně existují v závislosti na situaci a způsobu použití příslušného zdrojového kódu. Testování penetrace aplikací se pokouší identifikovat zranitelná místa v softwaru spuštěním co největšího počtu známých útočných technik na pravděpodobných přístupových bodech ve snaze zneškodnit aplikaci.[1] Toto je běžná metoda auditu a lze ji použít ke zjištění, zda existují nějaké konkrétní chyby zabezpečení, ale nikoli tam, kde jsou ve zdrojovém kódu. Někteří tvrdí, že metody auditu na konci cyklu mají tendenci přemáhat vývojáře, což nakonec ponechává týmu dlouhý seznam známých problémů, ale malé skutečné zlepšení; v těchto případech se jako alternativa doporučuje přístup in-line auditu.
Vysoce rizikové chyby zabezpečení
Některé běžné vysoce rizikové chyby zabezpečení mohou existovat v důsledku použití:
- Funkce kontroly mezí (např. strcpy, sprintf, vsprintf a sscanf ), které by mohly vést k a přetečení zásobníku zranitelnost [2]
- Manipulace s ukazatelem vyrovnávacích pamětí, která může narušit pozdější kontrolu hranic, např .:
if ((bytesread = net_read (buf, len))> 0) buf + = bytesread;
[2] - Hovory jako vykonat (), prováděcí kanály, systém () a podobné věci, zvláště když jsou volány s nestatickými argumenty [2]
- Ověření vstupu, např. (v SQL):
statement: = "SELECT * FROM users WHERE name = '" + userName + "';"
je příkladem a Vložení SQL zranitelnost - Funkce pro začlenění souborů, např. (v PHP):
zahrnout ($ page. '.php');
je příkladem a Vzdálené zahrnutí souborů zranitelnost - U knihoven, které mohou být spojeny se škodlivým kódem, vrací odkaz na interní proměnlivou datovou strukturu (záznam, pole). Škodlivý kód se může pokusit upravit strukturu nebo ponechat odkaz, aby sledoval budoucí změny.
Zranitelnosti s nízkým rizikem
Následuje seznam slabých míst s nízkým rizikem, které by měly být nalezeny při auditu kódu, ale nevytvářejí vysoce rizikovou situaci.
- Zranitelnosti kódu na straně klienta, které nemají vliv na stranu serveru (např. skriptování mezi weby )
- Výčet uživatelského jména
- Procházení adresáře
Nástroje
Nástroje pro audit zdrojového kódu obecně hledají běžné chyby zabezpečení a fungují pouze pro konkrétní programovací jazyky. Takové automatizované nástroje lze použít k úspoře času, ale nemělo by se na ně spoléhat při hloubkovém auditu. Doporučuje se použít takové nástroje jako součást přístupu založeného na zásadách.[3]
Závislost na požadavcích
Je-li nastavena nízká prahová hodnota, většina softwarových nástrojů pro audit detekuje mnoho chyb zabezpečení, zejména pokud kód nebyl dříve auditován. Skutečná důležitost těchto upozornění však také závisí na tom, jak se aplikace používá. Knihovna, která může být spojena se škodlivým kódem (a musí být proti němu imunní), má velmi přísné požadavky, jako je klonování všech vrácených datových struktur, protože úmyslné očekávají se pokusy o rozbití systému. Program, který může být vystaven pouze škodlivému vstupu (například back-end webového serveru), se musí nejprve o tento vstup starat (přetečení vyrovnávací paměti, vložení SQL atd.). K takovým útokům nemusí nikdy dojít u programu, který je interně používán pouze oprávněnými uživateli v chráněné infrastruktuře.
Viz také
- Audit informačních technologií
- Obranné programování
- Vzdálené zahrnutí souborů
- Vložení SQL
- Přetečení zásobníku
- Seznam nástrojů pro statickou analýzu kódu
Reference
- ^ „Audit zdrojového kódu - nejčastější dotazy“. Archivovány od originál dne 10.02.2009. Citováno 2008-02-12.
- ^ A b C „Pokyny pro audit zdrojového kódu C“. Archivovány od originál dne 2008-03-28. Citováno 2008-02-12.
- ^ "Statická analýza na konci SDLC nefunguje Archivováno 2010-10-15 na Wayback Machine „Wayne Ariola, SearchSoftwareQuality.com, 22. září 2008