CI/CD 파이프라인에 SAST, DAST, SCA를 통합해야 하는 이유
카테고리
인프라/DevOps/보안
서브카테고리
DevOps
대상자
- 대상자: DevOps 엔지니어, 프론트엔드/백엔드 개발자, CI/CD 파이프라인 운영자
- 난이도: 중급~고급 (보안 도구 통합 및 파이프라인 설계 지식 필요)
핵심 요약
- SAST → 코드 작성 시점에 SQL 인젝션, 하드코딩된 비밀번호 등 보안 취약점을 사전에 탐지
- DAST → 운영 중인 앱에 대해 인증 오류, 클라우드 버킷 설정 오류 등의 런타임 취약점을 시뮬레이션 검증
- SCA → 존재하는 의존성의 CVE, GPL 라이선스 위험 등 라이브러리 관련 취약점을 자동 차단
섹션별 세부 요약
1. 문제 설명
- CI/CD 속도 vs 보안의 균형이 무너지면, 의도치 않은 취약점이 프로덕션으로 유입
- 예시:
lodash
의존성 업데이트가 CVE를 포함할 수 있음 - 결과: API 키 유출, 3일간 다운타임, 업무 계약 상실 등 심각한 비용 발생
2. SAST (Static Application Security Testing)
- 기능: 코드 작성 시점에 SQL 인젝션, 하드코딩된 비밀번호 등 코드 내부 취약점 탐지
- CI/CD 영향: 병합 전 취약코드 차단, 프로덕션 핫픽스 예방
- 도구 예시:
SonarQube
,Semgrep
을 풀리퀘스트 체크에 통합
3. DAST (Dynamic Application Security Testing)
- 기능: 운영 중인 앱에 대해 인증 오류, 관리자 엔드포인트 노출, 클라우드 버킷 설정 오류 탐지
- CI/CD 영향: 실제 해킹 시뮬레이션으로 런타임 설정 오류 포착
- 도구 예시:
OWASP ZAP
을 스테이징 환경에서 배포 전 실행
4. SCA (Software Composition Analysis)
- 기능: 의존성 라이브러리의 CVE, GPL 라이선스 위험, 과시된 버전 탐지
- CI/CD 영향: 자동으로 취약한 의존성 PR 차단, 공급망 공격 위험 감소
- 도구 예시:
Snyk
,Dependabot
을package.json
에 커밋마다 스캔
5. 실행 예시: 스타트업 X 실패 사례
- 결과:
- API 키 유출 → $200,000 손실
- 과시된 express 버전 → 3일간 다운타임
- 패치 테스트 실패 → 기업 계약 상실
- 개선 후:
- 6개월 내 심각한 CVE 0개
- 법적 검토 시간 50% 감소
6. 구현 단계
- SAST 통합: 리인터와 IDE 플러그인에 추가
- DAST 자동화: 스테이징 환경 배포 후 실행
- SCA 강제:
```yaml
name: Scan dependencies
uses: snyk/actions/node@master
with:
command: monitor
```
- 비상 시 차단: 심각한 이슈 발생 시 병합 차단
7. 실무 팁
- 80%의 해킹이 알려진 취약점을 악용
- 90%의 코드베이스는 오픈소스 코드 포함
- SAST/DAST/SCA 없이 운영하면 운영 리스크가 100%
결론
- SAST는 조기 취약점 수정, DAST는 해커 시뮬레이션, SCA는 의존성 위험 차단
- 도구 도입 순서: Snyk(처음), SAST → DAST → Policy-as-Code
- 핵심: 보안은 개발팀의 일이지 SOC 팀의 책임이 아님