GNU Screen 曝多漏洞:本地提权与终端劫持风险浮现

SUSE安全团队全面审计发现,广泛使用的终端复用工具GNU Screen存在一系列严重漏洞,包括可导致本地提权至root权限的缺陷。这些问题同时影响最新的Screen 5.0.0版本和更普遍部署的Screen 4.9.x版本,具体影响范围取决于发行版配置。

尽管GNU Screen是类UNIX系统中管理终端会话的核心工具,但研究显示其存在重大风险------特别是当Screen以setuid-root权限安装以支持多用户功能时。

关键漏洞分析

CVE-2025-23395:logfile_reopen()函数本地提权漏洞

最严重的漏洞允许本地权限提升。在Screen 5.0.0中,logfile_reopen()函数在重新打开用户定义的日志文件时未能正确丢弃提升的权限,使得攻击者可以向root所有的文件写入任意数据。

报告警告称:"非特权用户可以在任意位置创建root所有的文件...所有写入Screen PTY的数据都将被记录到该文件中"。该漏洞可通过操纵日志文件的链接计数强制重新打开来触发,已在采用setuid-root方式安装Screen的Arch Linux和NetBSD系统上得到确认。

CVE-2025-46802:终端重连竞争条件漏洞

另一个重大缺陷涉及多用户会话重新连接时Attach()函数中的竞争条件。当被调用时,Screen会临时将终端设备模式设置为0666,使系统上任何进程都能读写用户的TTY。

SUSE表示:"我们使用简单的Python脚本每两到三次尝试就能成功打开受影响的TTY"。虽然这种基于chmod的方法原本旨在实现会话守护进程间的通信,但却为击键拦截或命令注入创造了危险窗口。

CVE-2025-46803:默认全局可写PTY漏洞

Screen 5.0.0还将默认PTY模式改为0622,使其全局可写。这使得任何用户都能向Screen管理的PTY写入数据,重现了TTY劫持漏洞的部分特征------现在这已成为默认行为。除非明确覆盖编译时配置,否则Arch Linux和NetBSD等发行版都会受到影响。

其他安全缺陷

CVE-2025-46804:文件存在性信息泄露

通过滥用SCREENDIR环境变量,可诱骗Screen泄露root所有文件的存在及类型,揭示路径是目录、文件还是不可访问。

CVE-2025-46805:信号处理竞争条件

在对CVE-2023-24626的不完整修复中,Screen的信号发送逻辑仍存在竞争条件。攻击者可利用权限检查与实际信号发送之间的TOCTOU(检查时间/使用时间)窗口,向非目标进程发送SIGHUP或SIGCONT等信号。

strncpy()误用导致的缓冲区溢出

虽然未分配CVE编号,但Screen 5.0.0中存在一个不可利用的缓冲区溢出问题。当用户尝试向活动Screen会话发送含多个参数的命令时,可能导致崩溃。该问题源于用strncpy()不当替换strcpy()的行为,在启用FORTIFY_SOURCE保护的Arch Linux系统上已观察到崩溃现象。

受影响发行版

发行版 Screen版本 权限模型 受影响CVE
Arch Linux 5.0.0 setuid-root CVE-2025-23395, CVE-2025-46802, CVE-2025-46803, CVE-2025-46804, CVE-2025-46805, 缓冲区溢出问题
NetBSD 10.1 - setuid-root 同上
Fedora 42 5.0.0 setgid-screen CVE-2025-46802(部分), 缓冲区溢出问题
FreeBSD 14.2 4.9.1 setuid-root CVE-2025-46802, CVE-2025-46804, CVE-2025-46805
Gentoo 4.9.1/9999 setgid-utmp/setuid-root CVE-2025-46802(部分), CVE-2025-46805(setuid-root配置下)
Debian 12.10 4.9.0 默认 CVE-2025-46802(部分)
Ubuntu 24.04.2 4.9.1 默认 CVE-2025-46802(部分)

安全建议

SUSE强烈建议现阶段不要以setuid-root权限安装Screen。报告指出,许多问题源于过时的权限管理模型和5.0.0版本代码重构期间引入的退步。

SUSE建议:"Screen存在更广泛的设计问题:它始终以提升的权限运行,仅针对被认为危险的操作选择性丢弃权限。对于健壮的setuid-root程序,应该采用相反的方式:默认丢弃权限,仅在确实需要提升权限的操作时临时获取。"他们建议将多用户支持设为可选功能,可能限制为受信任组使用,并提出更广泛的架构变更以确保安全的权限处理。

相关推荐
独行soc7 小时前
2025年渗透测试面试题总结-234(题目+回答)
网络·python·安全·web安全·渗透测试·1024程序员节·安全狮
机器学习之心7 小时前
MATLAB基于变权理论和灰色云模型的海岛旅游地生态安全评价
安全·matlab·旅游·灰色云模型
No Big Deal11 小时前
ctfshow-_Web应用安全与防护-Base64多层嵌套解码
安全
Oxo Security11 小时前
【AI安全】检索增强生成(RAG)
人工智能·安全·网络安全·ai
2301_7951672012 小时前
玩转Rust高级应用 如何让让运算符支持自定义类型,通过运算符重载的方式是针对自定义类型吗?
开发语言·后端·算法·安全·rust
合作小小程序员小小店15 小时前
web安全开发,在线%服务器日志入侵检测%系统安全开发,基于Python,flaskWeb,正则表达式检测,mysql数据库
服务器·python·安全·web安全·flask·安全威胁分析·安全架构
Fanmeang17 小时前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
数字供应链安全产品选型17 小时前
公示 | 悬镜安全通过首批《信息技术 软件物料清单数据格式规范》行业标准符合性试点验证
安全
AWS官方合作商17 小时前
AWS Lambda的安全之道:S3静态加密与运行时完整性检查的双重保障
安全·云计算·aws
MarkHD17 小时前
蓝牙钥匙 第69次 蓝牙钥匙安全与便捷性平衡:从理论到实践的全方位解析
网络·人工智能·安全