웹의 3대 보안 기법

Web 2008. 6. 29. 09:12

Authentication

인증은 가장 기본적인 사용자 접근 처리 기법으로써 사용자가 아이디와 패스워드를 전송하면 유효성을 체크하여 권한을 주는 방식이다. HTML 폼을 이용한 인증 기법이 주를 이루며, SSL 인증서나 물리적 토큰, 스마트 카드등도 제한적이지만 이용되고 있다.  보통의 인증 기법의 취약점은 설계의 결함에서 많이 노출된다. 이는 사용자의 패스워드에 대한 제어가 없거나 최소화 됨으로써(짧은 패스워드, 주민등록번호와 같은 패스워드, 사전에 있는 단어 등의 사용), Brute Force 공격에 의하여 쉽게 패스워드가 노출되게 된다. 또 다른 위협의 예로는, 인증 실패시의 메시지(“해당 아이디가 존재하지 않습니다.”, ”비밀번호가 틀렸습니다”)를 자세하게 제시하여 공격자의 공격 속도를 빠르게 할 수 있는 구조적인 위협도 존재한다.

이러한 위협을 방지하기 위해 패스워드의 최소한의 요구사항을 강제하여야 하며, 사용자가 강력한 패스워드를 저장할 수 있도록 지원해야 한다. 또한 자동화된 도구로의 공겨을 막기 위한 수단(여러 차례 로그인 실패시 계정을 임시 차단, 암호 찾기시 이메일 인증)이 구현단계에서 추가되어야 하며, 모든 인증 관련 사건을 로깅하고, 공격 방지를 위해 brute-force등의 공격이 탐지시, 실시간 경보등의 예방 대책들이 마련되어야 한다.

 

Session Management

세션은, 오늘날의 많은 웹 응용이 동적인 페이지를 사용함으로써, 상태를 유지하기 위해 사용되는 데이터 구조로써, 이를 이용하여 인증을 통해 성공적으로 로그인 한 사용자의 후속 행위에 대한 접근제어에 사용된다.  서비스 제공자는 각 사용자에게 세션을 식별할 수 있는 토큰을 제공하며, 사용자는 웹에서의 모든 요청을 해당 토큰을 이용하여 전송한다.

 이러한 사용자의 이메일이나 아이디와 관한 정보를 저장하는 세션이, 쉬운 암호를 사용하여 이를 인코딩할 경우 매우 위험하다. 또 의미있는 형태의 세션의 모습은 아니지만, 순서나 패턴등을 쉽게 예측 당할 수 있는 세션 토큰을 사용할 경우에도 공격자에게 악용될 소지가 있다.  또한 세션 자체를 얻는 것을 목적으로, 네트워크를 통해 전송되는 세션이 hijacking당하여 악용될 가능성도 존재한다.

세션 해킹을 방지하기 위해 세션 토큰은 HTTPS로 전송되어야 하며, 로그 아웃시에 정보를 저장하고 있는 세션토큰을 비우는 기능이 구현되야 하고, 적절한 시간이 지나면 세션이 자동 파괴되고, 동시 로그인을 허용하지 않는 방법등이 강구되어야 한다.

 

Access Control

사용자 접근 제어의 마지막 단계로써, 사용자가 특정한 행위나 자원에 대한 접근을 요청할시 허가할 것인지에 대한 결정을 확정 짓는 처리단계이다. 접근 제어는 인증과 세션 관리를 기반으로 하는 보안기법이고, 보통은 정교한 로직을 통해 구현되며, 응용의 영역이나 기능의 종류에 따라 고려 사항이 달라진다. 접근제어는 두 영역으로 구분되는데 첫째는 수직 접근제어, 두번째는 수평접근제어이다. 전자는 서로 다른 사용자가 서로 다른 기능을 사용할 있도록 제어하는 것(관리자vs일반 사용자)이고 후자는 사용자들이 서로 다른 자원에 대해 서로 다른 권한을 갖는 것(메일 응용과 같은)을 말한다.

접근제어가 깨어질 경우, 웹서버에 접근한 임의의 사용자가 자신에게 허가되지 않은 문서를 조회할 가능성도 있고, 이를 통해 페이지의 네이밍 규칙이 파악되면 많은 정적인 자원들이 대량으로 유출될 위험이 존재한다.

접근 제어의 요구 사항은 복잡하므로, 보안 취약점이 되는 경우가 많다. 개발자들은 사용자의 행위에 대해 종종 결함이 있는 가정을 하며, 접근 제어 체크를 누락하기도 한다. 공격자들은 각 기능 단위마다 접근 제어 취약점을 찾는 일이 번거로울 수 있으나, 접근 제어의 결함은 워낙 만연하므로 가치 있는 노력으로 간주 된다.

 따라서 접근 제어를 통제하기 위해, 사용자가 전송한 파라미터를 반드시 재검증 후에 사용해야하고, 중요한 데이터를 접근 할 경우에는 반드시 로그를 남김으로써 사후 처리를 할 수 있게 해야한다.

 

Posted by 행복한 프로그래머 궁금쟁이박
TAG ,

댓글을 달아 주세요