漏洞背景与影响范围
在Linux服务器生态中,服务端软件的安全隐患常常被忽视,但一旦被利用,后果往往极为直接。近期曝出的Linux Kiss Server格式串漏洞,为这类“轻量级替代方案”敲响了警钟——即便是用于替换PC-LINK的小型工具,也可能因一行代码的疏忽,沦为攻击者的入侵跳板。
受影响系统版本
Tomas Brandysky Linux Kiss Server 1.2
漏洞技术细节
Linux Kiss Server原本旨在替代PC-LINK软件的服务程序,可运行为守护进程,也可在前台直接运行。漏洞正出现在前台模式下的log_message()函数中——该函数位于lks.c文件,存在典型的格式字符串处理缺陷。攻击者一旦成功利用,即可获得未授权访问权限。
直接查看漏洞代码会更清晰:
Function log_message():
if(background_mode == 0)
{
if(type == 'l')
fprintf(stdout,log_msg);
if(type == 'e')
fprintf(stderr,log_msg);
free(log_msg);
}
Function kiss_parse_cmd():
/* check full command name */
if (strncmp(cmd, buf, cmd_len))
{
asprintf(&log_msg,"unknow command: `%s'", buf);
log_message(log_msg,'e');
goto error;
}
buf = cmd_len;
根本问题在哪里?log_message()直接使用用户可控的log_msg作为格式化字符串参数,而并未通过%s等格式说明符进行安全包装。攻击者如果构造类似%n%n%n的恶意输入,就能触发漏洞——在kiss_parse_cmd()处理未知命令时,buf中的内容会被传入log_message(),进而执行危险的格式字符串操作。
官方补丁与缓解建议
截至目前,厂商尚未发布任何补丁或升级版本。对于正在使用Linux Kiss Server 1.2的用户,建议持续关注官方项目主页,留意后续安全更新:https://freshmeat.net/projects/lks/。在补丁推出之前,如果业务并非必须使用前台模式,可以尝试以守护进程方式运行,从而绕过该漏洞的触发条件。当然,更稳妥的做法是暂时替换为其他经过安全审计的同类工具。
