취약점 페이지

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

프로젝트의 각 취약점에는 취약점 페이지가 포함되어 있으며 다음과 같은 취약점의 세부 정보가 포함됩니다.

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

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

프로젝트의 기본 브랜치에서 더 이상 취약점이 감지되지 않는 경우, 해당 취약점의 상태를 해결함(Resolved) 으로 변경해야 합니다. 이렇게 하면 나중에 실수로 다시 병합될 경우 새 레코드로 다시 보고되게 됩니다. 여러 취약점의 상태를 변경하려면 취약점 보고서의 활동 필터를 사용하세요.

취약점 설명

Tier: Ultimate Offering: GitLab.com Status: Beta
  • GitLab 16.0에서 실험으로 도입되었으며 GitLab.com에서 베타 상태로 승격되었습니다.

GitLab는 큰 언어 모델을 사용하여 취약점의 요약, 개발자 및 보안 분석가가 취약점을 이해하고 어떻게 악용될 수 있는지, 그리고 어떻게 수정할 수 있는지에 대해 도울 수 있습니다.

  • 취약점의 요약
  • 개발자 및 보안 분석가가 취약점을 이해하고 어떻게 악용될 수 있는지, 그리고 어떻게 수정할 수 있는지에 대한 도움
  • 제안된 완화 조치 제공

취약점 설명

GitLab Duo 취약점 설명을 사용하여 취약점을 설명하세요. 취약점과 그 가능한 완화 조치를 더 잘 이해하기 위해 설명을 사용하세요.

사전 요구사항:

  • GitLab Ultimate 구독 티어여야 합니다.
  • 프로젝트의 구성원이어야 합니다.
  • 취약점은 SAST 결과여야 합니다.

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

취약점을 설명하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
  2. 보안 및 규정 > 취약점 보고서를 선택하세요.
  3. 도구 드롭다운 목록에서 SAST를 선택하세요.
  4. 설명을 원하는 SAST 취약점을 선택하세요.
  5. 취약점 페이지의 하단에서 시도해 보기( Try it out)를 선택하세요.

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

이 취약점 설명

GitLab.com에서는 이 기능을 사용할 수 있습니다. 기본적으로 Google의 text-bison-001 모델을 사용합니다. 그 모델의 성능이 저하된 경우, 대신 claude 모델을 사용합니다.

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

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

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

  • 취약점 제목 (스캐너에 따라 파일 이름이 포함될 수 있음)
  • 취약점 식별자
  • 코드 블록(취약점 레코드의 지시에 따라 단일 및 다중 라인)
  • 파일 이름

취약점 해결

Tier: Ultimate Offering: GitLab.com Status: Experiment

GitLab Duo 취약점 해결 기능을 사용하여 취약점을 자동으로 해결하는 병합 요청을 생성하세요.

GitLab.com에서는 이 기능을 사용할 수 있습니다. 기본적으로 Google의 code-bison-001 모델을 사용합니다.

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

사전 요구사항:

  • GitLab Ultimate 구독 티어여야 합니다.
  • 프로젝트의 구성원이어야 합니다.
  • 취약점은 SAST 결과여야 합니다.

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

취약점을 해결하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾으세요.
  2. 보안 및 규정 > 취약점 보고서를 선택하세요.
  3. 도구 드롭다운 목록에서 SAST를 선택하세요.
  4. 해결하려는 SAST 취약점을 선택하세요.
  5. 취약점 페이지 상단에서 병합 요청으로 해결 드롭다운 목록에서 AI로 해결을 선택하세요.

AI로 제안된 변경 내용이 포함된 병합 요청이 열립니다. 제안된 변경 사항을 검토한 후 표준 워크플로에 따라 병합 요청을 처리하세요.

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

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

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

취약점 상태 값

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

  • Detected: 새로 발견된 취약점의 기본 상태입니다. UI에서 “Needs triage”로 표시됩니다.
  • Confirmed: 사용자가 이 취약점을 확인하고 정확하다고 확인했습니다.
  • Dismissed: 사용자가 이 취약점을 확인하고 정확하지 않거나 해결되지 않아서 무시하기로 했습니다. 해결되지 않은 취약점은 이후의 스캔에서 검출되더라도 무시됩니다.
  • Resolved: 취약점이 수정되었거나 더 이상 존재하지 않습니다. 해결된 취약점이 다시 발견되면 해당 기록이 복원되고 상태가 감지된 것으로 설정됩니다.

취약점 기각 이유

History
  • 소개됨 in GitLab 15.11 with a feature flag named dismissal_reason.
  • Enabled on GitLab.com in GitLab 15.11. For self-managed customers, contact Support if you would like to use this feature in GitLab 15.11.
  • Enabled by default in GitLab 16.0.

