110 likes | 123 Views
This course aims to raise awareness about common security pitfalls in software development and provide insights into effective approaches, including static analysis, defensive programming, security features, and improving software quality. Learn how to detect vulnerable code and classify different types of vulnerabilities. Uncover the 2009 CWE/SANS Top 25 and understand the risks associated with insecure component interaction, improper input validation, SQL injection, cross-site scripting, and more.
E N D
The Software Security Problem Chapter 1
Goals of this course • Become aware of common pitfalls. • Static Analysis and tools
Some common approaches to security • Defensive Programming • Security Features (vs secure features) • Improving Software Quality
Some common approaches to security • Defensive Programming • Security Features (vs secure features) • Improving Software Quality (none of these approaches work!)
Usual Software building cycle: • Requirements and Specifications • Design • Code • Test and debug • Integration test • Deliver
Best way to detect vulnerable code • Through a Static Analysis Tool. • However, hand/hard work is still necesary!
Vulnerability Classification • Generic vs context-specific defects • Visible in the code vs visible only in the design • Seven pernicious kingdoms: • Input validation and representation • API abuse • Security Features • Time and State • Error Handling • Code Quality • Encapsulation • Environment
Risky Resource Management Buffer overflow External control of state data External control of filename or path Untrusted search path Code injection Code download without integrity check. Improper resource shutdown or release Improper Initialization Incorrect Calculation 2009 CWE/SANS Top 25 • Insecure Component Interaction • Improper Input Validation • Improper Encoding or escaping of output • SQL injection • Cross-site scripting • OS Command Injection • Cleartext transmission of sensitive information • Cross-Site Request forgery • Race Condition • Error Message Information leak
2009 CWE/SANS Top 25 (cont) • Porous Defenses • Improper Access control • Broken or risky cryptography • Hard-coded password • Insecure Permission assignment for critical resource • Use of insufficiently random values • Execution with Unnecesary priviledges • Client-side enforcement of server-side security.