웹 응용 프로그램 보안이란 무엇입니까?
웹 앱 보안은 웹 사이트, 앱, API를 공격으로부터 보호하는 관행입니다. 웹 앱 보안은 광범위한 분야이지만, 그 궁극적인 목표는 웹 앱의 원활한 작동을 유지하고 사이버 기물 파손, 데이터 도난, 비윤리적 경쟁 등 부정적인 결과로부터 기업을 보호하는 것입니다.
인터넷의 글로벌 특성으로 인해 웹 애플리케이션과 API는 여러 위치에서 다양한 수준의 규모와 복잡성을 가진 공격에 노출되어 있습니다. 따라서 웹 애플리케이션 보안에는 다양한 전략이 포함되며 소프트웨어 공급망의 많은 부분을 포괄합니다.
일반적인 웹 애플리케이션 보안 위험은?
웹 애플리케이션은 공격자의 목표, 표적이 된 조직의 업무 특성, 애플리케이션의 특정 보안 취약점에 따라 여러 가지 공격 유형에 직면할 수 있습니다. 일반적인 공격 유형은 다음과 같습니다.
- zero-day 취약점: 이는 앱 제작자에게 알려지지 않은 취약점이며, 따라서 해결 방법이 없는 취약점입니다. 우리는 현재 매년 20,000건 이상의 zero-day 취약점을 관찰합니다. 공격은 이러한 취약점을 신속하게 악용하고 보안 벤더가 마련한 보호 조치를 회피하기 위해 후속 조치를 취하는 경우가 많습니다.
- Cross-site scripting(XSS) - XSS는 취약점으로, 이를 통해 공격자는 클라이언트 측 스크립트를 웹 페이지에 삽입하여 중요한 정보에 직접 액세스하거나 사용자를 사칭하거나 사용자가 중요한 정보를 공개하도록 유도할 수 있습니다. XSS 공격을 방지하는 방법에 대해 자세히 알아보세요.
- SQL 삽입(SQLi) - SQLi는 공격자가 데이터베이스가 검색 쿼리를 실행하는 방식의 취약점을 악용할 수 있는 방법입니다. 공격자는 SQi를 이용하여 비인가 정보에 액세스하거나, 새 사용자 권한을 수정하거나 생성하거나, 기타 방식으로 중요한 데이터를 조작하거나 파괴합니다. SQL 삽입을 방지하는 방법을 자세히 알아보세요.
- 서비스 거부(DoS) 및 분산 서비스 거부(DDoS) 공격: 공격자는 다양한 벡터를 통해 대상 서버나 그 주변 인프라에 다양한 유형의 공격 트래픽으로 과부하를 걸 수 있습니다. 서버가 수신 요청을 더 이상 효과적으로 처리하지 못하면 속도가 느려지고, 결국 합법적인 사용자의 요청에 대한 서비스를 거부하게 됩니다.
- 메모리 손상 - 메모리 내의 위치가 의도하지 않게 조작되어 소프트웨어가 예상치 못하게 작동하게 되면 메모리 손상이 발생합니다. 악의적인 행위자는 코드 삽입이나 버퍼 오버플로 공격 같은 악용 방법을 통해 메모리 손상을 탐지하고 악용합니다.
- 버퍼 오버플로 - 버퍼 오버플로는 소프트웨어가 버퍼라고 알려진 메모리 내 정의된 공간에 데이터를 작성할 때 발생하는 이상입니다. 버퍼의 용량에 오버플로가 발생하면 인접한 메모리 위치에 데이터가 덮어써지게 됩니다. 이러한 동작을 악용하여 메모리에 악성 코드를 삽입하고 대상 컴퓨터에 취약점을 만들 수 있습니다.
- 교차 사이트 요청 위조(CSRF) - CSRF는 피해자를 속여 인증이나 권한을 사용하는 요청을 하게 만듭니다. 공격자는 사용자의 계정 특권을 사용하여 사용자로 위장하고 요청을 보낼 수 있습니다. 사용자의 계정이 손상되면 공격자는 중요한 정보를 반출하거나, 파괴하거나, 조작할 수 있습니다. 관리자나 임원 같이 권한이 높은 계정이 일반적으로 대상이 됩니다.
- 자격 증명 스터핑: 공격자는 봇을 사용하여 탈취한 대량의 사용자 이름과 비밀번호 조합을 웹 앱의 로그인 포털에 빠르게 입력할 수 있습니다. 공격자가 자격 증명 스터핑을 통해 실제 사용자의 계정에 액세스할 수 있게 되면 사용자의 데이터를 훔치거나 사용자 명의로 사기성 구매를 할 수 있습니다.
- 페이지 스크래핑: 공격자는 봇을 사용하여 웹 페이지에서 대규모로 콘텐츠를 훔칠 수도 있습니다. 경쟁사보다 가격 우위를 차지하려 하거나 악의적인 목적으로 페이지 소유자를 모방하려 하거나 기타 이유로 이 콘텐츠를 사용할 수 있습니다.
- API 남용: API, 즉 앱 프로그래밍 인터페이스는 두 앱이 서로 통신할 수 있도록 하는 소프트웨어입니다. 모든 유형의 소프트웨어와 마찬가지로 API에는 공격자가 앱 중 하나로 악성 코드를 보내거나 앱 간에 이동하는 중요한 데이터를 가로챌 수 있는 취약점이 있을 수 있습니다. API 사용이 증가함에 따라 API 남용은 점점 더 일반적인 공격 유형이 되고 있습니다. OWASP API 상위 10가지 목록은 오늘날 조직에서 직면하는 주요 API 보안 위험을 간략하게 요약한 것입니다.
- 섀도우 API: 개발팀에서는 비즈니스 목표를 달성하기 위해 신속하게 작업하며 보안팀에 알리지 않고 API를 빌드하고 게시하는 경우가 많습니다. 이처럼 알려지지 않은 API는 API를 보호해야 하는 보안팀에서 그 존재를 모르므로 “섀도우”에서 작동하면서 중요한 회사 데이터를 노출시킬 수 있습니다.
- 타사 코드 남용: 많은 최신 웹 앱은 다양한 타사 도구를 사용합니다(예: 타사 결제 처리 도구를 사용하는 전자 상거래 사이트). 공격자가 이러한 도구 중 하나에서 취약점을 발견하면 해당 도구를 손상시켜 처리하는 데이터를 훔치거나 도구가 작동하지 못하게 하거나 앱의 다른 곳에 악성 코드를 삽입하는 데 사용할 수 있습니다. 결제 프로세서에서 신용카드 데이터를 훔치는 Magecart 공격이 이러한 공격 유형의 예입니다. 이러한 공격은 브라우저 공급망 공격으로도 간주됩니다.
- 공격면의 잘못된 구성: 조직의 공격면은 인터넷에서 액세스할 수 있는 서버, 장치, SaaS, 클라우드 자산 등 사이버 공격에 취약할 수 있는 전체 IT 공간을 의미합니다. 이 공격면은 간과되거나 잘못 구성된 특정 요소로 인해 공격에 취약한 상태로 남아있을 수 있습니다.
중요한 웹 애플리케이션 보안 전략은?
앞서 언급했듯이 웹 애플리케이션 보안은 광범위하고 항상 변화하는 분야입니다. 따라서 새로운 공격과 취약점이 등장함에 따라 이 분야의 모범 사례는 변화합니다. 그러나 현대의 인터넷 위협 환경은 충분히 활성화되어 있으므로 어떤 조직도 비즈니스의 특정 요구 사항에 맞는 특정 '테이블 스테이크(최소 판돈)' 보안 서비스 없이는 살아남을 수 없습니다.
- DDoS 완화: DDoS 완화 서비스는 서버와 공용 인터넷 사이에 위치하여 특수 필터링과 매우 높은 대역폭 용량을 사용해서 급증하는 악의적 트래픽으로 서버가 압도되는 것을 방지합니다.이러한 서비스는 많은 최신 DDoS 공격이 가장 복원력이 뛰어난 서버도 압도하기에 충분한 악의적 트래픽을 전달하므로 중요합니다.
- 웹 애플리케이션 방화벽(WAF): 이 방화벽은 웹 애플리케이션 취약점을 이용하는 것으로 알려지거나 의심되는 트래픽을 필터링합니다.새로운 취약점은 거의 모든 조직에서 자체적으로 파악하기에는 너무 빠르고 조용하게 나타나므로 WAF가 중요합니다.
- API 게이트웨이: 간과된 '섀도우 API'를 식별하고, API 취약점을 노리는 것으로 알려지거나 의심되는 트래픽을 차단하는 데 도움이 됩니다.또한 API 트래픽을 관리하고 모니터링하는 데 도움이 됩니다.(API 보안에 대해 자세히 알아보기.)
- DNSSEC: 웹 애플리케이션의 DNS 트래픽이 올바른 서버로 안전하게 라우팅되도록 보장하는 프로토콜로, 공격자가 경로상 공격으로 사용자를 가로채기 하지 못하도록 합니다.
- 암호화 인증서 관리: 제3자가 개인 키 생성, 인증서 갱신, 취약점으로 인한 인증서 해지 등 SSL/TLS 암호화 프로세스의 주요 요소를 관리할 수 있습니다.따라서 이러한 요소가 간과되어 비공개 트래픽이 노출될 위험이 제거됩니다.
- 봇 관리: 머신 러닝 및 기타 특수 감지 방법을 사용하여 자동화된 트래픽과 인간 사용자를 구분하고 자동화된 트래픽이 웹 애플리케이션에 액세스하는 것을 방지합니다.
- 클라이언트 측 보안: 새로운 타사 JavaScript 종속성 및 타사 코드 변경 사항을 확인하여 조직에서 악의적인 활동을 더 빨리 포착할 수 있도록 지원합니다.
- 공격면 관리: 실행 가능한 공격면 관리 도구는 공격면을 매핑하고, 잠재적인 보안 위험을 식별하며, 클릭 몇 번으로 위험을 완화할 수 있는 단일 장소를 제공해야 합니다.
조직에서 벤더에게 기대해야 하는 애플리케이션 보안 모범 사례는?
웹 개발자는 공격자가 개인 데이터에 액세스하고 사용자 계정에 부정하게 액세스하며 기타 악의적인 작업을 수행하는 것을 방지하는 방식으로 애플리케이션을 설계하고 구축할 수 있습니다.OWASP 상위 10가지 목록에는 개발자가 알아야 할 가장 일반적인 애플리케이션 보안 위험이 정리되어 있습니다.이러한 위험을 예방하기 위한 실천 사항은 다음과 같습니다.
- 입력 유효성 검사 요구: 부적절한 형식의 데이터가 애플리케이션의 워크플로를 통과하지 못하도록 차단하면 악성 코드가 삽입 공격을 통해 애플리케이션에 침입하는 것을 방지할 수 있습니다.
- 최신 암호화 사용: 사용자 데이터를 암호화된 방식으로 저장하고 HTTPS를 사용하여 인바운드 및 아웃바운드 트래픽 전송을 암호화하면 공격자의 데이터 도용을 방지하는 데 도움이 됩니다.
- 강력한 인증 제공 및 권한 부여: 강력한 비밀번호에 대한 제어 기능을 구축하고 적용하며, 하드 키를 포함한 다단계 인증 옵션을 제공하고, 접근 제어 옵션을 제공하는 등의 방법을 사용하면 공격자가 사용자 계정에 부정하게 액세스하고 앱 내에서 내부망 이동하는 것이 더 어려워집니다.
- API 추적: 공격 표면이 될 수 있는 간과된 '섀도우 API'를 식별하는 도구가 존재하지만, 애초에 API가 간과되지 않도록 하면 API 보안이 더 쉬워집니다.
- 코드 변경 사항 문서화: 보안 팀과 개발자 팀에서 새로 생겨난 취약점을 더 빨리 수정하는 데 도움이 됩니다.
Cloudflare에서는 웹 애플리케이션의 보안을 어떻게 유지할까요?
Cloudflare에서는 전 세계 330개 도시에서 네트워크를 운영하면서 위에 나열된 많은 보안 서비스를 제공하며, 이들 서비스에는 DDoS 완화, 웹 앱 방화벽, API 보호, DNSSEC, 관리형 SSL/TLS, 봇 관리, 클라이언트 측 보안 등이 포함됩니다.
이러한 서비스는 모두 네트워크의 모든 데이터 센터에서 실행되도록 설계되므로 공격의 근원지에서 가까운 곳에서 공격을 차단할 수 있습니다. 이 기능은 웹 사이트 성능 서비스와 통합되어 있으므로 새로운 보안 보호 기능을 추가해도 트래픽이 느려지지 않습니다. 또한 이러한 모든 서비스는 모든 종류의 웹 사이트 인프라와 함께 작동하며 몇 분 안에 가동할 수 있는 경우가 많습니다.
앱 보안 솔루션에 대해 자세히 알아보거나 Cloudflare 요금제에 가입하세요.