권한인증 취약점이란?

  • 권한인증 취약점은 사용자 인증 등에 사용되는 여러 정보를 수정하여 접근 권한이 없는 정보에 접근하여 기밀 정보를 조회 또는 변경하고 악용할 수 있는 취약점
  • 공격 방식에 따라 아래와 같이 분류된다.
    • URL/Parameter 변조
    • 세션 탈취(불충분한 세션 관리)
    • 쿠키 변조

URL/Parameter 변조

  • 웹 서버에 전송되는 모든 HTTP 요청 값(URL, Parameter 등)을 조작해 접근 권한이 없는 정보에 접근하는 방식

세션 탈취(불충분한 세션 관리)

  • 웹 애플리케이션 사용자가 로그인 시 발급되는 세션ID가 일정한 규칙을 가지고 발급되거나 세션 타임아웃을 너무 길게 설정한 경우 공격자가 사용자 세션ID가 유추하거나 유출되어 사용자의 권한이 도용되는 방식

쿠키 변조

[출처] 교육부 2014 웹 서버 및 홈페이지 취약점 점검 가이드

  • 쿠키(Cookie)를 변조하여 다른 사용자로 전환하거나 권한 상승을 수행하는 방식

 

권한인증 취약점 대응 방안

  • 중요한 정보가 있는 웹 페이지는 재인증(2차 인증)을 적용
  • 개발 시 안전하다고 확인된 라이브러리나 프레임워크(OpenSSL, ESAPI의 보안 기능 등)를 사용하여 개발
  • 사용자 권한에 따른 ACL(Access Control List)을 설정
  • 응용 프로그램이 제공하는 정보와 기능을 역할에 따라 배분함으로써 공격 노출면을 최소화
  • 로그인할 때 마다 예측이 불가능한 새로운 세션ID를 발급하도록 설계하고 이 때 기존 세션ID는 파기한다.
  • 세션 만료 시간을 설정하여 일정 시간 움직임이 없을 경우 자동으로 로그아웃 되도록 설정
  • Cookie 대신 Session 방식을 사용하여 사용자 인증을 구현하는 것이 좀 더 안전하다.