hpaftpd是一款高性能FTP服务程序。 hpaftpd多个命令存在边界条件错误,远程攻击者可以利用漏洞以应用程序进程权限执行任意指令。 hpaftpd读取用户数据使用如下代码: n = nb_get(nbc, buf, BUF_SIZE - 1); 这里BUF_SIZE定义为: #define BUF_SIZE 8192 而此BUF_SIZE用于登录用户数据,如: sprintf(obuf, "331 Password required for %s\r\n", ftpc->user); ftpc->user限制于8192,而obuf也限制在8192: char buf[BUF_SIZE], obuf[BUF_SIZE]; /* Input buffer, output buffer */ 提供超长数据可导致溢出,以下命令也同样会溢出obuf缓冲区: * USER * PASS (with a combination of a USER command) * CWD * MKD * RMD * DELE * RNFR * RNTO (with a vald RNFR combination) Hpaftpd 1.01 目前没有解决方案提供: <a href="http://hpaftpd.sourceforge.net/" target="_blank">http://hpaftpd.sourceforge.net/</a>
hpaftpd是一款高性能FTP服务程序。 hpaftpd多个命令存在边界条件错误,远程攻击者可以利用漏洞以应用程序进程权限执行任意指令。 hpaftpd读取用户数据使用如下代码: n = nb_get(nbc, buf, BUF_SIZE - 1); 这里BUF_SIZE定义为: #define BUF_SIZE 8192 而此BUF_SIZE用于登录用户数据,如: sprintf(obuf, "331 Password required for %s\r\n", ftpc->user); ftpc->user限制于8192,而obuf也限制在8192: char buf[BUF_SIZE], obuf[BUF_SIZE]; /* Input buffer, output buffer */ 提供超长数据可导致溢出,以下命令也同样会溢出obuf缓冲区: * USER * PASS (with a combination of a USER command) * CWD * MKD * RMD * DELE * RNFR * RNTO (with a vald RNFR combination) Hpaftpd 1.01 目前没有解决方案提供: <a href="http://hpaftpd.sourceforge.net/" target="_blank">http://hpaftpd.sourceforge.net/</a>