InfoGrab DocsInfoGrab Docs

AI로 취약점 해결

요약

GitLab Duo Vulnerability Resolution은 보안 취약점을 자동으로 해결하는 데 도움이 됩니다. 자세한 내용은 모든 GitLab Duo 기능을 활성화하는 방법을 참고합니다. 다른 AI 기반 시스템과 마찬가지로 대규모 언어 모델이 항상 올바른 결과를 내놓는다고 보장할 수 없습니다.

Model information

GitLab Duo Vulnerability Resolution은 보안 취약점을 자동으로 해결하는 데 도움이 됩니다.

개요 영상 보기

자세한 내용은 모든 GitLab Duo 기능을 활성화하는 방법을 참고합니다.

책임감 있게 AI 지원 사용#

다른 AI 기반 시스템과 마찬가지로 대규모 언어 모델이 항상 올바른 결과를 내놓는다고 보장할 수 없습니다. 머지하기 전에 반드시 제안된 변경 사항을 검토해야 합니다. 검토 시 다음을 확인합니다.

  • 애플리케이션의 기존 기능이 그대로 유지되는지 확인합니다.
  • 조직의 기준에 맞게 취약점이 해결되었는지 확인합니다.

취약점 해결에서 지원되는 취약점#

제안된 해결책의 품질을 보장하기 위해 취약점 해결은 특정 취약점 집합에서만 사용할 수 있습니다. 이 시스템은 취약점의 CWE(Common Weakness Enumeration) 식별자를 기반으로 취약점 해결을 제공할지 여부를 결정합니다.

현재 취약점 집합은 자동화 시스템 및 보안 전문가의 테스트를 기반으로 선택했습니다. 더 많은 유형의 취약점으로 적용 범위를 확장하기 위해 적극적으로 작업 중입니다.

취약점 해결에서 지원되는 CWE의 전체 목록 보기
  • CWE-23: 상대 경로 순회
  • CWE-73: 파일 이름 또는 경로의 외부 제어
  • CWE-78: OS 명령에 사용된 특수 요소의 부적절한 중립화('OS 명령 삽입')
  • CWE-80: 웹 페이지의 스크립트 관련 HTML 태그의 부적절한 중립화(기본 XSS)
  • CWE-89: SQL 명령에 사용된 특수 요소의 부적절한 중립화('SQL 삽입')
  • CWE-116: 부적절한 출력 인코딩 또는 이스케이프
  • CWE-118: 인덱스 가능 리소스에 대한 잘못된 액세스('범위 오류')
  • CWE-119: 메모리 버퍼 범위 내 작업의 부적절한 제한
  • CWE-120: 입력 크기를 확인하지 않고 버퍼 복사('클래식 버퍼 오버플로')
  • CWE-126: 버퍼 과다 읽기
  • CWE-190: 정수 오버플로 또는 래핑
  • CWE-200: 무권한 행위자에게 민감한 정보 노출
  • CWE-208: 관찰 가능한 타이밍 불일치
  • CWE-209: 민감한 정보가 포함된 오류 메시지 생성
  • CWE-272: 최소 권한 위반
  • CWE-287: 부적절한 인증
  • CWE-295: 부적절한 인증서 유효성 검사
  • CWE-297: 호스트 불일치를 통한 인증서의 부적절한 유효성 검사
  • CWE-305: 기본 취약점에 의한 인증 우회
  • CWE-310: 암호화 문제
  • CWE-311: 민감한 데이터의 암호화 누락
  • CWE-323: 암호화에서 논스, 키 쌍 재사용
  • CWE-327: 손상되거나 위험한 암호화 알고리즘 사용
  • CWE-328: 약한 해시 사용
  • CWE-330: 충분히 무작위적이지 않은 값 사용
  • CWE-338: 암호학적으로 약한 의사 난수 생성기(PRNG) 사용
  • CWE-345: 데이터 진위성의 불충분한 검증
  • CWE-346: 출처 유효성 검사 오류
  • CWE-352: 교차 사이트 요청 위조
  • CWE-362: 부적절한 동기화로 공유 리소스 사용 동시 실행('경쟁 조건')
  • CWE-369: 0으로 나누기
  • CWE-377: 안전하지 않은 임시 파일
  • CWE-378: 안전하지 않은 권한으로 임시 파일 생성
  • CWE-400: 제어되지 않는 리소스 소비
  • CWE-489: 활성 디버그 코드
  • CWE-521: 약한 비밀번호 요구 사항
  • CWE-539: 민감한 정보를 포함하는 영구 쿠키 사용
  • CWE-599: OpenSSL 인증서의 유효성 검사 누락
  • CWE-611: XML 외부 엔티티 참조의 부적절한 제한
  • CWE-676: 잠재적으로 위험한 함수 사용
  • CWE-704: 잘못된 유형 변환 또는 형 변환
  • CWE-754: 비정상 또는 예외 조건에 대한 부적절한 확인
  • CWE-770: 제한 또는 조절 없는 리소스 할당
  • CWE-1004: 'HttpOnly' 플래그 없는 민감한 쿠키
  • CWE-1275: 부적절한 SameSite 속성이 있는 민감한 쿠키

