fix(release): 7.0.7 릴리즈 검증 발견 결함 전수 처리 및 출시일 8/18 정렬

7.0.7 페이로드 전수 검증에서 발견된 error 4건·warn 14건을 릴리즈 전에
처리했다. 미출시 분량의 자체 결함(회원 통합검색 500, 관리자 스코프 403 의
500 위장 등)이므로 페이로드에 합류시키고, 출시 대상 26개 CHANGELOG 의
버전 섹션 날짜를 2026-08-18 로 정렬했다.

- 통합검색 import 복원 + 이커머스 관리자 typed 403 catch 대칭(테스트 동반)
- admin 판정 스니핑 사설 사본 전수 수렴(BoardResource) + 조건 스캔 테스트
- 스케줄 인터프리터 변형 표기(확장자·버전 접미사) 정규화 차단
- ckeditor5 참조 판정 배치화·fail-safe, 결제 플러그인 진단 페이로드 대칭
- 템플릿 다크 대비·상태 Select value-제어 + --production 재빌드
- Upgrade_7_0_7 잔존 중복 색인 정리 스텝, API 문서·i18n(ko/en/ja) 동기
This commit is contained in:
HeuJung committed 2026-08-18 08:12:55 +09:00
1 parent ed985dd175
commit b3d0da9355
110 files changed
+1104 -369

No files matched your search

+24 -1
View File
@@ -126,7 +126,7 @@ class ScheduleCommandValidator
return self::shellVerdict(false, self::SHELL_REASON_NOT_ALLOWED);
}
$normalized = strtolower($binary);
$normalized = self::normalizeShellBinary($binary);
// 완전 거부형 — 화이트리스트에 등재돼 있어도 실행하지 않는다.
if (in_array($normalized, self::shellList('reject_binaries'), true)) {
@@ -224,6 +224,29 @@ class ScheduleCommandValidator
* @param string $key `schedule_security.shell` 하위 키
* @return array<int, string>
*/
/**
* 인터프리터/거부형 분류용으로 바이너리 이름을 정규화합니다.
*
* 분류 목록(`script_interpreters`/`reject_binaries`)은 기본 이름만 담는다.
* 운영자가 Windows 관례(`python.exe`)나 버전 접미사(`python3.12`, `php8.2`)로
* 화이트리스트에 등재하면 정확 일치 분류가 비켜가 인터프리터가 "일반 스크립트 —
* 통과" 분기를 타고, `-c` 인라인 코드 차단(KVE-2026-1653)이 무력화된다.
* 화이트리스트 대조 자체는 운영자가 적은 원문 그대로 유지한다 — 여기서 접는
* 것은 위험 분류뿐이다.
*
* @param string $binary 첫 토큰의 basename
* @return string 소문자 + 실행 확장자(.exe/.bat/.cmd/.com) 제거 + 후행 버전 숫자 제거
*/
private static function normalizeShellBinary(string $binary): string
{
$name = strtolower($binary);
$name = (string) preg_replace('/\.(exe|bat|cmd|com)$/', '', $name);
// 후행 버전 접미사(python3.12 → python, php8.2 → php)를 접는다.
// python3 이 python 으로 접혀도 두 이름 모두 분류 목록에 있어 판정은 동일하다.
return (string) preg_replace('/[0-9][0-9.]*$/', '', $name);
}
private static function shellList(string $key): array
{
return array_values(array_filter(array_map(