IPBUF安全漏洞报告
English
CVE-2026-42072 CVSS 9.8 严重

CVE-2026-42072 NornicDB Bolt服务未授权访问漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-42072
漏洞类型
安全配置错误
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
NornicDB

相关标签

安全配置错误未授权访问NornicDBCVE-2026-42072默认凭据

漏洞概述

NornicDB是一款分布式低延迟图数据库。在1.0.42-hotfix版本之前存在配置错误漏洞,用户设置的地址参数未能正确传递至Bolt服务器,导致服务默认监听所有网络接口。这使得数据库在局域网内通过默认凭据暴露,攻击者无需交互即可利用该漏洞直接访问数据库,导致敏感信息泄露及系统完整性受损。

技术细节

该漏洞的根源在于NornicDB启动参数解析与传递逻辑的不一致。当用户尝试通过`--address`命令行标志、`NORNICDB_ADDRESS`环境变量或配置文件限制服务监听地址时,该配置仅被HTTP服务模块读取并应用。然而,负责处理数据库核心通信的Bolt服务器模块未正确接收该参数,导致其回退至默认行为,即绑定到`0.0.0.0`(所有可用网络接口)。由于NornicDB在默认配置下,Bolt接口预设了硬编码的默认管理员凭据(如`admin:password`),这种组合配置在局域网环境中极具危险性。攻击者无需复杂的攻击技术,仅需在局域网内扫描Bolt协议默认端口,即可建立连接。一旦连接成功,利用默认凭据即可获得完全的数据库控制权,执行任意数据查询、修改、删除以及图结构操作,严重威胁数据安全。

攻击链分析

STEP 1
扫描发现
攻击者在局域网内进行端口扫描,寻找开放Bolt协议端口(通常为7687)的NornicDB实例。
STEP 2
建立连接
利用漏洞中提到的配置错误,攻击者发现Bolt服务绑定了通配符地址,从而可以建立TCP连接。
STEP 3
默认认证
攻击者使用NornicDB的默认管理员凭据(admin:password)尝试登录。
STEP 4
获取控制
认证成功后,攻击者获得完全的数据库访问权限,可以读取、修改或删除数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-42072: NornicDB Unauthenticated Access # This script checks if the target is vulnerable by attempting to connect # to the Bolt service using default credentials. import socket import sys def check_vulnerability(target_ip, port=7687): print(f"[*] Checking {target_ip}:{port} for CVE-2026-42072...") try: # Attempt to establish a TCP connection to the Bolt port sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(5) sock.connect((target_ip, port)) # Basic Bolt protocol handshake (Magic bytes) # 0x60 0x60 0xB0 0x17 are the Bolt protocol handshake bytes handshake = b"\x60\x60\xB0\x17" # Supported versions (0, 0, 0, 0) for any version handshake += b"\x00\x00\x00\x00" sock.sendall(handshake) response = sock.recv(4) if response: print("[+] Bolt service is accessible!") print("[+] Server responded to handshake.") print("[!] Vulnerability Confirmed: Service is exposed on the network.") print("[!] Next Step: Attempt authentication with default 'admin:password'.") return True else: print("[-] Service did not respond to handshake.") return False except socket.timeout: print("[-] Connection timed out. Service may be down or filtered.") return False except ConnectionRefusedError: print("[-] Connection refused. Port may be closed.") return False except Exception as e: print(f"[-] An error occurred: {e}") return False finally: sock.close() if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python poc.py <target_ip>") sys.exit(1) target = sys.argv[1] check_vulnerability(target)

影响范围

NornicDB < 1.0.42-hotfix

防御指南

临时缓解措施
如果无法立即升级,请务必在网络边界防火墙或本地防火墙上阻断Bolt协议端口(默认7687)的入站连接,防止局域网内其他设备访问。同时,必须立即修改默认的数据库凭据,禁止使用弱口令。

参考链接