불충분한 인증과 인가를 설명하기 앞서 HTTP 헤더 구조에서 설명한 파라미터에 대해 잠깐 되짚어 보겠습니다
파라미터(매개변수)란?
파라미터는 매개변수라는 의미를 지니는데 보통 외부에서 전달된 데이터로 사용됩니다
위 사진에 Query String은 ? 뒤에 있는 문자열을 뜻합니다
즉 ? 뒤에 있는 cmd부터는 URL 파라미터 영역입니다
URL 파라미터는 웹 서버에 저장된 프로그램을 사용자가 웹 브라우저를 이용하여 값을 전달하는 것입니다 파라미터는 [파라미터 이름] = [파라미터 값]으로 사용되며 파라미터가 여러 개 일 때는 '&' 기호를 입력하여 파라미터를 이어주는 역할을 합니다
파라미터는 주로 웹 브라우저 상에서 사용자가 페이지를 클릭하여 전환할 때 발생하게 됩니다
불충분한 인증이란?
불충분한 인증은 앞서 설명한 URL 파라미터 값에 대한 관리자나 타인의 계정 ID 인증 기능이 제대로 작동하지 않았을 때 발생합니다
예를 들어 URL이 http://musa.test.com:4444/board/1/index.asp?id=test 일 때 현재 파라미터 값 id를 타인의 id로 변조하여 접근이 가능하다면 불충분한 인증이 발생한 겁니다
즉 로그인 기능과 같이 인증이 필요한 부분에서 인증이 제대로 이루어지지 않는 것을 불충분한 인증이라고 합니다
불충분한 인가란?
불충분한 인가는 접근 권한이 없는 페이지에 접근했을 때 발생하는 취약점입니다 예를 들어 관리자가 작성한 공지사항 게시글이 접근 권한이 없을 때 공격자가 인증 정보를 변조하지 않고 이 게시글에 접근한다면 불충분한 인가가 발생한 겁니다
즉 접근 권한이 없는 페이지에 인증 정보를 변조하지 않고, 페이지에 접근하는 것을 불충분한 인가라고 합니다
불충분한 인증과 인가의 차이점
불충분한 인증과 인가가 발생하는 이유는 웹 서버상에 보안 로직이 존재는 하지만 완벽하게 작동되지 않았을 때 발생하게 됩니다
즉 불충분한 인증은 수평 관계로 생각하여 타인의 로그인 인증 과정을 파라미터 값 변조로 접근이 가능할 때 발생하고 불충분한 인가는 수직 관계로 불충분한 인증에서 발생한 계정 권한 보다 상위 권한인 관리자 페이지나 접근 권한이 없는 페이지에 접근할 때 발생한다는 차이점이 있습니다
불충분한 인증과 인가의 대응 방안
불충분한 인증
- 추측이 가능한 아이디와 패스워드 사용을 자제하고, 로그인 시 2차 인증을 수행하도록 설정한다
- 개인정보 수정이나 패스워드 수정 기능의 페이지 등 중요 정보를 표시하는 페이지에서 본인 인증을 재확인하는 기능을 구현한다
- 인증 과정에서 클라이언트 사이드를 사용하면 사용자가 임의로 정보를 수정할 수 있으니 서버 사이드를 통해 인증 및 필터링 과정을 설정한다
불충분한 인가
- 중요 정보 페이지는 권한이 없는 사용자가 접근 및 변조가 가능하므로 접근 권한에 대한 2차 인증 과정을 구현한다
- 권한이 허용된 사용자만 접근 권한이 없는 페이지에 접근할 수 있게 설정한다
프로세스 검증 누락이란?
프로세스 검증 누락은 인증이 필요한 페이지에서 허가된 인원인지를 확인하는 기능이 존재하지 않았을 때 발생합니다 쉽게 설명하자면 보안 로직 자체가 구현되지 않았을 때 발생하게 됩니다
앞서 설명한 불충분한 인증과 인가는 보안 로직이 존재는 하지만 완벽하게 작동되지 않아 발생했다면 프로세스 검증 누락은 보안 로직 자체가 없어 발생합니다 작동 방식은 불충분한 인증과 인가와 동일하게 파라미터 값만 바꾸어 접근 권한이 없는 페이지에 액세스하는 경우가 있습니다 (단 페이지에 로그인 인증 없이 파라미터 조작만으로 접근할 수 있다)
프로세스 검증 누락의 보안 설정 방법
- 인증 과정에서 클라이언트 사이드를 사용하면 사용자가 임의로 정보를 수정할 수 있으니 서버 사이드를 통해 인증 및 필터링 과정을 설정한다
- 중요 정보 페이지는 권한이 없는 사용자가 접근 및 변조가 가능하므로 접근 권한에 대한 2차 인증 과정을 구현한다
프로세스 검증 누락은 불충분한 인증과 인가에서 발생하는 방식과 동일하기 때문에 권한의 종류 및 범위를 파악하면 해당 보안 설정을 사용할 수 있습니다
[ 선수 학습 내용 ]
[ 참고 자료 ]