fix(security): 스케줄러 Shell/Artisan 명령 실행 하드닝
미출시 예약 작업 기능에서 스케줄 권한만 위임받은 계정이 Shell/Artisan 명령으로 임의 코드를 실행할 수 있던 문제를 선제적으로 차단(KVE-2026-1567). Shell 은 기본 차단 + 실행 파일 화이트리스트 + 셸 미경유 인자배열 실행, Artisan 은 차단목록. 저장 시점(FormRequest)과 실행 시점(Service) 이중 검증. 아울러 공개 release 보다 앞선 미출시 버전들의 CHANGELOG 출시 날짜를 2026-07-14 로 통일.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
// 스케줄러 Shell/Artisan 실행 보안 정책.
|
||||
// 관리자 환경설정에 노출하지 않는 코드 소유 정책 — command 실행 능력은 신뢰 경계 안에서만 넓힌다.
|
||||
// (스케줄 권한만 위임받은 관리자가 화이트리스트를 넓혀 임의 명령 실행을 복구하는 것을 막는다.)
|
||||
return [
|
||||
'shell' => [
|
||||
// Shell 타입 스케줄 실행 자체를 켜는 opt-in 게이트 (기본 차단).
|
||||
'enabled' => env('SCHEDULE_SHELL_ENABLED', false),
|
||||
|
||||
// 허용 실행 파일 basename 목록. 빈 배열이면 모든 shell 명령을 거부한다.
|
||||
'allowed_binaries' => array_values(array_filter(array_map(
|
||||
'trim',
|
||||
explode(',', (string) env('SCHEDULE_SHELL_ALLOWED_BINARIES', '')),
|
||||
))),
|
||||
],
|
||||
|
||||
'artisan' => [
|
||||
// 파괴적·코드 실행형 artisan 명령 차단목록 (첫 토큰 기준).
|
||||
'denylist' => [
|
||||
'tinker',
|
||||
'db:wipe',
|
||||
'migrate:fresh',
|
||||
'migrate:reset',
|
||||
'migrate:rollback',
|
||||
'schedule:run',
|
||||
'schedule:work',
|
||||
'env:decrypt',
|
||||
'key:generate',
|
||||
],
|
||||
],
|
||||
];
|
||||
Reference in New Issue
Block a user