CVE-2025-61035CVE-2025-61035是seffaflik Python包(版本至0.0.9)中存在的一个高危本地权限提升与文件覆盖漏洞。该漏洞源于seffaflik在创建敏感文件时使用了不安全的默认文件权限。具体而言,.kimlik文件以0777权限创建(即所有用户可读、可写、可执行),.seffaflik文件以0775权限创建(所有同组用户可读、可写、可执行),这使得包含身份验证凭据等敏感信息的密钥文件暴露给系统上的其他本地用户。更严重的是,.kimlik文件在写入时未进行符号链接检查(symlink check),这意味着本地攻击者可以预先创建指向系统关键文件(如/etc/passwd、/etc/shadow或其他重要配置文件)的符号链接,当seffaflik尝试写入.kimlik文件时,实际上会覆盖攻击者指定的任意目标文件,从而实现任意文件覆盖攻击。该漏洞可导致两种主要安全影响:一是信息泄露(其他本地用户可读取存储在.kimlik和.seffaflik文件中的密钥和敏感信息);二是拒绝服务或权限提升(通过覆盖关键系统文件导致服务不可用或获取更高权限)。该漏洞的CVSS评分为7.7,属于高危级别,攻击向量为本地(AV:L),无需认证(PR:N)和用户交互(UI:N),完整性影响为高(I:H),可用性影响为高(A:H),机密性影响为低(C:L)。
seffaflik是一个用于与土耳其e-Devlet(电子政府)公共服务API交互的Python库。该漏洞的核心技术问题在于文件创建时的权限设置和符号链接处理缺陷。
1. **不安全的文件权限**:当seffaflik首次运行时,会在用户主目录下创建.kimlik和.seffaflik两个文件用于存储身份认证信息。.kimlik文件以模式0777(即-rwxrwxrwx)创建,意味着系统上任何用户都可以读取该文件内容。.seffaflik文件以模式0775创建,允许同组用户读取。这些文件通常包含API密钥、令牌或其他敏感凭据。
2. **缺少符号链接检查(TOCTOU竞态条件)**:.kimlik文件在写入过程中未使用O_NOFOLLOW标志或os.path.realpath()等机制检查目标是否为符号链接。攻击者可以预先在目标路径创建一个指向系统关键文件(如/etc/passwd)的符号链接。当seffaflik进程以合法用户身份运行并尝试写入.kimlik文件时,内核将跟随符号链接并将数据写入攻击者指定的任意文件。
3. **利用方式**:本地攻击者无需特殊权限即可利用此漏洞。攻击者只需在目标用户运行seffaflik之前,在其主目录创建.kimlik符号链接指向敏感文件(如/etc/passwd),然后等待合法用户运行seffaflik命令即可触发文件覆盖。攻击者还可以直接读取其他用户的.kimlik文件获取凭据。
4. **影响范围**:该漏洞影响所有使用seffaflik <= 0.0.9版本的多用户系统,特别是在共享服务器环境(如大学实验室、云服务器)中风险更高。