
U-Boot 1.1.3 부트로더 취약점에 대한 개념 증명용 익스플로잇 스위트로, 직렬 UART 연결을 통해 펌웨어 분석, 안전하지 않은 업데이트 테스트, 하드웨어 디버깅 인터페이스 익스플로잇을 가능하게 합니다.
이 PoC(Proof of Concept)는 2019년 8월 27일에 컴파일된 U-Boot 부트로더 버전 1.1.3의 취약점을 확인하기 위해 제작되었습니다. 이 코드는 OWASP IoT 보안 테스트 가이드(ISTG) 카테고리와 관련된 5가지 취약점을 구현합니다.
경고: 이 PoC는 테스트 권한이 있는 장치에서만 사용하십시오. 권한 없이 시스템에 사용하면 관련 법률을 위반할 수 있습니다.
# 필수 라이브러리 설치
pip install pyserial cryptography
이 PoC를 사용하려면 대상 장치의 직렬 인터페이스에 연결해야 합니다:
/dev/ttyUSB0, Windows에서 COM3)이 스크립트는 각 취약점을 개별적으로 또는 한 번에 모두 테스트할 수 있는 여러 작동 모드를 제공합니다.
python3 uboot_exploit_poc.py --port /dev/ttyUSB0
--exploit 매개변수를 사용하여 특정 익스플로잇을 실행할 수 있습니다:
# "안전하지 않은 업데이트 메커니즘" 취약점 테스트
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 1
# "하드코딩된 민감 값" 취약점 테스트
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 2
# "디버깅 인터페이스 접근" 취약점 테스트
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 3
# "펌웨어 다운그레이드 방지 기능 없음" 취약점 테스트
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 4
# "업데이트를 위한 안전한 채널 부재" 취약점 테스트
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 5
# 전송 속도 변경 (기본값: 115200)
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --baudrate 57600
# 직렬 타임아웃 변경 (기본값: 1초)
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --timeout 2
스크립트는 uboot_extracted 디렉토리를 생성하며 다음을 포함합니다:
full_exploitation_summary.txt 파일은 모든 취약점 테스트의 전체 요약을 제공합니다.
부트로더는 펌웨어 업데이트에 대한 적절한 서명 검증이 부족하여 승인되지 않은 펌웨어 설치를 허용합니다.
자격 증명 및 키와 같은 민감 값이 부트로더 바이너리에 하드코딩되어 있어 민감 정보 추출이 가능합니다.
디버깅 인터페이스가 충분히 보호되지 않아 인증 없이 저수준 시스템 제어에 접근할 수 있습니다.
부트로더에 롤백 방지 메커니즘이 없어 알려진 취약점이 있는 버전으로 다운그레이드가 가능합니다.
펌웨어 업데이트가 암호화나 인증 없이 안전하지 않은 채널을 통해 전송되어 가로채기 및 변조가 가능합니다.
이 PoC에서 수집된 증거는 CVE 제출을 지원하는 데 사용될 수 있습니다. CVE 제출 방법:
uboot_extracted 디렉토리에서 모든 로그와 증거 수집이 도구는 교육 및 전문 보안 테스트 목적으로만 제공됩니다. 저자는 이 도구로 인한 오용이나 손해에 대해 책임을 지지 않습니다. 시스템이나 장치를 테스트하기 전에 항상 적절한 권한을 획득하십시오.