CVE:CVE-2004-0131
CNNVD:CNNVD-200403-025
GNU Radius是一款开放源代码远程用户验证和审计服务器。
GNU Radius在处理部分UDP数据包时存在问题，远程攻击者可以利用这个漏洞对服务程序进行拒绝服务攻击。
问题存在于lib/logger.c文件定义的rad_print_request()中：
[0] stat_pair = avl_find(req->request， DA_ACCT_STATUS_TYPE);
    if (stat_pair) {
[1]     VALUE_PAIR *sid_pair = avl_find(req->request，
                        DA_ACCT_SESSION_ID);
[2]     DICT_VALUE *dval = value_lookup(stat_pair->avp_lvalue，
                        "Acct-Status-Type");
        char nbuf[64]， *stat;
[3]     if (dval)
            stat = dval->name;
        else {
[4]         snprintf(nbuf， sizeof nbuf， "%ld"， sid_pair->avp_lvalue);
            stat = sbuf;
...
接收到包含属性Acct-Status-Type，但没有任何数据的UDP包时会触发此漏洞。rad_print_request() 的[0]行Acct-Status-Type被调用，在[1]行Acct-Session-Id也被调用，而在[2]上本地指针dval指向Acct-Status-Type，由于没有任何值赋给此变量，因此dval会变为NULL，程序会由于引用非法而导致崩溃。
solution:Upgrade gnu radius to a higher version than 1.1,and avoid the version 1.1