Files
2nd/10_Wiki/Topics/정적 애플리케이션 보안 테스트 (SAST).md
T

35 lines
5.2 KiB
Markdown

---
id: [[P-Reinforce|P-Reinforce]]-AUTO-517F55
category: Dev
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 정적 애플리케이션 보안 테스트 ([[SAST|SAST]])"
---
# [[정적 애플리케이션 보안 테스트 (SAST)|정적 애플리케이션 보안 테스트 (SAST)]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> SAST(정적 애플리케이션 보안 테스트)는 애플리케이션의 소스 코드나 바이트코드를 실행하기 전에 정적으로 분석하여 잠재적인 보안 취약점을 식별하는 화이트박스 테스트 기법이다 [1]. 개발 수명 주기(SDLC) 초기에 취약점을 발견하여 수정 비용과 시간을 대폭 절감하게 해주는 '시프트 레프트([[Shift|Shift]]-Left)' 보안 전략의 핵심 도구이다 [1, 2]. 최근에는 단순한 규칙 기반 패턴 매칭의 한계를 극복하기 위해 인공지능(AI)과 머신러닝 모델을 통합하여, 코드의 문맥과 의미를 이해하고 수정안까지 자동으로 제안하는 방향으로 진화하고 있다 [3, 4].
## 📖 구조화된 지식 (Synthesized Content)
* **작동 방식 및 주요 분석 기법**: SAST는 소스 코드를 구문 분석하여 추상 구문 트리(AST)를 구축하고 코드의 구조, 의미론적 흐름, 데이터 흐름(Data Flow) 등을 정적으로 분석한다 [5, 6]. 가장 중요한 기법 중 하나인 오염 분석(Taint [[Analysis|Analysis]])은 사용자 입력 같은 신뢰할 수 없는 데이터 소스가 데이터베이스 쿼리나 파일 시스템 조작 같은 민감한 싱크(Sink)로 데이터 무결성 검증 없이 흘러가는지를 추적한다 [7, 8].
* **탐지 가능한 주요 취약점**: 인젝션 공격(SQL, NoSQL, 명령어 등), 크로스 사이트 스크립팅(XSS), 경로 탐색(Path traversal), 하드코딩된 비밀번호 및 민감 정보 노출, 안전하지 않은 암호화 알고리즘, 서버 측 요청 위조(SSRF) 등 주로 코드 레벨에서 발생하는 광범위한 결함을 찾아낸다 [1, 9-11].
* **전통적 SAST의 한계점**: 기존의 SAST는 정해진 규칙에 전적으로 의존하므로 비즈니스 로직의 의도나 런타임 컨텍스트를 이해하지 못해 가짜 경고인 오탐(False Positive)을 다수 발생시킬 수 있다 [3, 12, 13]. 또한 분석 대상의 프로그래밍 언어에 강하게 종속적이며, 프론트엔드와 백엔드가 다른 저장소로 분리된 경우 전체 맥락을 잃는다는 한계가 존재한다 [13].
* **AI 기반 SAST로의 진화**: 최신의 SAST 도구들(예: Snyk Code, [[Corgea|Corgea]] 등)은 대규모 언어 모델(LLM)과 머신러닝을 도입하여 전통적 SAST의 오탐률을 획기적으로 낮추고 있다 [14-17]. 이들은 여러 파일에 걸친(Interfile) 데이터 흐름을 이해하여 숨겨진 로직 결함을 찾아내며, 개발자의 통합 개발 환경(IDE)이나 Pull Request 환경에서 적절한 코드 수정안(Auto-fix)을 자동 제안하고 적용 전 자체 검증까지 거치는 수준으로 발전하고 있다 [18-21].
* **다른 애플리케이션 보안(AppSec) 도구와의 관계**: SAST는 개발 조직이 직접 작성한 1사(First-party) 코드를 검사한다 [22]. 반면, 실행 중인 애플리케이션을 블랙박스 형태로 테스트하는 것은 동적 애플리케이션 보안 테스트(DAST)이며, 서드파티 오픈소스 종속성 내의 알려진 취약점(CVE)이나 라이선스 위험을 분석하는 것은 소프트웨어 구성 분석(SCA)이다 [22-24]. 견고한 보안을 위해서는 이들 도구를 상호 보완적인 하이브리드 방식으로 CI/CD 파이프라인에 구축해야 한다 [25-27].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** AI 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** 정적 코드 분석, [[시프트 레프트 (Shift-Left)|시프트 레프트 (Shift-Left)]], 오염 분석 (Taint Analysis), 동적 애플리케이션 보안 테스트 (DAST), 소프트웨어 구성 분석 (SCA), 자동화된 코드 거버넌스
- **Projects/Contexts:** Snyk Code, [[Corgea|Corgea]], GitHub Advanced Security, [[DevSecOps|DevSecOps]] 파이프라인
- **Contradictions/Notes:** 자동화된 SAST 도구들은 처리 속도와 규모 확장성이 뛰어나지만, 정해진 규칙에 벗어나거나 복잡한 비즈니스 로직 및 새로운 아키텍처 맥락에 따른 취약점은 놓칠 수 있다. 연구에 따르면 SAST 툴들은 실제 취약점의 약 22% 정도를 탐지하지 못하거나 30~60%의 높은 오탐률로 경고 피로도(Alert fatigue)를 일으킨다 [12, 28, 29]. 따라서 AI로 개선된 SAST 도구를 사용하여 일차적인 검열을 수행하더라도, 고위험 코드나 복잡한 시스템 로직의 최종 보안 검증을 위해서는 반드시 인간 중심의 '수동 코드 리뷰(Manual [[Code Review|Code Review]])'를 결합하는 하이브리드 리뷰가 필수적으로 요구된다 [30-32].
---
*Last updated: 2026-04-18*
---