Firefly是Roku SoundBridge和iTunes所使用的开源媒体服务器。 Firefly实现的Web服务器存在格式串处理漏洞,远程攻击者可能利用此漏洞控制服务器。 在Firefly的webserver.c文件中,ws_dispatcher函数的916-920行及ws_addarg函数的1171行存在vsnprintf()相关的格式串漏洞。ws_addarg函数使用了第三个参数做为格式标识符,由于这个参数来自请求头的Authorization字段所解码的用户名,因此可能是用户可控的。对ws_addarg的调用发生在预认证阶段,且对格式串的长度也没有限制。成功利用这个漏洞可以在受影响系统上执行任意指令。 ws_decodepassword(auth,&username,&password); if(auth_handler(username,password)) can_dispatch=1; ws_addarg(&pwsc->request_vars,"HTTP_USER",username); ws_addarg(&pwsc->request_vars,"HTTP_PASSWD",password); int ws_addarg(ARGLIST *root, char *key, char *fmt, ...) { ... va_start(ap,fmt); vsnprintf(value,sizeof(value),fmt,ap); va_end(ap); "
Firefly是Roku SoundBridge和iTunes所使用的开源媒体服务器。 Firefly实现的Web服务器存在格式串处理漏洞,远程攻击者可能利用此漏洞控制服务器。 在Firefly的webserver.c文件中,ws_dispatcher函数的916-920行及ws_addarg函数的1171行存在vsnprintf()相关的格式串漏洞。ws_addarg函数使用了第三个参数做为格式标识符,由于这个参数来自请求头的Authorization字段所解码的用户名,因此可能是用户可控的。对ws_addarg的调用发生在预认证阶段,且对格式串的长度也没有限制。成功利用这个漏洞可以在受影响系统上执行任意指令。 ws_decodepassword(auth,&username,&password); if(auth_handler(username,password)) can_dispatch=1; ws_addarg(&pwsc->request_vars,"HTTP_USER",username); ws_addarg(&pwsc->request_vars,"HTTP_PASSWD",password); int ws_addarg(ARGLIST *root, char *key, char *fmt, ...) { ... va_start(ap,fmt); vsnprintf(value,sizeof(value),fmt,ap); va_end(ap); "