Posadis DNS服务程序存在格式字符串漏洞

漏洞信息详情

Posadis DNS服务程序存在格式字符串漏洞

漏洞简介

Posadis是一款开放源代码的无缓冲DNS服务程序,设计目标是方便使用和配置,运行在Linux、Unix、Microsoft操作系统下。
Posadis在日志函数中存在格式字符串漏洞,可导致攻击者利用此漏洞执行任意代码或者进行拒绝服务攻击。
问题存在于log.cpp的日志函数上:

void log_print(message_log_level log_level, char *logmsg, …) {
char buff[4096];
long tsecs;
struct tm *tstruct;
va_list args;
/* compile buffer */
tsecs = time(NULL);
tstruct = localtime(&tsecs);
sprintf(buff, \”\\%04d/\\%02d/\\%02d \\%02d:\\%02d|\”, tstruct->tm_year + 1900,
tstruct->tm_mon + 1, tstruct->tm_mday, tstruct->tm_hour, tstruct->tm_min);
switch (log_level) {
case LOG_LEVEL_INFO: strcat(buff, \”INFO: \”); break;
case LOG_LEVEL_WARNING: strcat(buff, \”WARNING: \”); break;
case LOG_LEVEL_ERROR: strcat(buff, \”ERROR: \”); break;
case LOG_LEVEL_PANIC: strcat(buff, \”PANIC: \”); break;
}
va_start(args, logmsg);
vsprintf(&buff[strlen(buff)], logmsg, args);
va_end(args);
strcat(buff, \”\n\”);
/* and print it to various targets */
if (!no_stdout_log) printf(buff); <– heh
if (logfile) fprintf(logfile, buff); <– heh
#ifdef _WIN32
w32dlg_add_log_item(buff);
#endif
#ifdef HAVE_SYSLOG_H
syslog(log_level, \”\\%s\”, strchr(buff, \’\’|\’\’) + 1);
#endif
}

攻击者可以使用一个包含格式串的恶意字符串作为参数提供给printf函数,这可能导致攻击者任意修改任意内存的内容。这样,攻击者可能通过覆盖一个函数的返回地址,以DNS服务进程权限执行攻击者指定的任意代码。

漏洞公告

厂商补丁:
Posadis
——-
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://posadis.sourceforge.net/” target=”_blank”>
http://posadis.sourceforge.net/

参考网址

来源: BID
名称: 4378
链接:http://www.securityfocus.com/bid/4378

来源: XF
名称: posadis-logging-format-string(8653)
链接:http://www.iss.net/security_center/static/8653.php

来源: sourceforge.net
链接:http://sourceforge.net/forum/forum.php?forum_id=165094

来源: BUGTRAQ
名称: 20020327 Format String Bug in Posadis DNS Server
链接:http://online.securityfocus.com/archive/1/264450

来源: OSVDB
名称: 3516
链接:http://www.osvdb.org/3516

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享