Software Security, focusing on Vulnerabilities (what can go wrong) and Protections (how to defend against attacks). This is a must-know topic in Information Security, especially if you're interested in cybersecurity or development.
Vulnerabilities are weaknesses or flaws in software that attackers can exploit to compromise systems, data, or users.
Here are some of the most common:
| Vulnerability | Description | Example |
|---|---|---|
| Buffer Overflow | Data exceeds buffer boundary and overwrites memory | Crashing a program or injecting malicious code |
| SQL Injection | Injecting malicious SQL queries | Bypassing login or accessing unauthorized data |
| Cross-Site Scripting (XSS) | Injecting malicious scripts into web pages | Stealing cookies or user session info |
| Cross-Site Request Forgery (CSRF) | Forcing users to execute unwanted actions | Changing account settings without consent |
| Broken Authentication | Flaws in login/session management | Hijacking user sessions |
| Insecure Deserialization | Manipulating serialized data | Remote code execution |
| Security Misconfiguration | Incorrect settings, outdated software | Admin panels exposed, default passwords left unchanged |
| Unvalidated Input | Input not properly checked or sanitized | Can lead to injection attacks or crashes |
| Race Conditions | Two operations happen at the same time unexpectedly | Bypassing security checks or crashing systems |
These are techniques, tools, and practices used to protect software from being exploited.
✅ Write code with security in mind:
📘 Use secure coding guidelines from:
| Type | Description |
|---|---|
| Static Analysis (SAST) | Analyze code without executing it (e.g., SonarQube) |
| Dynamic Analysis (DAST) | Analyze app during runtime (e.g., Burp Suite) |
| Penetration Testing | Ethical hacking to find vulnerabilities |
| Fuzz Testing | Inputting random data to detect crashes or bugs |
| Category | Vulnerability Example | Protection |
|---|---|---|
| Input Handling | SQL Injection, XSS | Input validation, output encoding |
| Authentication | Broken login, session hijack | MFA, secure session tokens |
| Configuration | Default settings, exposed APIs | Harden servers, remove debug info |
| Code Vulnerabilities | Buffer overflow, race condition | Safe languages, static analysis |
| Data Handling | Insecure deserialization | Sanitize data, safe serialization |
1. Developer writes code →
2. Runs security tests (SAST/DAST) →
3. Fixes issues and follows secure coding →
4. Application is deployed with protections (e.g., WAF, secure configs) →
5. Monitored and maintained regularly
Open this section to load past papers