원문은 Microsoft IIS 0Day Vulnerability in Parsing Files (semi‐colon bug)를 참조하시기 바랍니다.

개요

IIS는 어떤 확장자이든 ASP 또는 실행 가능한 다른 확장자로 인식하고 실행할 수 있습니다. 예를 들어, "malicious.asp;.jpg"는 서버에서 ASP파일로 실행됩니다. 대다수의 파일 업로드 프로그램들은 파일 이름의 마지막 부분만을 확장자로 인식하고 필터링합니다. 공격자는 이 취약점을 이용해 필터를 우회할 수 있고, 실행 가능한 파일을 서버에 업로드 할 수 있습니다.

영향

공격자가 ".asp", ".cer", ".asa"와 같은 확장자 뒤에 세미콜론을 붙이는 방법으로 파일 확장자 필터를 우회할 수 있으므로 많은 수의 프로그램들에서 문제가 될 것으로 예상됩니다. 2008년 여름에 유명한 웹 애플리케이션들을 대상으로 조사해 본 결과, 70%의 파일 업로드 프로그램이 이 취약점에 무력화 되었습니다.

상세 설명

  • "malicious.asp;.jpg"의 경우, 웹 애플리케이션은 JPEG로 판단하지만 IIS는 ASP파일로 판단하여 "asp.dll"로 전달 합니다. 단, 닷넷의 경우 "malicious.aspx;.jpg"을 ASP.NET 파일로 인식하지 않으므로 이 버그를 이용할 수 없습니다.
  • 세미콜론 외에도 ":"을 이용하면 임의의 확장자를 붙여 빈 파일을 만들수 있습니다. 예를 들어 "test.asp:.jpg"를 NTFS 파티션에 업로드하면 "test.asp"라는 빈 ASP 파일이 생성됩니다. 이는 "NTFS Alternate Data Streams"에 의한 것으로 세미콜론 취약점과 다른 문제입니다.

권고 사항

  • 웹 개발자

    • 완전히 랜덤한 문자열을 파일 이름으로 사용하고 웹 애플리케이션에서 확장자를 정하도록 합니다. 또한 사용자 입력을 파일 이름으로 사용하지 말아야 합니다.
    • 알파벳과 숫자로 이뤄진 이름과 확장자인 경우에만 파일 업로드가 가능하도록 합니다.
  • 웹 마스터

    • 업로드 파일이 저장되는 디렉토리에서 "실행" 권한을 제거합니다.

관련 링크