rules:
- id: chrome-remote-interface-printtopdf-injection
  message: >-
    If unverified user data can reach the `printToPDF` method it can result in Server-Side Request Forgery vulnerabilities
  severity: WARNING
  metadata:
    owasp: 'A1: Injection'
    cwe: 'CWE-918: Server-Side Request Forgery (SSRF)'
    category: security
    technology:
    - chrome-remote-interface
  languages: [javascript, typescript]
  patterns:
  - pattern-inside: |
      require('chrome-remote-interface');
      ...
  - pattern-not-inside: |
      var $INPUT = "...";
      ...
  - pattern-either:
    - pattern: |
        $RUNTIME.printToPDF({headerTemplate: $INPUT},...)
    - pattern: |
        $RUNTIME.printToPDF({footerTemplate: $INPUT},...)
  - pattern-not: |
      $RUNTIME.printToPDF({headerTemplate: "..."},...)
  - pattern-not: |-
      $RUNTIME.printToPDF({footerTemplate: "..."},...)
