漏洞概述
CVE-2022-23465 是SwiftTerm终端模拟器库中发现的一个高危代码注入漏洞。该漏洞允许攻击者通过特定字符转义序列修改终端窗口标题,随后将标题内容插入用户命令行,从而可能导致任意命令执行。
漏洞详情
受影响版本
- 受影响版本:所有早于1.2.0的SwiftTerm版本
- 已修复版本:1.2.0(提交ce596e0dc8cdb288bc7ed5c6a59011ee3a8dc171)
漏洞描述
攻击者能够通过特定字符转义序列修改窗口标题,然后将其插入用户终端的命令行中。例如,当用户查看包含恶意序列的文件时,这种操作可能允许攻击者执行任意命令。
技术背景
SwiftTerm是一个用Swift编写的VT100/Xterm终端模拟器库,可用于macOS和iOS应用程序、基于文本的无头应用程序或其他自定义场景。该漏洞涉及终端模拟器对转义序列处理的常见安全问题。
相关历史漏洞
此漏洞与历史上多个终端模拟器的安全问题类似:
CVE-2003-0063(XFree86 xterm)
XFree86 4.2.0及更早版本中的xterm终端模拟器允许攻击者通过特定字符转义序列修改窗口标题,然后将其插入用户终端的命令行中。当用户查看包含恶意序列的文件时,可能允许攻击者执行任意命令。
CVE-2008-2383(xterm DECRQSS漏洞)
xterm中的CRLF注入漏洞允许用户协助的攻击者通过设备控制请求状态字符串(DECRQSS)转义序列中的换行符(LF)字符执行任意命令,这是CVE-2003-0063相关问题的延续。
终端模拟器安全研究(2003年)
早在2003年,Digital Defense Incorporated就发布了一份详细报告《终端模拟器安全问题》,系统性地分析了各类终端模拟器的安全漏洞:
窗口标题报告攻击机理: 许多终端模拟器支持shell使用转义序列设置窗口标题的功能。某些xterm变体(和dtterm)还提供了报告当前窗口标题的转义序列,这实际上将当前标题直接放置在命令行上。
攻击序列示例:
|
|
受影响应用程序: 经确认受影响的应用程序包括xterm、dtterm、uxterm、rxvt、aterm、Eterm、hanterm和putty。
安全建议:
- 在将数据显示到终端之前净化所有数据
- 终端模拟器应默认禁用允许文件或命令行访问的功能
- 对使用转义序列的任何新功能应给予更多关注
漏洞修复与缓解
修复方案
该漏洞在SwiftTerm的提交a94e6b24d24ce9680ad79884992e1dff8e150a31中得到修复。
缓解措施
目前没有已知的可用缓解措施。建议用户立即升级到修复版本。
漏洞评分与指标
CVSS评分
- GitHub评分:7.1(高危)
- 向量:CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N
攻击向量
- 攻击向量:本地(AV:L)
- 攻击复杂度:低(AC:L)
- 所需权限:无(PR:N)
- 用户交互:需要(UI:R)
- 影响范围:改变(S:C)
- 机密性影响:高(C:H)
- 完整性影响:低(I:L)
- 可用性影响:无(A:N)
弱点枚举
- CWE-94:代码生成的不当控制(‘代码注入’)
参考资料
- NIST漏洞数据库条目:CVE-2022-23465
- GitHub安全公告:GHSA-jq43-q8mx-r7mq
- 相关历史漏洞:
- CVE-2003-0063(XFree86 xterm窗口标题漏洞)
- CVE-2008-2383(xterm DECRQSS漏洞)
- 技术背景文档:
- 2003年终端模拟器安全研究报告
- Debian错误报告#510030
安全建议
对于使用SwiftTerm库的开发者和用户:
- 立即升级:将所有SwiftTerm实例升级到1.2.0或更高版本
- 代码审查:审查应用程序中终端输出的处理逻辑
- 输入验证:对可能显示在终端中的所有外部数据进行适当的转义序列过滤
- 安全意识:了解终端模拟器的安全特性与风险,特别是在处理不受信任数据时
此漏洞再次提醒我们,即使是成熟的基础软件组件也可能包含严重的安全隐患,需要持续的安全维护和及时更新。