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

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

심각한 취약점이라는 주장에 의하면, 공격자는 https://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의 동작 방식을 바꿀 가능성도 있어 보입니다.