25 de erori de programare care trebuie evitate

Nu sunt programator ca sa justific si sa argumentez acest post. Mai mult de atat am trecut prin topicul numit securitatea sistemelor inca de la primul website pus pe Internet care a fost spart dupa 2 zile din cauza unei erori in phpBB, pana la situl de care am grija zilnic, hacked nu mai mult de o luna in urma. Pana la urma din toate aceste greseli am invatat (nu eu, ci programatorii) unde sunt “gauri de securitate”. Insa nu programatorii sunt cei care platesc pretul in fata clientilor sau a organizatiilor.

Mi-am adus aminte de toate acestea citind un articol de Stefaniu Criste care semnala un top al celor 25 de greseli pe care programatorii nu trebuie sa le faca, top facut de organizatii (30 la numar) care au studiat cauzele care au dus la milioanele de evenimente semnalate in 2008 in privinta patrunderii ilegale in situri (numai doua din aceste erori au generat peste 1,5 mil. incidente). Unde nu mai punem cate evenimente nu au fost semnalate …

Asadar, documentatia completa se gaseste pe pagina institutului SANS si pentru cei care nu au timp sa citeasca tot, incerc sa fac un mini rezumat :

Sunt 3 categorii mari in care se incadreaza erorile :
1. Interactiunea nesigura intre componente / 9
2. Management al resurselor riscant / 9
3. Sisteme de aparare slabe / 7

Lista o pun in engleza si nu incerc traducerea, pentru ca termenii ma depasesc, insa consider ca orice programator care se respecta ar trebui sa fie la curent cu notiunile de mai jos. Si resurse pentru corectarea acestor erori, si explicatii pe larg le gasiti la adreseleurmatoare.

CATEGORY: Insecure Interaction Between Components
CWE-20: Improper Input Validation
CWE-116: Improper Encoding or Escaping of Output
CWE-89: Failure to Preserve SQL Query Structure (aka ‘SQL Injection’)
CWE-79: Failure to Preserve Web Page Structure (aka ‘Cross-site Scripting’)
CWE-78: Failure to Preserve OS Command Structure (aka ‘OS Command Injection’)
CWE-319: Cleartext Transmission of Sensitive Information
CWE-352: Cross-Site Request Forgery (CSRF)
CWE-362: Race Condition
CWE-209: Error Message Information Leak

CATEGORY: Risky Resource Management
CWE-119: Failure to Constrain Operations within the Bounds of a Memory Buffer
CWE-642: External Control of Critical State Data
CWE-73: External Control of File Name or Path
CWE-426: Untrusted Search Path
CWE-94: Failure to Control Generation of Code (aka ‘Code Injection’)
CWE-494: Download of Code Without Integrity Check
CWE-404: Improper Resource Shutdown or Release
CWE-665: Improper Initialization
CWE-682: Incorrect Calculation

CATEGORY: Porous Defenses
CWE-285: Improper Access Control (Authorization)
CWE-327: Use of a Broken or Risky Cryptographic Algorithm
CWE-259: Hard-Coded Password
CWE-732: Insecure Permission Assignment for Critical Resource
CWE-330: Use of Insufficiently Random Values
CWE-250: Execution with Unnecessary Privileges
CWE-602: Client-Side Enforcement of Server-Side Security

Comentarii

Powered by Facebook Comments

Claudiu Gamulescu

este Managing Partner la Europe Internet Invest , fond de investitii care finanteaza proiecte online. Este initiatorul mai multor proiecte web ; din 1998 in Internet Business.

Subscribe

Text Subscribe

2 Responses to “25 de erori de programare care trebuie evitate”

  1. Mar on 26/02/2009 #

    deci ‘porous defenses’ inseamna ‘porozitatea sistemelor de aparare’ … n-am stiut.. nice! NOT

Trackbacks/Pingbacks

  1. Securitatea in web | andreimarinescu.ro - 20 February 2009

    [...] proprii. Securizarea unui sit web, nu mai este un lucru care vine de la sine. Recent, am citit la Claudiu un post pe tema asta. Sursa originala a informatiilor este aici. Good reference, pentru oricine care [...]

Add your Comment