XML 외부 엔티티 (XXE) 공격을 방지하려면? XML 외부 엔티티 (XXE) 공격 방지는 외부 엔티티를 해결할 수있는 응용 프로그램의 능력을 비활성화하는 데 경첩이 있습니다. 이는 주로 파서 수준의 구성 변경을 통해 달성됩니다. 다양한 프로그래밍 언어와 XML 처리 라이브러리는 다양한 방법을 가지고 있지만 핵심 원칙은 동일하게 유지됩니다. 파서가 XML 문서 내에 지정된 외부 리소스에 액세스하는 것을 방지합니다.
여기 공통 시나리오에 의한 고장이 있습니다. 및 플래그는 입니다. 이것은 일반 및 매개 변수 엔티티의 처리를 명시 적으로 비활성화합니다. 최신 버전의 Java의 경우 유사한 비활성화 기능과 함께 를 사용하는 것을 고려하십시오.
php :
php 's eptension은 유사한 컨트롤을 제공합니다. 와 같은 함수는 외부 엔티티의 로딩을 효과적으로 비활성화합니다. XML 데이터를 구문 분석하기 전에이 함수를 > Python : - Python 's 및 기타 XML 처리 라이브러리는 종종 외부 엔터티를 비활성화하기위한 직접적인 제어가 부족합니다. 그러나 여기서 모범 사례는 신뢰할 수없는 XML 입력을 직접 사용하지 않는 것입니다. 대신, 구문 분석하기 전에 XML 데이터를 소독하거나 검증하여 악성 엔티티가 처리되는 것을 효과적으로 방지합니다. 와 같은 라이브러리는 표준 XML 파서에 대한 더 안전한 대안을 제공합니다. node.js :
javax.xml.parsers.SAXParserFactory
Python과 유사하게 Node.js 라이브러리는 직접 엔티티 비활성화를 제공하지 않을 수 있습니다. 보안을 염두에두고 설계된 라이브러리를 사용하여 구문 분석하기 전에 입력 XML 데이터를 검증하고 소독하는 데 중점을 둡니다. 표준 구문 분석기와 함께 잠재적으로 악의적 인 입력을 직접 사용하지 마십시오. javax.xml.parsers.DocumentBuilderFactory
특정 XML 구문 분석 라이브러리 및 프레임 워크의 설명서를 참조하여 외부 엔티티 해상도를 비활성화하는 데 사용할 수있는 정확한 구성 옵션을 이해하십시오. 라이브러리의 정기적 인 업데이트는 또한 최신 보안 패치의 혜택을 얻는 데 중요합니다. setFeature("http://xml.org/sax/features/external-general-entities", false)
XXE 공격으로 이어지는 일반적인 취약점은 무엇입니까? setFeature("http://xml.org/sax/features/external-parameter-entities", false)에서 발생합니다 - 부적절한 XML 파서 구성 : 이것은 가장 널리 퍼진 원인입니다. XML 파서가 외부 엔터티 처리를 명시 적으로 비활성화하도록 구성되지 않은 경우 입력 XML에서 참조 된 엔티티를 쉽게 해결하고 잠재적으로 HTTP와 같은 프로토콜을 통해 로컬 파일, 내부 네트워크 리소스 또는 원격 서버에 액세스 할 수 있습니다. 위생화는 중대한 위험입니다. 공격자는 파서의 취약점을 악용하는 외부 엔티티 선언이 포함 된 악의적 인 XML 문서를 제작할 수 있습니다. 입력 유효성이 충분하지 않아서 적절하게 구성된 구문 분석기를 사용하더라도 XML 입력의 부적절한 검증은 문제로 이어질 수 있습니다. 공격자는 피상적 인 검사를 우회하여 악의적 인 엔티티를 무해한 XML 데이터에 주입하려고 시도 할 수 있습니다.
출력 인코딩 부족 : - XXE 취약성 자체를 직접적으로 유발하지는 않지만 출력 인코딩은 충격을 악화시킬 수 있습니다. 애플리케이션이 XML 출력에 올바르게 인코딩되지 않으면 XML 응답에 내장 된 민감한 데이터를 노출시켜 공격의 도달 범위를 발전시킬 수 있습니다. 구식 라이브러리 : 구식 XML 구문 분석 라이브러리를 사용하여 새로운 버전을 사용하는 경우, 새로운 버전을 사용하는 보안 패치를 포함하여
- 는 위험이 증가합니다. XXE 취약성에 대한 나의 응용 프로그램? XXE 취약점 테스트에는 수동 및 자동화 된 기술이 모두 필요합니다.
- 수동 테스트 :
데이터 유출 (로컬 파일 읽기) : 는 로컬 파일을 가리키는 엔티티 선언이있는 XML 문서를 구성합니다 (예 : UNIX- 유사 시스템에서 ). 파서가 엔티티를 해결하는 경우 파일의 민감한 데이터가 응답에서 유출되거나 기록 될 수 있습니다. 데이터 유출 (원격 파일 읽기) : 로컬 파일 읽기와 유사하지만 엔티티는 HTTP 또는 기타 프로토콜을 통해 원격 파일을 가리 킵니다. 성공적인 악용은 원격 파일의 내용을 보여줍니다.
OB (Out-of Band) XXE :
는 외부 엔티티를 사용하여 제어하는 서버에 요청하는 것이 포함됩니다. 서버는 요청을 기록하여 취약점을 확인합니다.
자동화 된 테스트 :
몇 가지 도구는 XXE 취약성 감지를 자동화 할 수 있습니다 : .
OWASP ZAP : XXE 취약점을 감지하기 위해 내장 기능이 내장 된 널리 사용되는 웹 애플리케이션 보안 스캐너. - Burp Suite : 활성 스캔 기능을 통해 XXE 결함을 감지 할 수있는 또 다른 인기있는 웹 보안 도구. 스크립트 (예 : Python 사용)는 특정 XML 엔드 포인트 및 데이터 구조에 대한 대상 테스트를 제공 할 수 있습니다.
포괄적 인 커버리지를 보장하기 위해 다양한 공격 벡터를 철저히 테스트하고 다양한 공격 벡터를 고려해야합니다. - XXE 위험을 완화하기 위해 어떤 보안을 구현해야합니까? xxe 위험 :
입력 유효성 검사 및 소독 : - 를 처리하기 전에 항상 XML 입력을 검증하고 소독합니다. 수신 된 XML 데이터의 소스 또는 내용을 절대 신뢰하지 마십시오. XML Canonicalization을 사용하여 XML 문서를 정상화하여 주입 공격의 잠재력을 감소시키고 감소시킵니다. 데이터. 보안 코딩 관행 : XML 데이터를 처리 할 때 프로그래밍 언어 및 프레임 워크에 특정한 보안 코딩 가이드 라인을 따르십시오.
정기적 인 보안 감사 및 침투 테스트 :
정기적으로 응용 프로그램의 보안을 감사하고 안전하게 침투하는 테스트를 수행합니다. 및 프레임 워크 : > 강력한 보안 기능을 제공하고 정기적 인 보안 업데이트로 적극적으로 유지되는 XML 처리 라이브러리 및 프레임 워크를 선택하십시오.
최소한의 권한 원칙 : XML 구문 분석기가 특권이 가장 적은 상태로 실행되도록하십시오. 이는 성공적인 XXE 공격의 영향을 제한합니다.
모니터링 및 로깅 : XML 처리와 관련된 의심스러운 활동을 감지하기 위해 포괄적 인 모니터링 및 로깅을 구현합니다. 이를 통해 잠재적 인 위반에 대한 적시에 응답 할 수 있습니다.
이러한 관행에 부지런히 XXE 공격이 응용 프로그램에 대한 가능성과 영향을 크게 줄일 수 있습니다. 다층 보안 접근법이 가장 효과적이라는 것을 기억하십시오. 위 내용은 XXE (XML 외부 엔티티) 공격을 어떻게 방지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!