Heimdal是一个Kerberos 5的实现。 Heimdal的FTPD服务程序实现上存在内存引用漏洞,远程攻击者可能利用此漏洞导致服务器程序不可用。 Heimdal的ftpd.c文件中的gss_userok()函数使用了未初始化的指针: . int gss_userok(void *app_data, char *username) { ... 77 if (data->delegated_cred_handle != GSS_C_NO_CREDENTIAL) { 78 krb5_ccache ccache = NULL; 79 (1) char* ticketfile; <---- declared ticketfile without initializer 80 struct passwd *pw; 81 82 pw = getpwnam(username); 83 84 (2) if (pw == NULL) { 85 ret = 1; 86 goto fail; 87 } 88 ... 110 111 fail: 112 if (ccache) 113 krb5_cc_close(gssapi_krb5_context, ccache); 114 (3) free(ticketfile); <---- free the uninitialized variable 115 } (1)处未经初始化便声明了ticketfile文件,如果匹配(2)处条件的话,就会未经初始化ticketfile到达(3),然后释放未经初始化的变量。这可能导致不可预期行为或崩溃等问题。
Heimdal是一个Kerberos 5的实现。 Heimdal的FTPD服务程序实现上存在内存引用漏洞,远程攻击者可能利用此漏洞导致服务器程序不可用。 Heimdal的ftpd.c文件中的gss_userok()函数使用了未初始化的指针: . int gss_userok(void *app_data, char *username) { ... 77 if (data->delegated_cred_handle != GSS_C_NO_CREDENTIAL) { 78 krb5_ccache ccache = NULL; 79 (1) char* ticketfile; <---- declared ticketfile without initializer 80 struct passwd *pw; 81 82 pw = getpwnam(username); 83 84 (2) if (pw == NULL) { 85 ret = 1; 86 goto fail; 87 } 88 ... 110 111 fail: 112 if (ccache) 113 krb5_cc_close(gssapi_krb5_context, ccache); 114 (3) free(ticketfile); <---- free the uninitialized variable 115 } (1)处未经初始化便声明了ticketfile文件,如果匹配(2)处条件的话,就会未经初始化ticketfile到达(3),然后释放未经初始化的变量。这可能导致不可预期行为或崩溃等问题。