<출처. 한국IDG 2012.05.08>
해커들은 온라인 주문이나 기타 프로세스의 약점을 악용하기 위해서 특히 웹 상에서 비즈니스 로직(Business Logic)의 결함을 찾아 다니고 있다. 애플리케이션의 보안을 검증하는 NT OBJECTives는 가장 빈번히 발견되는 비즈니스 로직 결함 열 가지를 선정했다.
1. 인증 플래그(Flag) 및 권한 승급
애플리케이션에는 자체적인 접속 제어 목록과 권한이 설정되어 있기 때문에 인증 이행이 약화되면 다른 사람의 콘텐츠에 접근하거나 더 큰 권한을 갖는 더 높은 수준의 사용자가 되는 등에 악용할 수 있는 취약성이 나타나게 된다. 여기서 필요한 것은 목표가 될 수 있는 ACL/권한과 관련이 있는 매개변수의 이름을 확인하는 일이며, 테스트를 진행하는 사람은 퍼지(Fuzzy) 툴을 이용해 비트 패턴이나 권한 플래그를 바꿀 수 있으며, 이를 통해 공격자가 권한을 악용하거나 승급시키거나 인증 과정을 우회하는 위치를 찾아낼 수 있다.
2. 중요한 매개변수 조작 및 승인되지 않은 정보/콘텐츠에 대한 접근
HTTP GET 및 POST 요청이 애플리케이션에 전달될 때는 일반적으로 이름/값 쌍(Pair), JSON, XML 등 여러 매개변수가 수반되지만, 이런 것들은 추측을 통해 조작하거나 예상할 수 있다. 이를 위해서는 쉽게 예상할 수 있는 값을 찾고 매개변수의 값을 변환해 승인되지 않은 접속 권한을 얻을 수 있는지 확인해야 한다.
3. 개발자의 쿠키 추측 및 비즈니스 프로세스/로직 우회
쿠키는 종종 HTTP에서의 상태를 유지하기 위해서 사용되지만, 개발자들은 세션 쿠키(Session Cookie)를 사용할 뿐 아니라 세션 전용 변수를 이용해 내부적으로 데이터를 구축한다. 애플리케이션 개발자들은 로직의 약점을 드러내는 주요 시점에서 브라우저 상에 새로운 쿠키를 설정한다. 여기서 문제는 쿠키가 역엔지니어링되거나 추측하거나 판독할 수 있는 값을 갖고 있어 공격자들이 악용하기 쉬운 약점을 찾아내려 한다는 것이다. 테스트에는 일반적으로 프로파일링(Profiling) 중에 제공되는 쿠키의 분석, 쉽게 예측할 수 있는 값 찾아보기, 쿠키 값의 변경 가능 여부 확인 등이 포함된다.
4. LDAP 매개변수 식별 및 주요 인프라 접근
LDAP은 대형 애플리케이션의 중요한 측면으로 자리잡고 있으며, SSO(Single Sign On)과도 통합될 수 있을 것이다. 사이트마인더(SiteMinder)와 로드 밸런서(Load Balancer) 등 많은 인프라 계층 툴들이 인증과 권한 설정을 위해 LDAP을 사용하고 있다. LDAP 매개변수는 악용될 수 있는 비즈니스 로직 결정 플래그를 가질 수 있다. 공격자들은 애플리케이션이 충분한 검증을 수행하지 않는 경우 비즈니스 계층을 우회하는 방법과 논리적 결함을 찾아낼 수 있다. 이를 위한 테스트는 목표로 예상되는 이메일이나 사용자명을 취하는 LDAP과 연결된 매개변수를 찾는데 초점을 맞춘다.
5. 비즈니스 콘스트레인트(Business Constraint) 악용
애플리케이션의 비즈니스 로직은 규칙과 제약을 정의하지만 설계가 엉성할 경우 공격자들은 이것들을 이용해 숨겨진 영역을 찾아내고 그 환경을 파악할 수 있게 된다. 따라서 숨겨진 매개변수와 값을 테스트하여 조작의 목표가 될 수 있는 비즈니스에 국한된 요청을 검토해야 한다.
6. 비즈니스 흐름 우회
애플리케이션에는 재전송과 페이스 전송에 의해 제어되는 흐름이 포함되어 있다. 하지만 많은 경우에 이런 흐름을 우회하여 오류 조건이나 정보 유출이 발생할 수 있으며, 이를 통해 공격자는 중요한 백엔드 정보를 찾아낼 수 있다. 비즈니스 기능과 매개변수를 프록시(Proxy)를 통해 간섭할 수 있는지 테스트해 보아야 한다.
7. 자바스크립트, 플래시, 실버라이트 등에 내장된 클라이언트 측의 비즈니스 절차 악용
현재 많은 비즈니스 애플리케이션이 자바스크립트, 플래시, 플래시라이트 등을 활용하는 RIA 프레임워크 상에서 구동하며, 많은 경우에 로직은 클라이언트 측의 구성요소에 내장될 수 있다. 이것들은 역엔지니어링이 가능하며, 플래시나 실버라이트의 경우에는 이런 파일을 역컴파일해 해당 애플리케이션이 사용한 실제적인 로직을 찾아낼 수 있다.
자바스크립트를 줄별로 디버그해 내장된 로직을 찾아낼 수 있다. 여기에는 암호해독 알고리즘, 정보 저장소, 권한 관리, 기타 보안 조치를 위한 로직이 포함될 수 있어 악용 가능성이 생긴다. 이런 종류의 약점을 확인하기 위해서는 DOM(Document Object Model)을 분석하고 브라우저 스택(Stack)의 변수를 확인하여 DOM에서 악용이 의심되는 값과 매개변수를 찾아내야 한다.
8. ID 또는 프로필 추출
승인된 애플리케이션에서 중요한 매개변수인 사용자의 ID는 세션 또는 다른 형태의 토큰(Token)을 이용해 유지된다. 공격자들이 엉성하게 설계되고 개발된 애플리케이션에서 이런 토큰 매개변수를 찾아내면 악용할 수 있는 시스템 측면의 취약성을 발견할 수 있다. 해당 토큰은 오직 순차적인 숫자 또는 예상 가능한 사용자명만을 사용할 수 있다. 이를 테스트하기 위해서는 프로필을 관리하는 매개변수를 찾아보아야 한다. 만약 토큰을 해독, 추측, 역엔지니어링 할 수 있다면 이미 게임은 끝난 것이다.
9. 파일 또는 승인되지 않은 URL 접근 및 비즈니스 정보 추출
비즈니스용 애플리케이션은 내보내기 한 파일과 내보내기 기능 등에 중요한 정보를 포함하고 있다. 사용자들은 자신의 데이터를 선택한 파일 포맷(PDF, XLS, CSV 등)으로 내보내기 하여 다운로드 할 수 있다. 만약 이런 기능을 부주의하게 실행하면 자산이 유출될 수 있다. 이를 테스트하기 위해서는 파일, 문서, 디렉토리 등의 매개변수 이름에 기반하여 요청 기능을 확인해야 하며, 이를 통해 가능성이 있는 승인되지 않은 파일 접근 취약성을 찾아낼 수 있을 것이다. 올바른 테스트는 서버로부터 다른 사용자의 파일을 불러올 수 있는 기본적인 브루트 포스(Brute Force) 또는 추측을 해 보는 것이다.
10. 비즈니스 로직의 DoS(Denial of Service)
비즈니스 애플리케이션의 DoS 취약성은 심각한 문제를 초래한다. 왜냐하면 악용될 경우, 애플리케이션이 일정 시간 동안 또는 중요한 시기에 정지될 수 있다. 공격자들은 종종 약점을 찾아내고 DoS 조건에서 악용하려 시도할 수 있다. 애플리케이션 계층에는 네트워킹에서의 TCP 플러딩(TCP Flooding) 같은 일반적인 DoS 공격이 없지만, 종종 애플리케이션 계층에서 이행되는 무제한 루프 때문에 DoS 조건으로 이어질 수 있다. 위협 모델에 대해 애플리케이션을 테스트하고 애플리케이션 계층에서의 방어책을 제공하는 것이 중요하다.
NT OBJECTives는 "비즈니스 로직 공격 벡터 Top 10" 보고서에서 맞춤 제작된 웹 애플리케이션의 비즈니스 로직 결함을 찾아내는 것은 단순히 자동화된 스캔 테스트뿐만이 아니라 "인간의 기능"을 이용한 애플리케이션 보안과 로직을 검토하는 것이라고 강조했다.
'기술사 칼럼' 카테고리의 다른 글
The power of Time off (안식년의 힘, 가치) (0) | 2012.06.21 |
---|---|
Big Data Analysis (0) | 2012.06.20 |
변화와 혁신을 위한 챙겨야 할 과제 (1) | 2012.05.02 |
변화와 혁신을 위하여 (0) | 2012.04.27 |
변화관리의 중요성 (0) | 2012.04.23 |