관리 메뉴

웹개발자의 기지개

[PHP] 긴급 보안 취약점 관련 작업하기 - 261022 일자 본문

PHP

[PHP] 긴급 보안 취약점 관련 작업하기 - 261022 일자

웹개발자 워니 2026. 10. 22. 08:53

[php.ini]

session.upload_progress.enabled = 0
session.use_strict_mode = 1

 

 

[PHP 5.5 이상 버전 (PHP 5.5, 5.6)]

session.use_strict_mode 설정은 PHP 5.5.0 버전에서 처음 도입
그대로 사용 가능합니다. 해당 버전들에서는 php.ini에 동일하게 명칭이 존재하며 기본값은 0 (Off)으로 설정되어 있습니다.

보안 권장 사항: 세션 고정(Session Fixation) 공격을 막기 위해 반드시 session.use_strict_mode = 1 (또는 On)로 설정하여 켜두는 것이 안전합니다.



[PHP 5.4 이하 버전에서 똑같이 해결하는 방법]

 

ini_set('session.use_strict_mode', '1');
ini_set('session.cookie_httponly', '1'); // 스크립트의 쿠키 탈취 방지 (XSS 예방)
session_start();
// 1. 세션 내부에 발급된 적이 있는 정상적인 세션인지 표시하는 플래그를 검사
if (!isset($_SESSION['CREATED_VALID'])) {
    // 서버가 직접 새로 발급한 세션이 아니라면, 세션 ID를 안전하게 강제 재생성
    session_regenerate_id(true);
    $_SESSION['CREATED_VALID'] = true;
}

 

로그인 처리 if 문에서 로그인 처리 코드 사이에 

 $_SESSION['CREATED_VALID'] = true; 추가

 
[PHP7]
 
1. 일반적인 Apache 환경 (mod_php 방식)
호스팅 서버가 Apache 웹 서버의 모듈 방식으로 PHP를 실행 중이라면, 루트 디렉토리의 .htaccess 파일에 아래와 같이 추가하면 됩니다.

<IfModule mod_php7.c>
    php_value session.use_strict_mode 1
</IfModule>

※ 서버 환경에 따라 mod_php7.c 대신 mod_php.c를 적어야 할 수도 있으므로, 적용이 안 된다면 <IfModule mod_php.c>로 감싸거나 아예 php_value ... 한 줄만 적어보세요.


2. 고속 서버 환경 (PHP-FPM / FastCGI 방식)

최근 대부분의 PHP 7 호스팅은 성능을 위해 Apache 모듈 대신 PHP-FPM(FastCGI) 방식을 사용합니다. 이 경우 .htaccess에 php_value를 적으면 서버가 이를 인식하지 못하고 500 Internal Server Error가 발생합니다
이때는 .htaccess 대신 .user.ini 파일을 이용해야 합니다.

(1) 웹사이트 최상위 루트 디렉토리(public_html 또는 www)에 .user.ini 라는 이름의 새 파일을 생성합니다.
(2) 파일 내용에 아래와 같이 한 줄만 적고 저장합니다.

session.use_strict_mode = 1

※ .user.ini 파일은 수정 후 서버가 인식하는 데 약 5분(기본값 300초) 정도 시간이 걸릴 수 있습니다.


3. 가장 확실하고 안전한 방법: PHP 소스 코드 적용

만약 호스팅 업체가 보안상의 이유로 .htaccess나 .user.ini를 통한 PHP 설정 조작을 모두반드시 세션이 시작되는 session_start(); 함수 호출 바로 전에 넣어주어야 합니다.
반드시 세션이 시작되는 session_start(); 함수 호출 바로 전에 넣어주어야 합니다.


<?php
// 세션 보안 강화 설정 추가
ini_set('session.use_strict_mode', '1');
ini_set('session.cookie_httponly', '1'); // 스크립트의 쿠키 탈취 방지 (XSS 예방)

// 그 다음 세션 시작
session_start();
?>

 

 

임시 완화 조치
-  CVE-2026-109618
 파일 업로드가 필요 없는 애플리케이션: post_max_size = 8M로 설정
 파일 업로드가 필요한 애플리케이션: post_max_size = 32M로 설정

- CVE-2026-109619
 세션 업로드 진행률 기능 비활성화 : session.upload_progress.enabled = 0
※ mod_php환경에선 임시 조치도 불가능 하며 근본적으로 해결원할시는 반드시 PHP 공식 보안 패치(버전 업데이트)를 적용

 

- session.upload_progress.enabled = 0 (파일 업로드 진행률 표시 기능 끄기)

- memory_limit = -1 (프로그램이 바꿀 수 없도록 관리자 설정으로 지정, 예: PHP-FPM pool의 php_admin_value)

- post_max_size 낮게 설정 (업로드가 필요 없으면 8M, 필요하면 32M 수준), upload_max_filesize는 post_max_size보다 작게 유지

- PHP 8.5 사용 시 fatal_error_backtraces = 0 추가

 

php 7.3.33 -> fpm 으로 재설치 후 변경
session.upload_progress.enabled On -> off
session.use_strict_mode = 0 -> 1
post_max_size= 50 -> 32

 


참고사이트
[1] https://www.php.net/archive/2026.php#2026-10-21-5
[2] https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
[3] https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp

Comments