id: missing-sri

info:
  name: Missing Subresource Integrity
  author: lucky0x0d,PulseSecurity.co.nz
  severity: info
  description: |
    Checks if script tags within the HTML response have Subresource Integrity implemented via the integrity attribute
  reference:
    - https://cheatsheetseries.owasp.org/cheatsheets/Third_Party_Javascript_Management_Cheat_Sheet.html#subresource-integrity
  metadata:
    max-request: 1
  tags: compliance,js,sri,misconfig

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}

    redirects: true
    max-redirects: 5

    matchers-condition: and
    matchers:
      - type: xpath
        part: body
        xpath:
          - "//script[contains(@src,'//') and not(contains(translate(@integrity,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'^sha'))]"

      - type: word
        words:
          - "text/html"
        part: header

    extractors:
      - type: xpath
        attribute: src
        xpath:
          - "//script[contains(@src,'//') and not(contains(translate(@integrity,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'^sha'))]"

# digest: 4a0a0047304502200e29fdf3695b4eadfb362a6ec5332dff4696a4564e73a096a609363b81776126022100a0e6443350ecc806ce4da1a80d628339d3515f387129fc50651ee687b8265bb8:922c64590222798bb761d5b6d8e72950
