취약점 페이지

Tier: Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

프로젝트의 각 취약점은 취약점 페이지를 가지고 있으며 취약점에 대한 세부 정보를 포함합니다.

  • 설명
  • 감지된 날짜
  • 현재 상태
  • 사용 가능한 작업
  • 연결된 이슈들
  • 작업 로그

스캐너가 취약점을 잘못된 양성으로 판단하면, 취약점 페이지 상단에 경고 메시지가 포함됩니다.

프로젝트의 기본 브랜치에서 취약점을 더 이상 감지하지 않으면 상태를 해결됨(Resolved)으로 변경해야 합니다. 이를 통해 미래의 Merge에서 실수로 재도입되는 경우 새 레코드로 다시 보고되도록 보장됩니다. 여러 취약점의 상태를 변경하려면 취약점 보고서의 활동 필터를 사용하세요.

취약점 설명

Tier: Ultimate Offering: GitLab.com Status: Beta

GitLab은 큰 언어 모델을 사용하여 취약점을 요약하고, 개발자 및 보안 분석가가 취약점을 이해하고 어떻게 악용될 수 있는지, 어떻게 수정할 수 있는지를 돕고, 제안된 완화 방법을 제공할 수 있습니다.

취약점 설명

GitLab Duo 취약점 설명을 사용하여 취약점을 더 잘 이해하고 가능한 완화 방법을 파악하세요.

요구 사항:

  • GitLab Ultimate 구독 등급이 있어야 합니다.
  • 프로젝트의 구성원이어야 합니다.
  • 취약점은 SAST(Security AST - 보안 정적 분석 도구) 발견이어야 합니다.

GitLab Duo 모든 기능을 활성화하는 방법에 대해 더 알아보기.

취약점을 설명하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 및 준수 > 취약점 보고를 선택합니다.
  3. 도구 드롭다운 디렉터리에서 SAST를 선택합니다.
  4. 설명하고 싶은 SAST 취약점을 선택합니다.
  5. 취약점 페이지 하단에서 시도해보기를 선택합니다.

응답은 페이지 오른쪽에 표시됩니다.

이 취약점 설명

GitLab.com에서는 기본적으로 Google의 text-bison-001 모델로 지원됩니다. 그 모델의 성능이 저하되는 경우 기능은 대신 Anthropic의 claude 모델을 사용합니다.

우리는 큰 언어 모델이 올바른 결과를 생성한다고 보장할 수 없습니다. 설명을 사용할 때 주의하십시오.

타사 AI API와 공유되는 데이터

다음 데이터가 타사 AI API와 공유됩니다:

  • 취약점 제목 (스캐너에 따라 파일명을 포함할 수 있음).
  • 취약점 식별자.
  • 코드 블록, 그러나 “프롬프트와 함께 코드 보내기” 확인란이 선택된 경우에만 (취약점의 기록에 따라 단일 및 다중 라인).
  • 파일 이름.

취약점 해결

Tier: Ultimate Offering: GitLab.com Status: Experiment

GitLab Duo 취약점 해결을 사용하여 취약점을 자동으로 해결하는 Merge Request을 만들 수 있습니다.

GitLab.com에서는 기본적으로 Google의 code-bison-001 모델로 지원됩니다.

우리는 큰 언어 모델이 올바른 결과를 생성한다고 보장할 수 없습니다. 설명을 사용할 때 주의하십시오.

요구 사항:

  • GitLab Ultimate 구독 등급이 있어야 합니다.
  • 프로젝트의 구성원이어야 합니다.
  • 취약점은 SAST 결과(findings)이어야 합니다.

GitLab Duo 모든 기능을 활성화하는 방법에 대해 더 알아보기.

취약점을 해결하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 및 준수 > 취약점 보고를 선택합니다.
  3. 도구 드롭다운 디렉터리에서 SAST를 선택합니다.
  4. 해결하려는 SAST 취약점을 선택합니다.
  5. 취약점 페이지 상단에서 AI로 해결 드롭다운 디렉터리에서 AI로 해결을 선택합니다.

AI에서 제안하는 변경 사항이 포함된 Merge Request이 열립니다. 제안된 변경 사항을 검토하고, 표준 작업 흐름에 따라 Merge Request을 처리하세요.

타사 AI API와 공유되는 데이터

다음 데이터가 타사 AI API와 공유됩니다:

  • 취약점 제목 (스캐너에 따라 파일명을 포함할 수 있음).
  • 취약점 식별자.
  • 코드 블록.
  • 파일 이름.

취약점 상태 값

취약점의 상태는 다음과 같을 수 있습니다:

  • 감지됨: 새로 발견된 취약점의 기본 상태입니다. UI에서 “트리지가 필요함”으로 표시됩니다.
  • 확인됨: 사용자가 이 취약점을 보고 확인한 상태입니다.
  • 거부됨: 사용자가 이 취약점을 보고 정확하지 않거나 해결할 가치가 없다고 판단하여 거부한 상태입니다. 거부된 취약점들은 후속 스캔에서 감지되더라도 무시됩니다.
  • 해결됨: 취약점이 수정되었거나 더 이상 존재하지 않습니다. 해결된 취약점이 다시 도입되고 다시 감지되는 경우 기록이 복구되고 상태가 감지됨으로 설정됩니다.

