AI로 취약점 해결
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
GitLab Duo 취약점 해결은 보안 취약점을 자동으로 해결하는 데 도움을 줍니다. 모든 AI 기반 시스템과 마찬가지로 대규모 언어 모델이 항상 올바른 결과를 생성한다는 것을 보장할 수 없습니다. 모든 GitLab Duo 기능을 활성화하는 방법에 대해 자세히 알아보십시오.
모델 정보
- 기본 LLM
- Amazon Q용 LLM: Amazon Q Developer
- 자체 호스팅 모델과 함께하는 GitLab Duo에서 사용 가능: 예
GitLab Duo 취약점 해결은 보안 취약점을 자동으로 해결하는 데 도움을 줍니다.
책임감 있게 AI 지원 사용#
모든 AI 기반 시스템과 마찬가지로 대규모 언어 모델이 항상 올바른 결과를 생성한다는 것을 보장할 수 없습니다. 병합하기 전에 항상 제안된 변경 사항을 검토해야 합니다. 검토할 때 다음을 확인합니다:
- 애플리케이션의 기존 기능이 보존됩니다.
- 취약점이 조직의 표준에 따라 해결됩니다.
전제 조건#
- 프로젝트의 구성원이어야 합니다.
- 취약점은 지원되는 분석기의 SAST 발견이어야 합니다:
- 모든 GitLab 지원 분석기.
- 각 취약점에 대한 취약점 위치와 CWE 식별자를 보고하는 적절히 통합된 타사 SAST 스캐너.
- 취약점은 지원되는 유형이어야 합니다.
모든 GitLab Duo 기능을 활성화하는 방법에 대해 자세히 알아보십시오.
취약점 해결에서 지원되는 취약점#
제안된 해결책의 품질을 보장하기 위해 취약점 해결은 특정 취약점 집합에서만 사용할 수 있습니다. 이 시스템은 취약점의 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)
- 취약한 코드 줄이 포함된 전체 파일
- 취약한 코드 줄 (줄 번호)
워크플로#
취약점 해결은 다양한 워크플로에서 사용할 수 있습니다. 다음을 수행할 수 있습니다:
- 취약점 보고서에서 기존 취약점을 해결합니다.
- MR 컨텍스트에서 취약점을 해결합니다.
취약점 보고서에서 기존 취약점 해결#
히스토리
취약점 해결을 지원하는 취약점 찾기#
히스토리
- 취약점 해결 활동 아이콘:
- GitLab 17.5에서
vulnerability_report_vr_badge라는 플래그와 함께 도입. 기본적으로 비활성화됨. - GitLab 17.6에서 기본적으로 활성화.
- GitLab 18.0에서 일반 공개. 기능 플래그
vulnerability_report_vr_badge제거.
취약점을 해결하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 보안 > 취약점 보고서를 선택합니다.
- 선택 사항. 기본 필터를 제거하려면 지우기 ([clear])를 선택합니다.
- 취약점 목록 위에서 필터 표시줄을 선택합니다.
- 나타나는 드롭다운 목록에서 활동을 선택한 다음 GitLab Duo (AI) 카테고리에서 취약점 해결 사용 가능을 선택합니다.
- 필터 필드 외부를 선택합니다. 취약점 심각도 합계 및 일치하는 취약점 목록이 업데이트됩니다.
- 해결하려는 SAST 취약점을 선택합니다.
- 취약점 해결을 지원하는 취약점 옆에는 파란색 아이콘이 표시됩니다.
선택한 취약점 해결#
해결을 지원하는 취약점을 선택한 후:
- 오른쪽 상단에서 AI로 해결을 선택합니다. 이 프로젝트가 공개 프로젝트인 경우 MR을 만들면 취약점과 제공된 해결책이 공개적으로 노출됩니다. 비공개로 MR을 만들려면 비공개 포크를 만들고 이 프로세스를 반복합니다.
- MR에 추가 커밋을 추가합니다. 이렇게 하면 새 파이프라인이 강제로 실행됩니다.
- 파이프라인이 완료된 후 파이프라인 보안 탭에서 취약점이 더 이상 나타나지 않는지 확인합니다.
- 취약점 보고서에서 수동으로 취약점을 업데이트합니다.
AI 수정 제안이 포함된 MR이 열립니다. 제안된 변경 사항을 검토한 다음 표준 워크플로에 따라 MR을 처리합니다.
이 기능에 대한 피드백을 이슈 476553에 제공해 주십시오.
MR에서 취약점 해결#
히스토리
MR에서 GitLab Duo 취약점 해결을 사용하여 병합 전에 취약점을 수정할 수 있습니다. 취약점 해결은 취약점 발견을 해결하는 MR 제안 댓글을 자동으로 만듭니다.
취약점 발견을 해결하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Merge requests를 선택합니다.
- MR을 선택합니다.
- 취약점 해결에서 지원되는 취약점 발견은 타누키 AI 아이콘 ([tanuki-ai])으로 표시됩니다.
- 지원되는 발견을 선택하여 보안 발견 대화 상자를 엽니다.
- 오른쪽 하단에서 AI로 해결을 선택합니다.
AI 수정 제안이 포함된 댓글이 MR에 열립니다. 제안된 변경 사항을 검토한 다음 표준 워크플로에 따라 MR 제안을 적용합니다.
이 기능에 대한 피드백을 이슈 476553에 제공해 주십시오.
문제 해결#
취약점 해결이 때때로 제안된 수정 사항을 생성하지 못할 수 있습니다. 일반적인 원인은 다음과 같습니다:
- 거짓 양성 감지됨:
- 수정 사항을 제안하기 전에 AI 모델은 취약점이 유효한지 평가합니다. 취약점이 진짜 취약점이 아니거나 수정할 가치가 없다고 판단할 수 있습니다.
- 취약점이 테스트 코드에서 발생하는 경우 이런 일이 발생할 수 있습니다. 조직에서 테스트 코드에서 발생하는 취약점도 수정하기로 선택할 수 있지만 모델이 이것들을 거짓 양성으로 평가하는 경우가 있습니다.
- 취약점이 거짓 양성이거나 수정할 가치가 없다고 동의하는 경우 취약점을 기각하고 일치하는 이유를 선택해야 합니다.
- SAST 구성을 사용자 정의하거나 GitLab SAST 규칙 문제를 보고하려면 SAST 규칙을 참조하십시오.
- 일시적이거나 예상치 못한 오류:
- 오류 메시지에
예상치 못한 오류가 발생했습니다,업스트림 AI 공급자 요청이 시간 초과되었습니다,문제가 발생했습니다또는 유사한 원인이 명시될 수 있습니다. - 이러한 오류는 AI 공급자 또는 GitLab Duo의 일시적인 문제로 인해 발생할 수 있습니다.
- 새 요청이 성공할 수 있으므로 취약점을 다시 해결해 볼 수 있습니다.
- 이러한 오류가 계속 발생하면 GitLab에 도움을 요청하십시오.
- 오류 메시지에
Resolution target could not be found in the merge request, unable to create suggestion오류:- 이 오류는 대상 브랜치에서 전체 보안 스캔 파이프라인이 실행되지 않은 경우 발생할 수 있습니다. MR 문서를 참조하십시오.
