피드로 돌아가기
Dev.toSecurity
원문 읽기
현대 프레임워크의 보호 범위를 벗어난 Custom Logic 내 LFI 취약점 분석
The Invisible Breach: Why Modern Web Frameworks Aren't Immune to LFI
AI 요약
Context
Spring Boot, Django 등 현대적 프레임워크가 제공하는 기본 보안 기능에 의존하여 Custom File I/O 로직의 검증을 간과하는 설계 관행 존재. 특히 Legacy 시스템을 현대적 Frontend로 감싼 HMIS와 같은 엔터프라이즈 환경에서 사용자 입력값이 파일 경로 생성에 직접 사용되는 구조적 결함 발생.
Technical Solution
- Paths.get()을 통한 단순 경로 결합 방식의 Path Traversal 취약점 식별
- toRealPath() 호출을 통한 심볼릭 링크 및 상대 경로의 정규화(Normalization) 수행
- normalize()와 startsWith() 조합을 통해 최종 분석 경로가 정의된 Base Directory 내에 존재하는지 검증하는 화이트리스트 기반 경로 제어
- URL Encoding, Double Encoding 등 우회 공격 차단을 위한 디코딩 후 정규화 프로세스 적용
- 프로세스 실행 권한 최소화를 통한 Least Privilege 원칙 적용으로 파일 시스템 접근 범위 제한
실천 포인트
1. 사용자 입력값이 파일 경로에 포함될 경우 반드시 toRealPath()를 통한 절대 경로 정규화 수행
2. 정규화된 경로가 의도한 Base Directory로 시작하는지 startsWith()로 최종 검증
3. ../ 포함 여부 같은 단순 문자열 필터링 대신 파일 시스템 레벨의 경로 검증 로직 채택
4. 애플리케이션 프로세스 권한을 최소화하여 LFI 발생 시 피해 범위(Blast Radius) 제한