héroe bg sin separador
Directrices

보안 구성 오류 - XXE 세부 정보

'XML 외부 엔티티' (XXE) 취약성 클래스는 XML 파서와 관련된 잘못된 보안 구성입니다.

XML 표준에는 파일 및 URL과 같은 “엔티티”를 참조하는 방법이 포함됩니다.파서가 외부 엔티티를 완전히 확인하는 것이 기본값인 경우가 많습니다. 즉, XML 문서로 인해 잠재적 공격자에게 파일 및 기타 민감한 정보가 공개될 수 있습니다.

간단한 예시

외부 엔티티를 사용하는 XML 문서의 예를 조금 살펴 보겠습니다.

xml
<?xml 버전="1.0"?>
<!문서 유형 외부 요소 [
<!] >
<outerElement>&외부 엔티티;</outerElement>

먼저 문서 내에 존재할 수 있고 파서가 처리할 수 있는 구조/요소 유형을 정의하는 새로운 'doctype'을 선언합니다.

그 안에 '외부 엔티티'라는 시스템 유형 엔티티를 지정합니다.이 엔티티는 '/etc/passwd' 파일을 가리킵니다.

'doctype' 정의에 따라 실제 XML 데이터를 얻을 수 있습니다.'OuterElement'를 정의한 다음 'ExternalEntity' 엔티티에 참조 ('&'로 표시됨) 를 추가합니다.

이때 인터프리터는 엔티티 정의를 찾아 정의된 URL을 확인하고 '&ExternalEntity;' 대신 사용합니다.

파싱 과정이 끝나면 다음과 같은 문서가 생성됩니다.

xml
<?xml 버전="1.0"?>
<outerElement>
루트:x: 0:0:루트: /루트: /usr/bin/zsh
데몬:x: 1:1:데몬: /usr/sbin: /usr/sbin/nologin
bin:x: 2:2:bin: /bin: /usr/sbin/nologin
...
</outerElement>

완화

XXE로부터 완벽하게 보호하는 방법의 필요성과 세부 사항은 언어, 프레임 워크 및 버전에 따라 크게 달라집니다.

각 조합을 사용하면 파일 확인을 방해할 수 있는 파서의 일부 측면을 비활성화할 수 있지만 HTTP 경로는 비활성화할 수 없습니다.또는 개체 확장이 여전히 허용될 수 있으며, 이 경우 그 자체로 서비스 거부 취약점이 발생할 수 있습니다.

.NET

.NET 4.5.1 이하를 실행하는 경우 기본적으로 다음과 같은 클래스가 취약합니다.

  • XMLDocument ('XMLDocument.XMLResolver = null; '로 비활성화)
  • XML 텍스트 리더 ('XMLTextReader.금지DTD = true; '로 비활성화)
  • XPath Navigator