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

54 lines
3.7 KiB
Markdown

---
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*