内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

admin 2022年4月10日21:45:51评论46 views字数 1716阅读5分43秒阅读模式

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618) 

研究人员在三星的安卓内核中,找到了一个名为secfilter的模块。这个模块的initialization程序吸引了研究员的注意力,因为一些Netfilter hook在这里模块里被注册了。

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

这些hook被配置成了拦截所有进入的(NF_INET_LOCAL_IN) 和所有传出的(NF_INET_LOCAL_OUT)包。被拦截后,匹配特定条件的输出的TCP包最终到达一个名为getURL()的内部函数,这个函数会检查TCP数据是否类似于一个HTTP请求,并解析包含的URL。

为什么三星手机会把URL参数传入Android内核呢?这是来自用户空间应用的程序访问机制的一部分。可能的利用应用包括家长控制应用,这类应用需要实现系统级的URL过滤。


它是如何工作的?

Netfilter hook总是存在的,但是URL过滤机制只在适当的ioctl()请求传给用户空间设备/dev/url/之后才启用。在测试机中,该设备是secnetfilter组的访问成员:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

反过来,访问secnetfilter组的权限通过com.sec.andtroid.SAMSUNG_GET_URL许可被授予给应用,同时创建保护级签名。一个拥有这个权限的app可以配置设备使其能够使用不同的监控模式:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

如果实行任何阻塞模式,每个访问的URL会都会被放入队列然后被阻塞直到app停止阻塞它。

一个想要使用RUL过滤功能的app应该实现以下逻辑:

第一,app能够使用某个阻塞模式,例如通过写入以下二进制数据到/dev/rul:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

然后,app在/dev/url轮询直到一些数据可读。读取数据的格式如下:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

最后,app检查URL,根据一些特定的应用逻辑做出决定,把决定告诉驱动,在/dev/url中写入下面的字节:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

内核模块通过直接引用从缓存中读取整数(如,filterMode = *(int *)data),因此数据必须是little-endian格式。当内核模块接收一个SET_USER_SELECT命令,他检查是否接收对应阻塞请求的ID(如,对应一个阻塞TCP流)并根据app决定作用于他。

目前只确定了一个名为com.symantec.familysatety应用程序,它使用了此权限,因此所有的URL过滤机制可能不是很广泛,或者么能它仍然处于开发的早期。

安全隐患

如前面所述,只有三星app store中的某些应用才能够获得SAMSUNG_GET_URL权限,这个模块应该引起广大三星用户的关注。他披上了"保护儿童"的外衣,但是它仍然是一个允许"授权"应用监控所有访问的URL。

总之,除了道德和隐私方面,仅仅从科技角度,这个模块都是相当令人担心的。确实,在URL过滤机制机制已经被"授权"app启动后,任何用户空间应用都可以在HTTP解析代码中触发一个空指针引用,然后导致系统崩溃。

触发这个bug非常简单,只要使用没有URL的HTTP请求就可以了,比如:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

这样一个请求的实际目的并不相关,因为当URL过滤可以实行时,所有的outgoing HTTP流量都需要被检查。

从科技角度讲,三星通过他的开源发布中心开源了他们的Android内核代码。对于前面提到的空指针引用,有漏洞的代码就在drivers/secfilter/urlparser.c,函数getURL()。概括的说,该模块通过以下调用提取HTTP请求路径:

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

dataStart是一个char string,在http请求方法token之后指向。但是,当findStringByTag()处理有害请求时会为HTTP路径找到一个长度为零的string,并且留下未初始化的node->url。几行之后,node->url被废弃并且此时还是空的。

受影响设备

我们确认这个问题影响以下设备型号。其他的型号和固件版本可能也会被影响,但是还没有进行测试。

SM-N9005, Build N9005XXUGBOB6 (Note 3)

SM-G920F, Build G920FXXU2COH2 (Galaxy S6)


来源:freebuf.com

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

原文始发于微信公众号(CNNVD安全动态):内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月10日21:45:51
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内核区域URL过滤漏洞影响三星Note 3、Galaxy S6(CNNVD-201601-618)https://cn-sec.com/archives/872431.html

发表评论

匿名网友 填写信息