피드로 돌아가기
Dev.toSecurity
원문 읽기
Bandit 기반 SAST 도입을 통한 High Severity 취약점 차단 파이프라인 구축
DevSecOps in Practice: Tools That Actually Catch Vulnerabilities - Part 2 - SAST with Bandit
AI 요약
Context
Secret Scanning만으로는 SQL Injection, eval() 호출 등 코드 내부의 논리적 보안 취약점 탐지가 불가능한 한계 존재. 런타임 실행 없이 소스 코드 패턴을 분석하여 보안 약점을 식별하는 Static Application Security Testing(SAST) 레이어 추가 필요성 대두.
Technical Solution
- Python 보안 커뮤니티 표준인 Bandit을 도입하여 CWE(Common Weakness Enumeration) 기반의 취약점 매핑 체계 구축
--severity-level high옵션을 통한 빌드 게이트 설정으로 Low/Medium 이슈는 가시성을 확보하되 High 이슈 발생 시에만 파이프라인을 중단시키는 전략적 필터링 적용- GitHub Actions 워크플로우 내
if: always()구문을 적용하여 스캔 실패 시에도 분석 리포트(JSON)를 Artifact로 저장함으로써 디버깅 효율성 증대 - Gitleaks(Pre-commit/Push)와 Bandit(Push)을 계층적으로 배치하여 시점별로 서로 다른 공격 벡터를 차단하는 다층 방어 구조 설계
- JSON 포맷 출력을 통한 머신 리더블 데이터 확보 및
.gitignore설정을 통해 리포트 내 포함된 민감 정보의 2차 유출 방지
실천 포인트
1. SAST 도구 도입 시 Severity Level을 구분하여 CI/CD 파이프라인의 Fail 조건 설정 여부 검토
2. JSON 리포트 생성 시 코드 스니펫에 포함된 민감 정보가 저장소에 커밋되지 않도록 .gitignore 설정 확인
3. Secret Scanning과 SAST의 탐지 영역 중첩 구간을 파악하여 중복 알림 최적화