--- id: static_application_security_testing title: 정적 애플리케이션 보안 테스트 (Static Application Security Testing, SAST) category: DevOps_and_Security status: stable confidence_score: 0.95 created_at: 2026-04-18 updated_at: 2026-05-08 tags: - sast - static_analysis - linting - shift_left - security_testing raw_sources: - 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*