🔍 CVE-2026-55219

5.3
CVSS Score
MEDIUM
2026-07-20
2026-07-23 16:04
✅ 완료

🇰🇷 한글 설명

Paymenter 1.5.5 미만 버전에서 결제 처리 시 데이터베이스 트랜잭션 없이 행 잠금(lockForUpdate)을 사용하여 발생하는 레이스 컨디션 취약점입니다. 공격자는 동시에 여러 결제 요청을 보내 동일한 잔액으로 여러 인보이스를 결제함으로써 플랫폼에 금전적 또는 자원적 손실을 입힐 수 있습니다.

💡 쉬운 설명

결제 버튼을 아주 짧은 시간 안에 여러 번 동시에 누르면, 시스템이 잔액을 제대로 확인하지 못하고 돈이 부족함에도 여러 번 결제가 승인되는 문제입니다. 이로 인해 사용자는 가진 돈보다 더 많은 서비스를 이용할 수 있게 됩니다.

🇺🇸 원문 (English)

Paymenter is a free and open-source webshop solution for management of hosting services. In versions prior to 1.5.5, the credit payment implementation in app/Livewire/Invoices/Show.php executes a pessimistic row lock (lockForUpdate()) outside of an active database transaction. Because MySQL/MariaDB requires an enclosing transaction to enforce row-level locks, the guard is ineffective. Concurrent payment requests can exploit this race condition to read the same credit balance simultaneously, allowing users to pay multiple invoices using the same credit balance. In database systems like MySQL, a row lock only works inside a formal transaction; without one, the lock is completely ignored. Because there is no active lock, two payment requests sent at the exact same millisecond can look at the database at the same time. Both requests see the original credit balance, decide it is sufficient, and approve the payment. Because the payment processes successfully through ExtensionHelper::addPayment(), the application provisions the corresponding services or digital goods, resulting in direct financial or resource loss to the platform. This issue has been fixed in version 1.5.5.

📍 영향받는 시스템

Paymenter versions prior to 1.5.5

⚔️ 공격 벡터

동시 다발적인 결제 요청을 통한 레이스 컨디션(Race Condition) 공격

🛡️ 대응 방법

Paymenter를 최신 버전인 1.5.5 이상으로 업데이트하십시오.

🔧 검증 코드

출력된 버전 정보가 1.5.5 이상인지 확인하여 취약 여부를 판단합니다.

Shell / Script
php artisan --version | grep -E '1.5.5' || echo 'Vulnerable or different version'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N

💻 영향받는 소프트웨어

MySQL