User Tools

Site Tools


secure-low-level-programming:capitole:11-programare-sigura

11. Programare sigură

Atunci când scriem programe, ținând cont de problemele care pot să apară, folosim tehnici de programare sigură (secure programming) sau programare defensivă (defensive programming). Aceasta înseamnă să evităm apariția de bug-uri și vulnerabilități prin folosirea corespunzătoare a tipurilor de date, a apelurilor de funcții și prin verificarea atentă a intrării într-un program. Dezvoltatorul va trata intrarea, codul refolosit, bibliotecile ca fiind nesigure și surse de bug-uri și atacuri și va scrie cod în mod corespunzător.

Subiecte abordate

  • programare sigură
  • programare defensivă
  • CWE (Common Weakness Enumeration)
  • SSDL (Secure Software Development Lifecycle)

Resurse

Alte resurse

Exerciții

Reguli Secure Coding

Parcurgem două reguli din SEI CERT C Coding Standard și două reguli din SEI CERT C++ Coding Standard. Identificați problemele pe care le rezolvă și indicațiile de rezolvare a acestora.

Exemple nesigure

Parcurgeți exemplele de cod nesigure din subdirectorul vulnerable/ din acest repository. Pentru a clona repository-ul folosiți comanda

git clone https://github.com/patricia-gallardo/insecure-coding-examples

Apoi accesați subdirectorul vulnerable/ din repository și parcurgeți fișierele cod sursă C sau C++ de acolo.

Alte exemple nesigure

Parcurgeți exemplele de cod nesigure din acest repository. Pentru a clona repository-ul folosiți comanda

git clone https://github.com/deadbits/InsecureProgramming

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ă).

Bad vs. Good

Accesați 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:

cat 100/000/149/043/Format_string_problem-bad.c
cat 101/000/149/044/Format_string_problem-good.c
secure-low-level-programming/capitole/11-programare-sigura.txt · Last modified: 2018/12/21 10:44 by razvan