AI로 유출 된 비밀번호 찾기 : Copilot Secret Scanning을 구축 한 방법

AI로 유출 된 비밀번호 찾기 : Copilot Secret Scanning을 구축 한 방법

2024 년 10 월, 우리는 Copilot Secret Scanning의 일반적인 가용성을 발표하여 AI를 활용하여 사용자의 코드베이스에서 일반 암호를 감지했습니다. 이 게시물은 Copilot Secret Scanning이 후드 아래에서 어떻게 작동하는지, 개발할 때 발생하는 과제 및 테스트 및 반복에 사용하는 프레임 워크를 설명합니다.

Copilot Secret Scanning이란 무엇입니까?

Copleilot Secret Scanning은 Github Secret Protection의 기능으로, 파트너 프로그램을 통해 수백 개의 패턴 유형을 감지하여 Github의 수백만 개의 리포지토리를 보호합니다. 이러한 탐지의 정밀도는 보안 경고를 처리 할 때 보안 팀과 개발자에게 가장 중요합니다. 역사적으로, 우리의 탐지 접근법은 정규 표현에 의존했으며, 이는 엄격하고 공급자가 용해 된 형식의 비밀을 식별하는 효과적인 방법입니다. 그러나이 방법은 미묘하고 다양한 일반 암호 구조로 어려움을 겪고 있으며, 종종 보안 팀과 개발자에게 과도한 소음을 생성합니다.

이제 AI를 사용하여 GitHub Copilot으로 일반 암호를 감지하여 잠재적 비밀의 사용 및 위치와 같은 컨텍스트를 분석하여 소음을 제한하고 저장소의 건강 및 보안에 중요한 관련 경고를 제공합니다.

Coply Secret Scanning에서 감지 한 암호에 대한 비밀 스캔 경고.

비밀번호 정밀도에 자신감이있는 시점에 도달하는 것은 많은 테스트 사례, 신속한 반복 및 모델 변경을위한 여정이었습니다. 우리가 그 과정에서 배운 것을 탐구하고 우리가 어디로 가는지 알아 보겠습니다.

개인 미리보기는 초기에 문제를 강조했습니다. 비 전통적인 파일 유형 및 구조

Copilot Secret Scanning의 핵심에는 LLM 프롬프트를 통해 표현 된 큰 언어 모델 (LLM)에 대한 요청이 있습니다.

  • 취약성 유형,이 경우 암호에 대한 일반 정보.
  • 소스 코드 위치 및 취약성이 존재할 수 있다고 생각하는 파일의 내용.
  • 자동 처리를 허용하기 위해 모델 출력에 대한 엄격한 JSON 형식 사양.

프롬프트의 첫 번째 반복은 소수의 프롬프트 기술을 사용하여 LLM에 예제 입력 및 출력을 제공하여 작업 수행 방법을 보여줍니다. 우리는 자원 효과 모델이 스케일로 탐지를 실행하고 GPT-3.5-Turbo에 착륙하기를 원했습니다. 동시에, 우리는 긍정적 인 결과와 부정적인 결과가 포함 된 수동으로 선별 된 테스트 사례를 포함하여 기본 오프라인 평가 프레임 워크를 개발하여 고객에게 배치하기 전에 접근 방식이 건전한 것으로 확인할 수 있도록 도와줍니다.

우리는이 첫 번째 반복을 개인 미리보기 참가자에게 배치하고 즉시 문제를 발견했습니다. 오프라인 평가에서 자격 증명을 식별하는 데 합리적으로 잘 작동했지만 일부 고객 리포지토리에서는 실패 할 것입니다. 이 모델은 LLM이 훈련하는 기존의 코딩 언어 및 패턴에서 일반적으로 보이지 않는 파일 유형 및 구조를 해석하는 데 어려움이있었습니다.

이 경험은 문제의 복잡성과 LLM의 제한 특성을 보여주었습니다. 우리는 우리의 접근 방식을 재평가해야했습니다.

공개 미리보기로가는 길 : 오프라인 평가 개선 및 프롬프트

이러한 초기 결과에 따라 몇 가지 주요 방식으로 오프라인 평가 프레임 워크를 향상 시켰습니다. 먼저 개인 미리보기 참가자의 보고서를 추가하여 테스트 사례의 다양성을 높였습니다. 다음으로, 우리는 프레임 워크를 향상시켜 모델 또는 프롬프트 변경으로 인한 편차를 시각적으로 식별하고 분석 할 수있었습니다. 이를 통해 프롬프트 전략에서 다른 단계를 사용자 정의하는 영향을 더 잘 볼 수있었습니다. 마지막으로 GitHub Code Security Team의 평가 프로세스를 활용하여 데이터 수집 파이프 라인을 만들고 GPT-4를 사용하여 오픈 소스 리포지토리의 기존 비밀 스캔 경고의 학습을 기반으로 자체 테스트 사례를 만들었습니다.

