320 likes | 403 Views
Watching Software Run. Brian Chess Nov 18, 2009. Success is foreseeing failure. – Henry Petroski. Static Analysis. Misconceptions Prevail. High priority int main(int argc , char** argv ) { char buffer[10]; strcpy(buffer , argv[1]); } Low priority
E N D
Watching Software Run Brian Chess Nov 18, 2009
Success is foreseeing failure. – Henry Petroski
Misconceptions Prevail High priority intmain(intargc, char** argv) { char buffer[10]; strcpy(buffer, argv[1]); } Low priority intmain(intargc, char** argv) { char buffer[10]; strcpy(buffer, “test”); }
Taint propagation Trace potentially tainted data through the program Report locations where an attacker could take advantage of a vulnerable function or construct Many other approaches, no one right answer = getInputFroNetwork(); copyBuffer( , ); exec( ); buff newBuff buff newBuff (command injection)
A never-ending battle against bad code • Format String attacks: known for 10+ years printf(input); • SQL Injection attacks: known for ? years statement.execute(input);
The Stereotypes • Static analysis • Good: thorough • Bad: too many results • Testing • Good: concrete results • Bad: misses too many things
A Lesson from Cryptography Security is hard to measure • Enemy has unknown capabilities • Small mistakes can have big consequences So how many of those static analysis results do we have to fix?
Risk Management vs. Compliance Risk Management Compliance Fulfill somebody else's requirements • Probabilistic framework for allocating resources
Compliance wins Why isn't everyone a risk manager? • Risks not widely understood • People manage their own risk, not risk to the public
Compliance wins What to comply with?
Breaking new ground • Building Security In Maturity Model • Real data from real initiatives • McGraw, Chess, & Migues • http://bsi-mm.com
The nine Two more unnamed financial services firms
A Software Security Framework • Four domains • Twelve practices • An “archeology grid”
Ten things everybody does • Activities that ALL do • evangelist role • policy • awareness training • history in training • security features • SSG does ARA • code review tools • black box tools • external pen testing • good network security
Success is foreseeing failure. – Henry Petroski
Reactive Revisited • A good idea: build security in • Problem: software will still be vulnerable • Solution: must compensate at runtime
Market Risk Security Risk Risk in a new endeavor Risk Time
Reactive Technology Today • Protecting hosts and networks • Firewalls • Anti-virus • Intrusion detection • Protecting software • Patching • Web Application Firewall • Language Level: Java Security Model
Patching • Reaction time matters • DON’T BREAK STUFF • Microsoft has patched on Patch Tuesday for 30 months straight • Patch flood means no one is ever fully patched
Web Application Firewalls (WAF) • Sits on network, watches web requests • Context problem • What will the program do with this input? • Good for collecting attacks • Scaling problem • Does go easily into the cloud
Java Security Model • General access control mechanism • Domains / domain change • Privileges / privilege enforcement • Built to • Protect good Java from bad Java • Protect a good computer from bad Java • Nobody uses it
Return of the Reference Monitor • Inline reference monitors (IRM) • Aspect-oriented programming • Watch interfaces between major components • Report important events • Enforce policy
Interface monitor architecture <Rule> VM VM sees extensions as aprofiler or a debugger Target Program Monitor ProgramPoint Event <EventHandler> Event Handlers Log Syslog Action
Federation Fortify 360 Server Controller VM VM VM
Static Analysis vs. Interface Monitors Static Analysis • Part of construction • Must anticipate all problems • Locality important • Performance not important Interface Monitors • Part of deployment • Must anticipate all symptoms • Locality not important • Performance critically important
Better protection: SQL Injection WAF protectshere We'll protecthere Target Program Source of mal input Database
Patching a privilege escalation vulnerability Unauthorizedrequest Target Program User Role Source of mal input We'll make the connection
Watching Software Run Brian Chess Nov 18, 2009