2014-04-25 2 views
0

<!ELEMENT ...> 및 이와 유사한 선언이 포함되어 있으면 XML 문서의 유효성을 검사하지 못하도록 스키마 (XSD가 바람직 함)를 사용할 수 있습니까?<!ELEMENT> 및 스키마 (DTD, XSD)의 다른 선언을 허용하지 않습니까?

XML 파서가 여전히 취약하고 결국 충돌이 발생합니까?

http://resources.infosecinstitute.com/xml-vulnerabilities/

예 : 억 laughes

<?xml version="1.0"?> 
<!DOCTYPE lolz [ 
<!ENTITY lol "lol"> 
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> 
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> 
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> 
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;"> 
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> 
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> 
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> 
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> 
]> 
<lolz>&lol9;</lolz> 

&lol9;은 1,000,000,000 lol 엔티티를 생성하고 아마 밖으로 XML 파서 실행을 함께 결말, 등등 분석과 10 배 &lol8;로 확대된다 기억.

나열된 취약점 중 일부는 에서 악용 될 수 있습니까? MSXML 6.0?

답변

1

아니요, XSD는 구문 분석 된 XML 문서의 infoset을 제한합니다. 모든 DTD 처리는 논리적으로 XSD 유효성 검사보다 먼저 수행되며 XSD는 DTD의 존재 또는 부재를 요구, 허용 또는 금지 할 방법이 없습니다.

일부 XML 파서에는 자원 사용을 제한하는 호출 옵션이 있습니다. 파서에 해당 옵션이 없더라도 운영 체제는 정상적으로 작동합니다.

+0

일부 파서에는 인라인 DTD 선언을 허용하지 않는 독점 옵션이있는 것 같습니다. 아마도 호스트 환경을 안전하게 보호 할 수있는 유일한 방법 일 것입니다. – CoDEmanX