热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【漏洞分析】CVE20169311:NTPD漏洞可以引发拒绝服务

翻译:overXsky预估稿费:100RMB投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿前言许多设备的使用都离不开网络,其中,用来同步网络上各种设备时间使用的是网络时间协议(N

http://p0.qhimg.com/t01114bd023aba03a99.jpg

翻译:overXsky

预估稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

许多设备的使用都离不开网络,其中,用来同步网络上各种设备时间使用的是网络时间协议(Network Time Protocol)。网络时间协议守护进程(Network Time Protocol Daemon ,NTPD)是此协议的开源实现。在过去的几个月内,NTPD被陆续报道了大量的漏洞,其中一个就是CVE-2016-9311——可以引发崩溃从而导致拒绝服务。在这篇文章中,我们将从细节着手分析这个漏洞。


查找更改

通过检查补丁程序,我们在ntp_control.c文件中找到了 “report_event” 函数,它就是该漏洞的修复程序。 补丁比较工具显示如下(摘自http://bugs.ntp.org/attachment.cgi?id=1460&action=diff):

http://p2.qhimg.com/t015e21611977ea0bb1.png

图一左侧显示的是未修补的代码,右侧是已修补的代码。

在易受攻击的代码中有一个判断语句:

INSIST(peer!=NULL)

INSIST函数定义在ntp_assert.h头文件中,如果peer==NULL,那么返回值为真,判断语句失败,NTPD将崩溃。

对比修复后的代码可以明显的发现,原来的INSIST(peer!=NULL)判断语句被替换成了简单的if判断:

if ((err & PEER_EVENT) && !peer)
    return

if语句会检查“peer”的值是否为NULL,如果是的话它就简单地返回并防止崩溃。


分析根本原因

要触发这个漏洞,程序流需要执行到“report_event”函数,并给它传送特定的参数值以便使得INSISIT函数判断失败从而崩溃。

当NTPD接收到一个数据包时,它会去调用ntp_proto.c中的接收函数“receive”。接收函数会对接收到的分组执行各种检查,其中一项检查是确认接收到的加密否定应答(crypto-NAK)分组是否有效。

http://p6.qhimg.com/t017d27d1a34d72ae7d.png

如果NTPD收到一个无效的NAK数据包,它将调用易受攻击的函数“report_event”。该函数会查找数据包中陷阱(trap)的数量,如果没有在NTPD上配置过陷阱(关于NTPD traps可以参考这里),该函数将简单返回,后面易受攻击的代码片段也不会被执行。

http://p8.qhimg.com/t01055b249510d5474c.png

当且仅当在NTPD中启用陷阱时,才能利用此漏洞。 要检查NAK数据包是否有效会用到“valid_NAK” 函数,它被定义在ntp_proto.c文件中,代码如下:

http://p6.qhimg.com/t019d019f69fb930a6e.png

从上面的代码中可以总结出,一个数据包符合以下几点特征中的任何一个即为无效:

1. 模式不是MODE_SERVER、MODE_ACTIVE和MODE_PASSIVE。

2. keyid不为0。

3. peer为NULL,或者peer没有密钥。

4. ORIGIN不匹配。

如果NTPD上启用了陷阱功能,触发此漏洞只需要构造一个没有peer存在(即peer=NULL)的“无效NAK”数据包然后发送即可。为了证实这一点,我们用调试器来对未修复版本代码进行了测试,如下所示,NTPD因为判断失败而崩溃了:

http://p7.qhimg.com/t01651c684111494416.png


总结

此漏洞在NTPD启用了陷阱功能的情况下可以被利用来触发崩溃引起拒绝服务。NTPD默认情况下不启用陷阱。利用此漏洞不需要授权。

防范此漏洞可以通过安装最新的补丁程序或更新最新版本的NTPD,或者使用McAfee网络安全平台等防护软件。


参考文献

NTP Security Notice

CVE-2016-9311 on NVD

CERT/CC Vulnerability Note VU#633847


推荐阅读
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 在优化Nginx与PHP的高效配置过程中,许多教程提供的配置方法存在诸多问题或不良实践。本文将深入探讨这些常见错误,并详细介绍如何正确配置Nginx和PHP,以实现更高的性能和稳定性。我们将从Nginx配置文件的基本指令入手,逐步解析每个关键参数的最优设置,帮助读者理解其背后的原理和实际应用效果。 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 深入解析 OpenSSL 生成 SM2 证书:非对称加密技术与数字证书、数字签名的关联分析
    本文深入探讨了 OpenSSL 在生成 SM2 证书过程中的技术细节,重点分析了非对称加密技术在数字证书和数字签名中的应用。非对称加密通过使用公钥和私钥对数据进行加解密,确保了信息传输的安全性。公钥可以公开分发,用于加密数据或验证签名,而私钥则需严格保密,用于解密数据或生成签名。文章详细介绍了 OpenSSL 如何利用这些原理生成 SM2 证书,并讨论了其在实际应用中的安全性和有效性。 ... [详细]
author-avatar
babe
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有