SolarWinds发布安全公告,修复了Serv-U中存在的远程代码执行漏洞(CVE-2021-35211),该漏洞为微软发现在野利用后向SolarWinds报告,并提供了漏洞利用的概念证明。未经身份验证的远程攻击者利用此漏洞可在受影响的服务器上以特殊权限执行任意代码,请相关用户尽快采取措施进行防护。
该漏洞存在于SSH协议中,与 SUNBURST 供应链攻击无关,仅影响SolarWinds Serv-U Managed File Transfer和Serv-U Secure FTP。使用Serv-U管理控制台向导创建域时会默认选择启用SSH,若Serv-U环境中未启用SSH则不受此漏洞影响。
通过枚举ssh-字符串在Serv-U中发现了SSH实现。SSH实例如图1所示:
图 1. SSH-字符串
研究人员在上述代码中设置断点,并尝试用SSH客户端连接到Serv-U确认这一假设:
图 2. 图1中代码中设置的断点的调用栈
此时,研究人员发现Serv-U.dll和RhinoNET.dll都禁用了ASLR支持。研究人员逆向Serv-U.dll和RhinoNET.dll中相关的代码后发现可以追踪SSH消息的路径。为处理进入的SSH连接,Serv-U.dll从RhinoNET!CRhinoSocket 类创建了CSUSSHSocket对象。CSUSSHSocket 对象的lifetime是TCP连接的长度。底层的CRhinoSocket 为soc