320 likes | 409 Views
Learn about static analysis and interface monitoring in software security, risk management, compliance, and the importance of proactive measures against vulnerabilities. Explore the impact of market and security risks in software development. Improve your understanding of security frameworks and best practices.
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