2011년 5월 23일 월요일

urllib/urllib2의 보안 취약점이 고쳐졌습니다

원문: urllib/urllib2 Security Vulnerability Fixed (날짜: 2011-04-14, 작성자: Brian Curtin)

Guido van Rossum은 파이썬 URL 라이브러리의 보안 문제인 CVE-2011-1521을 고친 것을 최근에 푸시했습니다. 보안 문제는 드물긴 하지만, 문제가 발생했을 때 문제를 보고하고 처리하고 고치는 과정은 커뮤티니가 참여할 수 있는 좋은 기회입니다.

문제 보고

만약 CPython의 보안 문제를 발견하시면, 일단 그 문제의 세부 사항은 비밀로 유지해 주시기를 부탁합니다. 정당한 보안 문제를 발견하였다면 그 내용을 코어 개발자에게 전달해야 하는데 가장 중요한 것은 간결하면서도 상세한 보고서를 작성하는 것입니다.

해당 문제로 시스템의 관련된 부분이 어떻게 영향을 받는지를 명확하게 설명하는 보고서가 좋은 보고서입니다. 문제가 특정 플랫폼이나 의존성 때문에 발생한다면 그것도 알 수 있으면 도움이 될 것입니다. 영향을 받는 버전도 알면 유용할 것이고, 현재 널리 사용되는 모든 버전에 대해 테스트를 해야 할 것입니다. 마지막으로, 문제를 보여주는 테스트 케이스가 있다면 꼭 포함해 주세요. 보고서는 security@python.org 그룹으로 보내야 합니다.

최근에 Google 보안팀의 Niels Heinen은 훌륭한 보고서를 제출해 주었습니다. 그는 표준 라이브러리인 urlliburllib2 모듈에서 HTTP 302 재지정(redirection) 처리에 관한 문제를 발견하였습니다. 그가 발견한 문제는 서버가 올바르지 않은 스킴(scheme)에 대한 요청을 재지정할 수 있기 때문에 데이터나 시스템이 위협받는 상황이 생길 수 있다는 것입니다. Neils의 처음 보고서에서는 재지정이 문제를 일으킬 수 있는 시나리오를 두 가지 설명했습니다.

첫 번째로 urllib/urllib2file:// URL 스킴에 대한 처리를 제공하기 때문에 file:///etc/passwd로의 재지정으로 패스워드 데이터가 노출될 수 있습니다. 또한, file:///dev/zero와 같은 시스템 장치로의 재지정은 서비스 거부(denial of service)를 일으키는 자원의 고갈 상황을 만들어낼 수 있습니다.

보고서 처리

보안 보고서는 민감한 내용을 담기 때문에 security@python.org 리스트는 보고서를 최대한 빨리 분석하여 조치를 취하는 소수의 믿을 수 있는 개발자 그룹이 담당하고 있습니다. 리스트에 전송할 내용을 암호화하고자 한다면 보안 소식 페이지에서 OpenPGP에 관한 내용을 참고하시기 바랍니다.

보고된 내용을 그룹에서 실제로 보안 문제라고 확정하게 되면 패치와 함께 공개적으로 버그 보고를 하게 됩니다. 이번 경우는 Guido van Rossum이 첫 패치와 함께 이슈 #11662로 공개하였습니다.

문제 고치기

Guido의 패치는 재지정을 http://, https://, ftp:// URL 스킴으로 한정하는 것입니다. FTP 재지정은 실제로도 흔히 사용되는 재지정으로 허용할 만한 것입니다. 예를 들면, 미러 시스템에서 다운로드를 받을 때 종종 지리적으로 가까운 FTP 서버로 요청을 재지정하는 때가 있습니다.

파이썬 2.x에서는 이제 FancyURLopenerredirect_internal 메소드가 올바르지 않은 스킴으로 재지정하는 요청을 받으면 IOError를 발생시킵니다. HTTPRedirectHandlerhttp_error_302도 같은 일을 하는데 이 경우 HTTPError를 발생시킵니다. 파이썬 3에서는 urllib.request를 똑같이 고쳤습니다. 패치와 함께 포함된 테스트 둘에서는 각각 올바른 스킴과 올바르지 않은 스킴으로 재지정을 시험해봅니다.

사용자가 이번 수정 사항을 받아 보려면, Python 2.5는 곧 나올 예정인 최종 보안 릴리스를 사용하면 됩니다. 유지 보수 브랜치인 2.6, 2.7, 3.1, 3.2는 코드에 취약점은 고쳤습니다만 다음 패치 릴리스의 일정은 잡히지 않았습니다.

댓글 없음:

댓글 쓰기