🇰🇷 한글 설명
Sylius eCommerce Framework에서 결제 요청 엔드포인트가 인증된 사용자와 주문 간의 소유권 검증을 수행하지 않는 취약점입니다. 공격자가 결제 요청 해시를 획득하면 주문 정보를 탈취하거나 결제 후 리다이렉트 경로를 조작하여 사용자를 피싱 사이트로 유도할 수 있습니다.
💡 쉬운 설명
결제 정보가 담긴 주소(해시)만 알면 누구나 다른 사람의 주문 내역을 보거나 결제 후 이동할 페이지를 마음대로 바꿀 수 있는 보안 허점입니다. 해커가 이 주소를 알아내면 고객의 개인정보를 훔치거나 가짜 사이트로 연결해 결제를 가로챌 수 있습니다.
🇺🇸 원문 (English)
Sylius is an Open Source eCommerce Framework on Symfony. Starting in version 2.0.0 and prior to version 2.0.18, 2.1.15, and 2.2.6, the `GET /api/v2/shop/payment-requests/{hash}` and `PUT /api/v2/shop/payment-requests/{hash}` endpoints look up the payment request solely by the hash from the URL. No ownership check is performed against the authenticated customer or the underlying order. An attacker who obtains a payment request hash can read the payment request and, through the `payment` IRI in the response, recover the underlying order's `tokenValue` (which itself grants access to the full order, items, addresses, customer email, totals); and/or update the payment request payload (e.g. `target_path`, `after_path`). These fields are used by the front-end controller to redirect the user after the payment, so an attacker can flip them to an attacker-controlled URL and intercept the buyer. The hash is a UUID, so it has to be obtained out-of-band (logs, shared links, referrer headers, a co-located client), but once it is known no other credential is required, neither authentication nor knowledge of the order token. The creation endpoint `POST /api/v2/shop/orders/{tokenValue}/payment-requests` shares the same flaw: it resolves the target order solely from the `tokenValue` in the URL without verifying that the caller owns the order. The issue is fixed in versions 2.0.18, 2.1.15, and 2.2.6. As a workaround, add a query extension that filters the `GET` operation; decorate the `PUT` state provider, guard the `POST` creation endpoint with a command-bus middleware, and wire the services.
📍 영향받는 시스템
Sylius 2.0.0 ~ 2.0.17, 2.1.0 ~ 2.1.14, 2.2.0 ~ 2.2.5
⚔️ 공격 벡터
로그, 공유 링크, 리퍼러 헤더 등을 통해 탈취한 결제 요청 해시(UUID)를 사용하여 API 엔드포인트에 접근
🛡️ 대응 방법
Sylius를 버전 2.0.18, 2.1.15 또는 2.2.6 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 취약한 버전 범위(2.0.18, 2.1.15, 2.2.6 미만)에 해당하는지 확인하십시오.
composer show sylius/sylius | grep 'versions'
💻 영향받는 소프트웨어
IBM Security Verify Access