IPBUF安全漏洞报告
English
CVE-2026-33635 CVSS 4.3 中危

CVE-2026-33635 iCalendar库ICS注入漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33635
漏洞类型
ICS注入
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
iCalendar (Ruby library)

相关标签

ICS注入CRLF注入RubyiCalendarCVE-2026-33635

漏洞概述

iCalendar Ruby库在2.0.0至2.12.2之前的版本中存在ICS注入漏洞。该漏洞源于库在序列化URI属性时未对回车换行符进行转义。攻击者可利用该漏洞,通过构造包含CRLF序列的恶意输入,在生成的.ics文件中注入任意日历属性。若应用基于用户输入生成日历文件,将导致下游日历客户端解析恶意内容,影响数据完整性。

技术细节

该漏洞的核心在于`Icalendar::Values::Uri`类的序列化逻辑缺陷。当`URI.parse`方法无法解析输入字符串时,库会回退使用原始输入,并在后续的`to_s`序列化过程中直接输出该值。关键的安全缺失在于未对字符串中的回车(\r)和换行(\n)控制字符进行移除或转义。攻击者利用这一点,可以在URL、Organizer、Attendee等URI字段中注入包含CRLF的Payload。例如,在URL字段后插入换行符,即可闭合当前属性行,并追加新的恶意ICS属性(如修改事件时间、添加警报或更改参与者)。下游日历客户端在导入该被污染的.ics文件时,会将注入的内容解析为合法的日历数据,从而造成信息篡改或误导。

攻击链分析

STEP 1
侦察
攻击者识别目标Web应用程序使用了受影响的iCalendar Ruby库(版本<2.12.2)来生成.ics日历文件,且该文件内容部分来源于用户输入。
STEP 2
构造Payload
攻击者构造包含CRLF(\r\n)控制字符的恶意字符串,旨在在目标URI字段(如URL、Organizer)后插入额外的ICS属性或组件。
STEP 3
注入攻击
攻击者将恶意Payload提交给应用程序,应用程序将其传递给iCalendar库进行序列化。由于漏洞存在,CRLF字符未被转义,导致Payload破坏了ICS文件结构。
STEP 4
执行与利用
应用程序生成包含恶意内容的.ics文件。受害者下载并导入该文件到日历客户端(如Outlook、Apple Calendar),客户端解析并显示攻击者注入的虚假参会者、链接或警报。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
require 'icalendar' cal = Icalendar::Calendar.new event = cal.event do |e| e.dtstart = Icalendar::Values::Date.new('2026-03-26') e.dtend = Icalendar::Values::Date.new('2026-03-27') e.summary = "Regular Meeting" # PoC: Injecting CRLF into URI property to add arbitrary lines # Exploiting the fallback to raw string when URI.parse fails malicious_input = "http://example.com\r\nATTENDEE:mailto:[email protected]" e.url = Icalendar::Values::Uri.new(malicious_input) end puts cal.to_ics

影响范围

iCalendar >= 2.0.0, < 2.12.2

防御指南

临时缓解措施
如果无法立即升级,建议在应用层面对所有用于URI属性的用户输入进行清洗,使用正则表达式或其他方法剔除回车符和换行符,防止CRLF注入。

参考链接

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