20061020

How do we teach security?

During cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 conference, just about everybody made phrases like "when we tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developers that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y've got SQL Injection [or XSS, or LDAP injection, or ....]". I have a real problem with that. This is something I've complained about for awhile.

To understand where I'm coming from, think about how to fix those problems. Do we tell our developers "remove all SQL Injection"? I surely hope not. I would hope that we recommend that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developers perform output filtering (first) and business-rule input validation (don't remove "malicious" characters, just make sure it is what you think it is).

I really think that from a developers perspective, all vulnerabilities fall into one of three categories:

Semantic/data-use defects
These are cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 easy ones for automated scanners to find - html/script injection, SQL Injection, XML Injection, buffer overflows. Notice cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 category says "defects" not vulnerabilities. Meaning, you tell cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developer "15 cases of unvalidated input. 16 cases of non-encoded output." The reason for this is that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 fixes to cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se problems is something that developers should be doing anyway - not because it makes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 app more secure (although, that's a nice side-effect), but so that cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 application functions properly. I remember many suns and moons ago a lone, < wouldn't work unless you actually encoded it properly - and if you're moving to XHTML, you're right back cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re.

Engineering defects
This is were [XC]SRF and privilege escalation fall. These happen not because of a forgotten function call or semantic drop that can be evaluated by a scanner, but an ethical hack or actual code review will discover. These are problems where cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 developer prolly did what cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y were told, cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365y just weren't told cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 right thing to do.

Environmental defects
This is a catchall of anything else in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 environment that causes cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 defect, including using cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 language improperly. Race conditions fall under this category. Directory traversal falls here. Backup files live here.

As I go through cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 types of vulnerabilities I find, all of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365m seem to fit nicely into one of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365se categories. Am I wrong? Is three just far too simplistic?

The good news for all you assessors out cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365re - I would say that in many applications, a lot of cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 vulnerabilities are in cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second and third categories - cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 things that tools can't find (well, moreso for cá cược thể thao bet365_cách nạp tiền vào bet365_ đăng ký bet365 second category). Your job isn't going away anytime soon - unless you're just bad at it.

0 comments: