URL에 세미콜론이 있는 경우 IIS 6.0의 처리 문제


지난 며칠간, IIS에서 새로운 보안 취약점이 밝혀졌다고 해서 마이크로소프트의 보안대응센터(MSRC)와 IIS가 정확한 원인을 조사 중이었습니다.

심각한 취약점이라는 주장에 의하면, 공격자는 http://www…..com/uploads/foo.asp;bar.jpg 과 같이 세미콜론(;)으로 연결된 이중 확장자를 쓴 URL을 보냅니다. 희생자가 이 URL을 클릭하면 IIS 서버는 ;의 앞부분만 보고 ASP 스크립트 핸들러에서 이를 처리합니다. 이 URL에 실행(Execute) 권한이 있는 조건에서는 실제로는 foo.asp;bar.jpg라는 파일에 들어있는 ASP가 실행됩니다. 공격자가 의도한 코드가 실행되기 때문에 보안 문제가 된다는 얘기입니다.

우선 이번 문제는 IIS 6.0, 즉 윈도우 서버 2003에서만 일어날 수 있습니다.

오늘 조사를 마치고 MSRC 블로그IIS 블로그에 최종적인 결과가 포스팅되었습니다. IIS팀의 분석에 의하면

  1. 먼저 공격자가 자신의 파일을 해당 서버에 올리기 위해 쓰기 권한이 필요합니다. 파일 업로드를 허용하지 않는 서버에서는 이 문제에 노출되지 않습니다.
  2. 파일의 업로드를 허용하는 서버에서는 업로드된 파일에 스크립트 실행 권한을 주지 않는 것이 권장되고 있습니다. IIS 6.0 Security Best Practices에서도 이 점을 설명하고 있습니다. 이러한 권한 설정 가이드를 잘 따랐다면 역시 이번 문제에 노출되지 않습니다.
  3. 만일 원래부터 스크립트 실행 권한을 주어야 하는 경우라면 이번 건과 관계없이 권한 설정의 문제입니다.

따라서 이번에 제기된 문제는 기능상 버그로 볼 수는 있더라도 보안 취약점은 아니라고 결론지었습니다.

그런데 보통 이미지 파일은 업로드를 허용하는 경우가 흔히 있게 마련이고 그렇다면 콘텐트 필터링 시스템을 우회할 수 있다는 뜻입니다. 그렇다고 해도 해당 이미지 파일에 실행 권한을 줄 것인지를 관리자가 반드시 유념해서 설정해야 합니다. 비록 보안 취약점은 아니지만, IIS의 다른 버전에서 이런 문제가 생기지 않는 것과 동일하게 하기 위해서 IIS 6.0의 동작 방식을 바꿀 가능성도 있어 보입니다.

Comments (1)

  1. Anonymous says:

    미묘한 문제네요..