취약한 접근 제어(Broken Access Control) 취약점, OWASP Top 10 2017 A5

접근 제어는 사용자로 하여금 허가되지 않은 정보에 접근할 수 없도록 서비스의 정책을 강제하는 것을 의미합니다. 일반적으로 웹 서비스에서는 접근 불가능한 정보는 애초에 존재하지 않는 것처럼 노출하지 않거나 별도의 인증을 거치도록 하면서 정보를 보호합니다. 취약한 접근 제어(Broken Access Control)란 이러한 접근 제어 정책을 우회하거나 의도치 않은 권한 상승으로 인해 기밀 정보가 노출될 수 있는 취약점을 의미합니다.

 

취약한 접근 제어(Broken Access Control)의 유형

 

사이트 조작을 통한 접근 제어 우회

허용되지 않은 권한의 페이지 URL을 직접 입력하는 것으로 인증을 우회할 수 있다면 이 유형에 해당합니다. 어플리케이션 설정을 조작하거나 개발자 도구를 통해 HTML 소스를 조작한다거나 다음 페이지를 열기 위한 API를 직접 호출하는 등이 이에 해당합니다.

  • URL 기반 접근제어: URL 조작을 통해 쉽게 접근 제어 우회가 가능합니다.
  • 파라미터 기반 접근제어: 마찬가지로 파라미터 조작을 통해 쉽게 접근 제어 우회가 가능합니다.

대응 방안

사용자가 조작 불가능한 세션 레벨에 권한 정보를 관리하고 이를 이용하여 매 페이지를 접근할 때마다 권한을 체크하여 접근을 통제해야 합니다. 접근 제어가 불필요한 공개 페이지들은 별도로 관리합니다.

 

객체 직접 참조(Insecure direct object references, IDOR)

시스템을 개발할 때 ID 정보를 생성하기 위해 시퀀셜한 번호를 사용하는 경우가 많습니다. 예를 들어 파일을 업로드할 때 파일에 167번과 같은 숫자를 붙여 이를 유일하게 식별하는 식별자로 사용하는 것입니다. 해당 파일을 다운로드하려면 167이라는 ID값을 이용하게 됩니다. 만약 다운로드 요청을 조작해 166번을 넣었을 때 166에 해당하는 자료가 다운로드 가능하다면 이 유형에 해당하는 취약점을 내포하고 있는 것입니다.

Key조작을 통한 정보 유출은 기밀 파일의 노출만을 의미하는 것은 아닙니다. 사용자 ID값을 시퀀셜한 키 값과 함께 관리하고 있고 이 키 값을 조작함으로써 다른 사용자로 로그인이 가능하다면 심각한 위협에 노출될 수 있습니다.

대응 방안

시퀀스 값을 단독으로 API의 Key로 사용하지 않도록 합니다. 별도의 검증 가능한 파라미터를 조합하여 API를 구성해야 합니다.

 

Referer 기반 접근 제어

HTTP헤더의 Referer에 기반한 접근 제어입니다. 주로 시스템 간 접근 제어 시 이용 가능한 방법인데 HTTP 헤더는 쉽게 조작이 가능하기 때문에 안전하지 않은 방법입니다.

대응 방안

HTTP Referer에 의존하지 않고 IP whitelist를 통한 접근제어를 동시에 수행합니다.

 

 

관리자 페이지 노출

일반적으로 관리자 페이지는 일반 사용자가 접근해서는 안됩니다. 만약 관리자 페이지에 접근할 수 있는 경로가 노출된다면 무차별 대입 공격(Brute Force Attack)이나 피싱 등을 통해 사이트의 모든 정보를 관리하는 관리자 계정 정보가 유출될 수 있습니다.

대응 방안

관리자 페이지는 일반적으로 사용하지 않는 유추하기 어려운 주소에 매핑해야 합니다. 근본적으로는 망 분리를 통해 서비스망과 별도로 분리된 망에서만 관리자 페이지 접근이 가능하도록 구성하는 것이 바람직합니다.

관리자 주소 노출이나 URI 기반 인증을 수행 시 공격에 취약합니다.

 

단계 건너 뛰기

순서가 있는 업무를 수행할 때 간단한 조작을 통해 단계를 건너뛸 수 있다면 의도치 않은 권한상승과 같은 결과를 초래합니다. 사용자 인증을 위해 아이디를 먼저 입력하고 다음 페이지에서 패스워드를 입력한다고 가정했을 때, 패스워드 입력 단계에서 패스워드 입력이 아닌 이후 단계로 바로 접근이 가능하다면 아이디만으로 해당 사용자처럼 활동할 수 있게 됩니다.

대응 방안

단계별 이동 가능한 URL을 노출하지 않고, 다음 단계에서는 반드시 이전 단계의 입력값 유무를 체크해야 합니다.

 

참고 자료

OWASP, A5:2017-Broken Access Control

PortSwigger, Access control vulnerabilities and privilege escalation

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기