Contao의 ImagesController에서 발생하는 CVE-2026-107844 취약점은 비인증 사용자가 특수하게 조작된 GET 요청으로 서버 내의 디렉터리 외부 이미지 파일을 무단으로 열어보게 만드는 경로 순회(Path Traversal) 결함입니다. 시스템 내부의 이미지 파일이 그대로 외부에 노출될 수 있는 심각한 보안 위험입니다.
CVE-2026-107844 취약점 개요
CVE-2026-107844는 Contao CMS의 ImagesController에서 발견된 경로 순회 취약점입니다. 이 취약점의 핵심은 공격자가 인증 절차 없이 GET 요청을 보내 원래 허용된 파일 디렉터리 범위를 벗어나 시스템의 다른 경로에 위치한 파일에 접근할 수 있다는 점입니다.
공격자는 퍼센트 인코딩된 점(dot) 문자를 포함한 요청으로 디렉터리 외부 경로를 참조하는 방식으로 이 취약점을 트리거합니다. 이런 비인증 접근에 따른 정보 유출 가능성을 관리자가 인지하고 즉시 대응하는 것이 중요합니다.
기술적 분석 및 원인
기술적 원인은 경로 결합 과정에서 검증 로직이 빠져 있다는 데 있습니다. ImagesController는 사용자로부터 입력받은 {path} 값을 설정된 이미지 대상 디렉터리와 결합할 때 Path::join() 함수를 사용합니다.
Path::join() 함수는 ‘..’과 같은 세그먼트를 정규화하는 기능을 수행하지만, 결합된 최종 경로가 실제 대상 디렉터리 내부에 안전하게 머무는지 확인하는 과정이 필수적입니다. 그런데 이 컨트롤러에는 최종 결과값이 대상 디렉터리 내부에 존재하는지 확인하는 Path::isBasePath() 호출 로직이 누락되었습니다. 정규화된 경로가 상위 디렉터리로 이동하는 것을 제어하지 못해 결국 경로 순회가 가능해진 것입니다.
다만 모든 파일이 노출되는 것은 아닙니다. 제약 조건이 두 가지 있습니다.
- 확장자 제한: 읽기가 가능한 파일은
contao.image.valid_extensions에 정의된 허용 확장자로 제한됩니다. - 접근 실패 경로: 업로드 디렉터리의 하위 경로는 별도의 이유로 읽기에 실패합니다.
영향을 받는 버전 및 수정 버전
해당 취약점은 Contao 5.0부터 5.7 버전까지 광범위하게 영향을 미칩니다. 구체적으로는 5.3 버전은 5.3.49까지, 5.7 버전은 5.7.11까지 영향을 받는 것으로 확인되었습니다.
버전별 영향도와 수정 버전은 아래 표와 같습니다.
| 영향을 받는 버전 | 수정 버전 (패치 완료) | 비고 |
|---|---|---|
| Contao 5.0, 5.1, 5.2 | Contao 5.3.50 이상 또는 5.7.12 이상 | 업그레이드 권고 |
| Contao 5.3 (up to 5.3.49) | Contao 5.3.50 | 경로 순회 취약점 수정 |
| Contao 5.4, 5.5, 5.6 | Contao 5.7.12 이상 | 업그레이드 권고 |
| Contao 5.7 (up to 5.7.11) | Contao 5.7.12 | 경로 순회 취약점 수정 |
대응 방안 및 완화 조치
보안 담당자와 시스템 관리자가 시스템을 보호하기 위해 즉시 살펴볼 대응 단계입니다.
- 최신 버전 업데이트: 가장 확실한 해결 방법은 공식 수정 사항이 반영된 최신 릴리스로 업데이트하는 것입니다. 영향 범위에 포함된 모든 시스템은 Contao 5.3.50 또는 5.7.12 버전으로 즉시 업그레이드하는 것이 안전합니다.
- 입력값 검증 모니터링: 업데이트 적용 전까지는 HTTP 요청 로그를 분석해 퍼센트 인코딩된 점 문자나 상위 디렉터리 참조(
../) 시도가 포함된 비정상적인 GET 요청이 있는지 수시로 확인합니다. - 설정 검토:
contao.image.valid_extensions설정을 확인해 불필요하게 넓은 범위의 확장자가 허용되어 있지 않은지 점검합니다.
CVE-2026-107844는 단순한 설정 오류가 아니라 핵심 경로 처리 로직 자체의 결함에서 비롯된 문제입니다. 비인증 사용자에게 시스템 내부 파일에 대한 접근 권한을 그대로 부여하는 심각한 결함인 만큼, 관리자는 지체 없이 패치를 적용해 잠재적인 데이터 유출 사고를 막는 것이 우선입니다.