Web Security Scanner 개요

이 페이지에서는 Web Security Scanner에 대해 간략히 설명합니다.

소개

Web Security Scanner는 App Engine, Google Kubernetes Engine(GKE), Compute Engine 웹 애플리케이션의 보안 취약점을 확인합니다. 애플리케이션을 크롤링하여 시작 URL 범위 내에 있는 모든 링크를 확인하고 최대한 많은 사용자 입력과 이벤트 핸들러 실행을 시도합니다. 현재 Web Security Scanner 방화벽으로 보호되지 않는 공개 URL과 IP만 지원합니다.

Web Security Scanner는 현재 App Engine 표준 환경 및 App Engine 가변형 환경, Compute Engine 인스턴스, GKE 리소스를 지원합니다.

Web Security Scanner는 기존의 보안 설계 및 개발 프로세스를 보완하도록 설계되었습니다. 거짓양성에 주의가 분산되지 않도록 하기 위해 Web Security Scanner는 지나치다 싶게 보고를 적게 하는 경향이 있으며 신뢰도가 낮은 알림은 표시하지 않습니다. 또한 이 스캐너는 수동 보안 검토를 대신할 수 없으며 이 스캐너를 사용한다고 해서 애플리케이션에 보안 결함이 없는 것은 아닙니다. 웹 보안에 대한 자세한 내용은 OWASP Top Ten Project를 참조하세요.

Google Cloud Security에 대해 자세히 알아보기

스캔 유형

Web Security Scanner는 공개 App Engine, GKE, Compute Engine 서비스 웹 애플리케이션을 위한 관리형 커스텀 웹 취약점 스캔을 제공합니다.

관리형 스캔

Web Security Scanner 관리형 스캔은 Security Command Center에서 구성하고 관리합니다. 관리형 스캔은 매주 자동으로 실행되며 공개 웹 엔드포인트를 감지하고 스캔합니다. 이러한 스캔은 인증을 사용하지 않으며 GET 전용 요청을 전송하므로 실시간 웹사이트에서 양식을 제출하지 않습니다.

관리형 스캔은 프로젝트 수준에서 정의한 커스텀 스캔과 별도로 실행됩니다. 관리형 스캔을 사용하면 개별 프로젝트팀을 구성할 필요 없이 조직의 프로젝트에 대한 기본 웹 애플리케이션 취약점 감지를 중앙에서 관리할 수 있습니다. 발견 항목이 발견되면 해당 팀과 협력하여 더욱 포괄적인 커스텀 스캔을 설정할 수 있습니다.

Web Security Scanner를 서비스로 사용 설정하면 Security Command Center 취약점 탭 및 관련 보고서에서 관리형 스캔 발견 항목을 자동으로 사용할 수 있습니다. Web Security Scanner 관리형 스캔을 사용 설정하는 방법에 대한 자세한 내용은 Security Command Center 구성을 참조하세요.

커스텀 스캔

Web Security Scanner 커스텀 스캔은 오래된 라이브러리, 교차 사이트 스크립팅 또는 혼합 콘텐츠 사용과 같은 애플리케이션 취약점 발견 항목에 대한 세부적인 정보를 제공합니다. Web Security Scanner 커스텀 스캔 설정 가이드를 완료하면 Security Command Center에서 커스텀 스캔 발견 항목을 확인할 수 있습니다.

발견 항목 스캔

이 섹션에서는 Web Security Scanner 발견 항목 유형과 관련 규정 준수 표준을 설명합니다.

감지기 및 규정 준수

Web Security Scanner는 Open Web Application Security Project(OWASP)에서 확인된 대로 상위 10개의 가장 중요한 웹 애플리케이션 보안 위험을 보여주고 이에 대한 구제 조치 가이드를 제공하는 문서인 OWASP Top Ten의 카테고리 하위 집합을 지원합니다.

규정 준수 매핑은 참조용으로 포함되어 있으며 OWASP 재단에서 제공되거나 검토하지 않습니다.

이 기능은 규정 준수 제어 위반을 모니터링하기 위한 것입니다. 이 매핑은 규제 또는 업계 벤치마크나 표준을 준수하는 제품 또는 서비스의 규정 준수, 인증, 보고를 기반으로 사용하거나 대안으로 제공되지 않습니다.

발견 항목 유형

Web Security Scanner 커스텀 스캔 및 관리형 스캔은 다음 발견 항목 유형을 식별합니다. 표준 등급에서 Web Security Scanner는 방화벽으로 보호되지 않는 공개 URL 및 IP를 포함하여 배포된 애플리케이션의 커스텀 스캔을 지원합니다.

