🇰🇷 한글 설명
WordPress용 PDFCrowd의 Save as PDF 플러그인 4.6.1 이하 버전에서 임의 함수 호출 취약점이 발견되었습니다. 공격자가 특정 숏코드 속성을 조작하여 암호화된 데이터 블롭을 생성한 뒤, 이를 AJAX 엔드포인트로 재전송함으로써 서버에서 임의의 PHP 함수를 실행할 수 있습니다. 이를 통해 API 키와 사용자 정보가 유출되거나 서버가 추가적으로 악용될 수 있습니다.
💡 쉬운 설명
웹사이트 플러그인의 허점을 이용해 해커가 서버에 숨겨진 명령을 내릴 수 있는 보안 구멍이 발견되었습니다. 이를 통해 관리자의 비밀 정보가 빠져나가거나 사이트가 해킹될 위험이 있습니다.
🇺🇸 원문 (English)
The Save as PDF Plugin by PDFCrowd plugin for WordPress is vulnerable to Arbitrary Function Invocation in all versions up to, and including, 4.6.1 via the `pdf_created_callback` shortcode attribute. The `eval_shortcode()` function copies any non-`button_`/non-`email_` shortcode attribute verbatim into a custom options array without sanitization, allowlist enforcement, or capability checks, and `create_button()` AES-encrypts that array — including the attacker-supplied callback value — and embeds the resulting blob in the rendered button HTML; when the blob is later POSTed to the unauthenticated `wp_ajax_nopriv_save_as_pdf_pdfcrowd` endpoint, `save_as_pdf_pdfcrowd()` decrypts it and invokes `$options['pdf_created_callback']` as a PHP callable at line 1722 with no `is_callable()` guard, no allowlist, and no capability check. This makes it possible for authenticated attackers, with Contributor-level access and above, to invoke arbitrary PHP functions or static class methods with plugin option data as the sole argument, enabling disclosure of the site's stored PDFCrowd API key and username or further server-side abuse. Note that the encryption boundary does not mitigate this vector because the server itself encrypts the attacker-chosen callback during shortcode rendering, supplying any authenticated Contributor with a cryptographically valid blob that any unauthenticated visitor can subsequently replay to trigger invocation.
📍 영향받는 시스템
WordPress PDFCrowd Save as PDF Plugin (버전 4.6.1 및 그 이하 모든 버전)
⚔️ 공격 벡터
권한이 있는 사용자(Contributor 이상)가 조작된 숏코드를 통해 생성된 암호화된 데이터를 AJAX 요청으로 재전송하여 임의 함수 호출
🛡️ 대응 방법
해당 플러그인을 최신 보안 패치가 적용된 버전으로 즉시 업데이트하십시오.
🔧 검증 코드
명령어 결과에 PDFCrowd 플러그인이 나타나면 설치된 것이며, 설치된 버전이 4.6.1 이하인지 확인이 필요합니다.
wp plugin list --status=active | grep -i 'pdfcrowd'