[Hot Issue] 취약한 인증과 세션관리, 공격 위험과 예방법
[OWASP Top 10 2010 3부]
OWASP(Open Web Application Security Project)에서는 웹 애플리케이션 환경에서 가장 중요한 위험 10가지를 선정하여 발표하고 있다. 안철수연구소 ASEC Report에서는 OWASP Top 10에 대해 집중 소개할 예정이다. 이를 통해 고객들이 웹 애플리케이션 보안의 취약점을 인지하고 예방할 수 있기를 기대한다. 지금까지 인젝션(Injection), XSS(Cross Site Scripting, 이하 XSS)에 대해 알아보았다. 이번 호에서는 취약한 인증과 세션 관리에 대해 집중 소개한다.
■ OWASP 2010 TOP 3
이번 호에서 다루는 취약한 인증과 세션 관리는 OWASP 2010의 Top 3에 해당한다. 인증 및 세션 관리와 연관된 애플리케이션 기능이 올바르게 구현되지 않는다면, 공격자로 하여금 다른 사용자의 신분으로 가장할 수 있도록 하는 패스워드, 키, 세션 토큰 체계를 위태롭게 하거나 구현된 다른 결함들을 악용할 수 있도록 허용하게 된다.
먼저 취약한 인증과 세션 관리 공격의 주요 사항은 다음의 그림을 통해 알 수 있다.
[그림] 취약한 인증과 세션 개괄
● Threat Agents(공격자): 자신의 계정을 소유하고 있는 사용자이거나 타인의 계정을 훔치려는 익명의 외부 공격자, 자신의 행위를 숨기려고 하는 내부 사용자이다.
● Attack Vectors(공격경로): 공격자는 사용자를 위장하기 위해 인증이나 세션 관리의 노출 또는 결함(노출된 계정, 패스워드 혹은 세션 ID)을 이용한다.
● Security Weakness(보안 취약점): 개발자들은 습관적으로 인증 및 세션 관리 체계를 자주 구축하지만 올바르게 구축하기는 어려운 것이 현실이다. 그 결과 로그아웃, 패스워드 관리, 타임아웃, 사용자 정보 기억, 비밀번호 찾기 질문, 계정 업데이트 등 이러한 습관적인 체계 구축은 종종 결함을 갖고 있다. 또 각기 다르게 구현되기 때문에 결함을 찾기란 쉽지 않다.
● Technical Impacts(기술적 영향): 이 결함은 일부 혹은 모든 계정에 대한 공격을 허용한다. 성공하는 즉시, 해당 계정이 할 수 있는 모든 것을 할 수 있기 때문에 특별한 권한이 부여된 계정은 자주 공격 대상이 된다.
● Business Impacts(비즈니스 영향): 영향을 받는 데이터나 어플리케이션 기능의 비즈니스적 가치를 고려한다. 또한 취약점의 공개적 노출에 대한 비즈니스 영향을 고려해야 한다.
공격 시나리오 예
URL Rewriting을 지원하고 URL 상에 세션 ID가 포함된 항공 예약 애플리케이션이 있다고 할 때, 인증된 사용자가 친구에게 항공권 예약 내용을 알려주고자 아래 URL 링크를 E-mail을 통해 보낸다면, 어떤 일이 발생할까?
URL의 전송한 사용자는 그의 세션 ID가 노출 되게 되며, 수신 받은 친구는 이 URL 링크를 이용해 메일을 발송한 사용자의 세션과 신용카드 넘버까지 확인하여 추가적인 행위를 할 수 있다.
취약한 인증과 세션 관리의 대응책
취약한 인증과 세션 관리에 대한 대응책으로는 개발자들이 다음과 같은 사항을 준수하여야 한다.
● 강력한 인증 및 세션 관리 통제의 단일 체계를 구축해야 한다.
● OWASP의 어플리케이션 보안 검증 표준(ASVS) 항목의 V2(인증)와 V3(세션 관리)에 정의되어 있는 인증 및 세션 관리 요구사항을 모두 충족시켜야 한다.
● 개발자를 위한 간단한 인터페이스를 갖추어야 한다. 특히, ESAPI 인증자와 사용자 API를 좋은 예를 삼아 구축 시 참고하여야 한다.
● 세션 ID를 도용하는데 사용될 수 있는 XSS 취약점을 막기 위해 노력해야 한다.
[Reference]
OWASP
• OWASP 인증 Cheat Sheet
• ESAPI 인증자 API
• ESAPI 사용자 API
• OWASP 개발 가이드: 인증 챕터
• OWASP 테스트 가이드: 인증 챕터
External
•CWE 287 항목: 부적절한 인증
- 안철수연구소