취약점 해결을 위해 타사 AI API와 공유되는 데이터#

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

  • 취약점 이름
  • 취약점 설명
  • 식별자(CWE, OWASP)
  • 취약한 코드 줄이 포함된 파일 전체
  • 취약한 코드 줄(줄 번호)

워크플로#

취약점 해결은 다음 워크플로에서 사용할 수 있습니다.

  • 취약점 리포트에서 기존 취약점을 해결합니다.
  • 머지 리퀘스트 컨텍스트에서 취약점을 해결합니다.

취약점 리포트에서 취약점 해결#

히스토리

사전 요구 사항:

  • 프로젝트의 Maintainer 또는 Owner 권한.
  • 취약점은 지원되는 분석기에서 나온 SAST 결과여야 합니다.
  • 취약점은 지원되는 유형이어야 합니다.

취약점 리포트에서 취약점을 해결하려면 다음 단계를 따릅니다.

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Secure > Vulnerability report를 선택합니다.
  3. 선택 사항. 기본 필터를 제거하려면 Clear([clear])를 선택합니다.
  4. 취약점 목록 위에서 필터 바를 선택합니다.
  5. 표시되는 드롭다운 목록에서 Activity를 선택한 다음 GitLab Duo (AI) 범주에서 Vulnerability Resolution available을 선택합니다.
  6. 필터 필드 바깥을 선택합니다. 취약점 심각도 합계와 일치하는 취약점 목록이 갱신됩니다.
  7. 해결하려는 SAST 취약점을 선택합니다.
    • 취약점 해결을 지원하는 취약점 옆에는 파란색 아이콘이 표시됩니다.
  8. 오른쪽 상단에서 Resolve with AI를 선택합니다. 해당 버튼이 보이지 않으면 AI actions를 선택한 다음 Resolve with AI를 선택합니다.

    [!warning] 이 프로젝트가 공개 프로젝트라면 MR을 생성할 때 취약점과 제안된 해결책이 공개적으로 노출된다는 점에 유의합니다. MR을 비공개로 생성하려면 비공개 포크를 생성한 다음 이 과정을 반복합니다.

  9. MR에 커밋을 하나 더 추가합니다. 그러면 새 파이프라인이 실행됩니다.
  10. 파이프라인이 완료된 뒤 파이프라인 보안 탭에서 해당 취약점이 더 이상 표시되지 않는지 확인합니다.
  11. 취약점 리포트에서 취약점을 수동으로 업데이트합니다.

AI 해결 제안이 담긴 머지 리퀘스트가 열립니다. 제안된 변경 사항을 검토한 다음 평소 워크플로에 따라 머지 리퀘스트를 처리합니다.

머지 리퀘스트에서 취약점 해결#

히스토리

머지 리퀘스트에서 GitLab Duo Vulnerability Resolution을 사용하면 머지되기 전에 취약점을 수정할 수 있습니다. 취약점 해결은 해당 취약점 결과를 해결하는 머지 리퀘스트 제안 댓글을 자동으로 생성합니다.

사전 요구 사항:

  • 프로젝트의 Maintainer 또는 Owner 권한.
  • 취약점은 지원되는 분석기에서 나온 SAST 결과여야 합니다.
  • 취약점은 지원되는 유형이어야 합니다.