취약점 기각 시, 다음 중 하나의 이유를 선택하여 왜 기각하는지 명확히해야 합니다:

  • Acceptable risk: 취약점은 알려져 있으며, 해결되지 않았지만 수용 가능한 비즈니스 리스크로 간주됩니다.
  • False positive: 시스템에서 취약점이 존재하지 않을 때에도 테스트 결과가 잘못 나타나는 보고 오류입니다.
  • Mitigating control: 기관에서 채택한 관리, 운영 또는 기술적인 제어(즉, 안전장치 또는 대책)로 정보 시스템을 동등하게 또는 비교 가능하게 보호하는 것입니다.
  • Used in tests: 이 발견물은 테스트의 일부이거나 테스트 데이터이기 때문에 취약점이 아닙니다.
  • Not applicable: 취약점은 알려져 있으며, 해결되지 않았지만, 업데이트되지 않을 응용 프로그램의 일부로 간주됩니다.

취약점 상태 변경

History
  • GitLab 16.4에서 개발자가 취약점의 상태를 변경하는 기능 (admin_vulnerability)이 deprecated되었습니다. Developer 역할의 모든 사용자에서 기본적으로 admin_vulnerability 권한이 GitLab 17.0에서 제거될 예정입니다.

필수 조건:

  • 프로젝트에 대해 적어도 Developer 역할이 있어야 합니다.

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

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

    GitLab 15.11 이후, Dismissed로 취약점의 상태를 변경하는 경우 기각 이유를 선택해야 합니다.

  5. 선택적으로 페이지 하단에 로그 항목에 대한 코멘트를 추가합니다.

변경된 상태에 대한 세부 정보는 취약점의 활동 로그에 기록되며, 누가 변경했는지와 언제 변경했는지가 기록됩니다.

취약점을 위한 GitLab 이슈 생성

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

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

해당 이슈는 취약점 리포트의 정보와 함께 GitLab 프로젝트에 만들어집니다.

Jira 이슈를 만드는 방법은 취약점을 위한 Jira 이슈 생성을 참조하세요.

취약점을 GitLab 및 Jira 이슈에 연결

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

취약점을 기존 GitLab 이슈에 연결

필수 조건:

취약점을 기존의 GitLab 이슈에 연결하려면:

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

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

취약점에 연결된 GitLab 이슈는 취약점 리포트 및 취약점 페이지에 표시됩니다.

다음은 취약점과 연결된 GitLab 이슈 간의 조건입니다:

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

기존 Jira 이슈에 취약점 링크하기

전제 조건:

  • Jira 이슈 통합이 구성되어 있고 Jira 이슈 활성화취약점에서 Jira 이슈 생성 활성화 확인란이 선택되어 있는지 확인합니다.

기존 Jira 이슈에 취약점을 링크하려면 Jira 이슈 설명에 다음 줄을 추가합니다:

/-/security/vulnerabilities/<id>

<id>취약점 ID입니다. 하나의 설명에 여러 가지 ID가 있는 경우 여러 줄을 추가할 수 있습니다.

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

취약점과 연결된 Jira 이슈 간 다음 조건을 주의하세요:

  • 취약점 페이지와 이슈 페이지는 관련된 취약점을 보여줍니다.
  • 하나의 이슈는 동시에 하나 이상의 취약점과 관련될 수 있습니다.

취약점 해결

일부 취약점에는 이미 해결책이 알려져 있습니다. 이러한 경우 취약점 페이지에 병합 요청으로 해결 옵션이 포함되어 있습니다.

이 기능에서 지원하는 스캐너는 다음과 같습니다:

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

취약점에서 병합 요청 생성

병합 요청으로 취약점 해결

병합 요청으로 취약점을 해결하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 보안 > 취약점 보고서를 선택합니다.
  3. 취약점 설명을 선택합니다.
  4. 병합 요청으로 해결 드롭다운 목록에서 병합 요청으로 해결을 선택합니다.

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

수동으로 취약점 해결

GitLab에서 취약점을 위해 생성된 패치를 수동으로 적용하려면:

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

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

참고: 보안 교육은 보안 조치로 공개 인터넷으로부터 격리된 컴퓨터에서는 접근할 수 없습니다. 구체적으로, GitLab 서버는 활성화된 교육 공급업체의 API 엔드포인트에 쿼리할 수 있는 기능이 필요합니다. 일부 타사 교육 공급업체는 무료 계정 가입이 필요할 수 있습니다. Secure Code Warrior, Kontra, 또는 SecureFlag 중 하나로 계정을 등록하세요. GitLab은 이러한 타사 공급업체에 사용자 정보를 보내지 않습니다. 단지 CWE 또는 OWASP 식별자와 파일 확장자의 언어 이름을 전송합니다.

보안 교육은 개발자들이 취약점을 해결하는 방법을 배울 수 있도록 도와줍니다. 개발자는 감지된 취약점과 관련된 선택한 교육 공급업체의 보안 교육을 볼 수 있습니다.

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

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

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

취약점의 보안 교육 보기

보안 교육이 활성화되어 있는 경우, 취약점 페이지에 감지된 취약점과 관련된 교육 링크가 포함될 수 있습니다. 교육의 가용성은 활성화된 교육 공급업체가 해당 취약점과 일치하는 내용을 가지고 있는지에 따라 달라집니다. 취약점 식별자에 따라 교육 콘텐츠가 요청됩니다. 특정 취약점에는 교육 콘텐츠가 표시되지 않을 수도 있습니다. CWE가 있는 취약점일수록 교육 결과가 반환될 가능성이 가장 높습니다.

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

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