CVE-2026-42346Postiz是一款AI社交媒体调度工具。在2.16.6至2.21.7之前的版本中,该工具存在一个严重的服务端请求伪造(SSRF)漏洞。问题源于v2.21.4至v2.21.6版本中添加的SSRF防护措施存在根本性的TOCTOU(Time-of-Check-Time-of-Use)竞态条件漏洞。具体而言,isSafePublicHttpsUrl()函数在检查时解析DNS以验证目标IP,但随后的fetch()调用会独立解析DNS。控制DNS服务器的攻击者可以利用这一时间差,通过DNS重绑定攻击将请求重定向到内部网络地址,从而绕过安全检查并访问内网资源。
该漏洞的核心原理是TOCTOU(检查时与使用时的竞争条件)。在Postiz的实现中,SSRF防护逻辑分为两个步骤:首先调用isSafePublicHttpsUrl()对用户提供的URL进行DNS解析,并检查解析出的IP地址是否属于公网合法地址;其次,在验证通过后,调用fetch()函数实际发起HTTP请求。关键问题在于,这两个步骤分别进行了DNS查询,且没有绑定DNS解析结果。攻击者可以搭建恶意的DNS服务器,初始将域名解析为一个合法的公网IP(如1.1.1.1),使其通过第一步检查。在通过检查后的极短时间内(即发起fetch请求之前),攻击者控制DNS服务器将同一域名解析为一个内网IP(如127.0.0.1或192.168.x.x)。由于fetch()会重新进行DNS查询,请求最终被发送到了内部网络地址。这种DNS重绑定技术使得攻击者能够绕过IP黑名单/白名单机制,探测或攻击内网服务。