취약점 결과를 해결하려면 다음 단계를 따릅니다.

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  2. Merge requests를 선택합니다.

  3. 머지 리퀘스트를 선택합니다.

    • 취약점 해결이 지원되는 취약점 결과에는 타누키 AI 아이콘([tanuki-ai])이 표시됩니다.
  4. 지원되는 결과를 선택해 보안 결과 대화 상자를 엽니다.

  5. 오른쪽 하단에서 Resolve with AI를 선택합니다.

    AI 해결 제안이 담긴 댓글이 머지 리퀘스트에 열립니다.

  6. 제안된 변경 사항을 검토한 다음 평소 워크플로에 따라 머지 리퀘스트 제안을 적용합니다.

문제 해결#

취약점 해결이 수정안을 생성하지 못하는 경우가 있습니다. 흔한 원인은 다음과 같습니다.

  • 거짓 양성으로 판단된 경우:
    • AI 모델은 수정안을 제안하기 전에 해당 취약점이 유효한지 평가합니다. 실제 취약점이 아니거나 수정할 가치가 없다고 판단할 수 있습니다.
    • 취약점이 테스트 코드에서 발생한 경우에 이런 일이 생길 수 있습니다. 조직에 따라 테스트 코드의 취약점도 수정하기로 할 수 있지만, 모델은 이를 거짓 양성으로 평가하기도 합니다.
    • 해당 취약점이 거짓 양성이거나 수정할 가치가 없다는 데 동의한다면 취약점을 무시하고 해당하는 사유를 선택합니다.
      • SAST 구성을 사용자 지정하거나 GitLab SAST 규칙의 문제를 신고하려면 SAST 규칙을 참고합니다.
  • 일시적이거나 예기치 않은 오류:
    • 오류 메시지에 an unexpected error has occurred, the upstream AI provider request timed out, something went wrong 또는 이와 비슷한 내용이 표시될 수 있습니다.
    • 이런 오류는 AI 공급자나 GitLab Duo의 일시적인 문제로 발생할 수 있습니다.
    • 다시 요청하면 성공할 수 있으므로 취약점 해결을 다시 시도할 수 있습니다.
    • 이런 오류가 계속 발생하면 GitLab에 문의합니다.
  • Resolution target could not be found in the merge request, unable to create suggestion 오류:
    • 이 오류는 대상 브랜치에서 전체 보안 스캔 파이프라인이 실행되지 않았을 때 발생할 수 있습니다. 머지 리퀘스트 문서를 참고합니다.

AI로 취약점 해결

GitLab v19.5
Tier: Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기

요약

GitLab Duo Vulnerability Resolution은 보안 취약점을 자동으로 해결하는 데 도움이 됩니다. 자세한 내용은 모든 GitLab Duo 기능을 활성화하는 방법을 참고합니다. 다른 AI 기반 시스템과 마찬가지로 대규모 언어 모델이 항상 올바른 결과를 내놓는다고 보장할 수 없습니다.

Model information

GitLab Duo Vulnerability Resolution은 보안 취약점을 자동으로 해결하는 데 도움이 됩니다.

개요 영상 보기

자세한 내용은 모든 GitLab Duo 기능을 활성화하는 방법을 참고합니다.

책임감 있게 AI 지원 사용#

다른 AI 기반 시스템과 마찬가지로 대규모 언어 모델이 항상 올바른 결과를 내놓는다고 보장할 수 없습니다. 머지하기 전에 반드시 제안된 변경 사항을 검토해야 합니다. 검토 시 다음을 확인합니다.

  • 애플리케이션의 기존 기능이 그대로 유지되는지 확인합니다.
  • 조직의 기준에 맞게 취약점이 해결되었는지 확인합니다.

취약점 해결에서 지원되는 취약점#

제안된 해결책의 품질을 보장하기 위해 취약점 해결은 특정 취약점 집합에서만 사용할 수 있습니다. 이 시스템은 취약점의 CWE(Common Weakness Enumeration) 식별자를 기반으로 취약점 해결을 제공할지 여부를 결정합니다.

현재 취약점 집합은 자동화 시스템 및 보안 전문가의 테스트를 기반으로 선택했습니다. 더 많은 유형의 취약점으로 적용 범위를 확장하기 위해 적극적으로 작업 중입니다.

