🔍 CVE-2026-84374

7.5
CVSS Score
HIGH
2026-09-01
2026-09-09 21:09
✅ 완료

🇰🇷 한글 설명

Laravel Excel 3.1.8부터 3.1.70 버전 사이에서 Disk::copy() 메서드가 설정된 파일 시스템 디스크 대신 프로세스 작업 디렉토리를 기준으로 경로를 해석하는 취약점이 발견되었습니다. 공격자가 export 경로를 제어할 수 있을 경우, Flysystem의 경로 제한을 우회하여 임의의 기존 파일을 덮어쓸 수 있으며 이는 원격 코드 실행(RCE)으로 이어질 수 있습니다.

💡 쉬운 설명

엑셀 파일을 저장할 때 지정된 안전한 폴더가 아닌 컴퓨터의 다른 중요한 파일을 마음대로 덮어쓸 수 있는 보안 결함입니다. 만약 해커가 이 기능을 악용해 실행 가능한 파일을 조작하면 서버를 원격으로 조종할 수 있습니다.

🇺🇸 원문 (English)

Laravel Excel provides supercharged Excel exports and imports in Laravel. From 3.1.8 until 3.1.70, in src/Files/Disk.php the Maatwebsite\Excel\Files\Disk::copy() method resolves the caller-controlled $destination supplied through Excel::store(), $export->store(), or storeExcel() against the process working directory with realpath() instead of the configured filesystem disk. If the path names an existing writable file, Disk::copy() opens it with fopen() in rb+ mode and uses stream_copy_to_stream(), bypassing Flysystem path confinement and allowing an attacker whose application input controls the export path to overwrite arbitrary existing files with export content. The rb+ behavior creates a non-truncating overwrite and trailing bytes when the new export is shorter, and overwriting an executable PHP file can lead to remote code execution. This issue is fixed in version 3.1.70.

📍 영향받는 시스템

Laravel Excel version 3.1.8 ~ 3.1.70

⚔️ 공격 벡터

사용자 입력값이 포함된 export 경로를 통해 시스템 내 임의의 파일을 덮어쓰는 방식

🛡️ 대응 방법

Laravel Excel 버전을 3.1.71 이상으로 업데이트하십시오.

🔧 검증 코드

출력된 버전이 3.1.70 이하이면 취약한 상태이며, 3.1.71 이상이면 안전합니다.

Shell / Script
composer show maatwebsite/excel | grep 'versions'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

PHP