IPBUF安全漏洞报告
English
CVE-2025-12792 CVSS 3.2 低危

CVE-2025-12792 Canva for Mac未启用Hardened Runtime导致TCC权限滥用

披露日期: 2025-11-18
来源: 4ac701fe-44e9-4bcd-9585-dd6449257611

漏洞信息

漏洞编号
CVE-2025-12792
漏洞类型
安全配置错误/权限提升
CVSS评分
3.2 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Canva for Mac (Mac App Store分发版)

相关标签

CVE-2025-12792Hardened Runtime缺失TCC权限滥用macOS安全本地权限提升代码注入CanvaMac App Store隐私保护绕过

漏洞概述

CVE-2025-12792是Canva公司Canva for Mac桌面应用的一个安全漏洞。该漏洞影响Mac App Store分发的Canva for Mac桌面应用1.117.1之前的所有版本。问题根源在于该应用在分发时未启用苹果macOS系统的Hardened Runtime安全特性。Hardened Runtime是苹果为增强macOS应用安全性而设计的重要机制,它通过强制执行代码签名和运行时检查来防止恶意代码注入和权限滥用。当应用未启用Hardened Runtime时,攻击者可以利用应用现有的TCC(Transparency, Consent, and Control)权限进行未授权操作。TCC是macOS的核心隐私保护框架,管理着应用对敏感资源如摄像头、麦克风、照片库、文件系统等的访问权限。由于Canva应用本身已被用户授权访问某些敏感资源(如照片库、摄像头等),本地攻击者可以通过注入恶意代码到Canva进程中,继承这些已授权的TCC权限,从而绕过系统的安全限制访问受保护的资源。这意味着即使攻击者没有直接获得系统权限,也能利用合法应用的安全上下文执行恶意操作,对用户隐私和数据安全构成威胁。该漏洞的CVSS评分为3.2,属于低危级别,主要因为其攻击复杂度较高且需要本地访问权限。

技术细节

该漏洞的技术核心在于Canva for Mac应用缺少Hardened Runtime保护机制。Hardened Runtime是苹果macOS Catalina引入的重要安全特性,它在应用运行时提供以下保护:1) 代码签名验证,确保只有经过签名的代码才能被执行;2) 运行时进程完整性检查,防止动态代码注入;3) 库验证,防止加载未签名或被篡改的动态库。在正常情况下,即使攻击者能够在本地执行代码,也难以影响已启用Hardened Runtime的应用进程。然而,由于Canva for Mac未启用此特性,攻击者可以通过以下方式利用:首先,在Canva应用启动时或运行期间注入恶意代码或动态库;其次,利用Canva进程继承的TCC权限访问敏感资源;最后,执行超出Canva正常功能范围的任意操作。TCC框架会检查调用进程是否具有相应权限,但由于恶意代码运行在具有权限的Canva进程上下文中,TCC会认为这是合法的Canva操作并允许访问。攻击者可以借此访问用户的照片库、摄像头、麦克风等受保护资源,甚至可能读取或修改已授权访问的文件内容。这种攻击方式特别危险,因为它利用了用户对Canva应用的信任,绕过了正常的安全边界检查。

攻击链分析

STEP 1
步骤1
攻击者获得目标Mac系统的本地非特权访问权限,可以是普通用户账户或通过社会工程诱导用户执行恶意程序
STEP 2
步骤2
攻击者识别Canva for Mac应用进程,检查其是否启用了Hardened Runtime(通过codesign工具或entitlements分析)
STEP 3
步骤3
由于Canva应用未启用Hardened Runtime,攻击者利用动态库注入、进程注入或代码注入技术将恶意代码注入到Canva进程空间中
STEP 4
步骤4
注入的恶意代码继承Canva进程的所有TCC授权权限,包括对照片库、摄像头、麦克风等敏感资源的访问权限
STEP 5
步骤5
攻击者利用继承的TCC权限执行未授权操作,如秘密录制音频视频、窃取用户照片、监控用户活动等
STEP 6
步骤6
攻击者将窃取的敏感数据外传,完成整个攻击流程,由于运行在合法应用进程中,行为不易被安全软件检测

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-12792 PoC - Canva for Mac TCC权限滥用演示 // 注意:此PoC仅用于安全研究和漏洞理解 // 1. 查找Canva进程 const findCanvaProcess = () => { const { execSync } = require('child_process'); try { const pid = execSync('pgrep -f "Canva"').toString().trim(); console.log('Found Canva process PID:', pid); return pid; } catch (e) { console.log('Canva process not found'); return null; } }; // 2. 检查Hardened Runtime状态 const checkHardenedRuntime = (pid) => { const { execSync } = require('child_process'); try { const result = execSync(`codesign -d -vvv /Applications/Canva.app 2>&1`).toString(); console.log('Code signature info:', result); // 检查是否包含 hardened runtime 标志 return result.includes('adhoc') || !result.includes('runtime'); } catch (e) { console.log('Error checking signature:', e.message); return false; } }; // 3. 验证TCC权限(需要用户授权) const checkTCCPermissions = () => { const { execSync } = require('child_process'); try { // 读取TCC数据库中Canva的权限 const result = execSync('sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "SELECT service, client, auth_value FROM access WHERE client LIKE \"%Canva%\""'); console.log('Canva TCC permissions:', result.toString()); return result.toString(); } catch (e) { console.log('Cannot read TCC database (requires admin privileges)'); return null; } }; // 4. 演示利用场景 const demonstrateExploitation = () => { console.log('=== CVE-2025-12792 Exploitation Demo ==='); console.log('Vulnerability: Canva for Mac without Hardened Runtime'); console.log('Impact: TCC permission abuse'); console.log(''); const pid = findCanvaProcess(); if (pid) { const isVulnerable = checkHardenedRuntime(pid); console.log('Is Canva vulnerable?', isVulnerable); if (isVulnerable) { console.log('\n[!] Attack scenario:'); console.log('1. Inject malicious code into Canva process'); console.log('2. Inherit Canva TCC permissions'); console.log('3. Access photos/camera/microphone without user consent'); } } checkTCCPermissions(); }; demonstrateExploitation(); // 修复验证:检查是否已升级 const verifyFix = () => { const { execSync } = require('child_process'); try { const version = execSync('mdls -name kMDItemVersion -r /Applications/Canva.app').toString().trim(); console.log('\nCanva version:', version); console.log('Fixed in version 1.117.1 or later:', parseFloat(version) >= 1.1171); } catch (e) { console.log('Cannot get version info'); } }; verifyFix();

影响范围

Canva for Mac < 1.117.1 (Mac App Store版本)

防御指南

临时缓解措施
对于无法立即更新的用户,可以采取以下临时缓解措施:1) 卸载Mac App Store版本的Canva,改用网页版或其他平台版本;2) 撤销Canva应用的所有敏感权限(照片、摄像头、麦克风等);3) 限制Canva应用的联网权限;4) 使用隐私保护工具监控应用的敏感资源访问行为;5) 考虑使用虚拟机或沙箱环境运行Canva应用以隔离潜在风险;6) 提醒用户不要在Canva运行时进行其他敏感操作。最根本的解决方案仍然是尽快升级到官方修复版本。

参考链接

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