취약점 해결에서 지원되는 CWE의 전체 목록 보기
  • CWE-23: 상대 경로 순회
  • CWE-73: 파일 이름 또는 경로의 외부 제어
  • CWE-78: OS 명령에 사용된 특수 요소의 부적절한 중립화('OS 명령 삽입')
  • CWE-80: 웹 페이지의 스크립트 관련 HTML 태그의 부적절한 중립화(기본 XSS)
  • CWE-89: SQL 명령에 사용된 특수 요소의 부적절한 중립화('SQL 삽입')
  • CWE-116: 부적절한 출력 인코딩 또는 이스케이프
  • CWE-118: 인덱스 가능 리소스에 대한 잘못된 액세스('범위 오류')
  • CWE-119: 메모리 버퍼 범위 내 작업의 부적절한 제한
  • CWE-120: 입력 크기를 확인하지 않고 버퍼 복사('클래식 버퍼 오버플로')
  • CWE-126: 버퍼 과다 읽기
  • CWE-190: 정수 오버플로 또는 래핑
  • CWE-200: 무권한 행위자에게 민감한 정보 노출
  • CWE-208: 관찰 가능한 타이밍 불일치
  • CWE-209: 민감한 정보가 포함된 오류 메시지 생성
  • CWE-272: 최소 권한 위반
  • CWE-287: 부적절한 인증
  • CWE-295: 부적절한 인증서 유효성 검사
  • CWE-297: 호스트 불일치를 통한 인증서의 부적절한 유효성 검사
  • CWE-305: 기본 취약점에 의한 인증 우회
  • CWE-310: 암호화 문제
  • CWE-311: 민감한 데이터의 암호화 누락
  • CWE-323: 암호화에서 논스, 키 쌍 재사용
  • CWE-327: 손상되거나 위험한 암호화 알고리즘 사용
  • CWE-328: 약한 해시 사용
  • CWE-330: 충분히 무작위적이지 않은 값 사용
  • CWE-338: 암호학적으로 약한 의사 난수 생성기(PRNG) 사용
  • CWE-345: 데이터 진위성의 불충분한 검증
  • CWE-346: 출처 유효성 검사 오류
  • CWE-352: 교차 사이트 요청 위조
  • CWE-362: 부적절한 동기화로 공유 리소스 사용 동시 실행('경쟁 조건')
  • CWE-369: 0으로 나누기
  • CWE-377: 안전하지 않은 임시 파일
  • CWE-378: 안전하지 않은 권한으로 임시 파일 생성
  • CWE-400: 제어되지 않는 리소스 소비
  • CWE-489: 활성 디버그 코드
  • CWE-521: 약한 비밀번호 요구 사항
  • CWE-539: 민감한 정보를 포함하는 영구 쿠키 사용
  • CWE-599: OpenSSL 인증서의 유효성 검사 누락
  • CWE-611: XML 외부 엔티티 참조의 부적절한 제한
  • CWE-676: 잠재적으로 위험한 함수 사용
  • CWE-704: 잘못된 유형 변환 또는 형 변환
  • CWE-754: 비정상 또는 예외 조건에 대한 부적절한 확인
  • CWE-770: 제한 또는 조절 없는 리소스 할당
  • CWE-1004: 'HttpOnly' 플래그 없는 민감한 쿠키
  • CWE-1275: 부적절한 SameSite 속성이 있는 민감한 쿠키

취약점 해결을 위해 타사 AI API와 공유되는 데이터#

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

  • 취약점 이름
  • 취약점 설명
  • 식별자(CWE, OWASP)
  • 취약한 코드 줄이 포함된 파일 전체
  • 취약한 코드 줄(줄 번호)

워크플로#

취약점 해결은 다음 워크플로에서 사용할 수 있습니다.

  • 취약점 리포트에서 기존 취약점을 해결합니다.
  • 머지 리퀘스트 컨텍스트에서 취약점을 해결합니다.

취약점 리포트에서 취약점 해결#

히스토리

사전 요구 사항:

  • 프로젝트의 Maintainer 또는 Owner 권한.
  • 취약점은 지원되는 분석기에서 나온 SAST 결과여야 합니다.
  • 취약점은 지원되는 유형이어야 합니다.

