Geautomatiseerd auditvoorbeeld: flawfinder

flawfinder is een algemene scanner voor het vinden en rapporteren van potentiële lekken in C- en C++-broncode.

flawfinder uitvoeren

flawfinder uitvoeren is gewoon een kwestie van het commando op te geven met de map- of bestandsnamen om te onderzoeken. Als een mapnaam wordt opgegeven, dan zal het alle geldige broncodebestanden die het vindt in de map behandelen.

Naast een lijst van bestanden of mappen, kunnen er ook verschillende opties worden meegegeven om het gedrag van de hulpmiddelen te sturen.

Elke optie wordt uitgelegd in de manpagina, maar de volgende opties zijn bijzonder nuttig en zullen worden gebruikt in ons voorbeeld:

Om als uitvoer een HTML-bestand te krijgen die de resultaten van ons programma bevat en enkel rekening houdend met de "hoge risico" functies zouden we het volgende uitvoeren:

flawfinder --html --context --minlevel=4 test.c > output.html

De Resultaten

flawfinder uitvoeren tegen onze voorbeeldcode geeft volgende uitvoer:


Examining test.c

  • test.c:18: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination. Consider using strncpy or strlcpy (warning, strncpy is easily misused).
          strcpy( dir, argv[ 1 ] );
    
  • test.c:24: [4] (buffer) sprintf: Does not check for buffer overflows. Use snprintf or vsnprintf.
    	sprintf( dir, "%s", getenv( "HOME" ) );
    
  • test.c:33: [4] (shell) popen: This causes a new program to execute and is difficult to use safely. try using a library call that implements the same functionality if available.
        fp = popen( cmd, "r" );
    
  • test.c:42: [4] (format) printf: If format strings can be influenced by an attacker, they can be exploited. Use a constant for the format specification.
          printf( buff );
    

Number of hits = 4
Number of Lines Analyzed = 48 in 0.53 seconds (1392 lines/second)


De uitvoer begrijpen

Zoals de uitvoer van RATS is dit rapport zeer gemakkelijk te lezen. Het toont duidelijk de functies die gedetecteerd zijn als potentieel gevaarlijk met een beschrijving van het probleem.

Contextinformatie laten zien is ook zeer nuttig omdat het onmiddellijk de aandacht kan trekken op de belangrijke gebieden of andere rapporten afwijzen omdat ze ongeldig zijn.

De analyse van onze voorbeeldcode is tamelijk intelligent, in de zin dat het niet waarschuwt bij elk gebruik van de lastige strcpy-functie - enkel bij diegene die het gevaarlijk acht.

Op deze manier is het geslaagd om alle mogelijke lekken te tonen zonder valse positieven.


Terug naar het auditproject | Terug naar de auditvoorbeeldenpagina