1/22
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
The C.I.A. Triad
The C.I.A. Triad Means-
Authentication: Verify identity (passwords, biometrics, cards, etc.).
Authorization: Check user permissions.
Audit: Maintain logs to track critical events.
Reverse Engineering
Purpose: Understand software design and functionality (used in auditing, malware analysis, compatibility).
Process: Gather data → analyze structure → analyze behavior → modify/test.
Tools: IDA, Ghidra, BinaryNinja, OllyDbg, Wireshark, etc.
Code Obfuscation
Applications: IP protection, anti-tampering, evasion of analysis.
Techniques:
Control flow obfuscation
Code packing
Variable/function renaming
Opaque predicates
Dead code insertion
String encryption
Dynamic code generation
Secure Design Principles
Example: Simple Web Server
Secure Design Principles
Principles
Minimal Attack Surface
Least Privilege
Defense-in-Depth
Fail-Safe Stance
Secure by Default
Separation of Duties
Avoidance of Security Through Obscurity
Robust Resource Management
Forensic Readiness
Security Features ≠ Security
Inheritance Security Concepts and Risks
Concepts: Overriding, Polymorphism, Dynamic Binding.
Risk: Malicious overriding (e.g., SafeManager example with malicious clone() in MaliciousDate class).
Inheritance security Java hashCode & equals contract
Java hashCode & equals contract: Properly overriding these prevents attackers from faking object equality to retrieve protected data.
Integer Security
Issue: Integer overflows in C, C++, Java can cause vulnerabilities.
Integer Security Examples
Silent overflow in Java's built-in integer types.
Unsafe memory allocation (e.g., JPEG comment field overflow).
Sign errors (signed to unsigned conversions leading to buffer overflows).
Truncation vulnerabilities.
Integer Security Mitigations
Use Math.addExact(), BigInteger in Java.
Apply secure coding practices in C/C++.
What is Fuzzing?
Testing by providing random or invalid inputs to discover vulnerabilities.
Fuzzing Types
Generation-based: Create inputs from scratch (e.g., URL parsing).
Mutation-based: Modify existing valid inputs (e.g., image file fuzzing).
Fuzzing Tools & Concepts
SAGE (Microsoft)
Smart vs. dumb fuzzing
Used for file formats, protocols, APIs, databases, etc.
SQL Injection
Exploiting improper user input validation to execute arbitrary SQL commands.
SQL Injection Common Attacks
Tautology (' OR 1=1--).
Union-based (UNION SELECT ... FROM creditcards).
Additional commands (DROP TABLE creditcards).
SQL Injection Prevention
Use parameterized queries.
Input validation.
Principle of least privilege for database accounts.
Secure Software Processes Models
Waterfall: Sequential development stages.
Agile: Incremental, iterative (Scrum, Kanban).
Secure Software Processes Why Vulnerabilities Happen
Poor requirements/design
Misuse of cryptography
Language/platform vulnerabilities
Bad coding practices & flawed assumptions
Secure Software Processes Threat-Driven Development
Threat modeling as part of the design process.
Secure Software Process
Process
Decompose system → Determine threats → Rank threats → Mitigate threats.
Secure Software Processes STRIDE Methodology
STRIDE Methodology
Spoofing
Tampering
Repudiation
Information disclosure
Denial of service
Elevation of privilege
Secure Software Processes Tools
Microsoft Threat Modeling Tool
OWASP Threat Dragon