rules:
- id: gorequest-http-request
  message: >-
    Checks for requests to http (unencrypted) sites using gorequest, a popular HTTP client library.
    This is dangerous because it could result in plaintext PII being passed around the network.
  severity: WARNING
  metadata:
    likelihood: HIGH
    impact: MEDIUM
    confidence: MEDIUM
    category: security
    cwe: 'CWE-319: Cleartext Transmission of Sensitive Information'
    owasp: 'A03:2017 - Sensitive Data Exposure'
    references:
    - https://github.com/parnurzeal/gorequest
    subcategory:
    - vuln
    technology:
    - gorequest
    vulnerability: Insecure Transport
  languages: [go]
  pattern-either:
  - patterns:
    - pattern-inside: |
        $REQ = gorequest.New()
        ...
        $RES = ...
    - pattern: |
        $REQ.$FUNC("=~/[hH][tT][tT][pP]://.*/")
    - metavariable-regex:
        metavariable: $FUNC
        regex: (Get|Post|Delete|Head|Put|Patch)
  - patterns:
    - pattern: gorequest.New().$FUNC("=~/[hH][tT][tT][pP]://.*/")
    - metavariable-regex:
        metavariable: $FUNC
        regex: (Get|Post|Delete|Head|Put|Patch)
