56b1958d373e5dca1c47405a8c398536155f619e
shop/orderformupdate.php / mobile/shop/orderformupdate.php 의 포인트 검증과 차감 사이에 TOCTOU race 가 존재하여, 동일 회원이 여러 세션으로 동시에 주문 제출 시 같은 포인트 잔액을 반복 검증 통과 → 다중 차감으로 mb_point 가 음수가 되는 double spend 가 가능했음. insert_point() 의 기존 named lock 은 (mb_id, rel_table, rel_id, rel_action) 조합 키 기반이라 서로 다른 od_id 주문 간에는 lock 이 다르고, 주문 차감 호출에 rel_* 가 전달되지 않아 lock 미적용 상태였음. 조치: KVE-2026-0687 (쇼핑몰 쿠폰) 와 동일한 회원 단위 MySQL GET_LOCK 패턴을 적용. lock 획득 후 g5_point SUM 으로 잔액을 재조회하여 - 충분하면 정상 차감 - race 로 부족하면 사용 가능한 만큼만 차감 + 부족분은 od_receipt_point 보정 + od_misu(미수금) 으로 반영하여 매장 손실 방지. MyISAM 정책상 트랜잭션 금지이므로 named lock 으로 직렬화하는 방식이 가장 적합. 데스크톱·모바일 동일 패턴 적용. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The file is empty.
Languages
PHP
70.9%
JavaScript
16.7%
CSS
7.6%
HTML
4.6%
Python
0.2%