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