이것은 오프라인 평가가 향상되었으며 정밀도와 리콜을 측정하는 데 필요한 폭을 제공했습니다. 정밀도는 잘못된 긍정적 비율에 대한 우려로 비밀을보다 정확하게 찾을 수있는 능력이며, 리콜은 허위 부정적인 비율에 대한 우려로 비밀을 더 안정적으로 찾을 수있는 능력입니다.

정밀도와 리콜의 차이를 보여주는 다이어그램.
Walber, CC By-SA 4.0, Wikimedia Commons를 통한

여기에서 탐지 품질을 평가하기 위해 일련의 실험을 실행했습니다.

  • 다른 모델을 시도하면 어떻게됩니까?
  • 프롬프트를 여러 번 실행하고 어떻게 든 응답을 결합하면 어떻게됩니까?
  • 두 가지 다른 모델에서 순서대로 두 가지 다른 프롬프트를 실행하면 어떻게됩니까?
  • LLM 응답의 비 결정적 특성을 어떻게 더 잘 처리 할 수 ​​있습니까?

보다 구체적으로, 우리는 LLM에 대한 탐지를 개선하기 위해 몇 가지 다른 메커니즘을 실험하기 시작했습니다.

우리는 투표를 시도했습니다 (모델에 동일한 질문을 여러 번 묻습니다). 이는 더 많은 결정적인 응답을 허용했지만 우리의 정밀도에 중요한 영향을 미치지 않았습니다.

또한 GPT-3.5-Turbo가 발견 한 후보자의 정확도를 검증하기 위해 더 큰 매개 변수 세트에 대해 더 큰 매개 변수 세트에 대해 훈련 된 더 큰 모델 (GPT-4)을 사용해 보았습니다. 이것은 우리의 리콜을 줄이지 않고 정밀도를 향상시키는 데 도움이되었지만 더 많은 자원 집약적이었습니다.

우리는 또한 중간에 필드, 제로 샷 및 사슬의 생각과 같은 몇 가지 다른 프롬프트 전략을 시도했습니다. 우리는 Microsoft의 동료들과 공동 작업을 시작했으며, 과거의 시험에서 경험적 학습이 하이브리드 사고 체인 (COT)과 소수의 소수의 프롬프트를 만들 수있는 새로운 오프라인 강화 학습 기술 인 MetareLection 기술을 사용했습니다.

우리는 궁극적으로 이러한 모든 기술의 조합을 사용하여 결국 Copilot Secret Scanning을 공개 미리보기로 이동하여 모든 Github Secret Protection 고객에게 광범위하게 열었습니다. 이것은 우리를 다음 장애물로 데려옵니다 : 스케일.

공개 미리보기의 용량을 스케일링합니다

비밀 스캐닝은 들어오는 GIT 푸시 스캔뿐만 아니라 모든 지점에서 전체 git 이력을 스캔합니다. 각 신규 고객마다 필요한 리소스가 선형 적으로 증가합니다. 우리는 단순히 LLM 용량을 확장하는 대신 최적의 성능과 효율성을 보장하기 위해 가치와 비용 사이의 가장 효과적인 균형을 맞추는 데 중점을 두었습니다. 우리는 자원을 관리하는 방법을 다루기 전에 다음과 같이 자원 사용 자체를 줄이는 방법을 찾으려고 노력했습니다.

  • 스캔으로부터의 변경 클래스 (예 :“테스트”,“모의”또는 파일 패스의 언어 파일과 같은 미디어 파일 또는 언어 파일)를 식별하고 제외합니다. 우리는 자격 증명이 포함되지 않거나 모델에 대해 이해할 수 없을 것으로 예상했기 때문입니다.
  • 성능과 대기 시간을 손상시키지 않으면 서 리소스 집약적이지 않을 것으로 예상되는 GPT-4-Turbo 및 GPT-4O-MINI와 같은 최신 모델을 실험합니다.
  • LLM이 우리의 쿼리에 응답 할 수있는 대기 시간을 크게 증가시키지 않고 자원을 줄인 Windows를 다른 컨텍스트 Windows로 실험합니다.
  • 파일의 새로운 부분을 처리하는 동안 이전 토큰 화에 대한 메모리를 유지하는 것을 포함하여 스캔하려는 컨텐츠를 토큰 화하는 방법을 개선합니다.

이러한 노력 중 일부는 우리가 스캔 한 내용을 제한하는 것과 같이 유익한 것으로 판명되었지만 다른 노력은 덜 효과적이었습니다. 예를 들어, 컨텐츠를 작은 조각으로 나누는 것은 큰 영향을 미치지 않았지만 더 강력한 모델을 사용했습니다.

궁극적으로, 가장 영향력있는 변화는 워크로드 인식 요청 관리 시스템을 만들어 스캔 중에 실행하는 다양한 작업 부하에 대해 LLM 용량을 최대화하고 공유 할 수있게 해주었습니다.

