Files
2nd/10_Wiki/Topics/DevOps_and_Security/SAST.md
T

3.7 KiB

id, title, category, status, confidence_score, created_at, updated_at, tags, raw_sources
id title category status confidence_score created_at updated_at tags raw_sources
static_application_security_testing 정적 애플리케이션 보안 테스트 (Static Application Security Testing, SAST) DevOps_and_Security stable 0.95 2026-04-18 2026-05-08
sast
static_analysis
linting
shift_left
security_testing
Backend/Static Analysis & Linting (정적 분석 및 린팅).md
Backend/동적-정적 코드 분석 (Static-Dynamic Code Analysis).md
Programming & Language/시프트 레프트 (Shift-Left).md

정적 애플리케이션 보안 테스트 (Static Application Security Testing, SAST)

📌 Brief Summary

SAST(Static Application Security Testing)는 애플리케이션을 실행하지 않고 소스 코드, 바이트 코드 또는 바이너리 수준에서 보안 취약점을 분석하는 '화이트박스 테스팅' 기법입니다 [1]. 개발 초기 단계(Shift-Left)에서 보안 결함을 발견하여 수정 비용을 최소화하고, 코딩 표준 준수 및 잠재적인 논리 오류를 식별하는 데 핵심적인 역할을 합니다 [1, 2].

📖 Core Content

1. SAST의 특징 및 장점

  • 화이트박스 테스트: 내부 소스 코드 구조를 직접 분석하여 취약한 함수 호출, 데이터 흐름, 제어 흐름을 파악합니다 [1].
  • 조기 발견 (Shift-Left): 코드가 작성되는 즉시 또는 빌드 단계에서 검사를 수행하므로, 배포 후 발견되는 이슈보다 수정 비용이 훨씬 저렴합니다 [1].
  • 높은 커버리지: 실행 경로에 상관없이 코드 전체를 훑으므로 이론적으로는 모든 코드 라인을 검사할 수 있습니다.

2. 주요 분석 기법

  • 데이터 흐름 분석 (Data Flow Analysis): 신뢰할 수 없는 사용자 입력(Taint)이 검증 없이 위험한 함수(Sink)로 도달하는지 추적합니다 (예: SQL Injection, XSS 방어).
  • 제어 흐름 분석 (Control Flow Analysis): 논리적인 실행 순서를 분석하여 도달 불가능한 코드나 비정상적인 루프를 식별합니다.
  • 린팅 (Linting): 코딩 컨벤션 위반이나 잠재적인 버그를 유발할 수 있는 안티 패턴을 정적 규칙 기반으로 찾아냅니다 [2].

3. 도구 및 통합

  • 대표 도구: SonarQube, Checkmarx, Fortify, Snyk Code, ESLint (Security plugins) 등.
  • IDE 통합: 개발자가 코드를 작성하는 시점에 실시간으로 피드백을 제공하여 보안 교육 효과를 동시에 거둘 수 있습니다.

⚖️ Trade-offs & Caveats

  • 높은 오탐률 (False Positives): 실제로는 안전한 코드임에도 불구하고 문맥을 오해하여 취약점으로 보고하는 경우가 많아 개발자의 검토 시간이 필요합니다.
  • 런타임 이슈 탐지 불가: 서버 설정 오류, 인증 메커니즘의 동적 결함 등 실행 환경에서만 발생하는 문제는 잡아낼 수 없습니다 (DAST와 병행 필수).
  • 언어 의존성: 각 프로그래밍 언어의 구문을 이해해야 하므로, 지원되지 않는 언어나 복잡한 프레임워크에서는 분석 정밀도가 떨어질 수 있습니다.

🔗 Knowledge Connections

  • Related Topics: DAST, SCA, Shift-Left, 추상 구문 트리(AST)
  • Projects/Contexts: CI/CD 파이프라인 보안 게이트 설정, 안전한 소프트웨어 개발 수명주기(SSDLC)
  • Contradictions/Notes: SAST는 모든 취약점을 해결해주지 않습니다. 특히 서드파티 라이브러리의 취약점은 SCA가, 런타임 환경은 DAST가 담당해야 전체적인 방어망이 완성됩니다 [1, 2].

Last updated: 2026-05-08