2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
您的应用程序获取一个统一资源定位符。该地址由用户提供。您的服务器发出请求,跟随重定向,并返回内容。
该统一资源定位符指向 http://169.254.169.254/latest/metadata/iam/security-credentials/production-role。
您的应用程序刚刚将云凭证交给了攻击者。
简要总结
- 服务器端请求伪造允许攻击者诱骗您的服务器代表他们发出请求——访问内部服务、云元数据端点或本不应从外部访问的基础设施。
- 节点包管理器中的
ip软件包存在的 CVE-2024-29415 漏洞,允许攻击者使用非标准的互联网协议地址表示形式来绕过服务器端请求伪造防护措施,而isPublic()函数错误地将这些地址分类为安全地址。通用漏洞评分系统评分为 8.1(高危)。 - 您的测试套件几乎肯定会验证您的统一资源定位符获取功能是否正常工作。但它不会验证该功能是否拒绝获取
http://169.254.169.254/latest/meta-data/或http://127.1/admin。 - 修复需要采用允许列表(白名单)来限定 permitted 目的地,而非阻止列表(黑名单)。阻止列表会失效,因为互联网协议地址的表示形式是无限的。只有当配置错误时,允许列表才会失效。
- 人工智能生成的测试会提交有效的统一资源定位符并断言响应正确。它们永远不会提交内部服务地址。因此,服务器端请求伪造的攻击面依然未被触及。
定义
服务器端请求伪造(通用弱点枚举 CWE-918,开放网页应用安全计划 A10:2021)发生在应用程序根据用户提供的统一资源定位符获取远程资源,而未充分验证目标地址是否被允许时。
服务器使用其自身的凭证和网络位置发出请求。在云环境中,这意味着可以访问实例元数据服务、内部虚拟私有云服务、库伯内特斯应用程序编程接口服务器、雷迪斯实例——任何可以从服务器的网络上下文访问但无法从公共互联网访问的资源。
攻击者的超文本传输协议请求永远不会直接接触这些服务。请求是由服务器代为发出的。
开发人员在建构真正有用的功能时会引入服务器端请求伪造风险:例如生成统一资源定位符预览、交付网络钩子、从外部统一资源定位符导入数据、从用户提供的来源获取图像。开发人员会添加检查以确保目标不是私有互联网协议地址。该检查使用库函数。而该库函数存在开发人员从未测试过的边界情况。功能上线后,所有正常路径测试均通过,而服务器端请求伪造的攻击面便悄无声息地存在于生产环境中。
在云和微服务环境中,使服务器端请求伪造特别危险的是其爆炸半径。单个服务中的一个漏洞就可能暴露整个云账户的凭证,启用对内部应用程序编程接口的横向移动,允许枚举内部网络拓扑,并为那些假设仅可从受信任的内部调用者访问的服务提供未经身份验证的入口点。
现实世界中的损害
CVE-2024-29415 · 节点包管理器 ip 软件包 · 2024年5月 · 通用漏洞评分系统 8.1(高危)
2024年5月,节点包管理器中广泛使用的用于互联网协议地址操作和验证的 Node.js 库 ip 软件包公布了一个服务器端请求伪造漏洞。isPublic() 函数旨在识别互联网协议地址是否在全球范围内可路由,但它错误地将几种非标准表示形式分类为公共地址,而这些地址实际上解析为环回地址或私有地址。
包括 127.1、01200034567、012.1.2.3、000:0:0000::01 和 ::fFFf:127.0.0.1 在内的表示形式都通过了 isPublic() 检查——这意味着依赖此函数来阻止服务器端请求伪造的应用程序
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。