보안동향

최신 보안정보를 신속하게 전해드립니다.

[보안이슈] WordPress Plugin에서 발견된 Remote Command Execution 취약점

2019-07-17

현재 약 20만개 이상의 웹사이트에 설치되어있는 WordPress의 Ad Inserter Plugin 2.4.21 이하 버전에서 인증된 공격자에 의한 원격 php코드 실행 가능 취약점이 발견되었다.

 

 ※취약점 정보
취약점 정보 인증된 원격 코드 실행 취약점
영향을 받는 플러그인 Ad Inserter
영향을 받는 버전 2.4.21 이하
CVSS Score 9.9(Critical)
CVSS Vector CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

 

Ad Inserter는 WordPress의 광고관리 Plugin으로 다양한 광고 배너에서 최적화된 광고를 표시해주는 Plugin이다. 현재 다수의 WordPress기반 웹사이트에서 사용중인 이 Plugin은 광고 미리보기 기능을 통하여 관리자에 의해 광고가 사용자에게 표시되기 전 광고의 내용에 악의적인 내용이 있는지 확인할 수 있다. 

 

해당 취약점은 WordPress 웹사이트에서 CSRF (Cross-site request forgery)공격을 막기 위한 인증에 사용되는 check_admin_referer() 함수를 악용하는 취약점으로, 만료되거나 반복되는 request를 막기 위한 one-time token인 Nonce 사용하는 방식을 통해 동작하게 된다.

[그림 1] ajax_backed 관련 소스코드(출처: www.wordfence.com)

 

Ad Inserter의 CSRF 방지기능은 Ajax의 ai_ajax_backend 기능을 통해 접근하게 된다. 기본적으로 Ajax 작업은 로그인 한 사용자만이 액세스 할 수 있으며 이 작업의 구현 방식은 "check_admin_referer()" 함수의 코드 내에 추가적인 보안 컨트롤을 통해 수행되게 된다. 

 

해당 함수의 추가적인 보안 컨트롤의 역할을 수행하는 것이 Nonce라고 하는 임의의 숫자와 문자로 이루어진 Hash값으로 check_admin_referer() 함수가 Request에 Nonce 값이 존재하는지 여부를 확인하는 것을 통해 악의적인 접근을 차단하게 된다.

[그림 2] ai_ajax_backend() 함수 (출처: www.wordfence.com)

 

 

하지만, 해당 Plugin에서는 Nonce값이 접근 통제의 수단으로 사용되고 있어 Nonce값을 보유중인 인증된 사용자의 경우 디버깅 기능 또한 사용이 가능하다. Subscriber Level이상의 Nonce를 보유한 사용자는 admin-ajax.php에 악성 페이로드를 포함하는 php코드를 전송하여 실행시키는 것이 가능하다.

[그림 3] 악성 페이로드 실행 결과 (출처: www.wordfence.com)

 

 

WordPress Ad Inserter Plugin의 해당 취약점을 보완한 2.4.22 패치가 7월 13일 업데이트 되었으므로 해당 Plugin을 사용하고 있는 경우 업데이트 할 것을 권고한다.

 

[출처]

https://www.wordfence.com/blog/2019/07/critical-vulnerability-patched-in-ad-inserter-plugin/



보안관제센터 MIR Team

목록