This is an old revision of the document!
Pentru a preveni existența bug-urilor și a vulnerabilităților, un dezvoltator va urmări cu atenție codul scris de sine sau de alții (auditare de cod). Pentru a facilita acest proces, există utilitare specifice care să automatizeze analiza codului și să raporteze posibile probleme. Pot fi utilitare de analiză statică (pe cod) sau de analiză dinamică (ce presupun rularea unui proces). Este important integrarea acestor utilitare în procesul de dezvoltare și testare software (Software Development Lifecycle).
Arhiva de suport pentru exerciții se găsește aici. Descărcați arhiva și apoi decomprimați-o folosind comenzile:
wget http://koala.cs.pub.ro/training/res/secure-low-level-programming/arc/09-utilitare-de-analiza-cod-skel.zip unzip 09-utilitare-de-analiza-cod-skel.zip cd 09-utilitare-de-analiza-cod-skel/
Pentru a instala aplicațiile necesare pentru investigarea programelor folosiți comanda
sudo apt install clang cppcheck splint valgrind
Accesăm directorul hidden-bugs/
din arhiva de suport.
Fișierul cod sursă hidden-bugs.c
conține 8 erori de programare. Identificați-le parcurgând manual codul (code audit). Lucrați în echipe de 2-3 persoane.
După aceasta folosiți utilitarele cppcheck
, splint
și scan-build
pentru a verifica static prezența erorilor.
Moduri uzuale de rulare:
cppcheck --enable=all hidden-bugs.c splint hidden-bugs.c scan-build make
Folosiți utilitarele cppcheck
, scan-build
și splint
pentru a verifica fișierele ce conțin buffer overflow-uri din sesiunea 06
.
Accesăm directorul picpic/
din arhiva de suport.
Verificați codul sursă din cadrul directorului folosind utilitarele cppcheck
, splint
și scan-build
.
Accesăm directorul valgrind/
din arhiva de suport.
Urmăriți codul din fișierul cod sursă vuln.c
și rulați executabilul vuln
. Executabilul primește ca argument un număr care se asociează cu o anumită funcție din program ce va fi executată. Rulați programul sub Valgrind în forma:
valgrind ./vuln 1
Vedeți rezultatul afișat de Valgrind și validați depistarea erorilor de folosire a memoriei.
Clonați repository-ul de aici folosind comanda
git clone https://github.com/ThalesIgnite/afl-training
Apoi urmăriți indicațiile de aici pentru a face fuzzing pe executabilul vulnerable
.