CVE-2025-69285SQLBot是一款基于大语言模型(LLM)和检索增强生成(RAG)技术的智能数据查询系统。该系统在1.5.0之前的版本中存在严重的安全漏洞,攻击者可以利用/api/v1/datasource/uploadExcel端点无需任何认证即可上传恶意的Excel或CSV文件。这些文件会被系统使用pandas库解析,并通过to_sql()方法的if_exists='replace'模式直接写入PostgreSQL数据库,从而实现数据的非法注入和数据库篡改。由于该端点被错误地添加到认证白名单中,导致TokenMiddleware中间件跳过了令牌验证过程,使得整个攻击过程可以在完全未认证的状态下完成。此漏洞可能导致敏感数据泄露、数据库结构被破坏,以及后续的持久化攻击。
漏洞根源在于SQLBot系统的认证中间件配置错误。具体问题表现为:1)uploadExcel端点被显式添加到认证白名单中,导致TokenMiddleware对该端点的所有请求跳过令牌验证;2)攻击者可构造包含恶意数据的Excel/CSV文件,通过multipart/form-data方式上传至/api/v1/datasource/uploadExcel端点;3)服务器端使用pandas库的read_excel()或read_csv()函数解析上传文件,随后调用pandas.DataFrame.to_sql()方法将数据写入PostgreSQL数据库;4)to_sql()采用if_exists='replace'参数,会直接删除已存在的同名表并创建新表,攻击者可利用此特性覆盖或破坏现有数据结构;5)由于缺乏输入验证和文件类型检查,攻击者可注入任意SQL语句或恶意数据到数据库中。攻击成功后,攻击者可在数据库中植入后门数据、窃取敏感信息或破坏业务逻辑。