CVE-2026-76089:
PHP 취약성 분석 및 완화
개요
CVE-2026-76089 is a missing authorization vulnerability in Formie, a Craft CMS plugin for creating forms developed by verbb. The flaw allows any authenticated Craft CMS control panel user to enumerate sent notification IDs and read full email content — including recipient headers and HTML email bodies containing submitted form data (PII) — without requiring the formie-accessSentNotifications or equivalent permission. Affected versions are Formie < 2.2.23 (Craft 4) and >= 3.0.0, < 3.1.31 (Craft 5). The vulnerability was disclosed on September 23, 2026, and carries a CVSS v3.1 base score of 7.7 (High) (GitHub Advisory).
기술적 세부 사항
The root cause is a missing object-level authorization check (CWE-862, CWE-639) in the SentNotificationsController::actionGetResendModalContent action, reachable via the control panel route formie/sent-notifications/get-resend-modal-content. The action only called requireAcceptsJson() before loading a SentNotification record by a caller-supplied id parameter, with no permission gate or ownership verification — a classic Insecure Direct Object Reference (IDOR) pattern. Sibling actions in the same controller correctly enforced authorization, making this an isolated oversight. The fix for Craft 4 (commit 9f4e23c) adds $this->requirePermission('formie-viewSentNotifications'), while the Craft 5 fix (commit ff81a89) enforces $sentNotification->canView($currentUser) after loading the record (GitHub Advisory, Craft 4 Commit, Craft 5 Commit).
영향
Successful exploitation allows any authenticated control panel user — regardless of their assigned Formie permissions — to enumerate all sent notification IDs and retrieve the full HTML email body and recipient headers for each notification, exposing personally identifiable information (PII) submitted through site forms (e.g., names, email addresses, phone numbers, and other user-supplied data). The confidentiality impact is rated High with a changed scope, meaning data from across the entire Formie notification store is accessible, not just the attacker's own records. There is no integrity or availability impact, and exploitation does not directly enable lateral movement or code execution (GitHub Advisory).
악용 가능성
No public proof-of-concept exploit code is known to exist, and there is no evidence of in-the-wild exploitation at this time. The EPSS score is 0.0, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation requires a valid authenticated session in the Craft CMS control panel, limiting the attack surface to users who already have some level of CP access. The NVD SSVC assessment classifies exploitation as "none" and technical impact as "partial" (GitHub Advisory, Feedly).
착취 단계
- Obtain CP access: Log in to the Craft CMS control panel with any authenticated user account, even one with minimal permissions (no Formie-specific permissions required).
- Identify the vulnerable endpoint: Target the control panel action at
formie/sent-notifications/get-resend-modal-content, which accepts a JSON request with a notificationidparameter. - Enumerate notification IDs: Send sequential or range-based GET/POST requests to the endpoint with incrementing integer
idvalues (e.g.,?id=1,?id=2, ...) using a tool such ascurl, Burp Suite Intruder, or a custom script, including theAccept: application/jsonheader to satisfyrequireAcceptsJson(). - Extract sensitive data: For each valid notification ID, the server returns the rendered resend modal HTML, which includes the full email body (containing submitted form data/PII) and recipient headers.
- Harvest PII: Parse the returned HTML responses to extract names, email addresses, phone numbers, and any other data submitted through Formie forms (GitHub Advisory, Craft 4 Commit).
타협의 징후
- Network: Repeated HTTP requests to the Craft CMS control panel endpoint
formie/sent-notifications/get-resend-modal-contentwith sequentially or randomly varyingidparameter values from a single authenticated session; requests includeAccept: application/jsonheader. - Logs: Craft CMS web/access logs showing a high volume of requests to the
sent-notifications/get-resend-modal-contentaction from a single user account or IP address in a short time window, especially from accounts not expected to access sent notifications. - Logs: Absence of 403/permission-denied responses for users without
formie-viewSentNotificationspermission on unpatched versions (all requests return 200 with modal HTML).
완화 및 해결 방법
Upgrade Formie to version 2.2.23 (Craft 4) or 3.1.31 (Craft 5) or later, which add proper authorization checks to the vulnerable action. As an interim workaround, restrict Craft CMS control panel access to trusted administrators only, minimizing the pool of users who could invoke the action. There is no configuration-level workaround that fully mitigates the vulnerability without upgrading (GitHub Advisory, Release 2.2.23, Release 3.1.31).
커뮤니티 반응
The vulnerability was reported by security researcher Jorge González (jorge@jmilla.es) and credited in the GitHub Security Advisory. No notable public commentary, media coverage, or significant social media discussion has been identified beyond the advisory publication (GitHub Advisory).
추가 자료
근원: 이 보고서는 AI를 사용하여 생성되었습니다.
관련 PHP 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."