XML 외부개체(XXE) (XML External Entity)
쉽게 풀면
XXE는 문서 양식 안에 "이 부분은 다른 서류철에서 가져와 채워 넣어라"라는 지시문을 몰래 끼워 넣는 것과 비슷합니다. XML 문서는 특정 값을 외부의 다른 파일이나 위치에서 불러와 채워 넣도록 지시하는 기능을 가지고 있는데, 이를 처리하는 서버가 이 지시문을 제한 없이 실행해 버리면 공격자는 서버 내부의 비밀 파일 내용을 응답 결과에 그대로 포함시켜 빼돌릴 수 있습니다.
왜 중요한가
XXE는 서버 내부 파일 유출뿐 아니라 내부 네트워크 접근이나 서비스 거부 공격으로도 이어질 수 있어 웹 애플리케이션 보안에서 심각도가 높은 취약점으로 다뤄집니다. XML을 다루는 다양한 시스템, 파일 업로드 기능, 문서 변환 서비스 등에서 반복적으로 발견되는 취약점 유형입니다.
논문에서는 이렇게 쓰입니다
파일 업로드 기능에서 발생한 XXE 취약점 사례를 설명하는 문장입니다.
XXE 방어 방안으로서 파서 설정 변경의 효과를 언급하는 문장입니다.
조금 더 깊게 보면
XXE는 XML 문서 정의(DTD) 안에서 외부 개체(external entity)를 선언하는 기능을 악용합니다. 이를 통해 서버 내부 파일을 읽어내는 것 외에도, 내부 네트워크의 다른 서버에 요청을 보내게 하거나, 재귀적인 개체 참조를 통해 서버 자원을 고갈시키는 방식으로도 악용될 수 있습니다. 대부분의 최신 XML 파서는 외부 개체 처리 기능을 기본적으로 비활성화하거나 선택적으로 끌 수 있는 옵션을 제공합니다.
주의할 점
JSON 기반 API로 전환했다고 해서 XXE 위험이 완전히 사라지는 것은 아니며, 문서 업로드나 변환 기능 등 여전히 XML을 내부적으로 처리하는 구간이 남아 있는지 함께 점검해야 합니다.