정적 분석에는 전형적인 다중 도구 문제가 있었다. 보안, 품질, 규정 준수 스캐너가 유용한 문제를 찾아냈지만 각자 고유한 출력 형식으로 말했다. 이를 하나의 워크플로로 집계하려면 맞춤형 어댑터가 필요했고 맥락이 손실되었다.

SARIF의 영리한 수법은 결과를 이식 가능한 객체로 정의한 것이었다. OASIS 표준에 따르면 SARIF 로그는 JSON이며, 규칙, 산출물, 위치, 메시지, 지문, 흐름 데이터와 함께 하나 이상의 분석 실행 결과를 담을 수 있다.

GitHub는 이 형식을 실용화했다. GitHub의 코드 스캐닝 문서를 통해 팀은 서드파티 도구와 CI 시스템을 포함해 GitHub 외부에서 생성된 SARIF를 업로드한 뒤 결과를 저장소 경고로 볼 수 있다. 이로써 SARIF는 스키마에서 스캐너의 배포 경로로 바뀌었다.

스캐너가 아니라 발견 사항을 표준화하라

JSON 덕분에 도구와 플랫폼이 형식을 생성, 검증, 저장하기 쉬워졌다.

실행 및 도구 메타데이터를 통해 하나의 파일에서 어떤 스캐너가 어떤 발견 사항을 생성했는지 보존할 수 있다.

지문과 범주는 플랫폼이 커밋 전반에 걸쳐 경고를 중복 제거하고 추적하는 데 도움이 된다.

GitHub 수집은 도구 공급업체에 SARIF를 내보낼 즉각적인 이유를 제공했다.

형식은 첫 번째 오류 메시지만이 아니라 결과 수명 주기를 포착한다면 분절된 도구 시장을 통합할 수 있다.

SARIF 2.1.0은 2020년 3월 27일 OASIS 표준이 되었다. GitHub 코드 스캐닝은 계속해서 외부 도구에서 업로드된 SARIF 파일을 받아들이며, 이 형식을 로컬 스캐너, CI 시스템, 호스팅 코드 보안 워크플로 사이의 실용적인 다리로 만들고 있다.

근거 확인하기

출처

  1. Static Analysis Results Interchange Format (SARIF) Version 2.1.0 OASIS Open · docs.oasis-open.org ·
  2. Uploading a SARIF file to GitHub GitHub Docs · docs.github.com