syslog工具_PathAuditor:谷歌开源的路径缺陷检测工具

近期,谷歌开源了一个名为PathAuditor的安全工具,旨在帮助开发人员找出和文件访问相关的漏洞。

虽然该开源项目由谷歌主导,但是这家科技巨头表示希望软件后续的维护由安全社区进行,并强调这不是一个官方支持的谷歌产品。

261e0ebddc7cd92dc4241d3cafcd69c9.png


根据谷歌的说法,PathAuditor会监控所有的文件访问行为,记录下潜藏的漏洞。而他们之所以编写这个工具正是为了大规模地发现和“文件访问”所相关的一系列漏洞。PathAuditor是一个共享库,可以使用LD_PRELOAD加载到进程中,然后hook所有与libc函数相关的filesystem,检查相关访问是否安全。

而这安全检查主要是通过遍历路径并检查是否有任何组件可以被普通用户替换。例如,如果某个目录是普通用户可写的,一旦被工具探测到,就会将其记录到syslog中以进行手动分析。

文件访问一类的漏洞可以被攻击者利用来执行某些非法提升权限的恶意代码,开发人员可以用此来检测隐藏着危险的路径访问模式。

再具体一点,就是该工具可以检查普通用户是否可以用符号链接(symlink)替换文件或目录,这种情况可能潜藏漏洞。

除了PathAuditor的源代码,谷歌还分享了一个用PathAuditor检测到tmpreaper(遍历/tmp目录,删除旧文件)中漏洞的例子(CVE-2019-3461)。

if (S_ISDIR (sb.st_mode)) { char *dst; if ((dst = malloc(strlen(ent->d_name) + 3)) == NULL) message (LOG_FATAL, "malloc failed."); strcpy(dst, ent->d_name); strcat(dst, "/X"); rename(ent->d_name, dst); if (errno == EXDEV) { free(dst); message (LOG_VERBOSE, "File on different device skipped: `%s/%s'", dirname, ent->d_name); continue; } // [...]

由于tmpreaper通常以root身份运行,且为了防止删除tmp之外的文件,所以需要代码来检测某个目录是否为挂载点。

重点在于以上代码会调用rename("/tmp/foo", "/tmp/foo/x"),而一旦/tmp/foo确实是挂载点,就将返回EXDEV。如果/tmp/foo属于除root用户以外的任何用户,PathAuditor就会将此调用标记为潜在的漏洞。为了理解到底发生了什么,我们需要看看内核在重命名时有什么操作:

  1. 内核针对第一个参数遍历路径/tmp/foo。
  2. 内核针对第二个参数遍历路径/tmp/foo/x。
  3. 如果源和目标位于不同的文件系统上,则返回EXDEV。
  4. 否则,将文件从第一个目录移动到第二个目录。

因为/tmp/foo将被解析两次,所以存在竞态条件。如果它能被普通用户所控制,则可在任何时候被不同的文件所替换。

在代码进入系统调用之前,我们先用一个文件替换它。当内核解析第一个参数时,它将看到用户所控制的文件内容。现在我们再次替换它,这一次是使用到同一文件系统上任意目录的符号链接。最后内核将第二次解析路径,遵循符号链接将文件移动到所选定的目录。

利用这种方法,我们可以把/tmp中的文件移动到/etc/cron,以root权限运行。

“这个项目仍处于早期阶段,我们也在积极进行下一步工作。我们期待听到你关于该工具的任何建议,以及其自身的漏洞。”

在今年早些时候,谷歌发布了名为ClusterFuzz的模糊测试工具,这主要是为发现Chrome浏览器中的内存损坏漏洞而开发的。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:https://nosec.org/home/detail/3357.html

原文:https://securityaffairs.co/wordpress/94872/hacking/pathauditor-tool.html

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值