CVE-2025-20281: Cisco ISE API 인증되지 않은 원격 코드 실행 취약점
"Cisco Identity Services Engine(ISE)의 취약점, 특히 enableStrongSwanTunnel 메서드에서 루트 권한으로 명령 삽입이 가능했습니다. 이는 처음에 역직렬화 취약점으로 보고되었으나, 명령 삽입 결함도 포함하고 있었습니다. 연구원 Kentaro Kawane은 공격자가 제공한 데이터가 sudo 권한으로 쉘 스크립트를 실행하는 데 사용된다는 것을 발견했습니다. Java의 exec() 메서드가 명령을 토큰화하는 방식 때문에 악용은 처음에 예상했던 것보다 더 복잡했습니다. Java의 StringTokenizer는 따옴표를 무시하여 직접적인 명령 실행을 방지했지만, 연구원은 bash의 내부 필드 구분자(${IFS}) 변수를 사용하여 이를 우회했습니다. 이를 통해 명령이 단일 인수로 삽입되어 토큰화 문제를 피할 수 있었습니다. 삽입된 명령은 처음에 Docker 컨테이너 내에서 실행되었지만, 컨테이너가 특권 모드로 실행되었기 때문에 연구원은 "User-Mode Helpers" 기술을 사용하여 컨테이너를 탈출하고 호스트 시스템에서 루트 접근 권한을 얻었습니다. 페이로드의 공백 문자 제한을 우회하기 위해 Base64 인코딩이 사용되었습니다. 완전한 악용은 취약한 엔드포인트로 특별히 조작된 POST 요청을 보내는 것을 포함했습니다. 이러한 성공적인 악용은 전체 시스템 침해로 이어지는 취약점들의 조합을 보여줍니다. 연구원은 Java의 exec() 동작과 특권 Docker 컨테이너의 기능을 모두 이해하는 것의 중요성을 강조했습니다. 이 분야에 대한 추가 연구가 계획되어 있습니다."
enableStrongSwanTunnel메서드에서 루트 권한으로 명령 삽입이 가능했습니다. 이는 처음에 역직렬화 취약점으로 보고되었으나, 명령 삽입 결함도 포함하고 있었습니다. 연구원 Kentaro Kawane은 공격자가 제공한 데이터가 sudo 권한으로 쉘 스크립트를 실행하는 데 사용된다는 것을 발견했습니다. Java의exec()메서드가 명령을 토큰화하는 방식 때문에 악용은 처음에 예상했던 것보다 더 복잡했습니다. Java의StringTokenizer는 따옴표를 무시하여 직접적인 명령 실행을 방지했지만, 연구원은bash의 내부 필드 구분자(${IFS}) 변수를 사용하여 이를 우회했습니다. 이를 통해 명령이 단일 인수로 삽입되어 토큰화 문제를 피할 수 있었습니다. 삽입된 명령은 처음에 Docker 컨테이너 내에서 실행되었지만, 컨테이너가 특권 모드로 실행되었기 때문에 연구원은 "User-Mode Helpers" 기술을 사용하여 컨테이너를 탈출하고 호스트 시스템에서 루트 접근 권한을 얻었습니다. 페이로드의 공백 문자 제한을 우회하기 위해 Base64 인코딩이 사용되었습니다. 완전한 악용은 취약한 엔드포인트로 특별히 조작된 POST 요청을 보내는 것을 포함했습니다. 이러한 성공적인 악용은 전체 시스템 침해로 이어지는 취약점들의 조합을 보여줍니다. 연구원은 Java의exec()동작과 특권 Docker 컨테이너의 기능을 모두 이해하는 것의 중요성을 강조했습니다. 이 분야에 대한 추가 연구가 계획되어 있습니다."