Skip to content

Latest commit

 

History

History
101 lines (86 loc) · 9.32 KB

File metadata and controls

101 lines (86 loc) · 9.32 KB

Attack Tree Analysis for hapijs/hapi

Objective: Gain Unauthorized Access/Disrupt Service via Hapi.js Exploits

Attack Tree Visualization

Goal: Gain Unauthorized Access/Disrupt Service via Hapi.js Exploits

├── 2. Exploit Vulnerabilities in Hapi.js Plugins [HIGH RISK] │ ├── 2.1 Unpatched CVEs in Plugins [HIGH RISK] │ │ ├── 2.1.1 Identify installed plugins and versions │ │ ├── 2.1.2 Find public exploit for a plugin CVE │ │ ├── 2.1.3 Craft and send malicious payload │ │ └── 2.1.4 Achieve RCE/Data Exfiltration/DoS [CRITICAL NODE] │ ├── 2.3 Misconfigured Plugins [HIGH RISK] │ │ ├── 2.3.1 Identify misconfigured plugin settings │ │ ├── 2.3.2 Exploit the misconfiguration │ │ └── 2.3.3 Gain unauthorized access or cause DoS [CRITICAL NODE] │ └── 2.4 Weakly Implemented Custom Plugins [HIGH RISK] │ ├── 2.4.1 Identify custom plugins │ ├── 2.4.2 Analyze plugin code for vulnerabilities │ ├── 2.4.3 Craft input to exploit the vulnerability │ └── 2.4.4 Achieve RCE/Data Exfiltration/DoS [CRITICAL NODE] ├── 3. Exploit Hapi.js Features (If Misused) │ ├── 3.1 Request Validation Bypass (Joi) [HIGH RISK] │ │ ├── 3.1.1 Identify poorly defined Joi schemas │ │ ├── 3.1.2 Craft input that bypasses the validation rules │ │ └── 3.1.3 Submit malicious data [CRITICAL NODE] │ ├── 3.2 Improper Route Configuration [HIGH RISK] │ │ ├── 3.2.1 Identify routes with overly permissive access controls │ │ ├── 3.2.2 Access restricted resources or endpoints │ │ └── 3.2.3 Gain unauthorized access [CRITICAL NODE] │ └── 3.5 Insecure use of h.response() options [HIGH RISK] │ ├── 3.5.1 Identify places where h.response() is used │ ├── 3.5.2 Exploit options like variety: 'file' │ └── 3.5.3 Achieve data exfiltration/RCE [CRITICAL NODE] └── 4. Dependency-Related Issues [HIGH RISK] ├── 4.1 Vulnerable Dependencies of Hapi.js or Plugins [HIGH RISK] │ ├── 4.1.1 Identify all dependencies │ ├── 4.1.2 Check for known vulnerabilities │ ├── 4.1.3 Exploit a vulnerable dependency │ └── 4.1.4 Achieve RCE/Data Exfiltration/DoS [CRITICAL NODE]

  • 2.1 Unpatched CVEs in Plugins [HIGH RISK]

    • Description: Attackers leverage publicly known vulnerabilities (CVEs) in installed Hapi.js plugins that haven't been patched by the application.
    • Steps:
      • 2.1.1 Identify installed plugins and versions: Determine which plugins are used and their specific versions. This can be done through various methods, including examining package.json, analyzing server responses, or exploiting error messages that reveal plugin information.
      • 2.1.2 Find public exploit for a plugin CVE: Search vulnerability databases (NVD, CVE Mitre) and exploit repositories (Exploit-DB, GitHub) for publicly available exploits targeting the identified plugin and version.
      • 2.1.3 Craft and send malicious payload: Adapt the public exploit or create a custom payload based on the CVE details to target the specific application instance.
      • 2.1.4 Achieve RCE/Data Exfiltration/DoS [CRITICAL NODE]: Successfully exploiting the vulnerability leads to the attacker's goal, which could be remote code execution (RCE), data exfiltration, or denial of service (DoS).
  • 2.3 Misconfigured Plugins [HIGH RISK]

    • Description: Attackers exploit plugins that are installed and functional but have been configured insecurely, leaving them vulnerable.
    • Steps:
      • 2.3.1 Identify misconfigured plugin settings: Discover insecure configurations, such as overly permissive CORS settings, disabled authentication, weak encryption keys, or exposed debugging endpoints.
      • 2.3.2 Exploit the misconfiguration: Leverage the identified misconfiguration to bypass security controls. For example, a misconfigured CORS policy could allow cross-origin requests to steal sensitive data.
      • 2.3.3 Gain unauthorized access or cause DoS [CRITICAL NODE]: The attacker successfully gains access to restricted resources, data, or functionality, or disrupts the application's service.
  • 2.4 Weakly Implemented Custom Plugins [HIGH RISK]

    • Description: Attackers target vulnerabilities within custom-built Hapi.js plugins, which often receive less security scrutiny than well-established, publicly available plugins.
    • Steps:
      • 2.4.1 Identify custom plugins: Determine if the application uses any custom plugins, often indicated by unique names or functionality not found in public plugins.
      • 2.4.2 Analyze plugin code for vulnerabilities: Review the source code of the custom plugin (if available) for common web vulnerabilities like input validation flaws, insecure data handling, improper authentication/authorization, or insecure direct object references.
      • 2.4.3 Craft input to exploit the vulnerability: Develop a malicious input that triggers the identified vulnerability in the custom plugin.
      • 2.4.4 Achieve RCE/Data Exfiltration/DoS [CRITICAL NODE]: Successfully exploiting the vulnerability leads to the attacker's goal.
  • 3.1 Request Validation Bypass (Joi) [HIGH RISK]

    • Description: Attackers bypass input validation implemented using the Joi library by crafting inputs that exploit weaknesses in the validation schema.
    • Steps:
      • 3.1.1 Identify poorly defined Joi schemas: Analyze the Joi validation schemas (if available) or use dynamic analysis techniques (e.g., fuzzing) to identify weaknesses, such as missing required fields, weak type validation, or insufficient length restrictions.
      • 3.1.2 Craft input that bypasses the validation rules: Create a malicious input that satisfies the weak validation rules but contains harmful data.
      • 3.1.3 Submit malicious data [CRITICAL NODE]: The attacker successfully submits data that should have been rejected by the validation, potentially leading to further exploitation.
  • 3.2 Improper Route Configuration [HIGH RISK]

    • Description: Attackers access restricted resources or functionality due to misconfigured route definitions in the Hapi.js application.
    • Steps:
      • 3.2.1 Identify routes with overly permissive access controls: Analyze the route configurations (if available) or use testing techniques to find routes that lack proper authentication or authorization checks.
      • 3.2.2 Access restricted resources or endpoints: Directly access the identified routes without providing the required credentials or permissions.
      • 3.2.3 Gain unauthorized access [CRITICAL NODE]: The attacker successfully accesses data or functionality they should not have access to.
  • 3.5 Insecure use of h.response() options [HIGH RISK]

    • Description: Attackers exploit insecure configurations of the h.response() method in Hapi.js, particularly options like variety: 'file', to gain unauthorized access to files or potentially execute code.
    • Steps:
      • 3.5.1 Identify places where h.response() is used: Review the application code to find instances where h.response() is used, paying close attention to the options passed to the method.
      • 3.5.2 Exploit options like variety: 'file': If variety: 'file' is used without proper sanitization of user-supplied input (e.g., a filename), craft a malicious input (e.g., a path traversal attack) to read arbitrary files from the server.
      • 3.5.3 Achieve data exfiltration/RCE [CRITICAL NODE]: The attacker successfully exfiltrates sensitive data or, in some cases (e.g., if combined with a file upload vulnerability), achieves remote code execution.
  • 4.1 Vulnerable Dependencies of Hapi.js or Plugins [HIGH RISK]
    • Description: Attackers exploit vulnerabilities in the dependencies of Hapi.js itself or its plugins. These dependencies can be direct or transitive (dependencies of dependencies).
    • Steps:
      • 4.1.1 Identify all dependencies: Use tools like npm ls or dependency analysis tools to create a complete list of all dependencies and their versions.
      • 4.1.2 Check for known vulnerabilities: Use vulnerability scanners (e.g., npm audit, Snyk, Dependabot) to identify known vulnerabilities in the listed dependencies.
      • 4.1.3 Exploit a vulnerable dependency: If a vulnerable dependency is found and an exploit is available, the attacker crafts a payload to target that specific vulnerability.
      • 4.1.4 Achieve RCE/Data Exfiltration/DoS [CRITICAL NODE]: Successfully exploiting the dependency vulnerability leads to the attacker's goal.