漏洞详情
摘要
Scapy <v2.7.0存在不安全反序列化漏洞,当通过-s选项本地加载恶意会话文件时,攻击者可执行任意代码。这需要诱使用户手动加载恶意会话文件。
详细信息
Scapy的交互式shell支持使用gzip压缩的pickle文件加载会话:
|
|
在内部,这会触发:
|
|
由于对反序列化对象未执行任何验证或限制,通过__reduce__()嵌入的任何代码都将立即执行。这使得攻击者可以轻松在共享文件夹中放置恶意的.pkl.gz文件,并由不知情用户执行。
该漏洞存在于load_session函数中,该函数通过-s CLI标志或通过conf.session以编程方式对.pkl.gz文件使用pickle.load()进行反序列化。
受影响源代码行: https://github.com/secdev/scapy/blob/master/scapy/main.py#L569-L572
|
|
影响
这是一个经典的反序列化漏洞,当反序列化不受信任的数据时会导致代码执行(CE)。 任何能够诱骗其他用户加载精心构造的.pkl.gz会话文件(例如通过-s选项)的用户都可以执行任意Python代码。
漏洞类型:不安全反序列化(Python pickle) CWE:CWE-502:不受信任数据的反序列化 CVSS v4.0向量:CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N CVSS评分:5.4(中危) 影响:任意代码执行 攻击向量:本地或供应链(恶意.pkl.gz) 受影响用户:任何加载会话文件的用户(即使是交互式) 受影响版本:Scapy v2.6.1
缓解措施
- 不要使用"会话"(启动Scapy时的-s选项)
- 使用Scapy 2.7.0+,其中会话机制已被移除
参考
- GHSA-cq46-m9x9-j8w2
- secdev/scapy@13621d1