curl命令行凭证泄露漏洞分析:/proc/XXX/cmdline中的敏感信息暴露问题

本文详细分析了curl工具在特定参数格式下无法隐藏命令行凭证的安全问题,包括漏洞重现步骤、影响范围及官方回应,揭示了/proc文件系统中敏感信息暴露的风险机制。

漏洞概要

cleanarg辅助函数失效,当凭证以无空格形式附加在短选项后时(如-uUSER:PASS对比-u USER:PASS),敏感信息会暴露在/proc/XXX/cmdline中。

受影响版本

1
2
3
4
curl 8.12.1 (x86_64-pc-linux-musl) 
libcurl/8.12.1 OpenSSL/3.3.3 
Protocols: http/https/ftp等20+协议
Features: 支持HTTPS-proxy/HTTP2/TLS-SRP等安全特性

重现步骤

  1. 在Linux环境执行:
1
curl 8.8.8.8:444 -u user:pass -ufoo:bar -U baz:qux -U123:456 --user USER:PASS
  1. 通过其他用户查看进程信息:
1
2
ps ax | grep ' [c]url 8'
cat /proc/<PID>/cmdline | tr '\0' '\n'

技术细节

  • 参数解析缺陷:短选项与凭证直接连接时(如-ufoo:bar),参数清洗机制失效
  • 信息暴露路径
    • ps aux进程列表
    • /proc/<pid>/cmdline系统文件
  • 初始修复记录:涉及7f67a28等提交,但未完全覆盖边界情况

安全影响

  • 风险等级:中危(4~6.9 CVSS)
  • 攻击场景:同一主机的低权限用户可获取:
    • HTTP基础认证凭据
    • 代理服务器密码
    • API密钥等敏感数据

官方回应

curl团队认为这是功能缺陷而非安全漏洞:

“命令行参数隐藏是尽力而为的特性,不能作为安全保证”
建议通过环境变量或配置文件传递敏感参数

相关资源

  1. 官方密码处理文档

  2. 漏洞披露策略说明

该问题已被标记为Informative级别,未分配CVE编号。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计