Skip to content

Latest commit

 

History

History
29 lines (24 loc) · 4.41 KB

File metadata and controls

29 lines (24 loc) · 4.41 KB

Threat Model Analysis for egulias/emailvalidator

  • Description: An attacker crafts an email address with deeply nested structures (e.g., excessive quoting, comments, or unusual character combinations) that, while technically valid according to some RFC specifications, cause the regular expression engine within the library to consume excessive CPU time and potentially memory, leading to a denial of service. The attacker exploits vulnerabilities in the library's own parsing logic.
  • Impact: Application becomes unresponsive or crashes, preventing legitimate users from accessing the service. Availability is compromised. This directly impacts the application using the library.
  • Affected Component: Primarily affects the EmailValidator class and its internal parsing logic, particularly the methods that rely on regular expressions for validation (e.g., those handling local-part and domain-part parsing). The RFCValidation, NoRFCWarningsValidation, and potentially DNSCheckValidation (if DNS lookups are slow or time out due to the library's handling) could be involved.
  • Risk Severity: High (Potentially Critical if no other DoS protections are in place at the application level)
  • Mitigation Strategies:
    • Application-Level Rate Limiting: Implement strict rate limiting on email validation requests. This is crucial, even though it's application-level, because it limits the impact of the library's vulnerability.
    • Input Size Limits: Enforce a reasonable maximum length for email addresses at the application level, before passing them to the validator. Again, crucial for limiting the library's exposure.
    • Timeout Mechanisms: Implement timeouts for the entire validation process within the application. If the emailvalidator call takes too long, terminate it.
    • Monitor Resource Usage: Continuously monitor CPU and memory usage.
    • Library Updates: Stay up-to-date with the latest version of egulias/emailvalidator. This is the most direct mitigation, as it addresses potential vulnerabilities within the library itself.
    • WAF (Consider): A WAF might help, but it's less reliable than the other mitigations for a library-specific ReDoS.
  • Description: An attacker compromises a direct dependency of egulias/emailvalidator (less likely, but higher impact if it happens) or directly modifies the emailvalidator library's code itself to weaken or bypass validation checks. This is not about general dependency management, but about a compromise that directly alters the library's behavior.
  • Impact: Validation is completely compromised, allowing any invalid or malicious email address to be accepted, potentially leading to severe security issues depending on how the email addresses are used downstream.
  • Affected Component: The entire emailvalidator library and its direct dependencies are potentially affected.
  • Risk Severity: Critical
  • Mitigation Strategies:
    • Dependency Management with Integrity Checking: Use a dependency manager (e.g., Composer) with strict integrity checking (e.g., composer.lock file). Regularly run composer update and carefully review changes, paying close attention to emailvalidator and its direct dependencies. This is the primary defense.
    • Code Signing and Verification (Ideal, but less common for PHP libraries): If feasible, implement code signing and verification to prevent the execution of modified code. This is a strong mitigation, but may require significant infrastructure changes.
    • Regular Audits (Focused): Regularly audit the vendor/egulias/emailvalidator directory and its immediate dependencies for any unauthorized modifications. Compare the code against a known-good version.
    • Secure Deployment Pipeline: Use a secure deployment pipeline that minimizes the risk of unauthorized code changes to the library itself.
    • Vulnerability Scanning (Targeted): Use vulnerability scanning tools, specifically looking for known vulnerabilities in emailvalidator and its direct dependencies.