불충분한 인증/ 인가 취약점

2023. 3. 28. 21:02

1.    파라미터/매개변수 이란?(프로그래밍관점에서

파라미터(매개변수)는 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴의 인풋으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다.

 (서브루틴의 인풋으로 제공되는 데이터들 -> 전달 인자)

보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될때 마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.

대부분의 매개변수는 call by value의 형태로 동작한다. (서브루틴 내부에서 매개변수는 전달 인자를 복사한 독립적인 지역 변수의 형태로 동작한다.)

프로그램에서 각 프로세스간 변수()를 넘겨줄 때 파라미터를 사용한다.

파라미터 = 매개변수 = 넘겨지는 값(변수)

 

더 선명한 사진 찾거나 (내껄로 진행)

2.    불충분한 인증 이란? 

불충분한 인증은 민감한 데이터에 취약한 인증 메커니즘이 구현되어 있을 경우 발생하는 취약점이다.

인증 기능(로그인, 중요 페이지에 대한 2차 인증 등)은 구현하였으나 추측 가능한 패스워드, 취약한 인증 프로세스로 구현되어 있으면 해커가 이를 우회해서 정보를 탈취할 수 있는 취약점이다.

이러한 취약점을 대비하는 이유는 단순한 비밀번호 입력을 통하여 쉽게 로그인을 시도할 수 있거나, 권한이 없는 사용자가 중요 정보 페이지에 접근하여 정보를 유출하거나 변조할 수 있기 때문이다.

-> 개인정보 수정 시 PW확인이 없는 경우에 취약하다.

 

<점검 방법>

1.    추측 가능한 아이디/패스워드를 입력하여 로그인 가능한지, 초기 패스워드를 사용하는지, 2차 인증을 수행하는지 확인한다.

2.    개인정보 수정 및 패스워드 수정 기능의 페이지에 접근 전에 본인 인증에 대한 재인증을 하고 있는 것을 확인한다.

 

<보안 설정 방법>

1.    중요 정보 페이지와 같은 중요 정보를 표시하는 페이지에서는 본인 인증을 재확인하는 로직을 구현하고, 인증 후 사용자가 이용 가능 페이지에 접근할 때마다 승인을 얻은 사용자인지 페이지마다 검증한다.

2.    접근 통제 정책을 구현하고 있는 코드는 구조화, 모듈화가 되어 있어야 한다.

3.    접근제어가 필요한 모든 페이지에 통제 수단(로그인 및 권한 체크)을 구현해야 하며, 특히 하나의 프로세스가 여러 개의 페이지 또는 모듈로 이루어져 있을 때 권한 체크가 누락되는 경우를 방지하기 위해서 공통 모듈을 사용하는 것을 권장한다.

4.    인증 과정을 처리하는 부분에 css를 사용하면 사용자가 임의로 수정할 수 있으므로 Server Side Script를 통해 인증 및 필터링 과정을 수행한다.

 

 

3.    불충분한 인가란

불충분한 인가란 프로그램이 가능한 모든 실행경로에 대해 접근제어를 검사하지 않거나 불완전하게 검사하는 경우, 공격자는 접근 가능한 실행경로를 통해 정보를 유출할 수 있는 취약점이다.

è 접근제어가 필요한 페이지의 통제 수단이 미흡한 경우 비인가자가 url 파라미터 값 변경 등의 방법으로 중요 페이지에 접근하여 민감한 정보 열람 및 변조가 가능한 것이다.

è 게시물(남이 쓴 글)수정, 권한 우회 프로세스가 없는 경우에 취약하다.

 

예시) 1. 무료 회원의 계정으로 유료 회원 전용 게시판 접근 가능

2. 학생 회원이 선생님 회원 게시판 접근 가능

-> 부여된 권한보다 높은 권한이 요구 되는 기능에 접근이 가능한 경우

 

<점검 방법>

1.    개인정보 수정 및 패스워드 수정 기능의 페이지에서 다른 사용자와의 구분을 아이디, 일련번호 등의 단순한 값을 사용하는지 조사한다.

2.    다른 사용자와 구분하는 값을 변경하는 것만으로 다른 사용자의 개인정보, 패스워드에 접근이 가능한지 확인한다.

 

<보안 설정 방법>

1.    민감한 중요 데이터에 대한 접근 페이지에서 인증을 위한 로직이 구현되지 않았다면, 세션을 통한 인증 및 사용자에게 확인을 위한 인증 값 입력을 통한 인증 절차를 구현하여 정상적인 로그인 사용자인지 또는 권한이 허용된 사용자인지 여부를 확인 후 해당 페이지에 접근할 수 있도록 한다.

페이지별 권한 매트릭스를 작성하여, 페이지에 부여된 권한의 타당성을 체크 후에 권한 매트릭스를 기준으로 하여 전 페이지에서 권한 체크가 이뤄지도록 구현한다.

 

4.    불충분한 인증과 인가의 차이점은

 

5.    프로세스 검증 누락 이란?

인증이 필요한 모든 페이지에 대해 인가된 인원인지를 확인하는 기능이 존재하지 않는 경우 해당 정보를 변조하거나 탈취할 수 있는 취약점이다.

로그인을 해야만 게시글을 수정할 수 있는 것이 아닌 경우나 비밀글임에도 특정 인덱스 값을 바꾸어 들어갈 수 있는 경우가 해당된다.

è 인증이 필요한 페이지에 대해 비인가자가 비정상적인 방법으로 중요한 페이지에 접근을 시도하는 것이다.

 

<발생>

인증이 필요한 웹 사이트의 중요페이지(관리자 페이지, 회원정보 변경 페이지 등) 페이지에 대한 접근 제어가 미흡할 경우 하위 url 직접 접근, 스크립트 조작 등의 방법으로 중요한 페이지에 대한 접근이 가능해진다.

è 대부분 url 변조를 통해 접근한다.

 

<보안 설정 방법>

인증이 필요한 페이지의 경우 페이지별 권한 체크 로직을 구현한다.

1.    우회될 수 있는 플로우를 차단하여야 하며, 페이지별 권한 매트릭스를 작성하여 페이지에 부여된 권한의 타당성을 체크한 후에 권한 매트릭스를 기준으로 전 페이지에서 권한 체크가 이루어지도록 구현하여야 한다.

2.    인증이 필요한 모든 페이지에 대해 유효 세션임을 확인하는 프로세스 및 주요 정보 페이지에 접근 요청자의 권한 검증 로직을 적용한다.

유효 세션의 검증 및 페이지에 대한 접근 권한은 스크립트에 의존하지 말아야 하며, Server Side Script로 구현된 프로세스를 사용한다. 

'seKUrity' 카테고리의 다른 글

File Download Vulnerability란?  (0) 2023.03.30
상대경로와 절대경로  (0) 2023.03.30
SOP 정책과 CSP 정책  (0) 2023.03.24
XSS game 1-6번 풀이  (0) 2023.03.23
SSTI  (0) 2023.03.08

BELATED ARTICLES

more