수많은 애플리케이션이 엄청난 속도로 출시되고 있습니다. 하지만 그에 대한 공격도 기하급수적으로 늘어나고 있으며 호시탐탐 취약점을 노리고 있습니다. 시험 및 보안 취약점 보고 프로세스를 자동화하는 일련의 도구인 애플리케이션 보안 시험(AST)은 이에 맞서 중요한 역할을 합니다. AST는 주로 정적, 동적, 상호작용적 애플리케이션 보안 시험에 초점을 맞춥니다. 특히 동적 시험은 ‘외부에서 내부’로 애플리케이션을 공격하는 블랙박스형 시험 개념 덕분에 많은 주목을 받고 있습니다.
동적 애플리케이션 보안 시험(DAST)
DAST는 노출된 접점을 확인하는 데 초점을 맞추는 침투 기법을 통한 애플리케이션에 대한 외부 공격을 시뮬레이션 합니다. 애플리케이션이 구동 중인 상태이므로 동적 환경이 조성됩니다. DAST는 소스코드에 접근할 필요가 없습니다. 애플리케이션의 거동과 단계별 공격에 대한 반응을 기록, 분석하며 해커의 행동과 의도를 모사합니다.
DAST의 원리
DAST는 소스코드에 접근하지 않으므로 자동 스캔으로 외부 공격 벡터를 모사합니다. 즉 악성코드와는 무관합니다. DAST는 웹 서버, 데이터베이스, 앱 서버, 접근 제어 목록, 워크플로우 등을 시험하며 구동 중인 애플리케이션의 취약점을 찾아내 보안팀에게 경보를 전달합니다.
DAST는 자동화 시험인가?
DAST는 자동 및 수동으로 수행할 수 있습니다. 자동 DAST는 봇을 이용하여 애플리케이션의 취약점을 크롤링합니다. 이때 지도가 생성되어 문제를 눈에 띄게 표시합니다. 이후 공격을 모사한 지점에 대해 감사를 실시하고 결과를 분석, 보고합니다. 수동 DAST는 봇이 인지할 수 없는 보다 복잡한 상황을 모사할 수 있습니다. 공격자들은 갈수록 창의적으로 공격하므로 수동과 자동 DAST를 모두 사용하는 것이 좋습니다.
DAST의 장점
– DAST는 기술 관련 지식이 없어도 기능을 수행할 수 있습니다.
DAST 소스코드를 이용하지 않으므로 애플리케이션 개발 언어는 중요하지 않습니다. 애플리케이션 자체가 보다 중요합니다.
– 위양성(false positive) 결과는 최소화하고 정확도는 극대화합니다.
소스코드 분석 시 특정한 경보가 발생할 수 있으나 이는 불필요하거나 수정이 시급하지 않은 것일 수 있습니다. DAST의 블랙박스적 성격은 보다 정확한 문제 파악에 초점을 맞춰 비용과 시간을 절약합니다.
– DAST는 구성 문제를 파악하는 데 보다 적합합니다.
DAST는 외부적 시험 방식을 이용하므로 구성 문제를 쉽게 파악할 수 있습니다.
– 보다 효율적으로 실제 상황을 모사합니다.
DAST는 실제 상황의 모사에 초점을 맞추므로 일반적 문제나 알려진 공격을 제거하여 애플리케이션이 보다 안정적으로 구동하는 데 도움이 됩니다.
DAST의 단점
– 확장성이 높지 않습니다.
DAST를 실시하려면 실제적인 상황을 준비해야 합니다. 즉 보안 전문가의 지식이 매우 중요합니다. 이러한 지식과 역량은 기업에 따라 확보하기 어려울 수 있습니다.
– 시간이 오래 걸립니다.
DAST의 검사는 일주일 넘게 걸릴 수 있습니다. 따라서 팀은 일정을 관리하고 결과물을 준비해야 합니다. 다만 이 시간 동안 미래에 발생할 문제를 피할 수 있도록 예측할 수도 있기 때문에 완전히 단점이라고만 볼 수는 없습니다.
– 소스코드를 확인할 수 없습니다.
DAST는 소스코드를 이용하지 않으므로 코드를 별도로 시험하지 않을 시 문제가 되는 부분을 간과하게 될 수 있습니다. 중요한 문제를 놓치는 상황이 일어날 수 있는 것입니다.
– 실행하기 어려운 경로를 만나면 효과가 떨어집니다.
입력 경로가 실행하기 어려운 경우에는 일부 버그를 놓칠 수 있습니다.
DAST와 SDLC의 통합
DAST 도구에 대한 일반적인 오해는 SDLC 도구와 호환되지 않는다는 것입니다. 이는 사실이 아니며 Github, Atlassian JIRA, ServiceNow, Slack, Microsoft TFS 등 잘 알려진 문제 트래커를 DAST와 쉽게 통합할 수 있습니다. Jenkins, TravisCI, Azure DevOps, CircleCI와 같은 연속 통합 도구도 자동 시험에 이용할 수 있습니다.
DAST 활용 모범 사례
활용 모범 사례와 주의 사항을 통해 보안 취약점을 보다 효과적으로 파악, 보고, 제거할 수 있습니다.
DevOps 팀과의 긴밀한 협업:
DAST 도구는 시험 및 버그 픽스 시스템과 통합하여 버그가 보고되면 바로 DevOps 팀에 전달하여 신속히 해결하고 추적을 간소화할 수 있습니다.
방어적 코딩 사용:
개발자는 보다 효율적이고 안전한 애플리케이션의 개발에 초점을 맞춰 발생 가능한 문제를 예측하고 보고되기 전에 제거할 수 있습니다.
SDLC 초기에 DAST 실시:
DAST는 다른 시험 방법과 마찬가지로 초기에 실시하여 제품 생산 전에 버그를 파악, 보고할 수 있으므로 프로젝트 소요시간을 단축할 수 있습니다.
SAST + DAST + RASP의 세 갈래 접근법
SAST는 코딩 오류의 파악에, DAST는 애플리케이션 구동 중 버그의 파악에 중요한 역할을 합니다. RASP는 시험 자체보다 보안에 중점을 둡니다. 즉 SAST와 DAST가 문제를 보고하는 동안 RASP는 네트워크 침해와 해킹 공격으로부터 앱을 보호하는 보다 적극적 접근법을 이용합니다. RASP는 실시간 공격에 대응하고 필요 시 현재 세션을 종료하며 해당 경보를 전달하여 빠른 해결이 가능합니다. 이 세 가지 모두 중요하며 각자의 역할이 있습니다.
DAST와 RASP는 애플리케이션 보안 시험의 핵심입니다.
웹 애플리케이션 보안은 운에 맡길 수 없습니다. 코드 문제를 간과할 수 없으며 역시 감지와 해결이 필요한 런타임 오류도 마찬가지입니다. RASP는 데이터를 암호화하고 해커를 막아내기 위해 필요합니다. 즉 기업들은 이 모든 측면들을 아우르는 포괄적 전략을 수립, 실행하여 우수하고 안전한 애플리케이션을 개발, 구동할 수 있어야 합니다. 앱실링(AppSealing)은 고객들이 RASP를 통해 안전하게 모바일 애플리케이션을 개발하도록 도와드립니다. 지금 바로 문의하시면 RASP가 귀사의 앱을 지켜 드리는 방법에 대해 소개해 드립니다.