취약점 리포트에서 취약점을 해결하려면 다음 단계를 따릅니다.

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Secure > Vulnerability report를 선택합니다.
  3. 선택 사항. 기본 필터를 제거하려면 Clear([clear])를 선택합니다.
  4. 취약점 목록 위에서 필터 바를 선택합니다.
  5. 표시되는 드롭다운 목록에서 Activity를 선택한 다음 GitLab Duo (AI) 범주에서 Vulnerability Resolution available을 선택합니다.
  6. 필터 필드 바깥을 선택합니다. 취약점 심각도 합계와 일치하는 취약점 목록이 갱신됩니다.
  7. 해결하려는 SAST 취약점을 선택합니다.
    • 취약점 해결을 지원하는 취약점 옆에는 파란색 아이콘이 표시됩니다.
  8. 오른쪽 상단에서 Resolve with AI를 선택합니다. 해당 버튼이 보이지 않으면 AI actions를 선택한 다음 Resolve with AI를 선택합니다.

    [!warning] 이 프로젝트가 공개 프로젝트라면 MR을 생성할 때 취약점과 제안된 해결책이 공개적으로 노출된다는 점에 유의합니다. MR을 비공개로 생성하려면 비공개 포크를 생성한 다음 이 과정을 반복합니다.

  9. MR에 커밋을 하나 더 추가합니다. 그러면 새 파이프라인이 실행됩니다.
  10. 파이프라인이 완료된 뒤 파이프라인 보안 탭에서 해당 취약점이 더 이상 표시되지 않는지 확인합니다.
  11. 취약점 리포트에서 취약점을 수동으로 업데이트합니다.

AI 해결 제안이 담긴 머지 리퀘스트가 열립니다. 제안된 변경 사항을 검토한 다음 평소 워크플로에 따라 머지 리퀘스트를 처리합니다.

머지 리퀘스트에서 취약점 해결#

히스토리

머지 리퀘스트에서 GitLab Duo Vulnerability Resolution을 사용하면 머지되기 전에 취약점을 수정할 수 있습니다. 취약점 해결은 해당 취약점 결과를 해결하는 머지 리퀘스트 제안 댓글을 자동으로 생성합니다.

사전 요구 사항:

  • 프로젝트의 Maintainer 또는 Owner 권한.
  • 취약점은 지원되는 분석기에서 나온 SAST 결과여야 합니다.
  • 취약점은 지원되는 유형이어야 합니다.

취약점 결과를 해결하려면 다음 단계를 따릅니다.

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.

  2. Merge requests를 선택합니다.

  3. 머지 리퀘스트를 선택합니다.

    • 취약점 해결이 지원되는 취약점 결과에는 타누키 AI 아이콘([tanuki-ai])이 표시됩니다.
  4. 지원되는 결과를 선택해 보안 결과 대화 상자를 엽니다.

  5. 오른쪽 하단에서 Resolve with AI를 선택합니다.

    AI 해결 제안이 담긴 댓글이 머지 리퀘스트에 열립니다.

  6. 제안된 변경 사항을 검토한 다음 평소 워크플로에 따라 머지 리퀘스트 제안을 적용합니다.

문제 해결#

취약점 해결이 수정안을 생성하지 못하는 경우가 있습니다. 흔한 원인은 다음과 같습니다.

  • 거짓 양성으로 판단된 경우:
    • AI 모델은 수정안을 제안하기 전에 해당 취약점이 유효한지 평가합니다. 실제 취약점이 아니거나 수정할 가치가 없다고 판단할 수 있습니다.
    • 취약점이 테스트 코드에서 발생한 경우에 이런 일이 생길 수 있습니다. 조직에 따라 테스트 코드의 취약점도 수정하기로 할 수 있지만, 모델은 이를 거짓 양성으로 평가하기도 합니다.
    • 해당 취약점이 거짓 양성이거나 수정할 가치가 없다는 데 동의한다면 취약점을 무시하고 해당하는 사유를 선택합니다.
      • SAST 구성을 사용자 지정하거나 GitLab SAST 규칙의 문제를 신고하려면 SAST 규칙을 참고합니다.
  • 일시적이거나 예기치 않은 오류:
    • 오류 메시지에 an unexpected error has occurred, the upstream AI provider request timed out, something went wrong 또는 이와 비슷한 내용이 표시될 수 있습니다.
    • 이런 오류는 AI 공급자나 GitLab Duo의 일시적인 문제로 발생할 수 있습니다.
    • 다시 요청하면 성공할 수 있으므로 취약점 해결을 다시 시도할 수 있습니다.
    • 이런 오류가 계속 발생하면 GitLab에 문의합니다.
  • Resolution target could not be found in the merge request, unable to create suggestion 오류:
    • 이 오류는 대상 브랜치에서 전체 보안 스캔 파이프라인이 실행되지 않았을 때 발생할 수 있습니다. 머지 리퀘스트 문서를 참고합니다.