취약점 거부 이유

  • GitLab 15.11에 dismissal_reason이라는 피처 플래그로 도입됨. GitLab 15.11에서는 Self-Managed형 고객을 위해 연락하기하여 GitLab 15.11에서 이 기능을 사용하고 싶다면, GitLab.com에서는 기본적으로 활성화되어 있습니다.
  • GitLab 16.0에서 기본적으로 활성화됨.

취약점을 거부할 때, 다음 이유 중 하나를 선택하여 거부하는 이유를 명확히 해야 합니다:

  • 허용 가능한 리스크: 취약점은 알려져 있으며 수정되거나 완화되지 않았지만 허용 가능한 비즈니스 리스크로 간주됩니다.
  • 잘못된 양성: 시스템에서 취약점이 존재하지 않음에도 테스트 결과가 잘못된 취약점의 존재를 나타냄.
  • 완화 제어: 조직에서 제공되는 동등하거나 비교 가능한 정보 시스템에 대한 보호를 제공하는 관리, 운영 또는 기술적 제어(즉, 안전장치 또는 대책).
  • 테스트에 사용됨: 발견은 취약점이 아니며 테스트의 일부이거나 테스트 데이터일 뿐임.
  • 해당 없음: 취약점은 알려져 있으며 수정되거나 완화되지 않았지만 업데이트되지 않을 애플리케이션의 일부로 간주됩니다.

취약점의 상태 변경

  • GitLab 16.4에서 개발자(developer)가 취약점의 상태를 변경하는 기능(admin_vulnerability)이 폐기되었습니다. admin_vulnerability 권한은 GitLab 17.0에서 기본적으로 모든 개발자 역할에서 제거됩니다.

요구 사항:

  • 프로젝트에 대한 적어도 유지자(Maintainer) 역할이 있거나 admin_vulnerability 권한이 있는 사용자 정의 역할이 있어야 합니다.

취약점 페이지에서 취약점의 상태를 변경하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 및 준수 > 취약점 보고를 선택합니다.
  3. 취약점 설명을 선택합니다.
  4. 상태 드롭다운 디렉터리에서 상태를 선택한 후 상태 변경을 선택합니다.

    GitLab 15.11 이후에서 취약점 상태를 거부됨으로 변경할 때 거부 이유를 선택해야 합니다.

  5. 선택 사항으로 페이지 하단에 로그 항목에 코멘트를 추가하세요.

상태 변경에 대한 세부 정보(변경 사람 및 시간 포함)은 취약점의 작업 로그에 기록됩니다.

취약점에 대한 GitLab 이슈 생성

취약점을 해결하거나 완화하는 데 취해진 조치를 추적하기 위해 GitLab 이슈를 생성할 수 있습니다. 취약점에 대한 GitLab 이슈를 만들려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Secure > 취약점 보고서를 선택합니다.
  3. 취약점의 설명을 선택합니다.
  4. 이슈 생성을 선택합니다.

해당 이슈는 취약점 보고서의 정보와 함께 GitLab 프로젝트에 생성됩니다.

Jira 이슈를 생성하려면 취약점을 위한 Jira 이슈 생성을 참조하세요.

취약점과 GitLab 및 Jira 이슈 연결

취약점을 기존의 GitLab 또는 Jira 이슈와 연결할 수 있습니다. 동시에 하나의 연결 기능만 사용할 수 있습니다. 링크를 추가하면 취약점을 완화하거나 해결하는 데 도움이 됩니다.

기존 GitLab 이슈에 취약점 연결

전제 조건:

