Linux NFS utils是网络文件系统实现。 nfs-utils存在单字节溢出漏洞,远程攻击者可以利用这个漏洞构造伪造的请求给rpc.mountd守护程序,可能以root用户权限在系统上执行任意指令。 问题存在于xlog()函数,处理请求的日志记录,当函数尝试增加新行字符到要记录的字符串时会触发溢出。由于错误的计算,如果传递给函数的字符串等于或超过1023字节,会由于写\'\'\0\'\'字节超过缓冲区边界: - ------8<------cut-here------8<------ char buff[1024]; ... va_start(args, fmt); vsnprintf(buff, sizeof (buff), fmt, args); va_end(args); buff[sizeof (buff) - 1] = 0; if ((n = strlen(buff)) > 0 && buff[n-1] != \'\'\n\'\') { buff[n++] = \'\'\n\'\'; buff[n++] = \'\'\0\'\'; } - ------8<------cut-here------8<------ 本地或远程攻击者可以发送精心构建的RPC请求,发送到rpc.mountd守护进程中,可导致拒绝服务攻击,或者以root用户权限在系统上执行任意指令。
Linux NFS utils是网络文件系统实现。 nfs-utils存在单字节溢出漏洞,远程攻击者可以利用这个漏洞构造伪造的请求给rpc.mountd守护程序,可能以root用户权限在系统上执行任意指令。 问题存在于xlog()函数,处理请求的日志记录,当函数尝试增加新行字符到要记录的字符串时会触发溢出。由于错误的计算,如果传递给函数的字符串等于或超过1023字节,会由于写\'\'\0\'\'字节超过缓冲区边界: - ------8<------cut-here------8<------ char buff[1024]; ... va_start(args, fmt); vsnprintf(buff, sizeof (buff), fmt, args); va_end(args); buff[sizeof (buff) - 1] = 0; if ((n = strlen(buff)) > 0 && buff[n-1] != \'\'\n\'\') { buff[n++] = \'\'\n\'\'; buff[n++] = \'\'\0\'\'; } - ------8<------cut-here------8<------ 本地或远程攻击者可以发送精心构建的RPC请求,发送到rpc.mountd守护进程中,可导致拒绝服务攻击,或者以root用户权限在系统上执行任意指令。