janeiro 13, 2009

[Segurança] Os 25 erros mais comuns em aplicações

O SANS Institute, junto com um grupo formado por mais de 30 empresas e entidades relacionados ao mercado de segurança, publicou nesta semana o documento "CWE/SANS TOP 25 Most Dangerous Programming Errors", uma lista com os 25 erros de programação de software "mais perigosos" para a segurança dos sistemas.

Entre as empresas e entidades que fizeram parte deste esforço, destacam-se a Symantec, Microsoft, Oracle, Secunia, VeriSign, RSA, Red Hat, a NSA (National Security Agency), o DHS (US Department of Homeland Security), o OWASP, a University of California at Davis e a Purdue University. O MITRE e o SANS Institute foram responsável por coordenar a iniciativa.

São falhas normalmente cometidas pelos desenvolvedores de software que causam os principais problemas de segurança nas aplicações web. A lista está disponibilizada no site do SANS, juntamente com as orientações sobre o que são e como evitar estes erros. Os 25 principais problemas selecionados pelos especialistas, divididos em 3 categorias, são os seguintes:

  • 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' - XSS)
    • 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 [Buffer overflows]
    • 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 [third-party] Code Without Integrity Check
    • CWE-404: Improper Resource Shutdown or Release
    • CWE-665: Improper Initialization
    • CWE-682: Incorrect Calculation [over the inputs that are used in numeric calculations]

  • 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


Esta lista, apresentada com detalhes no site do SANS pode ser de grande utilidade para auxiliar desenvolvedores e auditores de código. Esta não é a primeira nem a única tentativa de orientar os desenvolvedores sobre como desenvolver metodologias de codificação segura (ou pelo menos apresentar algum recurso simples e didático para orientá-los sobre as principais falhas que costumam ocasionar bugs de segurança). Uma ótima fonte de informações, que eu já comentei anteriormente, é o projeto OWASP (Open Web Application Security Project).

Nenhum comentário:

Creative Commons License
Disclaimer: The views expressed on this blog are my own and do not necessarily reflect the views of my employee.