Vulnerability Scanning
Static Application Security Testing (SAST)
SAST Overview
SAST analyzes source code, bytecode, or binaries without executing the application to identify security vulnerabilities.
SAST Techniques
- Pattern Matching: Match code against known vulnerability patterns
- Data Flow Analysis: Track data flow through the application to identify tainted data
- Control Flow Analysis: Analyze execution paths to identify potential issues
- Taint Analysis: Track user input through the application to identify injection points
- Semantic Analysis: Understand code semantics to identify complex vulnerabilities
Common SAST Vulnerabilities
- Injection Flaws: SQL injection, command injection, LDAP injection
- Cross-Site Scripting (XSS): Reflected, stored, and DOM-based XSS
- Authentication Issues: Weak authentication, session management flaws
- Authorization Issues: Broken access controls, privilege escalation
- Cryptographic Issues: Weak algorithms, improper key management
- Input Validation: Missing or insufficient input validation
- Error Handling: Information leakage through error messages
SAST Tools
- SonarQube: Code quality and security analysis with extensive rule sets
- Checkmarx: Enterprise SAST solution with deep code analysis
- Fortify Static Code Analyzer: Comprehensive SAST from Micro Focus
- Semgrep: Fast, open-source static analysis with custom rules
- CodeQL: Semantic code analysis from GitHub
- Bandit: Python security linter
- ESLint: JavaScript security plugins (eslint-plugin-security)
- SpotBugs: Java static analysis with security rules
Dynamic Application Security Testing (DAST)
DAST Overview
DAST analyzes running applications to identify security vulnerabilities through external testing.
DAST Techniques
- Crawling and Spidering: Discover application endpoints and functionality
- Fuzzing: Send malformed or unexpected input to identify vulnerabilities
- Authentication Testing: Test authentication mechanisms for weaknesses
- Session Management: Analyze session handling for security issues
- Input Validation: Test input fields for injection vulnerabilities
- Business Logic: Test business logic flaws and authorization bypasses
Common DAST Vulnerabilities
- Injection Attacks: SQL injection, command injection, XSS
- Authentication Flaws: Weak passwords, session fixation
- Authorization Issues: IDOR, privilege escalation
- Session Management: Session hijacking, fixation
- Cryptographic Issues: Weak SSL/TLS, insecure cookies
- Information Disclosure: Sensitive data in responses, error messages
DAST Tools
- OWASP ZAP: Free, open-source web application security scanner
- Burp Suite: Comprehensive web security testing platform
- AppScan: Enterprise DAST solution from IBM
- Nessus: Vulnerability scanner with web application testing
- Arachni: Open-source web application security scanner
- SQLMap: Automated SQL injection tool
- Nikto: Web server scanner
Software Composition Analysis (SCA)
SCA Overview
SCA identifies and analyzes third-party components and dependencies for known vulnerabilities.
SCA Techniques
- Dependency Analysis: Identify all direct and transitive dependencies
- Vulnerability Matching: Match dependencies against vulnerability databases
- License Compliance: Check for license compliance issues
- Version Analysis: Track dependency versions and updates
- Risk Scoring: Assess risk based on vulnerability severity and usage
SCA Vulnerability Databases
- NVD (National Vulnerability Database): US government vulnerability database
- CVE (Common Vulnerabilities and Exposures): Standardized vulnerability identifiers
- GitHub Advisory Database: GitHub's vulnerability database
- Snyk Vulnerability Database: Snyk's curated vulnerability database
- OSS Index: Sonatype's open-source vulnerability database
SCA Tools
- Snyk: Developer-first security platform with SCA, SAST, and container scanning
- Trivy: Comprehensive vulnerability scanner for containers, files, and dependencies
- Dependabot: GitHub's automated dependency updates and vulnerability alerts
- WhiteSource: Enterprise SCA with comprehensive vulnerability database
- Black Duck: Enterprise SCA with license compliance
- OWASP Dependency-Check: Open-source SCA tool
- npm audit: Node.js package manager's built-in SCA
- pip-audit: Python package manager's security audit tool
Container Security Scanning
Container Vulnerabilities
- Base Image Vulnerabilities: Vulnerabilities in the base OS image
- Application Dependencies: Vulnerabilities in application dependencies
- Configuration Issues: Insecure container configurations
- Secrets in Images: Hardcoded secrets or credentials
- Outdated Packages: Outdated packages with known vulnerabilities
Container Scanning Tools
- Trivy: Comprehensive vulnerability scanner for containers
- Clair: Open-source vulnerability static analysis for containers
- Anchore: Container inspection and vulnerability analysis
- Aqua Security: Enterprise container security platform
- Twistlock: Container security from Prisma Cloud
- Docker Scout: Docker's built-in vulnerability scanner
- Grype: Vulnerability scanner for container images
Container Security Best Practices
- Use Minimal Base Images: Use minimal base images like Alpine or distroless
- Scan Images: Scan images at build time and runtime
- Patch Regularly: Keep base images and dependencies updated
- Scan Dependencies: Include SCA for application dependencies
- Run as Non-Root: Run containers as non-root users
- Read-Only Filesystems: Use read-only filesystems where possible
- Resource Limits: Set resource limits to prevent DoS
Dependency Vulnerability Management
Dependency Management Strategies
- Regular Updates: Regularly update dependencies to latest secure versions
- Automated Scanning: Integrate SCA into CI/CD pipelines
- Vulnerability Alerts: Set up alerts for new vulnerabilities
- Version Pinning: Pin specific versions to prevent unexpected updates
- Lock Files: Use lock files to ensure reproducible builds
- Supply Chain Security: Verify package integrity and provenance
SBOM (Software Bill of Materials)
- What is SBOM: Formal inventory of software components and dependencies
- SBOM Formats: SPDX, CycloneDX, SWID tags
- SBOM Benefits: Vulnerability tracking, license compliance, supply chain security
- SBOM Tools: Syft, Trivy, Microsoft SBOM Tool, CycloneDX tools
Supply Chain Security
- Package Integrity: Verify package signatures and checksums
- Provenance: Track package origin and build process
- Signed Artifacts: Use signed packages and container images
- Dependency Pinning: Pin to specific verified versions
- Private Registries: Use private registries for sensitive packages
- Reproducible Builds: Ensure builds are reproducible and verifiable
Common Vulnerability Tools
Snyk
- Features: SCA, SAST, container scanning, IaC scanning
- Integration: CI/CD, IDEs, package managers, registries
- Languages: JavaScript, Python, Java, Go, Ruby, PHP, .NET
- Use Cases: Developer-first security, automated scanning, remediation
Trivy
- Features: Container scanning, file scanning, dependency scanning
- Integration: CI/CD, container registries, Kubernetes
- Languages: Supports multiple languages and package managers
- Use Cases: DevSecOps, container security, infrastructure scanning
OWASP ZAP
- Features: Automated and manual web application security testing
- Integration: CI/CD, browsers, proxies
- Capabilities: Spidering, scanning, fuzzing, authentication testing
- Use Cases: DAST, web application security, penetration testing
SonarQube
- Features: Code quality, security analysis, technical debt tracking
- Integration: CI/CD, IDEs, build tools
- Languages: 25+ programming languages
- Use Cases: Code quality, security, technical debt management
Grype
- Features: Container image and filesystem vulnerability scanning
- Integration: CI/CD, container registries
- Vulnerability Database: Uses Grype vulnerability database
- Use Cases: Container security, DevSecOps pipelines
Vulnerability Scanning Best Practices
Scanning Strategy
- Shift Left: Scan early and often in the development lifecycle
- Automate: Integrate scanning into CI/CD pipelines
- Multiple Tools: Use multiple tools for comprehensive coverage
- Regular Scans: Schedule regular scans for production systems
- False Positive Management: Establish process for managing false positives
- Prioritization: Prioritize vulnerabilities based on risk and exploitability
Remediation Process
- Triage: Categorize vulnerabilities by severity and risk
- Prioritize: Prioritize based on CVSS score, exploitability, and business impact
- Remediate: Fix vulnerabilities or apply mitigations
- Verify: Verify that remediation was successful
- Monitor: Monitor for new vulnerabilities
- Report: Report on vulnerability status and trends