
CI/CD를 위한 무료 오프라인 SAST 엔진: AST 및 교차 파일 테인트 분석, 실시간 검증을 통한 시크릿 탐지, SCA/CVE, IaC 구성 오류, 그리고 SARIF 출력을 지원하는 웹셸 스캐닝.
터미널과 CI/CD를 위한 무료 고속 정적 애플리케이션 보안 테스트.
SAST + taint · 실시간 키 검증을 포함한 시크릿 · SCA/CVE · IaC · CMS & 웹셸/멀웨어 —
하나의 자체 완결형 바이너리, IDE와 빌드에서 동일한 엔진.
플러그인 홈 · CI/CD & SDLC · 직접 다운로드 · 매니페스트
sast는 아주 작은 런처입니다. 설치는 즉시 끝나며, 처음 실행할 때
운영체제에 맞는 자체 완결형 SAST 엔진 바이너리를 내려받아 체크섬을 검증하고
캐시합니다. 이후의 모든 실행은 Python 의존성 없이 네이티브 속도로 동작합니다.
pip install sast
sast . # 현재 디렉터리 스캔
sast ./src -f sarif -o out # ./out에 SARIF 리포트 작성
sast . --fail-on high # high 이상 발견 시 비정상 종료 (CI 게이팅)
sast --help # 전체 엔진 옵션
한눈에 보는 커버리지: FP 검증을 거친 1,750개 이상의 규칙 · 16개 언어에 대한 네이티브 AST + 파일 간 taint (40개 이상은 정규식) · 실시간 키 검증을 갖춘 230개 이상의 시크릿 규칙 팩 · 8개 이상의 생태계 + 컨테이너/OS 패키지에 대한 SCA · 약 24,000개의 CMS 권고 · 웹셸 & 멀웨어 시그니처 · IaC (Terraform/K8s/Docker/CloudFormation) · SARIF / JSON / HTML.
Linux, macOS, Windows(x86-64)를 지원합니다. Apple Silicon에서는 macOS 바이너리가 Rosetta로 실행됩니다.
스택에 맞는 방법을 고르세요 — 모든 방법이 동일한 엔진을 설치합니다.
| 방법 | 명령 |
|---|---|
| pip / pipx (모든 OS, Python 3.8+) | pip install sast · pipx install sast (권장 — 격리되며 항상 PATH에 있음) |
| Homebrew (macOS / Linux) | brew tap vulnz/sast && brew install sast |
| npm (전역 런처) | sudo npm install -g sastai |
| Debian / Ubuntu (서명된 apt 저장소) | 아래 참조 — 그런 다음 sudo apt-get install sast |
| 직접 바이너리 (Fedora / Arch / Alpine / 에어갭) | curl -sSL https://insom.ai/latest/sast/linux -o /usr/local/bin/sast |
curl -sSL https://insom.ai/apt/public-key.asc | sudo gpg --yes --dearmor \
-o /usr/share/keyrings/insomnia-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/insomnia-archive-keyring.gpg] https://insom.ai/apt stable main" \
| sudo tee /etc/apt/sources.list.d/insomnia.list
sudo apt-get update && sudo apt-get install -y sast
자체 완결형 단일 바이너리 — 에어갭 환경과 최소 CI 이미지에 편리합니다:
curl -sSL https://insom.ai/latest/sast/linux -o /usr/local/bin/sast # Linux x86-64
# curl -sSL https://insom.ai/latest/sast/macos -o /usr/local/bin/sast # macOS
chmod +x /usr/local/bin/sast
sast --version
Windows: https://insom.ai/latest/sast/windows를 내려받거나
다운로드 페이지에서 아무 빌드나 받으세요. 파일과 SHA-256은
매니페스트에 나열되어 있습니다.
pip install sast는 sast 명령을 생성합니다 (Linux/macOS: <prefix>/bin/sast,
Windows: <prefix>\Scripts\sast.exe). 이 명령이 인식되려면 해당
디렉터리가 PATH에 있어야 합니다. 가상 환경 내에서는:
python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
pip install sast
pip install --user 후 sast가 "인식되지 않음" / "명령을 찾을 수 없음" 이라면,
사용자별 스크립트 디렉터리가 PATH에 없는 것입니다. 이를 추가하거나,
모듈로 실행하세요 — 이 방법은 PATH와 무관하게 항상 동작합니다:
python -m sast .
%APPDATA%\Python\Python3XX\Scripts~/.local/bin미리 빌드된 멀티 아키텍처(amd64 + arm64) 이미지에 엔진이 내장되어 있습니다 — 설치할 것이 없어 CI/CD에 이상적입니다. 두 레지스트리 모두에서 사용 가능합니다:
dominators/sastghcr.io/vulnz/sastdocker pull dominators/sast:latest # 또는: ghcr.io/vulnz/sast:latest
로컬 소스 코드 스캔 — 리포트가 내 폴더에 저장됩니다. 프로젝트를
/src에 마운트하세요; 리포트는 내 컴퓨터의 ./reports 에 저장됩니다
(--rm으로 폐기되는 컨테이너 내부가 아님):
docker run --rm -v "$PWD:/src" dominators/sast:latest /src -f html,json,sarif -o /src/reports --fail-on high
# Windows PowerShell
docker run --rm -v "${PWD}:/src" dominators/sast:latest /src -f html,json,sarif -o /src/reports --fail-on high
-o /src/reports는 마운트된 디렉터리에 기록하므로, 호스트의 ./reports/에
HTML/JSON/SARIF 출력이 담깁니다. --fail-on high는 high 이상 발견 시 비정상
종료합니다 (CI 게이팅). 빠른 터미널 전용 스캔을 원하면 -f/-o를 생략하세요.
원격 저장소 스캔 — URL을 전달하면 엔진이 얕은 복제를 하고, 스캔한 뒤
정리합니다 (git clone도, 볼륨 마운트도 필요 없음):
docker run --rm dominators/sast:latest https://github.com/owner/repo --fail-on high
# 비공개 저장소:
docker run --rm -e GITHUB_TOKEN=ghp_xxx dominators/sast:latest https://github.com/owner/private-repo
GitHub Actions에서는 이미지가 컨테이너 스텝으로 동작합니다:
- name: SAST
run: docker run --rm -v "$PWD:/src" dominators/sast:latest /src -f sarif -o /src/out --fail-on high
- uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: out }
팁: 재현 가능한 빌드를 위해 버전을 고정하세요 (
ghcr.io/vulnz/sast:1.8.2). 이 이미지는 비루트 사용자로 실행되며 API 키, 계정, 텔레메트리가 필요 없습니다.
자체 완결형 단일 바이너리 — Python 의존성도, 외부 도구 호출도 없음 (semgrep / trivy / bandit 없음; 모든 것이 엔진 내부에서 실행):