Säkerhetsgranskningsverktyg

Det finns flera paket tillgängliga i Debianarkivet som är designade för att hjälpa vid källkodsgranskning. Dessa inkluderar:

Notera även att det finns andra verktyg som är specifika för en uppsättning säkerhetssårbarheter och som kanske inte har paketerats för Debian ännu, men som kan var användbara för en granskning. Dessa inkluderar:

Inget av dessa verktyg är perfekt och kan endast användas som riktlinjer för vidare granskning, men med tanke på hur enkla de är att använda så är det värt att ta sig tid att testa dem.

Var och ett av dessa verktyg har olika styrkor och svagheter så det rekommenderas att använda fler än ett.

Flawfinder

flawfinder är ett Pythonverktyg som är designat för att analysera C och C++- källkod och söka efter potentiella säkerhetsbrister.

När man kör det mot en mapp som innehåller källkod kommer det att mata ut en rapport med de potentiella problem som det har detekterat, sorterat efter risk (där risk är ett heltal 1–5). För att filtrera bort små risker är det möjligt att säga till programmet att inte rapportera brister under en viss risknivå. Som standard kommer utdatan som ren text, men en HTML-rapport är också tillgänglig.

Programmet arbetar genom att scanna koden efter användning av funktioner som finns i en databas av funktioner som ofta används felaktigt.

För att hjälpa till vid läsning av rapporten är det möjligt att få den utmatade rapporten att innehålla raden som innehåller den använda funktionen, vilket kan hjälpa för att direkt upptäcka ett problem, eller på samma sätt utesluta det.

Du kan se ett exempel på hur flawfinder används, och dess utdata i sektionen för granskningsexempel.

ITS4

ITS4 är ett verktyg som finns i icke-fria delen av Debianarkivet, och är endast tillgängligt för utgåvan woody.

ITS4 kan användas både för att scanna C och C++-kod för potentiella säkerhetshål, likt flawfinder.

Utdatan som produceras försöker vara intelligent, genom att utesluta en del av fallen där anrop till farliga funktioner har gjorts försiktigt.

RATS

RATS liknar verktygen som listats ovan, med skillnaden att det kommer med ett stöd för en större mängd språk. För närvarande stödjer det C, C++, Perl, PHP och Python.

Verktyget använder sig av en enkel XML-fil för att läsa in sina sårbarheter från vilket gör det till ett av de enklaste av de tillgängliga verktygen att modifiera. Nya funktioner kan enkelt läggas till för varje språk.

Du kan se ett exempel på hur man använder RATS, och dess utdata i sektionen för granskningsexempel.

pscan

pscan skiljer sig från de tidigare beskrivna verktygen i det att det inte är en scanner för allmänna ändamål. Istället är det ett program specifikt med målet att upptäckta fel i formatsträngar.

Verktyget kommer att försöka upptäcka potentiella problem i användningen av variabla funktioner från C och C++-källkod, så som printf, fprintf och syslog.

Fel i formatsträngar är relativt enkla att upptäcka och rätta, även om de är den nyaste klassen av mjukvaruattacker och antagligen har majoriteten av dem redan upptäckts och reparerats.

Du kan se ett exempel på hur pscan används, och dess utdata i sektionen för granskningsexempel.

Att förstå utdatan från en granskning

Var och ett av de allmänna verktygen kommer att inkludera utdata som beskriver den detekterade nristen, och möjligen ge råd angående hur koden kan rättas.

Exempelvis är följande taget från utdatan från RATS, och beskriver riskerna med getenv:

"Miljövariabler är högst opålitlig indata. De kan ha vilken längd som, och innehålla vilket data som helst. Gör inte några antaganden rörande längd eller innehåll. Om det är möjligt, undvik att använda dem, och om det är möjligt, rengör dem och trunkera dem till en lämplig längd."

Om du behöver vidare råd om hur man rättar ett hål som har rapporterats så bör du studera en bok om hur man programmerar säkert, så som Secure Programming for Linux and Unix HOWTO av David A. Wheeler.

(Kom ihåg att när du rapporterar säkerhetsproblem så är en patch som rättar hålet mycket uppskattat)

Diskussioner relaterade till att stänga en särskilt problemetisk bit kod kan även hållas på sändlistan debian-security, men eftersom det är en publik lista med publika arkiv, var vänlig och gör det inte övertydligt vilket program som innehåller bristen.