시스템을 구축 할 때, 우리는 용량 관리에서 주소 지정이 필요한 근본적인 문제를 발견했습니다. 개별 워크로드 (예 : 들어오는 GIT 커밋을 스캔하거나 전체 기록을 스캔하는 등)에 특정 요율 제한을 할당하는 것은 차선책이었습니다. 각 워크로드가 특정 트래픽 패턴과 관련이 있기 때문에, 예를 들어, 공부는 근무 시간과 관련이있는 경향이 있으며, 전체 이력 스캔은 보안 관리자 또는 관리자와 같은 개별 이벤트와 새로운 조직에서 기능을 가능하게하는 이벤트와 관련이 있습니다. 개별 작업량이 운영 상황 내에서 비율 제한을 쉽게 사용할 수있는 상황에서 쉽게 착륙 할 수있었습니다.

우리는이 공간에서 Github 자체의 Freno 및 기타 가중치, 우선 순위, 대기열 관련 알고리즘과 같은 기존 솔루션에서 상당한 영감을 얻었습니다. 우리는 각 워크로드에 대한 범위의 한계를 설정할 수있는 알고리즘을 고안하여 워크로드가 LLM을 완전히 압도하는 것을 방지하면서 현재 사용하지 않는 다른 워크로드에서 리소스를 활용할 수 있습니다. 이 전략은 활용을 극대화하는 데 매우 효과적이어서 Copilot Autofix 및 보안 캠페인 내에서도 사용하게되었습니다.

일반 가용성으로가는 길 테스트 미러

검출 품질에 대한 신뢰도를 달성하는 것은 Coplot Secret Scanning을 일반 가용성으로 이동시키는 데 중요했습니다. 우리는 공개 미리보기에 참여한 리포지토리의 서브 세트에 대한 프롬프트 및 필터링 변경을 실행하는 미러 테스트 프레임 워크를 구현했습니다. 최신 개선 사항 으로이 리포지토리를 구출함으로써 사용자에게 영향을 미치지 않고 실제 경보량 및 오 탐지 해상도의 변화를 평가할 수있었습니다.

우리는 실제 비밀번호가 누락되지 않은 탐지와 오 탐지가 크게 떨어졌습니다. 어떤 경우에는 a를 보았습니다 조직 전체의 오 탐지 감소! 이 전후의 비교는 개인 및 공개 미리보기 동안 우리가 한 모든 다른 변화로 인해 리콜을 희생하지 않고 정밀도를 높이고 모든 Github 비밀 보호 고객에게 신뢰할 수 있고 효율적인 탐지 메커니즘을 제공 할 준비가되었음을 나타냅니다.

미래를위한 교훈

Coplot Secret Scanning은 이제 모든 Github Secret Protection Repositories의 거의 35%에서 암호를 감지하고 있습니다. 우리는 성능을 계속 모니터링하고 학습 한 교훈을 적용하고 있습니다.

  • 정밀도에 중점을 둡니다. 보안 및 개발 팀은 소음없이 정확하고 실행 가능한 경고가 필요합니다. 이것은 항상 우리의 주요 목표입니다.
  • 다양한 테스트 사례 포함 : 탐지 기능을 개선 할 때 고객 피드백의 학습을 기반으로 고객 피드백의 학습을 기반으로 예제를 계속 통합합니다.
  • 효과적인 자원 관리 : 우리는 항상 확장 성의 성능 균형을 유지해야합니다.
  • 협업 혁신 : 다른 GitHub 및 Microsoft 팀과 파트너 관계를 맺으면 Copilot이 달성 할 수있는 것의 경계를 넓힐 수 있습니다.

이러한 학습은 또한 Copilot Autofix에서 공유되며, 이는 코드 스캔 경고에 대한 커버리지를 계속 확장하고 개발 팀이 코드 스캔 경고를 빠르게 개선 할 수 있도록 도와줍니다.

일반적인 가용성이 출시 된 이후, Coply Secret Scanning을위한 활성화는 보안 구성에 포함되어 있으므로 조직 또는 기업의 비밀을 감지하는 리포지토리를 제어 할 수 있습니다. 우리는 지속적인 모니터링, 미러 테스트 및 고객 피드백 및 탐지 트렌드를 기반으로 정제를 통해 지속적인 개선에 전념하고 있습니다. Coplot Secret Scanning은 강력한 응용 프로그램 보안의 중요한 구성 요소 역할을하며 사용자의 동적 요구를 충족시키기 위해 진화 할 것입니다.

Copilot Secret Scanning은의 특징입니다 Github 비밀 보호저장소에서 우발적 인 비밀 노출을 방지하기위한 엔터프라이즈 준비 솔루션을 제공합니다. Github 비밀 보호 2025 년 4 월 1 일부터 구매할 수 있습니다.

작성자가 작성했습니다

Ashwin Mohan

Courtney Claessens

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다