近日,国家信息安全漏洞共享平台(CNVD)收录了RTP信息泄露漏洞(CNVD-2017-26420,发现者命名为“RTP Bleed”),攻击者利用漏洞在不需要中间人身份的情况下,实现伪造音频注入,盗取音视频流或劫持语音通信,构成信息泄露和拒绝服务风险。由于RTP协议的实现涉及较为广泛的中间件或应用软件,有可能造成大规模的影响。

一、漏洞情况分析

RTP实时传输协议(Real-time Transport Protocol)是一种标准网络传输协议,RTP协议主要实现在互联网上传递音频和视频的标准数据包格式。RTP协议通常和RTP控制协议(RTCP)以及音视频流应用协议(H.323、 SIP)一起使用,广泛应用于流媒体相关的通讯和娱乐(如:网络电话、视频会议、网络电视和基于网络的一键通业务)。

近期,国外安全研究公司EnableSecurity的安全研究人员Klaus-Peter Junghanns和Sandro Gauci在测试中发现了RTP协议实现的信息泄露漏洞,并命名为“RTP Bleed”。RTP Bleed漏洞和RTP协议的设计虽有关联,但主要还是存在于RTP 代理(Proxy)的具体实现上。RTP代理主要通过在两个或多个参与方之间代理RTP流来解决影响RTC系统的NAT限制,RTP代理由于不能直接信任流数据中的RTP IP和端口信息,而是以“学习模式”检查传入的RTP流量但又不使用身份验证机制。这使得攻击者可以直接接收RTP流媒体数据,且不需要中间人攻击条件。除上述攻击可能外,由于 RTP代理和RTP协议堆栈在实现上轻易接受、转发或处理来自任何源的RTP包,因此攻击者可以发送特定构造的RTP数据包,注入至RTP流中。以上这两种攻击机制有可能导致流媒体信息泄露、会话劫持修改和拒绝服务。例如:攻击者可以将监听正在进行的电话呼叫或音视频会议。

CNVD对漏洞的综合评级均为“高危”。

二、漏洞影响范围

该漏洞影响十分广泛,可直接影响或间接影响到基于RTP协议的产品供应商或服务提供商。根据当前测试结果,确认已知受影响的产品如下:Asterisk 14.4.0、TPproxy (tested 1.2.1-2ubuntu1 and RTPproxy 2.2.alpha.20160822 (git))。

漏洞命名虽然参考了OpenSSL心脏滴血“HeartBleed”漏洞,但原理不完全相同。HeartBleed是因OpenSSL组件漏洞而泄露内存信息,RTPBleed是由于RTP协议实现缺陷而导致RTP流数据包存在暴露风险。

三、漏洞处置建议

当前各方还未给出正式的解决方案,当前推荐的临时解决方案是建议在各类产品和中间件中启用安全实时传输协议(SRTP),可以避免机密性和完整性不受到影响。SRTP可以与其他技术措施(例如使用静态IPS、支持ICE和STUN authentication等)相结合,可以避免对攻击途径的暴露。例如:WebRTC通过强制使用SRTP协议,就未受到漏洞的影响。

附:参考链接:

https://www.rtpbleed.com/#the-rtp-bleed-bug

https://github.com/kapejod/rtpnatscan

http://www.cnvd.org.cn/flaw/show/CNVD-2017-26420