🇰🇷 한글 설명
WordPress용 Bookly 플러그인에서 PHP 타입 저글링(Type Juggling)으로 인한 권한 우회 취약점이 발견되었습니다. 공격자는 인증되지 않은 상태에서 검증 코드를 'true'로 조작하여 고객 인증 단계를 통과하고, 기존 고객의 개인정보를 임의로 수정할 수 있습니다.
💡 쉬운 설명
로그인 없이도 다른 사람의 예약 정보를 마음대로 바꿀 수 있는 보안 결함입니다. 숫자로 된 비밀번호 대신 '참(true)'이라는 값을 보내면 시스템이 이를 올바른 비밀번호로 착각하여 문을 열어줍니다.
🇺🇸 원문 (English)
The Online Scheduling and Appointment Booking System – Bookly plugin for WordPress is vulnerable to Authorization Bypass via PHP Type Juggling in all versions up to, and including, 28.2. This is due to the `postValidateCustomer()` function using a loose PHP inequality operator (`!=`) to compare the session-stored one-time verification code against the attacker-supplied `verification_code` parameter — a flaw that is further exposed by the booking AJAX controller registering all its methods as `wp_ajax_nopriv_` handlers and unconditionally overriding `csrfTokenValid()` to return true, leaving the endpoint both unauthenticated and CSRF-unprotected. This makes it possible for unauthenticated attackers to bypass the phone/email ownership verification step and overwrite the name, email, phone, and address fields of any arbitrary existing Bookly customer record, redirecting that customer's booking notifications to attacker-controlled contact details. The bypass is achievable because the `json_data` input channel decodes input via `json_decode()`, which preserves real PHP types and causes the `wp_kses` filter to leave non-string values such as the JSON boolean `true` untouched; submitting `true` as the `verification_code` satisfies the loose comparison against the session's non-zero integer code (generated by `mt_rand(100000, 999999)`), causing `true != <non-zero int>` to evaluate as `false` and the guard to be bypassed.
📍 영향받는 시스템
WordPress Bookly plugin (버전 28.2 및 그 이하 모든 버전)
⚔️ 공격 벡터
JSON 데이터를 이용해 verification_code 파라미터에 불리언(boolean) true 값을 전송하여 인증 우회
🛡️ 대응 방법
Bookly 플러그인을 최신 버전으로 업데이트하고, 느슨한 비교 연산자(!=)를 엄격한 비교 연산자(!==)로 수정해야 합니다.
🔧 검증 코드
출력된 결과에서 Bookly 플러그인의 버전이 28.2 이하인지 확인하십시오.
wp plugin list --status=active | grep -i 'bookly'