소개
taudit은 CI/CD 파이프라인에서 권한 흐름을 모델링하고 분석하는 도구입니다. GitHub Actions, Azure DevOps, GitLab CI 워크플로우에서 자격 증명, 토큰, 신원, 아티팩트가 어떻게 전달되는지를 추적하여 신뢰 경계 위반과 권한 상승 경로를 탐지합니다. 0ryant이 개발한 이 소프트웨어는 권한 그래프를 기반으로 한 정적 분석을 통해 보안 취약점을 사전에 식별하는 데 중점을 둡니다.
상세정보
권한 그래프 모델링
taudit은 워크플로우 YAML을 파싱하여 단계, 시크릿, 신원, 이미지, 아티팩트를 유형화된 노드로 변환하고, FirstParty, ThirdParty, Untrusted 신뢰 구역으로 분류합니다. HasAccessTo, Produces, Consumes, UsesImage, DelegatesTo, PersistsTo와 같은 명시된 엣지 유형을 통해 권한 흐름을 방향성 그래프로 구축합니다.
내장 규칙 기반 분석
도구는 권한 그래프에 대해 사전 정의된 규칙을 적용하여 보안 문제를 탐지합니다. 예를 들어, 권한이 낮은 신뢰 구역으로 시크릿이나 신원이 이동하는 경우(authority_propagation), 과도한 권한을 가진 신원(over_privileged_identity), SHA 다이제스트로 고정되지 않은 서드파티 액션(unpinned_action) 등을 탐지합니다. 각 규칙은 심각도 수준과 함께 제시되며, 사용자는 taudit explain 명령으로 전체 규칙 목록과 설명을 확인할 수 있습니다.
커스텀 인variant 지원
조직별 보안 정책을 YAML 파일로 정의하여 --rules-dir 또는 --invariants-dir 옵션을 통해 로드할 수 있습니다. 이러한 커스텀 규칙은 내장 규칙과 동일한 권한 그래프 엔진에서 평가되어 조직 특화된 보안 요구사항을 적용할 수 있습니다.
다중 출력 형식 지원
taudit은 다양한 출력 형식을 지원하여 다른 도구와의 통합을 용이하게 합니다. 터미널에서의 인간-readable 출력, JSON, SARIF, CloudEvents JSONL 형식으로 결과를 내보낼 수 있으며, 권한 그래프 자체도 DOT, JSON, Mermaid 형식으로 내보내어 시각화나 downstream 도구(tsign, axiom 등)에서 사용할 수 있습니다.
다운로드 및 설치 방법
Windows 사용자는 Chocolatey 패키지 관리자를 통해 taudit을 설치할 수 있습니다. Chocolatey 커뮤니티 저장소에서 패키지가 제공되며, choco install taudit 명령으로 설치할 수 있습니다. 이 패키지는 GitHub 릴리스에서 제공되는 사전 빌드 바이너리를 다운로드하고 설치 시 SHA-256 체크섬을 검증합니다.
또한, Cargo를 통해 소스에서 직접 설치할 수 있습니다: cargo install taudit. Debian 및 Ubuntu 사용자는 공식 APT 저장소를 통해 sudo apt install taudit 명령으로 설치할 수 있습니다.
기본 사용법
taudit을 사용하는 기본 워크플로우는 다음과 같습니다. 먼저, 워크플로우 파일의 권한 그래프를 DOT 형식으로 생성하여 Graphviz로 시각화할 수 있습니다:
taudit map .github/workflows/release.yml
이 명령은 인간이 읽기 쉬운 표 형식으로 단계별 권한 접근 현황을 보여줍니다. 다음으로, 내장 규칙을 적용하여 보안 문제를 탐지합니다:
taudit scan .github/workflows/
이 명령은 모든 워크플로우 파일을 스캔하고 심각도별로 분류된 결과를 터미널에 출력합니다. 결과를 JSON 형식으로 내보내어 추가 처리하려면 다음과 같이 실행합니다:
taudit scan .github/workflows/ --format json > taudit.json
GitHub Code Scanning과 같은 도구와의 통합을 위해 SARIF 형식으로 출력할 수도 있습니다:
taudit scan .github/workflows/ --format sarif
워크플로우 간 변경 사항을 비교하려면 diff 명령을 사용합니다:
taudit diff before.yml after.yml
이런 경우에 유용합니다
CI/CD 파이프라인의 보안을 강화하고자 하는 개발자 및 DevOps 엔지니어에게 유용합니다. 특히, GitHub Actions, Azure DevOps, GitLab CI를 사용하는 조직에서 워크플로우 YAML을 줄 단위로 검토했을 때 발견하기 어려운 신뢰 경계 위반이나 권한 상승 경로를 자동으로 탐지하고자 할 때 유용합니다. 보안 팀은 이 도구를 사용하여 PR 게이트에서 새로운 보안 문제를 차단하고, 베이스라인 기반으로 과거 문제는 무시하면서 신규 문제만 탐지할 수 있습니다.
지원 환경·시스템 요구사항
taudit은 Rust로 작성되어 Windows, Linux, macOS 등 주요 운영 체제에서 실행됩니다. Windows에서는 Chocolatey 패키지 또는 GitHub 릴리스에서 제공되는 사전 빌드 바이너리를 사용할 수 있습니다. 소스에서 빌드하려면 Rust 툴체인이 필요하며, cargo install 명령을 통해 설치할 수 있습니다.
최신 버전·업데이트
현재 버전은 1.3.3이며, 공식 소스인 crates.io와 GitHub 저장소에서 확인할 수 있습니다. 버전 정보는 taudit version 또는 taudit --version 명령으로 확인할 수 있습니다.
제한 사항·확인 사항
taudit은 권한 그래프를 모델링하는 데 초점을 맞추고 있으며, 워크플로우 YAML의 문법적 오류나 표현식(shape) 문제를 검사하는 일반적인 린터(actionlint 등)의 역할을 대체하지 않습니다. 따라서 워크플로우의 구문 오류를 잡기 위해서는 별도의 YAML 린터와 함께 사용하는 것이 권장됩니다. 또한, 이 도구는 CVE 스타일의 취약점 스캐너가 아니며, 독립적인 정책 엔진도 아닙니다. 권한 그래프 자체가 제품이며, 발견 결과와 SARIF 출력은 해당 그래프의 소비자입니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