기존의 GitLab 이슈에 취약점을 연결하려면 다음을 수행합니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Secure > 취약점 보고서를 선택합니다.
  3. 취약점의 설명을 선택합니다.
  4. 연결된 이슈 섹션에서 플러스 아이콘()을 선택합니다.
  5. 각 연결할 이슈에 대해 다음 중 하나를 수행합니다:
    • 이슈에 대한 링크를 붙여 넣습니다.
    • 이슈의 ID를 입력합니다(해시 기호 #로 접두사를 붙입니다).
  6. 추가를 선택합니다.

선택한 GitLab 이슈는 연결된 항목 섹션에 추가되며 연결된 이슈 카운터가 업데이트됩니다.

취약점에 연결된 GitLab 이슈는 취약점 보고서와 취약점 페이지에 표시됩니다.

다음과 같은 조건을 고려하세요. 취약점과 연결된 GitLab 이슈 사이에:

  • 취약점 페이지에 관련된 이슈가 표시되지만, 이슈 페이지에는 관련된 취약점이 표시되지 않습니다.
  • 한 번에 하나의 이슈만 하나의 취약점에 연결될 수 있습니다.
  • 이슈는 그룹과 프로젝트를 통해 연결될 수 있습니다.

기존 Jira 이슈에 취약점 연결

전제 조건:

  • Jira 이슈 통합이 구성되어 있으며 취약점을 위한 Jira 이슈 생성 확인란이 선택되어 있어야 합니다.

기존의 Jira 이슈에 취약점을 연결하려면, Jira 이슈의 설명에 다음 줄을 추가합니다:

/-/security/vulnerabilities/<id>

여기서 <id>취약점 ID입니다. 하나의 설명에 다양한 ID로 여러 줄을 추가할 수 있습니다.

적절한 설명이 있는 Jira 이슈는 관련 Jira 이슈 섹션에 추가되며, 연결된 이슈 카운터가 업데이트됩니다.

취약점에 연결된 Jira 이슈는 취약점 페이지에만 표시됩니다.

취약점과 연결된 Jira 이슈 사이에 다음 조건을 고려하세요:

  • 취약점 페이지와 이슈 페이지에 관련된 취약점이 표시됩니다.
  • 이슈는 한 번에 하나 이상의 취약점에 연결될 수 있습니다.

취약점 해결

일부 취약점의 경우 해결책은 이미 알려져 있지만 매뉴얼으로 구현해야 합니다. 취약점 페이지의 해결책 필드는 보고된 보안 검사 도구 또는 취약점을 매뉴얼으로 생성할 때 입력됩니다. GitLab 도구는 GitLab 공지 데이터베이스의 정보를 활용합니다.

또한, 특정 도구는 제안된 해결책을 적용하는 소프트웨어 패치를 포함할 수 있습니다. 이러한 경우 취약점 페이지에는 Merge Request으로 해결 옵션이 포함됩니다.

다음 스캐너는 이 기능을 지원합니다:

취약점을 해결하려면 다음 중 하나를 수행할 수 있습니다:

취약점으로부터 Merge Request 생성

Merge Request으로 취약점 해결

Merge Request으로 취약점을 해결하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Secure > 취약점 보고서를 선택합니다.
  3. 취약점의 설명을 선택합니다.
  4. Merge Request으로 해결 드롭다운 디렉터리에서 Merge Request으로 해결을 선택합니다.

취약점을 해결하려면 필요한 패치를 적용하는 Merge Request이 생성됩니다. 표준 작업흐름에 따라 Merge Request을 처리합니다.

매뉴얼으로 취약점 해결

GitLab이 취약점을 위해 생성한 패치를 매뉴얼으로 적용하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Secure > 취약점 보고서를 선택합니다.
  3. 취약점의 설명을 선택합니다.
  4. Merge Request으로 해결 드롭다운 디렉터리에서 해결을 위한 패치 다운로드를 선택합니다.
  5. 패치를 생성한 커밋이 로컬 프로젝트에 확인된 것을 확인합니다.
  6. git apply remediation.patch를 실행합니다.
  7. 변경 사항을 확인하고 브랜치에 커밋합니다.
  8. 주요 브랜치에 변경 사항을 적용하기 위해 Merge Request을 생성합니다.
  9. 표준 작업흐름에 따라 Merge Request을 처리합니다.

취약점을 위한 보안 교육 활성화

note
보안 교육은 인터넷에 연결되지 않은 환경에서는 접근할 수 없습니다. 구체적으로, GitLab 서버는 활성화된 보안 교육 제공업체의 API 엔드포인트에 쿼리할 수 있는 능력이 필요합니다. 일부 타사 교육 공급 업체는 무료 계정으로 가입해야 할 수도 있습니다. Secure Code Warrior, Kontra, 또는 SecureFlag 중 하나에 가입하여 계정을 만드세요. GitLab은 사용자 정보를 이러한 타사 업체에 전송하지 않습니다. 단지 CWE 또는 OWASP 식별자와 파일 확장자의 언어 이름을 전송합니다.

보안 교육은 개발자가 취약점을 해결하는 방법을 학습할 수 있도록 돕습니다. 개발자는 감지된 취약점과 관련된 선택한 교육 제공업체의 보안 교육을 볼 수 있습니다.

프로젝트에서 취약점을 위한 보안 교육을 활성화하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Secure > 보안 구성을 선택합니다.
  3. 탭 바에서 취약점 관리를 선택합니다.
  4. 보안 교육 제공업체를 활성화하려면 토글을 켭니다.

각 통합은 취약점 식별자(CWE 또는 OWASP)와 언어를 보안 교육 제공업체에 제출합니다. 결과 링크는 GitLab 취약점에 표시됩니다.

취약점의 보안 교육 보기

보안 교육이 활성화되어 있다면, 취약점 페이지에는 검출된 취약점과 관련된 교육 링크가 포함될 수 있습니다. 보안 교육 가능 여부는 활성화된 교육 제공 업체가 특정 취약점과 일치하는 내용을 가지고 있는지에 따라 다릅니다. 교육 내용은 취약점 식별자를 기반으로 요청됩니다. 취약점마다 제공 업체와 사용 가능한 교육 내용이 다를 수 있습니다. 일부 취약점은 교육 내용이 표시되지 않을 수 있습니다. CWE를 갖는 취약점이 보안 교육 결과를 가장 가능성 있게 표시합니다.

취약점의 보안 교육을 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Secure > 취약점 보고서를 선택합니다.
  3. 교육을 보고 싶은 취약점을 선택합니다.
  4. 교육 보기를 선택합니다.