연구진이 Click2Shell이라는 이름을 붙인 WordPress 코어의 새로운 취약점에 대한 기술 세부 정보와 개념 증명 코드를 공개했다. 이 취약점은 공격자가 직접 인증하지 않아도 일련의 익스플로잇을 통해 원격 서버에서 PHP 코드를 실행할 수 있게 한다. WordPress는 지난주 출시된 7.1.1 버전에서 이 결함을 해결했지만, 시험용 익스플로잇이 공개되면서 영향을 받는 사이트의 업데이트가 더욱 시급해졌다.
이 공격 체인은 어떻게 작동하는가?
침투 테스트 플랫폼 pwn.ai의 연구원 Paulos Yibelo는 이 취약점을 발견해 8월 22일 WordPress에 신고했다. 보고서에 따르면, 테마 미리보기 링크에서 가져온 값이 WordPress.org의 Themes API를 통해 한 차례 해석된 뒤 관리자의 브라우저에서 실행되는 JavaScript에 의해 안전하지 않은 방식으로 처리된다.
이로 인해 관리자가 명시적으로 설치하지 않아도 공식 디렉터리의 테마를 사이트에 추가할 수 있다. 테마가 활성화되지 않은 상태에서도 Customizer 도구에서 미리보기되는 동안 테마 내부의 PHP 코드가 실행될 수 있다. 공격을 완료하려면 공격자가 특별히 제작된 링크를 보내야 하지만, 사이트에 로그인한 관리자가 해당 링크를 방문해야 한다.
익스플로잇 이후 어떤 일이 발생할 수 있는가?
연구진은 공격자가 지정한 PHP 코드를 실행하기 위해 취약한 테마를 공격 체인의 두 번째 부분으로 사용했다. 전체 보고서에 따르면 파일 수정 또는 삭제를 비롯해 서버에서 명령을 실행하고, 사용자 데이터와 데이터베이스 인증 정보 및 인증 비밀값이 들어 있는 wp-config.php 파일에 접근할 수 있다.
이를 통해 악성 관리자 계정을 만들거나 사이트에 유해한 스크립트를 삽입할 수 있다. 또한 연구원에 따르면 WordPress Core 7.1.0 및 이전 버전에 존재하는 기본 결함을 이용해 사이트가 WordPress.org 디렉터리에 있는 다른 취약한 테마를 강제로 설치하도록 할 수 있다.
필요한 권한은 누구에게 있는가?
공격자는 WordPress 계정이나 설치용 nonce 토큰, 별도의 관리자 권한이 필요하지 않다. 그러나 Click2Shell 공격 체인은 요청을 보내는 것만으로는 작동하지 않으며, 로그인한 관리자가 링크와 상호작용해야 한다. WordPress 보안 업체 Patchstack은 Author 및 Editor 계정에는 테마 설치에 필요한 권한이 없다고 밝혔다.
링크는 표적 피싱을 통해 관리자에게 전달되거나, 기존 XSS 취약점을 통해 관리자의 브라우저가 요청을 보내도록 만들 수 있다. 따라서 관리자 상호작용이라는 조건이 결함의 위험성을 없애지는 않지만 공격 시나리오를 제한하며, 완전히 자동화된 원격 익스플로잇으로 만들지는 않는다.
실제로 무엇이 바뀌는가?
WordPress는 테마 이름을 jQuery 선택기에서 사용하기 전에 이스케이프하고 선택기를 실제 테마 카드로 제한하는 방식으로 문제를 해결했다. Patchstack은 특히 전체 세부 정보와 개념 증명 코드가 공개된 이후 7.1.1 또는 최신 버전으로 업데이트할 것을 권고한다.
즉시 업데이트하기 어려운 사이트에 대해 Patchstack은 DISALLOW_FILE_MODS 설정을 활성화하면 사이트가 테마나 악성 플러그인을 강제로 설치하는 것을 막을 수 있다고 설명한다. 그러나 이는 일시적인 완화 조치일 뿐, WordPress 코어 업데이트와 예상치 못한 변경 사항 또는 관리자 계정에 대한 점검을 대신할 수는 없다.