据其架构师称,一个旨在阻止服务器端请求伪造(SSRF)攻击的新开源库填补了Go开发人员军械库中的一个重大缺口。Safeurl是Go原生net/http.Client的单行替代品,根据允许和阻止列表验证传入的HTTP请求,并防御DNS重新绑定攻击。“所有解析、验证和发出请求的繁重工作都由图书馆完成,”Doyensec安全工程师和Safeurl创建者Viktor Chuchurski和Alessandro Cotto在博客文章中说。“该库以最少的配置开箱即用,同时为开发人员提供他们可能需要的自定义和过滤选项。开发人员不应为解决应用程序安全问题而苦苦挣扎,而应专注于为客户提供高质量的功能。”
Chuchurski和Cotto表示,他们希望通过SafeCURL和(名称相同但大写不同的)SafeURL为Go应用程序提供与用其他语言编写的对应程序相同的保护。
“我们的客户正在寻求有关减轻SSRF攻击的Go特定解决方案的建议,”两人说。“没有专门为Go构建的东西,所以我们接受了挑战。”
SSRF攻击涉及诱导服务器端应用程序向非预期位置发出请求。
“现代Web应用程序发出HTTP请求很常见,但安全实施可能非常困难,”Chuchurski和Cotto继续说道。
“我们希望我们的图书馆能够满足这一需求。它的设计考虑了易用性,并通过其嵌入式默认设置简单地保护应用程序。”
根据RFC1918的规定,Safeurl默认阻止所有流向私有或保留IP地址的流量。
“明确设置允许的目的地更容易(也更安全),而不是在当今不断扩大的威胁形势下必须处理更新阻止列表,”博客文章解释道。
safeurl.Config可用于自定义safeurl.Client以设置AllowedPorts、AllowedSchemes、AllowedHosts、BlockedIPs、AllowedIPs、AllowedCIDR、BlockedCIDR、IsIPv6Enabled、AllowSendingCredentials和IsDebugLoggingEnabled。
开源库允许配置HTTP重定向、cookie jar设置和请求超时。
DNS重新绑定攻击利用两个或多个连续HTTP请求之间的DNS响应不匹配,通过对用于通过Go的net/dialer包和控制挂钩发出HTTP请求的IP地址执行允许/阻止列表验证来阻止。
研究人员为Safeurl创建了一个夺旗CTF挑战,并向任何成功的人提供“赃物和一些很酷的小工具”。
“我们对我们的代码充满信心,CTF正在对这种信心进行测试,”Chuchurski和Cotto说。“这是一个带有SSRF漏洞的简单Web服务器。
“不同之处在于,触发漏洞的点受到‘safeurl’库的保护。如果有人能够找到旁路,他们会找到进一步的说明。”
评论已关闭。