표 20. Web Security Scanner 발견 항목
카테고리 발견 설명 OWASP 2017 상위 10개 OWASP 2021 상위 10개
ACCESSIBLE_GIT_REPOSITORY GIT 저장소가 공개됩니다. 이 발견 항목을 해결하려면 GIT 저장소에 대한 의도하지 않은 공개 액세스를 삭제하세요. A5 A01
ACCESSIBLE_SVN_REPOSITORY SVN 저장소가 공개됩니다. 이 발견 항목을 해결하려면 SVN 저장소에 대한 의도하지 않은 공개 액세스를 삭제하세요. A5 A01
CLEAR_TEXT_PASSWORD 비밀번호가 명확한 텍스트로 전송되고 가로채기될 수 있습니다. 이 발견 항목을 해결하려면 네트워크를 통해 전송된 비밀번호를 암호화하세요. A3 A02
INVALID_CONTENT_TYPE 리소스가 로드되었지만 응답의 Content-Type HTTP 헤더와 일치하지 않습니다. 이 발견 항목을 해결하려면 'X-Content-Type-Options' HTTP 헤더를 올바른 값으로 설정하세요. A6 A05
INVALID_HEADER 보안 헤더에 구문 오류가 있으며 브라우저에서 무시됩니다. 이 발견 항목을 해결하려면 HTTP 보안 헤더를 올바르게 설정하세요. A6 A05
MISMATCHING_SECURITY_HEADER_VALUES 보안 헤더에 중복된 불일치 값이 존재하여 정의되지 않은 동작이 발생합니다. 이 발견 항목을 해결하려면 HTTP 보안 헤더를 올바르게 설정하세요. A6 A05
MISSPELLED_SECURITY_HEADER_NAME 보안 헤더가 잘못 입력되어 무시됩니다. 이 발견 항목을 해결하려면 HTTP 보안 헤더를 올바르게 설정하세요. A6 A05
MIXED_CONTENT 리소스가 HTTPS 페이지에서 HTTP를 통해 제공되고 있습니다. 이 발견 항목을 해결하려면 모든 리소스가 HTTPS를 통해 제공되도록 설정하세요. A6 A05
OUTDATED_LIBRARY 알려진 취약점이 있는 라이브러리가 감지되었습니다. 이 발견 항목을 해결하려면 라이브러리를 최신 버전으로 업그레이드하세요. A9 A06
SERVER_SIDE_REQUEST_FORGERY 서버 측 요청 위조(SSRF) 취약점이 감지되었습니다. 이 결과를 해결하려면 허용 목록을 사용하여 웹 애플리케이션이 요청할 수 있는 도메인과 IP 주소를 제한합니다. 해당 없음 A10
XSS 이 웹 애플리케이션의 필드는 교차 사이트 스크립팅(XSS) 공격에 취약합니다. 이 발견 항목을 해결하려면 신뢰할 수 없는 사용자 제공 데이터를 검증하고 이스케이프 처리하세요. A7 A03
XSS_ANGULAR_CALLBACK 사용자 제공 문자열은 이스케이프 처리되지 않으며 AngularJS가 이를 보간할 수 있습니다. 이 발견 항목을 해결하려면 Angular 프레임워크에서 처리하는 신뢰할 수 없는 사용자 제공 데이터를 검증하고 이스케이프 처리하세요. A7 A03
XSS_ERROR 이 웹 애플리케이션의 필드는 교차 사이트 스크립팅 공격에 취약합니다. 이 발견 항목을 해결하려면 신뢰할 수 없는 사용자 제공 데이터를 검증하고 이스케이프 처리하세요. A7 A03

사용 시 주의사항

Security Command Center 역할은 조직, 폴더, 프로젝트 수준에서 부여됩니다. 발견 항목, 애셋, 보안 소스, 보안 표시를 보거나, 수정, 생성, 업데이트하는 기능은 사용자에게 부여된 액세스 권한 수준에 따라 달라집니다. Security Command Center 역할에 대해 자세히 알아보려면 액세스 제어를 참조하세요.

Web Security Scanner를 사용할 때는 다음과 같은 다른 중요 사항을 알아두어야 합니다.

  • Web Security Scanner는 지속적으로 개선되기 때문에 현재 스캔에서 보고되지 않은 문제가 향후 스캔에서 보고될 수 있습니다.
  • 애플리케이션의 일부 기능 또는 섹션이 테스트되지 않을 수도 있습니다.
  • Web Security Scanner는 발견되는 모든 컨트롤 및 입력을 활성화하려고 시도합니다.
  • 테스트 계정이 권한을 갖고 있는 상태 변경 작업을 노출할 경우 Web Security Scanner가 해당 작업을 활성화하게 될 수 있습니다. 이로 인해 원치 않는 결과가 발생할 수 있습니다.

누가 보안 스캔을 실행할 수 있나요?

Web Security Scanner에 사용할 수 있는 Identity and Access Management(IAM) 역할에 대한 자세한 내용은 액세스 제어를 참조하세요.

보안 스캔에 얼마나 많은 시간이 필요한가요?

보안 스캔은 즉시 실행되는 것이 아니라, 대기열에 추가되었다가 이후에 실행되며, 시스템 부하에 따라서는 몇 시간 후에 실행될 수도 있습니다. 스캔이 실행되기 시작한 후 완료될 때까지 걸리는 시간은 애플리케이션의 크기에 따라 다릅니다. URL이 많은 대규모 애플리케이션은 완료하는 데 몇 시간이 걸릴 수도 있습니다.

대상 제한

