본문으로 건너뛰기
ossscanner.org

작동 방식

저장소 링크에서 검증된 발견 항목까지

파이프라인은 Anthropic이 자사의 OSS Scanner에 대해 설명한 방식인 위협 모델, 감사, 재확인, 근본 원인 파악, 패치를 따릅니다. 공개 API를 통해 이용할 수 있는 최첨단 Claude 모델을 기반으로 구축했습니다.

  1. 1

    안전한 복제

    요청하신 브랜치를 HTTPS로 얕게 복제하고 blob을 필터링해 가져옵니다. Git 훅은 비활성화하고, 심볼릭 링크는 일반 파일로 체크아웃하며, HTTPS 이외의 모든 전송 방식은 거부합니다. 내부 호스트를 대상으로 스캐너를 실행할 수 없도록 사설 네트워크 주소를 차단합니다.

    저장소의 어떤 것도 실행하지 않습니다. 빌드, 패키지 설치, 테스트를 하지 않습니다. 스캔이 끝나면 체크아웃한 코드를 삭제합니다.

  2. 2

    인벤토리 작성 및 위험 순위 지정

    모든 텍스트 소스 파일을 언어와 크기와 함께 나열합니다. 벤더링된 코드, 생성된 파일, 최소화된 번들, 잠금 파일은 건너뜁니다. 각 파일에는 위험 점수가 부여됩니다. 메모리 복사, 셸 실행, 역직렬화, SQL 생성, 템플릿 렌더링, 경로 결합, 암호화 및 인증 코드처럼 위험한 처리 지점과 파서, 프로토콜 핸들러, 요청 라우팅 같은 주요 실행 경로를 기준으로 점수를 매깁니다.

  3. 3

    위협 모델

    저장소에 .oss-scanner/threat_model.md(Anthropic의 스캐너가 읽는 것과 같은 파일), SECURITY.md 또는 등록 시 제공한 위협 모델이 있으면 스캐너가 이를 따릅니다. 그렇지 않으면 모델이 README, 디렉터리 구조, 위험도가 가장 높은 파일을 읽고 프로젝트의 기능, 신뢰할 수 없는 입력이 유입되는 지점, 범위에서 제외되는 항목을 담은 위협 모델 초안을 작성합니다.

    위협 모델은 집중적으로 살펴볼 파일도 선정하므로, 실제 공격자가 접근할 수 있는 코드에 감사 리소스를 집중합니다.

  4. 4

    감사

    위험도가 가장 높은 파일을 큰 묶음으로 모아 줄 번호와 함께 위협 모델을 첨부해 추론 모델에 전달합니다. 추론 모델은 신중한 사람이 검토했다면 보고했을 문제를 찾습니다:

    • 메모리 안전성: 버퍼 오버플로, 해제 후 사용, 정수 절삭
    • 인젝션: SQL, 명령어, 템플릿, 경로 순회, SSRF
    • 인증, 권한 부여 및 세션 로직
    • 안전하지 않은 역직렬화 및 파서 혼동
    • 암호화 오용 및 비밀정보 처리

    빠른 스캔에는 적정한 예산으로 Claude Haiku를 사용합니다. 등록된 프로젝트의 심층 스캔에는 Claude Sonnet을 사용하며 최대 네 배 더 많은 코드를 읽습니다.

  5. 5

    독립 검증

    잠재적인 발견 항목은 모두 별도의 검증 에이전트에 새로운 맥락과 함께 전달됩니다. 이 에이전트의 임무는 발견 항목이 맞지 않음을 입증하는 것입니다. 데이터 흐름을 추적하고, 다른 곳에서 검증하는지 살펴보며, 위협 모델에 비춰 입력이 실제로 공격자가 제어할 수 있는지 확인합니다. 검증 에이전트가 확인했거나 가능성이 높다고 판단한 발견 항목만 남고, 나머지는 기각된 것으로 집계됩니다.

    남은 발견 항목에 대해서는 검증 에이전트가 근본 원인, 재현 자료, unified diff 형식의 최소 후보 패치를 작성합니다.

  6. 6

    도입 커밋 및 보고서

    근본 원인이 같은 중복 항목은 병합합니다. 취약한 줄에 대해 git blame을 실행해 해당 줄을 가장 최근에 수정한 커밋을 찾습니다. 보통 버그를 도입한 커밋이므로 Fixes: 태그를 추가하고 영향을 받는 릴리스를 파악하는 데 도움이 됩니다.

    보고서는 무작위로 생성되어 추측할 수 없는 ID로 저장됩니다. 자문용 Markdown, 도구 연동용 JSON, GitHub code scanning용 SARIF 2.1.0 형식으로 내보낼 수 있습니다.

스캐너가 하지 않는 일

  • 코드를 실행하거나 빌드하거나 종속성을 가져오지 않습니다.
  • 발견 항목을 공개하거나 이슈를 등록하거나 등록된 유지관리자를 제외한 누구에게도 연락하지 않습니다.
  • 스캔 후 소스 코드 사본을 보관하지 않습니다. 보고서에는 영향을 받은 줄의 짧은 코드 조각이 포함됩니다.
  • 어떤 결과도 보장하지 않습니다. 모델은 버그를 놓치거나 때로는 잘못된 항목을 보고합니다. 문제가 없다는 보고서는 보안 인증이 아닙니다.

재현 자료를 비공개로 유지하는 이유

유지관리자가 아닌 사람도 누구나 공개 저장소 링크를 붙여 넣을 수 있습니다. 근본 원인과 패치는 방어자에게 도움이 되지만, 작동하는 개념 증명은 주로 공격자에게 도움이 됩니다. 따라서 누군가 저장소에 토큰 파일을 커밋할 때까지 재현 자료를 숨겨 둡니다. 이는 수정 사항을 배포할 수 있다는 증거가 됩니다. AI가 발견한 버그의 재현 자료는 유지관리자가 요청할 때 공유해야 한다는 Linux 커널의 지침을 따릅니다.

Anthropic의 OSS Scanner와 다른 점

Anthropic은 Dockerfile로 프로젝트를 빌드한 뒤 오프라인 샌드박스 안에서 스캐너를 실행합니다. 따라서 에이전트가 코드를 컴파일하고 실행해 버그를 동적으로 확인할 수 있습니다. 공개적으로 이용할 수 없는 Claude Mythos를 비롯해 가장 강력한 모델을 사용합니다. 저희는 공개적으로 이용할 수 있는 Claude 모델을 사용해 코드를 정적으로 분석합니다. 대신 누구나 신청이나 Dockerfile 없이 몇 분 만에 ossscanner.org를 이용할 수 있습니다.