CVE-2026-56826:
PHP 취약성 분석 및 완화
개요
CVE-2026-56826 is a missing server-side authorization vulnerability in the shopper/framework Composer package (Shopper e-commerce framework) that allows low-privileged authenticated users to delete critical commerce configuration records. Four Livewire components in the Settings area — Settings\Zones\ZoneShippingOptions, Settings\Zones\Detail, Settings\Taxes\Detail, and Settings\Taxes\TaxRates — expose destructive Filament delete/edit actions with no authorization checks. Affected versions are >= 2.0.0, < 2.9.2; the issue is patched in version 2.9.2. It carries a CVSS v3.1 base score of 5.4 (Moderate) (GitHub Advisory, Shopper Advisory). The vulnerability was originally published on June 22, 2026, and added to the GitHub Advisory Database on September 11, 2026.
기술적 세부 사항
The root cause is CWE-862 (Missing Authorization): the four child Livewire components handle their own /livewire/update HTTP requests independently, but rely solely on the parent page's coarse access_setting gate without re-checking authorization for destructive actions (GitHub Advisory). The most egregious case is ZoneShippingOptions::deleteAction(), which deletes a CarrierOption record using a client-supplied id argument with no scoping or permission check whatsoever — CarrierOption::query()->find($arguments['id'])->delete(). None of the four components declare ->authorize() or an enforced ->visible() guard on their actions, and the permission seeder never generates delete_zones or delete_taxes permissions, meaning no granular gate exists to enforce. An attacker only needs a valid session with the access_setting permission to invoke any of these actions directly via the Livewire endpoint (Shopper Advisory).
영향
A low-privileged staff member or compromised account holding only access_setting can sabotage the storefront's checkout and revenue path without any delete_* permission. Deleting a CarrierOption removes that shipping rate from checkout for the affected zone; deleting a Zone severs the country-to-carrier/payment-method/currency mapping, causing customers in those regions to lose all shipping and payment options; and deleting a TaxZone or TaxRate corrupts TaxCalculator::resolveZone(), breaking tax calculation at checkout entirely (GitHub Advisory). There is no confidentiality impact, but integrity and availability of live commerce configuration are directly affected. A secondary bug was also identified: Zones\Detail::deleteAction()->after() calls $this->reset('zone') on a #[Computed] method rather than a property, triggering a ReflectionException after deletion (Shopper Advisory).
악용 가능성
A proof-of-concept was included in the original advisory, confirmed using the project's own Pest + Orchestra Testbench test harness against the real Livewire/Filament code path with a non-admin user holding only access_setting (Shopper Advisory). No evidence of in-the-wild exploitation or threat actor attribution is currently available, and the CVE status remains "Reserved." The EPSS score is not yet published. The vulnerability is not listed in the CISA KEV catalog. Exploitation requires only low privileges (a valid authenticated session with access_setting) and no user interaction, making it straightforward for any malicious insider or attacker with a compromised low-privilege account.
착취 단계
- Obtain low-privilege access: Acquire or compromise a staff account that holds the
access_settingpermission but lacks admin rights and anydelete_*/edit_*permissions. - Authenticate to the admin panel: Log in to the Shopper admin interface using the low-privilege account.
- Navigate to a vulnerable Settings page: Access any of the affected Settings pages (e.g., Settings > Zones or Settings > Taxes) to establish a valid Livewire session context.
- Identify target record IDs: Enumerate existing
CarrierOption,Zone,TaxZone, orTaxRaterecord IDs by observing the rendered page or intercepting Livewire responses. - Invoke the destructive action directly: Send a crafted POST request to the
/livewire/updateendpoint targeting the vulnerable component (e.g.,ZoneShippingOptions) and call thedeleteaction with a client-suppliedidargument — for example:callAction('delete', arguments: ['id' => <target_id>]). - Confirm deletion: Verify the record has been removed; the targeted shipping rate, zone, or tax configuration is now deleted from the storefront checkout path, disrupting commerce operations (GitHub Advisory, Shopper Advisory).
타협의 징후
- Network: Unexpected POST requests to
/livewire/updatefrom authenticated low-privilege accounts targeting component classesSettings\Zones\ZoneShippingOptions,Settings\Zones\Detail,Settings\Taxes\Detail, orSettings\Taxes\TaxRateswithcallAction('delete', ...)payloads. - Logs: Application or web server logs showing repeated Livewire update requests to Settings endpoints from accounts that do not hold admin or
delete_*permissions; Laravel logs recording deletion ofCarrierOption,Zone,TaxZone, orTaxRatemodels by non-admin users. - Database: Sudden disappearance of records in the
carrier_options,zones,tax_zones, ortax_ratestables without corresponding admin-level audit trail entries. - Application Behavior: Checkout failures related to missing shipping rates, unresolvable tax zones (
TaxCalculator::resolveZone()errors), or missing carrier/payment options for specific regions — particularly if no legitimate admin deletion was performed (GitHub Advisory).
완화 및 해결 방법
Upgrade shopper/framework to version 2.9.2 or later, which is the patched release (GitHub Advisory). As a workaround prior to patching, restrict the access_setting permission to only fully trusted staff members to reduce the attack surface. The suggested code-level remediation is to add ->authorize('access_setting') (or a new granular delete_zones/delete_taxes permission) to the deleteAction() and editAction() methods in all four affected components, and to add a mount() authorization guard on each child component matching the pattern used in Settings/Locations/Index.php and Team/RolePermission.php (Shopper Advisory). Additionally, the secondary $this->reset('zone') bug in Zones\Detail should be fixed alongside the authorization gap.
커뮤니티 반응
The vulnerability was reported by researcher baradika and published by maintainer mckenziearts on June 22, 2026, with the GitHub Advisory Database entry finalized on September 11, 2026 (GitHub Advisory). No significant broader media coverage or notable public researcher commentary beyond the advisory itself has been identified at this time.
추가 자료
근원: 이 보고서는 AI를 사용하여 생성되었습니다.
관련 PHP 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."