Web Security Scanner에는 스캔 대상을 해당 스캔이 생성된 특정 App Engine 인스턴스로 제한하는 필터가 설정되어 있습니다. 다른 App Engine 프로젝트 또는 외부 도메인의 URL에 액세스하면 오류 메시지가 표시됩니다.

Compute Engine 및 GKE에 대한 스캔은 동일 프로젝트에 대해 예약된 정적 외부 IP 주소 및 동일 프로젝트에 속하는 정적 외부 IP 주소로 매핑되는 도메인으로 제한됩니다. 프로젝트의 IP 주소 예약에 대한 안내는 다음 링크를 참조하세요.

App Engine은 애플리케이션에 고정 IP 주소를 매핑하는 방법을 제공하지 않습니다. 하지만 Cloud Load Balancing 및 서버리스 네트워크 엔드포인트 그룹을 사용하여 부하 분산기의 고정 IP 주소를 예약한 후 트래픽을 애플리케이션으로 보낼 수 있습니다. 가격 책정에 대한 자세한 내용은 외부 IP 주소 가격 책정을 참조하세요.

프로젝트 내에서 Web Security Scanner는 자동으로 로그아웃 URL과 스캔에 부정적인 영향을 줄 수 있는 그 밖의 일반 위치를 피하려고 시도합니다. 하지만 확실히 하려면 스캔 설정을 사용하여 수동으로 URL을 제외할 수 있습니다.

검증

스캔 구성은 생성될 때와 각 스캔 전에 검사됩니다. Web Security Scanner는 Security Command Center 설정과 애플리케이션의 인증 사용자 인증 정보를 확인하여 스캔이 올바르게 구성되고 애플리케이션에 성공적으로 로그인할 수 있는지 확인합니다. 최대 스캔 속도를 포함한 구성 매개변수도 지원되는 범위 내에 있는지 확인합니다.

스캔을 생성하거나 업데이트하기 전에 오류를 해결해야 합니다. 초기 구성 이후에 변경된 애플리케이션은 스캔 중에 오류가 발생할 수 있습니다. 예를 들어 도메인이 더 이상 프로젝트에서 소유한 IP 주소를 가리키지 않으면 리소스는 스캔되지 않고 스캔 구성 페이지에 오류가 보고됩니다.

권장사항

Web Security Scanner는 필드를 채우고 버튼을 누르고 링크를 클릭하고 다른 사용자 작업을 수행하므로 특히 프로덕션 리소스를 스캔하는 경우에는 신중하게 사용해야 합니다. Web Security Scanner에서 데이터나 시스템의 상태를 변경하는 기능이 활성화되어 있어 원치 않는 결과가 발생할 수 있습니다.

예를 들면 다음과 같습니다.

  • 공개 댓글을 허용하는 블로그 애플리케이션에서 Web Security Scanner가 모든 블로그 기사에 대한 댓글로 테스트 문자열을 게시할 수 있습니다.
  • 이메일 등록 페이지에서 Web Security Scanner가 다수의 테스트 이메일을 생성할 수 있습니다.

다음 기법을 개별적으로 또는 조합하여 사용하면 원치 않는 결과를 방지할 수 있습니다.

  1. 테스트 환경에서 스캔을 실행합니다. 별도의 App Engine 프로젝트를 만들고 애플리케이션과 데이터를 해당 프로젝트로 로드하여 테스트 환경을 설정합니다. gcloud 명령줄 도구를 사용하는 경우 앱을 업로드할 때 대상 프로젝트를 명령줄 옵션으로 지정할 수 있습니다.
  2. 테스트 계정을 사용합니다. 민감한 데이터나 유해한 작업에 액세스할 수 없는 사용자 계정을 만들고 앱을 스캔할 때 사용합니다. 많은 애플리케이션에서는 사용자가 처음으로 로그인할 때 약관 동의, 프로필 생성 등의 특별한 워크플로가 진행됩니다. 이처럼 워크플로가 다르기 때문에 초기 사용자의 테스트 계정을 사용할 경우에는 기존 사용자 계정을 사용할 때와는 다른 스캔 결과가 생성될 수 있습니다. 최초 로그인 과정이 완료된 후 일반적인 사용자 상태에 있는 계정으로 스캔하는 것이 가장 좋습니다.
  3. CSS 클래스 inq-no-click을 적용하여 활성화하지 않으려는 개별 사용자 인터페이스 요소를 차단합니다. 이 요소에 연결된 이벤트 핸들러는 적절한 이벤트 핸들러 속성을 설정하여 인라인 자바스크립트이거나 addEventListener를 사용하여 연결되었는지 여부와 관계없이 크롤링 및 테스트 중에 활성화되지 않습니다.
  4. 백업 데이터를 사용합니다. 스캔하기 전에 데이터를 백업하는 것이 좋습니다.
  5. 제외되는 URL입니다. 크롤링 또는 테스트하지 않을 URL 패턴을 지정할 수 있습니다. 구문에 대한 자세한 내용은 URL 제외를 참조하세요.

스캔하기 전에 애플리케이션을 주의 깊게 감사하여 원하는 스캔 범위를 넘어 데이터, 사용자 또는 시스템에 영향을 미칠 수 있는 기능이 있는지 확인하세요.

다음 단계