🇰🇷 한글 설명
odhcpd는 OpenWrt에서 사용하는 DHCPv6, DHCPv4, 라우터 광고 서버입니다. 25.12 이전 버전에서는 하나의 메시지 안의 여러 IA 옵션이 동일한 Reconfigure 인증 키를 재사용하기 위해 메시지별 'first' 리스 포인터를 유지하는데, 인접 네트워크의 클라이언트가 보낸 DHCPv6 REQUEST로 이 포인터가 해제된 리스를 가리키게 되어 힙 use-after-free 읽기가 발생할 수 있습니다. 검증된 영향은 인증되지 않은 인접 네트워크 공격자에 의한 서비스 거부 및 DHCPv6 Reconfigure/ForceRenew 키 혼동이며, 이 취약점 단독으로 임의 PC 제어는 입증되지 않았습니다.
💡 쉬운 설명
같은 네트워크에 있는 공격자가 특정 DHCP 요청 패킷을 보내면 OpenWrt 라우터의 DHCP 서버가 잘못된 메모리를 읽어 멈추거나 오작동할 수 있습니다. 패치된 버전(25.12 이상)으로 업데이트하면 이 문제가 해결됩니다.
🇺🇸 원문 (English)
odhcpd is the DHCPv6, DHCPv4, and router-advertisement server used by OpenWrt. Prior to version 25.12, odhcpd's DHCPv6 IA handler keeps a per-message `first` lease pointer so multiple IA options in one message reuse the same Reconfigure authentication key. A DHCPv6 REQUEST from an adjacent-network client can make the first IA set `first`, then make a later same-IAID IA fail the on-link check and free that same lease, leaving `first` dangling. A following IA in the same packet allocates a new lease and copies `first->key`, producing a 16-byte heap-use-after-free read. ASan confirms the UAF; native tracing shows the packet shape can deterministically reclaim the freed lease as the destination allocation, producing a zeroed Reconfigure key copy. The validated impact is unauthenticated adjacent-network denial of service and DHCPv6 Reconfigure/ForceRenew key confusion. Arbitrary PC control is not proven for this UAF alone. This issue has been patched in version 25.12.
📍 영향받는 시스템
OpenWrt의 odhcpd 25.12 이전 버전
⚔️ 공격 벡터
같은 로컬 네트워크(인접 네트워크)에서 조작된 DHCPv6 REQUEST 패킷을 전송하여 해제된 메모리를 참조하게 만듦
🛡️ 대응 방법
odhcpd를 25.12 이상 버전으로 업데이트
🔧 검증 코드
출력된 버전이 25.12 미만이면 취약하므로 25.12 이상으로 업데이트해야 하며, 버전 정보가 없으면 odhcpd가 설치되어 있지 않은 것입니다.
opkg list-installed odhcpd 2>/dev/null | grep -E 'odhcpd'