CVE:CVE-2003-0450
CNNVD:CNNVD-200308-027
radiusd-cistron是一款RADIUS协议实现。
Cistron-RADIUS服务器没有正确处理超大NAS号，远程攻击者可以利用这个漏洞破坏服务进程内存信息，可能以进程权限在系统上执行任意指令。
Cistron RADIUS当处理用户提供的数据时在调用sprintf()函数时没有正确使用"%d"格式符，攻击者如果传送一个有符号值作为NAS-Port端口数据，就可以导致覆盖服务器进程的内部内存数据，精心构建提交数据可能以RADIUS进程权限(一般是root)在系统上执行任意指令。
有漏洞代码如下：
acct.c:
static void make_wtmp(struct radutmp *ut， struct utmp *wt， int status)
{
        char            buf[32];
[...]
#if UT_LINESIZE > 9
        sprintf(buf， "%03d:%.20s"， ut->nas_port， s);
#else
        sprintf(buf， "%02d%.20s"， ut->nas_port， s);
#endif
在Linux上， UT_LINESIZE > 9.
如果ut->nas_port > 2^31，那么%03d就可会扩展成一个负数，因此为11个字符，加上冒号和20个字符，最后追加NULL值，就会扩展为33个字符，造成单字节溢出。
solution:Upgrade cistron radius_daemon to a higher version than 1.6.6,and avoid the version (,1.6.6]