공유 웹 호스팅 로그 파일을 노린 두 가지 새로운 서버 측 공격
초록
본 논문은 공유 웹 호스팅 환경에서 로그 파일이 사이트 간에 격리되지 않아 발생하는 보안 취약점을 분석한다. 공격자는 자신이 운영하는 웹사이트를 통해 동일 서버에 존재하는 다른 사이트의 로그 파일에 접근·조작함으로써 파일·디렉터리 구조를 유출하고, 이를 기반으로 추가적인 침투 공격을 전개할 수 있다. 논문은 이러한 위험을 초래하는 두 가지 새로운 서버‑사이드 공격을 제시하고, 로그 파일 격리, 파일 권한 강화, 모니터링 및 무결성 검증 등 실효성 있는 방어 방안을 제안한다.
상세 분석
공유 웹 호스팅은 하나의 물리적 서버 혹은 가상 머신 위에 다수의 고객 웹사이트를 배치함으로써 비용 효율성을 극대화한다. 그러나 이러한 다중 테넌시 모델은 운영체제 수준에서의 프로세스 격리와 파일 시스템 권한 관리가 미흡할 경우, 서로 다른 웹 애플리케이션 간에 데이터 누출 위험을 내포한다. 특히 Apache, Nginx와 같은 웹 서버는 기본 설정에서 모든 가상 호스트가 동일한 로그 파일(예: access.log, error.log)을 공유하도록 설계되어 있다. 이때 로그 파일은 웹 서버 프로세스가 쓰기 전용으로 열어두지만, 파일 시스템 권한이 664 혹은 666으로 설정되면 동일 서버 내 다른 사용자 계정이 읽기·쓰기 권한을 획득한다.
논문에서 제시된 첫 번째 공격은 “로그 파일 열람 공격”이다. 공격자는 자신의 웹 애플리케이션에 파일 읽기 함수를 삽입하거나, PHP의 file_get_contents()와 같은 함수를 이용해 로그 파일 경로를 직접 지정한다. 로그에는 다른 사이트의 요청 URI, GET/POST 파라미터, 쿠키, 세션 ID 등이 기록되므로, 이를 분석하면 타 사이트의 디렉터리 구조, 파일명, 심지어 내부 API 엔드포인트까지 추론할 수 있다. 특히 오류 로그에는 스택 트레이스와 파일 경로가 상세히 남아 있어, 공격자는 이를 통해 취약점이 존재할 가능성이 높은 파일을 정확히 식별한다.
두 번째 공격은 “로그 파일 조작 공격”이다. 로그 파일이 쓰기 가능한 권한을 갖는 경우, 공격자는 악의적인 로그 엔트리를 삽입하거나 기존 엔트리를 변조한다. 예를 들어, 로그에 삽입된 악성 스크립트가 다른 웹사이트의 로그 파싱 로직에 의해 실행되도록 유도하거나, 로그 파일을 이용해 파일 포함(Include) 공격을 수행한다. 또한, 로그 파일에 특정 문자열을 삽입해 파일 무결성 검증을 우회하거나, 로그 기반 탐지 시스템을 혼란시켜 탐지를 회피할 수 있다. 이러한 조작은 단순히 정보 유출을 넘어, 실제 서비스 거부(DoS)나 원격 코드 실행(RCE)으로 이어질 수 있다.
핵심적인 원인은 로그 파일에 대한 “다중 테넌트 접근 제어 부재”와 “공통 로그 파일 사용”이다. 운영체제 수준에서 각 웹사이트에 전용 사용자와 그룹을 할당하고, 파일 시스템 ACL(Access Control List)을 통해 로그 파일에 대한 최소 권한 원칙(Least Privilege)을 적용하지 않으면, 위와 같은 공격이 가능해진다. 또한, 로그 파일이 지속적으로 순환(rotation)되는 과정에서 권한이 재설정되지 않으면, 일시적인 권한 상승이 장기적인 보안 위협으로 전이된다.
논문은 이러한 구조적 결함을 보완하기 위해, 로그 파일을 사이트 별로 물리적 혹은 논리적으로 분리하고, 각 로그 파일에 대해 전용 사용자·그룹을 지정하는 방안을 제시한다. 더불어, 파일 무결성 검증을 위해 SHA‑256 해시 기반 체크섬을 주기적으로 계산하고, 이상 징후가 감지될 경우 자동 알림 및 롤백 메커니즘을 도입한다. 마지막으로, 웹 서버 설정에서 LogLevel을 최소화하고, 민감 정보(예: 쿠키, 세션 ID)를 로그에 기록하지 않도록 필터링하는 것이 권고된다. 이러한 방어 체계는 공유 호스팅 환경에서 로그 파일을 통한 정보 유출 및 조작 위험을 실질적으로 감소시킬 수 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기