🇰🇷 한글 설명
Avada Builder 플러그인 3.15.2 이하 버전의 fusion_get_widget_markup AJAX 엔드포인트에서 base64 디코딩된 JSON 값이 call_user_func()에 직접 전달되어 PHP 함수 인젝션 발생. 예측 가능한 논스 노출로 인해 공개 페이지의 Post Cards 또는 Table of Contents 요소를 통해 비인증 사용자가 임의 코드 실행 가능.
💡 쉬운 설명
WordPress의 인기 있는 페이지 빌더(Avada Builder) 플러그인에 보안 결함이 있어서 누구나 웹사이트에 접근해 악의적인 코드를 실행할 수 있습니다. 플러그인이 사용자 입력을 안전하지 않게 처리하고 보안 토큰을 쉽게 예측할 수 있기 때문입니다.
🇺🇸 원문 (English)
The Avada Builder (fusion-builder) plugin for WordPress is vulnerable to Unauthenticated Remote Code Execution via PHP Function Injection in versions up to and including 3.15.2. This is due to the `wp_conditional_tags` case in `Fusion_Builder_Conditional_Render_Helper::get_value()` passing attacker-controlled values from a base64-decoded JSON blob directly to `call_user_func()` without any allowlist validation. This is exploitable by unauthenticated attackers through the `fusion_get_widget_markup` AJAX endpoint, which is registered for non-privileged (unauthenticated) users via `wp_ajax_nopriv_fusion_get_widget_markup`. The endpoint is protected only by a nonce (`fusion_load_nonce`), but this nonce is generated for user ID 0 and is deterministically exposed in the JavaScript output of any public-facing page containing a Post Cards (`[fusion_post_cards]`) or Table of Contents (`[fusion_table_of_contents]`) element. This makes it possible for unauthenticated attackers to execute arbitrary code on affected sites.
📍 영향받는 시스템
WordPress Avada Builder (fusion-builder) 플러그인 버전 3.15.2 이하
⚔️ 공격 벡터
fusion_get_widget_markup AJAX 엔드포인트를 통한 비인증 원격 코드 실행 - Post Cards/Table of Contents 요소의 노출된 논스와 base64 인코딩 JSON 페이로드 이용
🛡️ 대응 방법
Avada Builder 플러그인을 3.15.3 이상으로 즉시 업데이트
🔧 검증 코드
공개 페이지 소스에서 fusion_load_nonce 스크립트 존재 확인 또는 WordPress CLI로 fusion-builder 버전 확인. 3.15.2 이하이면 취약점 존재
curl -s http://example.com/ | grep -oP 'fusion_load_nonce[^}]*' || wp plugin list --field=name,version 2>/dev/null | grep -i fusion