Download presentation
Presentation is loading. Please wait.
Published byRodney Lynch Modified over 8 years ago
1
Software Security Q: What does it mean to say that a program is secure? A: There is a sufficient amount of trust that the program maintains _____________, ____________ and _____________ A: There is a sufficient amount of trust that the program maintains _____________, ____________ and _____________ examples of software insecurity? Important Software Qualities (Software Engineering, Pfleeger) “Coding errors in commercial software account for 80% of systems penetration. This is clearly a national security issue.” 1 1 Air Force CIO John Gilligan, Information Week, March, 2002
2
Common Misconceptions often the holes punched in firewalls are oversized Firewalls are sufficient plenty of counter-evidence what does “D” stand for? IDS will solve the problem high false positive rates some experts predict obsolence for IDS this only protects the channel Just use SSL what about replay attacks, public key cracks, etc. typical flaws per 1000 LOC -- C: 3 Java: 1 New Programming languages are secure many problems lie outside the control of a language
3
Penetrate and Patch This approach corrects security flaws as they are discovered. Problems Today’s state of the art Tiger teams & penetration testing - Are the test cases sufficient? - Does a patch inject other defects? There is no technique that eliminates all security flaws. (1)functional requirements = security requirements = (2) Security depends upon dynamic external hardware/software. (3) Security exploits are a developing body of knowledge.
4
Typical Software Vulnerabilities Buffer Overflow - occurs whenever a data container overflows - most common source of security flaws char myArray[10]; for (i=0; i<=10; i++) myArray[i] = ‘Z’; char myArray[10]; for (i=0; i<=10; i++) myArray[i] = ‘Z’; Example Where does the overflow go?
5
Typical Software Vulnerabilities Incomplete Mediation - data not properly guarded against incorrect assignment - preconditions need to be enforced Example http://www.poorhouse.com/order/final&custID=2 &sku=1001&qty=10&shipcost=5&total=236.10 - exposure: user input, input file, packet, RPC parameters
6
Typical Software Vulnerabilities Race Conditions - multitasking can result in one process undesirably disturbing another - exposure: shared memory space shared file space shared network access
7
Design for Security Secure the weakest link Secure the weakest link Practice defensive programming Practice defensive programming Fail securely Fail securely Follow the Principle of least privilege Follow the Principle of least privilege Modularize, encapsulate Modularize, encapsulate Make it simple Make it simple Remember privacy Remember privacy Attend to security at every step in the life cycle Attend to security at every step in the life cycle
8
Implement for Security Use languages with extensive error detection Use runtime mechanisms that provide a “secure sandbox” Don’t depend upon preconditions Limit access to encapsulated data Avoid language constructs with file vulnerabilities (package scope, inner classes, serializable, cloneable) Avoid language constructs with file vulnerabilities (package scope, inner classes, serializable, cloneable) Avoid signing your code Don’t embed private information in code.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.