fix(core,extensions): 보안 결함 3건과 이중저장소·레이아웃 중복키 결함군 폐쇄

KISA 제보 3건(KVE-2026-2010/2011/2018)과 그 동일 계열 형제 결함을 전수 조치하고,
그 과정에서 드러난 두 결함군을 함께 닫는다.

- 검증 시점과 연결 시점이 host 를 다르게 읽던 SSRF 통로를 정규화 SSoT 한 곳으로 모았다
- 세션을 여는 지점(2FA 완료·토큰 재발급)이 잠금 검사를 거치지 않아 계정 잠금이 우회됐다
- 인증도 서명도 없는 브라우저 리턴 콜백이 주문 상태를 바꾸던 통로를 4 PG 전부에서 닫고,
 소유권을 대조하는 close-report 를 토스에도 신설했다. 그 결과 정리 주체를 잃는
 결제창 미완료 주문은 만료 자동취소가 거둔다
- 저장소 A(_local)에만 쓰는 경로가 B 의 값을 조용히 덮던 회귀를 정본 writer 로 닫았다
 (engine-v1.63.5). 한 방향만 보던 정적 검사에 반대 방향 축과 양방향 계약 테스트를 더했다
- 레이아웃 JSON 의 같은 객체 중복 키가 앞선 선언을 오류 없이 삼키던 결함군을 닫았다
This commit is contained in:
HeuJung
2026-09-02 17:36:11 +09:00
parent d4439ea30a
commit 21fc114f37
137 changed files with 6470 additions and 829 deletions
@@ -4,6 +4,12 @@
형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)를 따르며,
[Semantic Versioning](https://semver.org/lang/ko/)을 준수합니다.
## [1.1.4] - 2026-09-02
### Added
- 주문 설정의 「결제 미완료 주문 만료 기준(분)」 입력과 그 검증 문구의 일본어 번역을 추가했습니다.
## [1.1.3] - 2026-08-24
### Fixed
@@ -1281,6 +1281,7 @@ return [
'order_settings.bank_accounts.*.is_default' => 'デフォルト口座',
'order_settings.auto_cancel_expired' => '未決済自動キャンセル',
'order_settings.auto_cancel_days' => '自動キャンセル期限(日)',
'order_settings.pending_order_expire_minutes' => '決済未完了注文の期限(分)',
'order_settings.cart_expiry_days' => 'カート保管期間(日)',
'order_settings.default_pg_provider' => 'デフォルトPG会社',
'order_settings.payment_methods.*.pg_provider' => 'PG会社',
@@ -1609,6 +1610,12 @@ return [
'min' => '自動キャンセルの期限は1日以上である必要があります。',
'max' => '自動キャンセルの期限は最大30日まで設定可能です。',
],
'pending_order_expire_minutes' => [
'required' => '決済未完了注文の期限を入力してください。',
'integer' => '決済未完了注文の期限は整数である必要があります。',
'min' => '決済未完了注文の期限は0分以上である必要があります。(0 は整理しない)',
'max' => '決済未完了注文の期限は最大20160分(14日)まで設定可能です。',
],
'cart_expiry_days' => [
'integer' => 'カートの保管期間は整数である必要があります。',
'min' => 'カートの保管期間は1日以上である必要があります。',
@@ -215,6 +215,9 @@
"toggle_hint": "無効化すると入金待機注文は自動キャンセルされません。",
"days_prefix": "入金待機ステータスの注文は注文日を含めて",
"days_suffix": "日後に自動キャンセルされます。",
"pending_minutes_prefix": "決済画面まで進んだものの決済が完了しなかった注文は",
"pending_minutes_suffix": "分後に自動キャンセルされます。",
"pending_minutes_hint": "0 にするとこの区分は自動キャンセルしません。最大 20160 分(14日)。",
"vbank_due_days_label": "仮想口座入金期限:",
"vbank_due_days_suffix": "日",
"dbank_due_days_label": "無通帳振込入金期限:",
@@ -12,7 +12,7 @@
"en": "G7 module (sirsoft-ecommerce) Japanese language pack (bundled)",
"ja": "G7 モジュール (sirsoft-ecommerce) 日本語 言語パック(バンドル)"
},
"version": "1.1.3",
"version": "1.1.4",
"license": "MIT",
"scope": "module",
"target_identifier": "sirsoft-ecommerce",