코드 취약점 스캐닝(Code Vulnerability Scanning)

코드 취약점 스캐닝(Code Vulnerability Scanning)

AI 애플리케이션 코드의 취약점을 풀 리퀘스트 단계에서부터 스캔하고 싶다면 코드 스캐닝을 활용해요. 연결된 레포지토리의 Pull Request를 검토해 AI 애플리케이션 보안 취약점을 찾아내고, 모든 스캔 결과를 플랫폼에 저장해 시간이 지나도 추적할 수 있어요.

출처: 문서

본문

개요

Code Scanning은 연결된 레포지토리의 Pull Request를 AI 애플리케이션 보안 취약점에 대해 검토해요. GitHub Actions 안에서 DeepTeam을 내 러너(runners)에서 실행하고, 발견 사항을 deepteam[bot]으로 Pull Request에 게시하며, 모든 스캔을 플랫폼에 저장해 두고 시간이 지나도 추적할 수 있게 해줘요.

프롬프트 인젝션, 안전하지 않은 도구·셸 호출, 유출된 시크릿과 자격 증명, 모델 출력의 안전하지 않은 처리, 입력 검증 누락 같은 AI 앱에 중요한 문제들을 찾아내요. 모든 발견 사항에는 심각도(severity), 플래그된 이유, 제안된 수정 방법이 함께 제공돼요.

Code Scanning은 Red Teaming의 일부예요. 스캔하려는 레포지토리에 DeepTeam GitHub App이 설치되어 있어야 해요.

GitHub App 설치(Install the GitHub App)

github.com/apps/trydeepteam에서 앱을 설치해요.

앱 페이지 열기(Open the app page)

github.com/apps/trydeepteam으로 이동해 Install을 선택해요.

설치할 위치 선택(Choose where to install it)

레포지토리를 소유한 계정이나 조직을 선택해요. 그런 다음 All repositories를 선택하거나, Only select repositories를 골라 스캔할 레포지토리를 선택해요. 그리고 Install을 선택해요.

이메일 입력(Enter your email)

앱을 설치하면 Confident AI 연결 페이지로 이동해요. 업무 이메일을 입력하고 Connect를 선택해요. 그러면 레포지토리가 사용자와 연결되어, 스캔 결과가 플랫폼에 표시돼요.

레포지토리 연결(Connect your repository)

연결하면 Confident AI가 .github/workflows/deepteam-code-scan.yml에 코드 스캔 워크플로를 추가하는 Pull Request를 레포지토리에 열어요. 머지하기 전에 스캐너가 실행되도록 레포지토리 시크릿 하나를 추가해야 해요.

API 키 추가(Add your API key)

레포지토리에서 Settings > Secrets and variables > Actions로 이동해 ANTHROPIC_API_KEY라는 이름의 레포지토리 시크릿을 추가해요. Code Scanning은 기본적으로 Claude Code를 사용해 변경 사항을 검토하므로 이 키가 필요해요.

Pull Request 머지(Merge the pull request)

Confident AI가 연 Pull Request를 머지해요. 그러면 워크플로가 기본 브랜치에 추가되고 스캐닝이 켜져요.

나중에 앱에 레포지토리를 더 추가하면, Confident AI가 각 새 레포지토리에 대해 설정 Pull Request를 열어 주고 같은 이메일로 연결해요.

무엇이 스캔되나(What gets scanned)

열리거나, 업데이트되거나, 리뷰 준비(ready for review)로 표시된 모든 Pull Request에서, 워크플로는 해당 Pull Request에서 변경된 파일들을 스캔해요. Pull Request 브랜치를 기본(base) 브랜치와 비교하므로 각 검토는 빠르고 새 코드에 집중된 상태를 유지해요.

스캔은 내 GitHub Actions 러너에서 실행돼요. Confident AI에는 발견 사항만 전송되므로, 봇이 Pull Request에 코멘트를 달 수 있고 실행 결과를 프로젝트에 저장할 수 있어요.

Pull Request에서 발견 사항 읽기(Read findings on a pull request)

deepteam[bot]은 변경된 정확한 라인에 인라인 리뷰 코멘트로 발견 사항을 게시하고, 함께 요약 코멘트도 달아요. 각 발견 사항은 다음을 보여줘요:

  • critical, high, medium, low 중 하나의 심각도.
  • 취약점과 그 유형.
  • 발견 사유에 대한 짧은 설명.
  • 제안된 수정 방법.

Pull Request에 문제가 없으면 봇이 그렇게 알려줘서, 스캔이 실행됐다는 걸 항상 알 수 있어요.

스캔 보기(View your scans)

Red Teaming > Code Scanning을 열면 프로젝트의 모든 스캔을 볼 수 있어요. 각 행에는 레포지토리, Pull Request, 실행 시점, 상태, 심각도별 발견 건수가 표시돼요.

스캔을 클릭하면 상세 내용이 열려요. 발견 사항은 파일별로 그룹화되고 심각도 순으로 정렬되며, 각 항목은 코드 내 위치, 플래그된 이유, 제안된 수정 방법을 보여줘요.

연결된 레포지토리와 수동 스캔(Connected repositories and manual scans)

Project Settings > Integrations > Code Scanning을 열면 프로젝트에 연결된 레포지토리를 볼 수 있어요.

여기서 열려 있는 Pull Request를 필요할 때마다 직접 스캔할 수도 있어요. 레포지토리를 고르고, Pull Request를 선택한 다음 Scan a PR을 선택해요. 스캔이 바로 시작되고, 끝나면 스캔 기록에 나타나요. 새 커밋을 푸시하지 않고 Pull Request를 다시 확인하고 싶을 때 유용해요.

수동 스캔은 설정 Pull Request가 먼저 머지되어 스캔 워크플로가 기본 브랜치에 있어야 실행돼요.

계정을 만들기 전에 이메일만으로도 레포지토리를 연결할 수 있어요. 나중에 같은 이메일로 로그인하면 플랫폼이 그 이메일에 연결된 레포지토리를 찾아 프로젝트에 추가하겠다고 제안해요. 연결하면 그 레포지토리의 스캔 기록과 수동 스캔이 해당 프로젝트에 저장돼요.

요구사항(Requirements)

  • github.com/apps/trydeepteam에서 레포지토리에 DeepTeam GitHub App 설치
  • ANTHROPIC_API_KEY 레포지토리 시크릿. Code Scanning은 기본적으로 Claude Code를 사용해요. 선호한다면 워크플로 파일에서 제공자를 바꿀 수 있어요.
  • 설정 Pull Request 머지. 그래야 워크플로가 기본 브랜치에서 실행돼요.

더 알아보기