COMP3006 Secure Software Development Week3
COMP3006 Secure Software Development Week3
Spring 2024-2025
1 / 31
Agenda
1 Introduction to Software Supply Chain
8 Practical Exercise
2 / 31
What is a Software Supply Chain?
3 / 31
Why It Matters
4 / 31
Reusing Software: Pros and Cons
Pros:
Faster development
Proven functionality
Community support
Cons:
Hidden vulnerabilities
Dependency sprawl
Maintenance burden
5 / 31
Types of Reusable Software
6 / 31
Dependency Example
Application
Library A
7 / 31
Choosing OSS
8 / 31
Evaluation Criteria
9 / 31
Example: Evaluating a Library
10 / 31
Case Study: Log4Shell
11 / 31
Secure Download Practices
12 / 31
Verifying Integrity
13 / 31
Installation Best Practices
14 / 31
Real-World Example
15 / 31
Why Update?
Patch vulnerabilities
Maintain compatibility
Improve performance
Risk: Breaking changes or new bugs
16 / 31
Update Strategies
17 / 31
Example: Updating a Dependency
1 // package . json
2 {
3 " dependencies ": {
4 " lodash ": "^4.17.20" // Vulnerable version
5 }
6 }
7
8 // Update to latest
9 npm install lodash@latest
10 npm audit fix # Fix known issues
18 / 31
Challenges in Updating
Dependency conflicts
Deprecated APIs
Example: Heartbleed (OpenSSL) - delayed updates
Solution: Regular, incremental updates
19 / 31
What is Supply Chain Security?
20 / 31
Common Attack Vectors
Compromised dependencies
Build tool exploits
Malicious updates
Example: SolarWinds - backdoor in update
21 / 31
Mitigation Techniques
22 / 31
SBOM Example
23 / 31
Secure CI/CD Example
24 / 31
Real-World Mitigation
25 / 31
OWASP Guidance
26 / 31
Dependency-Check Example
27 / 31
Exercise: Secure Your Supply Chain
28 / 31
Summary
29 / 31
Next Week Preview
30 / 31
Questions?
Contact: [email protected]
Office Hours: Wednesdays, 14:00-16:00
Resources: Course page
31 / 31