This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
secure-low-level-programming:capitole:11-programare-sigura [2018/12/20 19:37] razvan [Subiecte abordate] |
secure-low-level-programming:capitole:11-programare-sigura [2018/12/21 10:44] (current) razvan |
||
---|---|---|---|
Line 26: | Line 26: | ||
* https://github.com/deadbits/InsecureProgramming | * https://github.com/deadbits/InsecureProgramming | ||
* https://cwe.mitre.org | * https://cwe.mitre.org | ||
+ | |||
===== Exerciții ===== | ===== Exerciții ===== | ||
+ | |||
+ | /* | ||
Arhiva de suport pentru exerciții se găsește [[http://koala.cs.pub.ro/training/res/secure-low-level-programming/arc/11-programare-sigura-skel.zip|aici]]. Descărcați arhiva și apoi decomprimați-o folosind comenzile:<code> | Arhiva de suport pentru exerciții se găsește [[http://koala.cs.pub.ro/training/res/secure-low-level-programming/arc/11-programare-sigura-skel.zip|aici]]. Descărcați arhiva și apoi decomprimați-o folosind comenzile:<code> | ||
Line 34: | Line 37: | ||
</code> | </code> | ||
- | ==== Exercițiu 1 ==== | + | */ |
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | ==== Reguli Secure Coding ==== |
- | TODO | + | Parcurgem două reguli din [[https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard|SEI CERT C Coding Standard]] și două reguli din [[https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88046682|SEI CERT C++ Coding Standard]]. Identificați problemele pe care le rezolvă și indicațiile de rezolvare a acestora. |
+ | ==== Exemple nesigure ==== | ||
- | ==== Exercițiu 2 ==== | + | Parcurgeți exemplele de cod nesigure din subdirectorul ''vulnerable/'' din [[https://github.com/patricia-gallardo/insecure-coding-examples|acest repository]]. Pentru a clona repository-ul folosiți comanda |
+ | <code> | ||
+ | git clone https://github.com/patricia-gallardo/insecure-coding-examples | ||
+ | </code> | ||
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | Apoi accesați subdirectorul ''vulnerable/'' din repository și parcurgeți fișierele cod sursă C sau C++ de acolo. |
+ | ==== Alte exemple nesigure ==== | ||
- | TODO | + | Parcurgeți exemplele de cod nesigure din [[https://github.com/deadbits/InsecureProgramming|acest repository]]. Pentru a clona repository-ul folosiți comanda |
+ | <code> | ||
+ | git clone https://github.com/deadbits/InsecureProgramming | ||
+ | </code> | ||
- | ==== Exercițiu 3 ==== | + | Parcurgeți **toate** fișierele cod sursă C din rădăcina repository-ului și identificați, rapid, bug-ul/vulnerabilitatea și ce problemă cauzează (și, dacă e cazul, cum poate fi exploatată). |
- | Accesăm directorul ''lalala/'' din arhiva de suport. | + | ==== Bad vs. Good ==== |
- | TODO | + | Accesați [[https://samate.nist.gov/SRD/testsuite.php|NIST Software Assurance Reference Dataset Project]]. |
+ | Descărcați: | ||
+ | * suita //C Test Suite for Source Code Analyzer v2 - Vulnerable// (Test Suite ID 100) | ||
+ | * suita //C Test Suite for Source Code Analyzer v2 - Secure// (Test Suite ID 101) | ||
+ | Alegeți cel puțin 5 exemple din suita vulnerabilă și identificați vulnerabilitatea. Gândiți soluția pentru acea vulnerabilitate și vedeți dacă este similară celei din suita sigură. În suita sigură identificatorul exemplului este mai mare cu 1 față de cel din suita vulnerabilă. De exemplu pentru exemplul ''043'' din suita vulnerabilă, identificatorul este ''044'' ca mai jos: | ||
+ | <code> | ||
+ | cat 100/000/149/043/Format_string_problem-bad.c | ||
+ | cat 101/000/149/044/Format_string_problem-good.c | ||
+ | </code> |