OWASP A06:2021 - Vulnerable and Outdated Components

Overview

Vulnerable and Outdated Components refers to the use of libraries, frameworks, and other software modules that have known security vulnerabilities. Applications using components with known vulnerabilities may undermine application defenses and enable various attacks and impacts.

Risk Rating

  • Prevalence: Widespread

  • Detectability: Average

  • Impact: Medium to High

  • CVSS Score Range: 2.0-10.0 (varies widely based on specific vulnerability)

Common Vulnerable Components

1. Web Application Frameworks

  • Apache Struts (S2-045, S2-057, etc.)

  • Spring Framework (Spring4Shell, etc.)

  • Django (Various CVEs)

  • Ruby on Rails (Mass assignment, etc.)

  • ASP.NET (ViewState vulnerabilities)

2. JavaScript Libraries

  • jQuery (XSS vulnerabilities in older versions)

  • Angular.js (Sandbox bypass vulnerabilities)

  • React (XSS in dangerouslySetInnerHTML)

  • Node.js modules (Prototype pollution, etc.)

  • Bootstrap (XSS vulnerabilities)

3. Server Components

  • Apache HTTP Server (Various CVEs)

  • Nginx (Buffer overflow, etc.)

  • Tomcat (Remote code execution)

  • IIS (Various vulnerabilities)

  • PHP (Multiple vulnerabilities across versions)

4. Database Components

  • MySQL (Authentication bypass, privilege escalation)

  • PostgreSQL (SQL injection, privilege escalation)

  • MongoDB (Authentication bypass)

  • Redis (Remote code execution)

  • Elasticsearch (Remote code execution)

5. Third-party Libraries

  • ImageMagick (ImageTragick vulnerabilities)

  • OpenSSL (Heartbleed, etc.)

  • Log4j (Log4Shell - CVE-2021-44228)

  • Jackson (Deserialization vulnerabilities)

  • Apache Commons (Various vulnerabilities)

Penetration Testing Methodology

1. Component Discovery and Enumeration

Passive Reconnaissance

Active Fingerprinting

2. Version Identification Techniques

Client-Side Component Discovery

Server-Side Component Discovery

3. Vulnerability Research and Mapping

CVE Database Searches

Automated Vulnerability Scanning

Technology-Specific Testing

1. Apache Struts Testing

2. Log4j (Log4Shell) Testing

3. WordPress Plugin/Theme Vulnerabilities

4. Node.js/npm Package Vulnerabilities

Automated Discovery Tools

1. Component Analysis Tools

2. Web Application Scanners

3. Infrastructure Scanning

Exploitation Techniques

1. Remote Code Execution via Deserialization

2. File Upload Bypass via ImageMagick

3. SQL Injection via Hibernate

Advanced Detection Techniques

1. GitHub Reconnaissance

2. Source Code Analysis

3. API Endpoint Discovery

Remediation and Recommendations

1. Vulnerability Management Process

  • Maintain an inventory of all components

  • Monitor security advisories for components in use

  • Establish a patching schedule and process

  • Remove unused dependencies and features

2. Automated Dependency Scanning

3. Secure Development Practices

  • Use dependency pinning with exact versions

  • Regularly update dependencies

  • Use tools like Dependabot or Renovate for automated updates

  • Implement Software Composition Analysis (SCA) in CI/CD

Common Bypasses and Evasion

1. Version Obfuscation Bypass

2. WAF/Filter Bypass for Component Exploitation

Reporting Template

Finding Description

Tools and Resources

Component Scanners

  • OWASP Dependency Check - Multi-language dependency scanner

  • Snyk - Commercial vulnerability database and scanner

  • WhiteSource - Enterprise SCA solution

  • Retire.js - JavaScript library vulnerability scanner

  • Safety - Python package vulnerability checker

Exploitation Frameworks

  • Metasploit - Framework with component-specific exploits

  • ExploitDB - Database of public exploits

  • Nuclei - Fast vulnerability scanner with templates

  • Custom Scripts - Language-specific exploit tools

Research Resources

  • CVE.org - Common vulnerabilities database

  • NVD - National vulnerability database

  • GitHub Security Lab - Security research and advisories

  • VulnDB - Commercial vulnerability intelligence

Prevention Best Practices

  1. Asset Inventory: Maintain accurate inventory of all components

  2. Continuous Monitoring: Monitor for new vulnerabilities in used components

  3. Automated Scanning: Integrate dependency scanning into CI/CD pipelines

  4. Regular Updates: Establish regular update cycles for dependencies

  5. Risk Assessment: Prioritize updates based on exploitability and impact

  6. Vendor Management: Evaluate security practices of component vendors

References and Further Reading

  • OWASP Dependency Check Documentation

  • NIST Software Component Verification (SCV) Guidelines

  • CIS Controls for Software Asset Management

  • SANS Application Security Reading Room

  • Component vulnerability databases and security advisories

Last updated