Summary
The Klarna for WooCommerce plugin fails to properly verify authorization when serving order-payment information. Unauthenticated attackers may enumerate sequential order IDs and obtain order keys plus customers' billing and shipping personally identifiable information.
The Klarna for WooCommerce plugin fails to properly verify authorization when serving order-payment information. Unauthenticated attackers may enumerate sequential order IDs and obtain order keys plus customers' billing and shipping personally identifiable information.
Affected context
This vulnerability affects Klarna for WooCommerce deployments using vulnerable plugin versions through 4.13.3. The issue occurs around the WooCommerce order-payment endpoint, where order-related data is exposed in the klarna_payments_params JavaScript variable without adequately confirming that the requester is authorized to view the order.
This vulnerability affects Klarna for WooCommerce deployments using vulnerable plugin versions through 4.13.3. The issue occurs around the WooCommerce order-payment endpoint, where order-related data is exposed in the klarna_payments_params JavaScript variable without adequately confirming that the requester is authorized to view the order.
Exploit preconditions
- Attack surface: Publicly reachable WooCommerce order-payment endpoint
- Required access: No authentication or valid customer session is required
- Trigger point: Requests referencing order IDs through the order-payment flow
- Why exploitation is possible: Authorization checks do not reliably bind access to the legitimate order holder, while sequential order identifiers make store-wide enumeration practical
- Attack surface: Publicly reachable WooCommerce order-payment endpoint
- Required access: No authentication or valid customer session is required
- Trigger point: Requests referencing order IDs through the order-payment flow
- Why exploitation is possible: Authorization checks do not reliably bind access to the legitimate order holder, while sequential order identifiers make store-wide enumeration practical
Why this happens
The underlying bug is a broken access-control pattern mapped to CWE-862: Missing Authorization. The plugin exposes order-specific secrets and billing or shipping data before establishing that the requester has a valid relationship to the referenced order. Reliance on predictable order identifiers without an effective authorization decision allows unauthenticated requests to access records belonging to other customers.
The underlying bug is a broken access-control pattern mapped to CWE-862: Missing Authorization. The plugin exposes order-specific secrets and billing or shipping data before establishing that the requester has a valid relationship to the referenced order. Reliance on predictable order identifiers without an effective authorization decision allows unauthenticated requests to access records belonging to other customers.
Potential impact
- Customer names, email addresses, phone numbers, and postal addresses may be disclosed
- Order secret keys may be exposed and misused in subsequent order-related requests
- Attackers could enumerate much of a store's order history
- The incident could enable privacy violations, targeted fraud, or social engineering
- Merchants may face regulatory, contractual, and reputational consequences
- Customer names, email addresses, phone numbers, and postal addresses may be disclosed
- Order secret keys may be exposed and misused in subsequent order-related requests
- Attackers could enumerate much of a store's order history
- The incident could enable privacy violations, targeted fraud, or social engineering
- Merchants may face regulatory, contractual, and reputational consequences
General mitigation guidance
Mitigation generally focuses on enforcing authorization before returning any order-related data.
Common defensive patterns include:
- Require an authenticated, verified relationship to the requested order, or use a high-entropy capability that is validated server-side
- Avoid treating sequential order IDs as access credentials
- Minimize data included in client-side JavaScript and expose only fields required for the current workflow
- Apply consistent object-level authorization checks to every order endpoint and response path
- Use least-privilege service accounts and limit administrative access to order data
- Add privacy-focused tests confirming that one customer cannot retrieve another customer's order information
Mitigation generally focuses on enforcing authorization before returning any order-related data.
Common defensive patterns include:
- Require an authenticated, verified relationship to the requested order, or use a high-entropy capability that is validated server-side
- Avoid treating sequential order IDs as access credentials
- Minimize data included in client-side JavaScript and expose only fields required for the current workflow
- Apply consistent object-level authorization checks to every order endpoint and response path
- Use least-privilege service accounts and limit administrative access to order data
- Add privacy-focused tests confirming that one customer cannot retrieve another customer's order information
How teams detect issues like this
Detection approaches may include:
- Static analysis and code review for order lookups that return data before object-level authorization
- Searches for public endpoints that accept predictable identifiers without session, capability, or ownership checks
- Dynamic tests that request one customer's order using another order's identifier and confirm that sensitive fields are denied
- Web-application firewall or access-log policies flagging repeated sequential requests to order-payment endpoints
- Monitoring for unusual unauthenticated access to order-related routes and high-volume identifier enumeration
- Automated security review tools that identify missing authorization checks and excessive client-side data exposure
Detection approaches may include:
- Static analysis and code review for order lookups that return data before object-level authorization
- Searches for public endpoints that accept predictable identifiers without session, capability, or ownership checks
- Dynamic tests that request one customer's order using another order's identifier and confirm that sensitive fields are denied
- Web-application firewall or access-log policies flagging repeated sequential requests to order-payment endpoints
- Monitoring for unusual unauthenticated access to order-related routes and high-volume identifier enumeration
- Automated security review tools that identify missing authorization checks and excessive client-side data exposure

