您有一个新约会:利用企业应用中的iCalendar属性
本文是作者在DEF CON 30演讲的技术白皮书,同时维护了一个专有iCalendar属性数据库:https://spaceraccoon.github.io/icalendardb/
iCalendar:小标准大能量 🔗
iCalendar标准诞生于1998年,旨在解决企业日历软件互操作性问题。RFC 2445(首个标准)明确指出当时产品存在"专有方式扩展"的问题。在Lotus Notes和Microsoft等厂商支持下,iCalendar成为事实标准,后续RFC 5545(2009)和RFC 7986(2016)进一步优化。
尽管iCalendar是简单文本格式,但开发者在此基础上构建了丰富功能(如点击加入视频会议、行程提醒)。然而,这个传统标准最初未考虑现代安全隐私问题,加上厂商大量扩展属性,极大扩大了攻击面。
默认危险的设计 🔗
VEVENT组件可包含VALARM提醒组件,其ACTION属性定义触发行为:
- AUDIO:播放音频文件(ATTACH属性指定远程文件)
- DISPLAY:显示DESCRIPTION文本
- EMAIL:向ATTENDEE发送带附件的邮件
示例代码:
|
|
RFC 5545建议忽略来自不可信源的提醒组件,但这不是强制要求。Apple Calendar甚至支持已弃用的PROCEDURE动作,可通过Launch Services打开任意文件。
标准RFC属性的不安全实现 🔗
VMware Boxer DESCRIPTION存储型XSS
DESCRIPTION属性在不同厂商实现差异巨大:Microsoft视其为纯文本(用X-ALT-DESC处理富文本),Google Calendar直接支持HTML。VMware Boxer iOS客户端21.11版(2021年12月)添加富文本显示功能时未做安全处理,导致存储型XSS,可结合深链接启动恶意应用。
披露时间线:
- 2022-02-06:初始披露
- 2022-02-07:确认接收
- 2022-02-23:安全公告和补丁(CVE-2022-22944)
Synology Calendar ATTENDEE/ORGANIZER存储型XSS
虽然正确解析mailto:前缀,但未对地址部分消毒,在显示嘉宾列表时导致存储型XSS。结合自动添加会议邀请的默认行为,形成可蠕虫传播的XSS。
攻击载荷示例:
|
|
披露时间线:
- 2022-03-20:初始披露
- 2022-05-17:公开披露
- 2022-07-12:漏洞细节披露(CVE-2022-22682)
Apple Calendar DESCRIPTION自定义URI
Apple在DESCRIPTION中嵌入特定格式的FaceTime链接:
|
|
攻击者可替换为file://、ftp://等非HTTPS URI,结合Safari UXSS或Gatekeeper绕过可能导致代码执行。iOS上可启动任意应用快捷方式。
披露时间线:
- 2022-01-27:初始披露
- 2022-05-16:安全公告和补丁(macOS Monterey 12.4)
Apple Calendar ATTACH自动下载
测试CVE-2020-3882补丁绕过时发现,Apple Calendar自动下载任何*.icloud.com域的ATTACH文件,且跟随重定向,可实现去匿名化攻击。
易受攻击的专有扩展属性 🔗
历史Microsoft Outlook专有属性
早期Outlook使用大量非标准属性(如X-MS-OLK-AUTOSTARTCHECK、X-MS-OLK-COLLABORATEDOC)实现自动开启会议和打开Office文档功能。现代版本虽不再支持,但遗留代码仍可被触发。
Microsoft Outlook X-MS-OLK-MWSURL自定义URI
当前Outlook 365仍支持X-MS-OLK-MWSURL属性,在提醒弹窗中激活"查看会议工作区"选项,可启动包括SMB共享在内的自定义URI,泄露Net-NTLMv2哈希。响应此类事件会发送HTTP SOAP请求而非邮件响应,可用于去匿名化攻击。
披露时间线:
- 2022-01-28:初始披露
- 2022-01-31:分类处理
- 2022-02-23:验证解决
Google Calendar X-GOOGLE-CALENDAR-CONTENT-*任意iframe
Google 2018年弃用但仍支持的特性,可在事件弹窗中嵌入iframe小部件。通过嵌入任意iframe和图标,可去匿名化用户或弹出钓鱼提示。
攻击示例:
|
|
披露时间线:
- 2022-02-28:初始披露
- 2022-03-23:奖金授予
二进制编码的Apple Calendar专有属性
Apple在标准Base64编码基础上添加专有二进制格式。如X-APPLE-STRUCTURED-DATA包含bplist00魔术字节,使用NSKeyedArchiver格式存储航班等结构化数据,是模糊测试的有趣目标。
与SMTP和CalDAV的交互风险 🔗
NextCloud Calendar ORGANIZER SMTP命令注入
SMTP标准允许引号字符串中的特殊字符。当应用将换行符直接传递给SMTP命令管道时,可通过在ATTENDEE和ORGANIZER邮箱中插入换行符实现命令注入。
攻击载荷示例:
|
|
当受害者RSVP响应时,后端自动发送邮件到该地址,触发SMTP注入。影响取决于后端SMTP服务器支持的命令。
披露时间线:
- 2022-03-19:初始披露
- 2022-04-12:安全公告和补丁(CVE-2022-24838)
- 2022-06-01:安全公告和补丁(CVE-2022-31014)
未来展望与建议 🔗
厂商逐渐用专有API替代iCalendar和CalDAV(如Microsoft Graph),但这威胁了日历服务的互操作性。建议:
- 统一解释标准:通过集中客户端和服务器库解决"一个标准,多种解释"问题
- 避免不必要的专有扩展:减少自定义解析和兼容性降低的临时方案
- 贡献开源库:通过开源iCalendar库保护整个生态系统
安全研究人员将继续在iCalendar标准的不一致应用中发现更多漏洞。