Skip to content

필사 모드: 정적 분석 / SAST 2026 — Semgrep / CodeQL / Snyk / SonarQube / Aikido / Trivy 심층 비교

한국어
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

프롤로그 — "보안 도구 하나로 다 막던 시대는 끝났다"

2018년쯤 "정적 분석 도구 뭐 써?" 하고 물으면 답은 보통 두 갈래였다. 오픈소스라면 SonarQube, 엔터프라이즈라면 Checkmarx 아니면 Veracode. 그게 전부였다. CI에 SAST 한 개 붙이고, 분기마다 false positive를 사람이 분류했다. 운영자는 PDF 보고서를 받았고, 개발자는 그걸 본 적이 거의 없었다.

2026년 5월 현재, 그 그림은 산산조각 났다. 한 회사의 보안 파이프라인을 그려보면 보통 이렇게 생긴다.

- **PR에서 도는 SAST** — Semgrep 또는 CodeQL.

- **의존성 스캔 (SCA)** — Snyk Open Source, Endor Labs, Socket.dev, 또는 Dependabot.

- **시크릿 스캔** — GitGuardian 또는 Cycode가 git push pre-receive에서.

- **컨테이너 이미지 스캔** — Trivy 또는 Snyk Container, 빌드 직후.

- **SBOM 생성** — SPDX 또는 CycloneDX, 빌드 산출물에 첨부.

- **런타임 DAST** — OWASP ZAP 또는 Burp Suite, 스테이징에서 야간 실행.

- **프라이버시 스캔** — Bearer가 PII 흐름을 감지.

- **모든 걸 묶는 ASPM** — Apiiro, Cycode, 또는 Aikido가 단일 화면에서 우선순위.

이 글은 2026년 시점에서 위 도구들이 각각 어디에 서 있는지, 무엇을 잘하고 무엇을 못하는지, 그리고 "우리 팀은 무엇을 골라야 하나"를 정리한다. 단순한 리스트가 아니라 — Pro engine, reachability, AI autofix, EU CRA — 2024~2026 사이에 이 시장을 흔든 4가지 흐름을 함께 본다.

1장 · 2026년 코드 보안 도구 지도 — SAST / DAST / SCA / Secrets / Container

먼저 큰 그림. 코드 보안 도구는 보통 다음 5축으로 분류된다.

| 카테고리 | 무엇을 보나 | 대표 도구 |

| --- | --- | --- |

| SAST (Static App Security Testing) | 소스 코드의 취약 패턴, dataflow | Semgrep, CodeQL, Snyk Code, SonarQube, Checkmarx, Veracode |

| DAST (Dynamic App Security Testing) | 실행 중인 앱의 HTTP/표면 취약점 | OWASP ZAP, Burp Suite, Invicti |

| SCA (Software Composition Analysis) | 오픈소스 의존성의 알려진 CVE | Snyk Open Source, Endor Labs, Socket.dev, Trivy, Dependabot |

| Secrets | 코드/git 히스토리의 API 키, 토큰 | GitGuardian, TruffleHog, Cycode, Gitleaks |

| Container / IaC | 컨테이너 이미지, Terraform, K8s manifest | Trivy, Snyk Container, Aikido, Checkov |

여기에 2024~2026 사이에 새로 끼어든 카테고리가 둘 있다.

- **ASPM (Application Security Posture Management)** — 여러 도구의 발견을 한 화면에서 우선순위 매기고 운영. Apiiro, Cycode, Aikido가 대표.

- **Privacy/PII scanning** — 코드가 어떤 개인 정보를 다루는지 추적. Bearer가 선두.

그리고 2026년의 트렌드는 명확하다. **"여러 도구를 한 플랫폼이 묶는다"**. Snyk은 Code + Open Source + Container + IaC를 한 묶음으로 팔고, Aikido는 처음부터 올인원이고, Semgrep도 Pro 엔진 위에 Supply Chain·Secrets를 얹었다. 단일 점 도구로 시작해서 ASPM 같은 플랫폼이 되거나, 처음부터 플랫폼으로 들어오거나 둘 중 하나다.

2장 · Semgrep — 오픈소스 SAST의 표준 + Pro engine

Semgrep은 2020년경 등장한 정적 분석 도구로, "AST 위에서 패턴 매칭"이라는 단순한 모델을 사용한다. grep처럼 보이지만 코드의 구문 트리를 본다. 이 단순함이 무기가 되어, 2026년에는 오픈소스 SAST 시장의 사실상 표준이 됐다.

핵심 개념

- **Rule** — YAML로 작성하는 매칭 패턴. 정규식이 아니라 코드 구조를 본다.

- **Semgrep CE (Community Edition)** — 무료 OSS, 단일 파일 분석.

- **Semgrep Pro engine** — 유료, 함수 간 dataflow, 클래스 간 추적.

- **Semgrep Supply Chain** — SCA. reachability 기반으로 "실제로 호출되는 CVE만" 우선순위.

- **Semgrep Secrets** — git 히스토리에서 시크릿 탐지.

강점

- 규칙 작성이 압도적으로 쉽다 — YAML 한 파일로 팀 특화 규칙을 1시간 안에.

- 오픈소스 커뮤니티가 만든 1만+ 공개 규칙.

- CI 통합이 빠름, 보통 5분 안에 PR comment까지 도달.

- Pro engine으로 가면 dataflow가 강해져서 false positive가 크게 떨어진다.

약점

- CE 단독으로는 함수 간 흐름이 안 보여서 deep 분석은 어렵다.

- Pro engine은 유료이고 가격이 seat 기준으로 빠르게 커진다.

- C++·Swift·Rust 같은 언어는 CodeQL보다 약하다.

언제 고르나

- 팀이 작고, OSS 친화적이며, 자기 규칙을 작성하고 싶은 경우.

- Python, JS/TS, Go, Java 위주의 코드베이스.

- PR 시 짧은 피드백 루프가 중요한 경우.

Semgrep rule 예시 — Flask의 SQL injection 패턴

rules:

- id: flask-sql-injection

pattern: |

$CURSOR.execute("..." + $VAR + "...")

message: SQL injection via string concatenation

severity: ERROR

languages: [python]

metadata:

cwe: CWE-89

owasp: A03:2021-Injection

로컬 실행

semgrep --config=auto .

CI에서

semgrep ci --config=p/owasp-top-ten

Semgrep Pro engine은 단일 함수 안의 흐름을 넘어 인터프로시저럴 dataflow를 보고, 클래스 멤버를 통한 taint 추적도 한다. 무료 CE와의 가장 큰 차이는 "user input이 5단계 함수 호출을 거쳐 sink에 도달"하는 케이스를 잡느냐 못 잡느냐다.

3장 · CodeQL — GitHub Advanced Security의 핵심

CodeQL은 Semmle이 만들고 2019년 GitHub이 인수한 정적 분석 엔진이다. **코드를 데이터베이스로 변환**해서 그 위에 쿼리를 작성한다는 독특한 모델을 쓴다. SQL을 쓰듯 "이런 조건을 만족하는 코드 경로를 찾아라"라고 질의한다.

핵심 개념

- **CodeQL database** — 소스를 파싱해서 만든 관계형 DB. 함수, 호출, 변수, 흐름이 테이블로.

- **QL query** — Datalog 계열 쿼리 언어. SAST 규칙이 곧 쿼리.

- **GitHub Advanced Security (GHAS)** — CodeQL을 GitHub에 통합한 유료 제품.

- **Default setup** — GHAS 활성화하면 자동으로 표준 쿼리셋이 PR에 붙는다.

강점

- dataflow 정밀도가 업계 최강 수준. CWE-89·CWE-79 같은 taint 흐름을 인터프로시저럴로 정확히 추적.

- 지원 언어가 다양 — C/C++, C#, Go, Java/Kotlin, JS/TS, Python, Ruby, Swift.

- GitHub 통합이 깊다. PR 차단, Security 탭, 보안 자문(GHSA) 자동 연결.

- 쿼리는 공개. 새로운 CVE에 대해 커뮤니티가 쿼리 추가 가능.

약점

- 빠르지 않다. 큰 monorepo에서 풀 스캔이 30분~수 시간.

- 쿼리 작성 난도가 높다. Semgrep YAML 1시간이면 짤 걸 CodeQL은 며칠.

- GHAS는 enterprise 가격(seat 기준)이라 작은 팀에는 부담.

언제 고르나

- 이미 GitHub Enterprise를 쓰는 조직.

- C/C++ 또는 Swift 비중이 높은 코드베이스.

- false positive를 최대한 줄이고 deep dataflow가 필요한 경우.

// CodeQL 예시 — Java SQL injection taint flow

module SqlInjectionConfig implements DataFlow::ConfigSig {

predicate isSource(DataFlow::Node n) { n instanceof RemoteFlowSource }

predicate isSink(DataFlow::Node n) {

exists(MethodCall mc | mc.getMethod().hasName("executeQuery") |

n.asExpr() = mc.getArgument(0))

}

}

module SqlInjectionFlow = TaintTracking::Global<SqlInjectionConfig>;

from SqlInjectionFlow::PathNode source, SqlInjectionFlow::PathNode sink

where SqlInjectionFlow::flowPath(source, sink)

select sink, source, sink, "SQL injection from $@", source, "user input"

CodeQL의 진짜 가치는 "한 번 짠 쿼리가 모든 GitHub 저장소에 적용 가능"이라는 점. Log4Shell이 터졌을 때 GitHub이 24시간 안에 쿼리를 배포했고, 그게 수십만 저장소에 즉시 반영됐다. 이런 규모는 다른 도구가 흉내 내기 어렵다.

4장 · Snyk Code / Snyk Open Source — DeepCode 통합 이후

Snyk은 원래 SCA(의존성 스캔)로 시작했다. 2020년 DeepCode(취리히 ETH 스핀오프, ML 기반 SAST)를 인수하면서 SAST로 확장했고, 지금은 Code + Open Source + Container + IaC를 묶은 통합 플랫폼이다.

핵심 제품

- **Snyk Code** — SAST. DeepCode AI 엔진 기반, ML로 학습한 패턴.

- **Snyk Open Source** — SCA. 의존성 CVE + 라이선스 + reachability.

- **Snyk Container** — 컨테이너 이미지 + IaC.

- **Snyk Cloud** — AWS·Azure·GCP 설정 스캔.

강점

- IDE 통합이 우수. VS Code, IntelliJ, JetBrains 모두 1급 지원.

- 개발자 친화적 UX. 한 PR에서 발견부터 fix 제안까지 깔끔.

- Reachability analysis — "이 CVE는 우리 코드 경로에서 실제로 호출되는가"를 판단.

- DeepCode AI가 autofix 제안을 한다 (Snyk DeepCode AI Fix).

약점

- 가격이 높다. 특히 Open Source까지 다 쓰려면 enterprise 가격.

- 자체 호스팅 옵션이 제한적 — 대부분 SaaS.

- 규칙 커스터마이즈가 Semgrep만큼 자유롭지 않다.

언제 고르나

- 스타트업~중견기업 중 "한 벤더에서 SAST+SCA+Container 다 받고 싶다"는 경우.

- IDE 안에서 실시간 피드백을 원하는 개발팀.

- 외부 SaaS 사용에 거부감이 없는 조직.

Snyk CLI 사용

snyk auth

snyk code test # SAST

snyk test # SCA (의존성)

snyk container test alpine:3 # 컨테이너

snyk iac test terraform/ # IaC

CI 통합 (GitHub Actions)

- uses: snyk/actions/setup@master

- run: snyk test --severity-threshold=high

Snyk의 큰 변화는 2024년 DeepCode AI 통합 가속화. 이전엔 패턴 기반이었던 SAST가 ML 학습 + LLM autofix로 옮겨갔다. 실측에서 "false positive 30~40% 감소, autofix 채택률 50% 이상"이라는 보고가 나오기 시작했다. 다만 ML 기반의 약점인 "왜 이게 취약하다고 했는지 설명이 약하다"는 비판도 동시에 존재한다.

5장 · SonarQube 11 — 클래식의 진화

SonarQube는 2008년부터 있던 정적 분석의 클래식이다. 원래는 코드 품질(중복, 복잡도, 테스트 커버리지) 중심이었는데, 2010년대 후반부터 보안 룰(SonarSource Security)을 강화해서 SAST 시장에도 끼었다.

핵심 개념

- **SonarQube Server** — 자체 호스팅 서버. Community/Developer/Enterprise/Data Center 에디션.

- **SonarLint** — IDE 플러그인. 이제 **SonarQube for IDE**로 리브랜드됨.

- **SonarCloud** — 관리형 SaaS.

- **Clean Code** — 2023년 도입된 새 모델. issue를 5가지 attribute로 분류.

강점

- 자체 호스팅이 표준. on-prem 요구가 강한 금융·정부에 강하다.

- 25+개 언어 지원. 폭이 넓다.

- Quality Gate — PR이 기준 미달이면 차단하는 워크플로가 성숙.

- Community Edition이 무료 + 기능 충분.

약점

- SAST 정밀도는 Semgrep Pro/CodeQL에 비해 한 단계 아래라는 평이 많다.

- UI가 클래식해서 모던한 도구에 비해 무겁다.

- 자체 호스팅이라 운영 부담(서버, DB, 업그레이드)이 있다.

언제 고르나

- 코드 품질 + 보안을 한 도구에서 보고 싶은 경우.

- 자체 호스팅이 필수인 규제 산업 (금융, 공공, 의료).

- Java/C# 위주의 엔터프라이즈 코드베이스.

SonarQube + Maven 빌드

sonar:

image: sonarsource/sonar-scanner-cli

command: >

sonar-scanner

-Dsonar.projectKey=my-app

-Dsonar.host.url=$SONAR_HOST

-Dsonar.login=$SONAR_TOKEN

-Dsonar.qualitygate.wait=true

SonarQube 11(2024년 출시)의 핵심 변화는 두 가지. 첫째는 Clean Code 모델 강화 — issue를 단순 "심각도"가 아니라 attribute(Consistency, Intentionality, Adaptability, Responsibility)로 분류한다. 둘째는 AI-assisted code 룰 — Copilot이 생성한 코드 패턴을 인식하는 룰셋이 추가됐다.

6장 · Aikido Security — 올인원 신예

Aikido Security는 벨기에 스타트업으로 2023년 창업, 2024년 시리즈 A($17M), 2025년 시리즈 B($50M)을 받으며 빠르게 성장한 올인원 AppSec 플랫폼이다.

무엇이 다른가

- **올인원** — SAST, SCA, IaC, Secrets, Container, Cloud Posture, DAST를 한 대시보드에서.

- **개발자 우선 UX** — false positive를 ML로 자동 dedup, 노이즈를 크게 줄임.

- **AI Autofix** — 발견된 취약점에 대해 PR을 자동 생성.

- **가격 투명** — seat 가격 공개, 작은 팀이 시작하기 쉬움.

강점

- 셋업이 정말 빠르다. GitHub OAuth 한 번 누르면 5분 안에 첫 스캔.

- 한 화면에서 SAST + SCA + Container + IaC + Secrets를 본다. 컨텍스트 스위치 0.

- 가격이 Snyk·GHAS보다 친화적 — 작은 팀은 무료 tier 가능.

- AI Autofix 채택률이 높다는 보고. 단순 의존성 업그레이드 PR을 자동 생성.

약점

- 출시 3년차라 깊이 면에서 Snyk·Semgrep Pro보다 부족한 룰셋이 있다.

- 자체 호스팅 옵션은 enterprise tier에서만.

- 큰 monorepo의 deep dataflow는 CodeQL만큼 강하지 않다.

언제 고르나

- 보안 인력이 작거나 없는 스타트업·중견.

- "여러 도구 관리 안 하고 한 화면에서 끝내고 싶다"는 경우.

- AI autofix를 적극 활용하고 싶은 팀.

Aikido CLI 통합

aikido scan --severity high

GitHub App 설치 후엔

- PR마다 자동 코멘트

- severity 기반 차단

- AI Autofix PR이 자동 생성

Aikido의 진짜 차별점은 "노이즈 관리". 보통 SAST 도구는 큰 monorepo에서 수천 개 이슈를 쏟아내고, 보안 엔지니어가 절반 이상을 false positive로 close 한다. Aikido는 ML로 dedup + 컨텍스트(어떤 환경, 어떤 path)로 우선순위를 매겨, "이번 주에 진짜로 봐야 할 30개"만 보여준다. 이 UX 차이가 작은 팀에서 큰 가치가 된다.

7장 · Cycode / GitGuardian — secrets + supply chain

코드와 git 히스토리에서 노출된 시크릿(API 키, 토큰, 인증서)을 잡는 카테고리는 2020년경 GitGuardian이 사실상 만들었다. Cycode는 거기에 supply chain까지 묶어 더 큰 ASPM으로 갔다.

GitGuardian

- 2017년 창업, 시크릿 탐지에 특화.

- 350+ 종류의 시크릿 패턴 (AWS, GCP, Stripe, Slack, ...).

- 공개 GitHub 전체를 24/7 스캔, leak이 발생하면 발견 즉시 알림 (Has My Secret Leaked).

- pre-receive hook으로 push 시점에 차단 가능.

- 무료 tier가 25 사용자까지로 관대.

Cycode

- 2019년 창업, ASPM(Application Security Posture Management)로 포지셔닝.

- Secrets + SCA + IaC + SAST + Source Code Leak + CI/CD posture를 한 화면에.

- "Source Path Analysis" — 한 vulnerability가 어디서 누가 만든 어떤 PR로 들어왔는지 추적.

- enterprise 대상이 명확.

강점 / 약점 비교

| 항목 | GitGuardian | Cycode |

| --- | --- | --- |

| 강점 | 시크릿 탐지 정밀도 1위, 무료 tier 관대 | 풀스택 ASPM, 큰 조직 가시성 |

| 약점 | 시크릿 외 영역은 약함 | 시크릿만 보면 GitGuardian보다 좁다 |

| 가격 | 시크릿만 본다면 가성비 최고 | enterprise 가격 |

언제 고르나

- **GitGuardian** — 시크릿 leak이 최우선 관심사. 다른 SAST/SCA는 따로 있는 경우.

- **Cycode** — "ASPM 단일 플랫폼"을 원하는 중견 이상.

GitGuardian ggshield pre-commit hook

repos:

- repo: https://github.com/gitguardian/ggshield

rev: v1.32.0

hooks:

- id: ggshield

language_version: python3

stages: [commit, push, manual]

시크릿 탐지의 어려움은 "정규식만으로는 부족"하다는 점. AWS access key는 패턴이 명확하지만, JWT 토큰이나 Stripe restricted key 같은 건 컨텍스트(주변 변수명, 함수)와 entropy를 봐야 한다. GitGuardian과 Cycode 모두 ML 분류기를 추가해 false positive를 줄였고, 2025년 즈음부터는 LLM 기반의 "이게 진짜 시크릿인지 placeholder인지 판단" 기능도 들어왔다.

8장 · Trivy (Aqua) — 컨테이너 + 디펜던시 + IaC

Trivy는 Aqua Security가 만든 오픈소스 컨테이너 스캐너로, 단순한 CLI에서 출발해 지금은 사실상 표준이 됐다. 컨테이너 이미지뿐 아니라 디펜던시, IaC, K8s manifest, SBOM까지 한 바이너리로 다 한다.

핵심 기능

- **Image scan** — Docker/OCI 이미지의 OS 패키지 + 언어별 패키지(npm, pip, gem, ...) CVE.

- **Filesystem scan** — 로컬 파일시스템(예: dist 디렉터리).

- **Repository scan** — git 저장소를 통째로.

- **IaC scan** — Terraform, K8s, Dockerfile 정책 위반.

- **SBOM scan** — SPDX, CycloneDX 형식 출력.

- **K8s scan** — 클러스터 전체 워크로드를 한 번에.

강점

- 오픈소스, 무료. 단일 바이너리로 설치 간단.

- 빠르다. 작은 이미지는 5초 이내.

- DB가 정기적으로 업데이트되고 (CVE-aware) 결과가 신뢰할 만하다.

- Aqua Security의 상용 제품(Aqua Platform)과 자연스럽게 연결.

약점

- SAST는 안 한다. 어디까지나 SCA + 컨테이너 + IaC.

- 룰 커스터마이즈는 OPA/Rego가 필요해서 약간의 학습 비용.

- 큰 클러스터 K8s 스캔은 메모리를 많이 쓸 수 있다.

언제 고르나

- 무료/OSS로 컨테이너 + IaC + 의존성을 모두 다루고 싶을 때.

- 다른 도구(Snyk, GHAS) 위에 OSS 보조 스캐너로 얹고 싶을 때.

- K8s 환경 전체의 baseline 보안 점검.

Trivy 사용 예

trivy image alpine:3.20

trivy fs ./src

trivy repo https://github.com/user/repo

trivy config terraform/

trivy k8s --report summary cluster

SBOM 생성

trivy image --format cyclonedx -o sbom.json alpine:3.20

Trivy의 큰 강점은 "한 도구로 5가지를 다 한다"는 점이다. 작은 팀이라면 Trivy + Semgrep CE + GitGuardian 무료 tier 조합만으로 SAST + SCA + Container + IaC + Secrets를 모두 커버할 수 있다. OSS 친화적인 팀의 시작점으로 거의 항상 등장한다.

9장 · Checkmarx / Veracode — 엔터프라이즈 진영

Checkmarx(이스라엘, 2006), Veracode(미국, 2006)는 SAST 시장의 클래식 양강이다. 둘 다 대기업 / 금융 / 정부를 주 고객으로 한 enterprise SAST 플랫폼이다.

Checkmarx

- Checkmarx One — 통합 플랫폼. SAST + SCA + Container + IaC + API Security.

- 25+ 언어 지원, 깊은 dataflow 분석.

- 자체 호스팅 + SaaS 둘 다.

- 한국에도 파트너 다수, 금융권 다수 도입.

Veracode

- 클래식 SAST + DAST + SCA + Container.

- 바이너리 분석 가능 — 소스가 없어도 .jar/.dll에서 분석.

- 컴플라이언스 보고서가 강함 (PCI-DSS, HIPAA).

- SaaS 위주.

강점

- enterprise 컴플라이언스 보고서가 표준화돼 있다.

- 깊은 dataflow + 큰 코드베이스 처리.

- 24/7 지원, on-site 컨설팅.

- 큰 조직의 보안 운영팀(보통 수십~수백 명)이 운영하기 좋게 설계.

약점

- 가격이 매우 높다. 보통 enterprise 가격 견적.

- 개발자 친화적이라 보긴 어렵다. 결과가 보안팀 중심.

- 스캔이 느리고, false positive 비율이 모던 도구보다 높다는 비판.

- UI/UX가 무겁다. Snyk·Semgrep·Aikido 같은 모던 도구와 비교 시 격차.

언제 고르나

- 컴플라이언스 보고서가 계약 요건인 경우 (정부, 금융, 공공).

- 큰 조직, 전담 보안팀이 있는 경우.

- 자체 호스팅 + 24/7 enterprise 지원이 필수일 때.

Checkmarx One CLI

cx scan create --project-name "my-app" \

--branch main \

--scan-types sast,sca,iac-security \

-s ./source

Veracode CLI

veracode static scan \

--source-file my-app.jar \

--app-name my-app

엔터프라이즈 진영의 변화는 모던 도구의 추격. Snyk, Semgrep Pro, GHAS가 enterprise 시장을 잠식하면서 Checkmarx·Veracode도 UX 개선과 AI autofix(Checkmarx AI Security Champion 등) 도입을 가속화했다. 가격대가 같다면 모던 도구가 점점 더 유리한 흐름이다.

10장 · OWASP ZAP, Bearer, Endor Labs, Socket.dev — 그 외 강자들

위 8장에서 다 못 다룬, 그러나 2026년 빠지면 안 되는 도구들.

OWASP ZAP

- Zed Attack Proxy. 오픈소스 DAST의 표준.

- 실행 중인 웹 앱을 크롤링하면서 OWASP Top 10 패턴을 시도.

- 무료, 큰 커뮤니티.

- CI 통합도 가능 (zap-baseline.py).

Bearer

- 프라이버시 + 보안 정적 분석.

- "이 코드가 어떤 PII(이메일, 전화번호, SSN)를 다루는가"를 추적.

- GDPR, CCPA 컴플라이언스 보고서에 강하다.

- 2023년 Cycode가 인수.

Endor Labs

- SCA 전문, "reachability analysis"의 선구자.

- 의존성의 CVE 중 "실제로 호출되는 코드 경로에 있는가"를 판단.

- 결과로 우선순위가 매겨진 vulnerability 리스트가 나온다 — 보통 80% 이상이 unreachable로 다운그레이드.

- 2024년 시리즈 B $70M.

Socket.dev

- npm 공급망에 특화.

- 의존성 변화를 PR에서 실시간 분석 (postinstall script, telemetry, file system access, ...).

- "이 패키지가 갑자기 telemetry를 추가했음" 같은 supply chain attack 시그널 탐지.

- npm 생태계 안에서 압도적.

비교 매트릭스

| 도구 | 카테고리 | 강점 | 약점 |

| --- | --- | --- | --- |

| ZAP | DAST | OSS, 큰 커뮤니티 | UI 클래식, false positive 많음 |

| Bearer | Privacy SAST | PII flow 추적 1위 | 일반 SAST는 약함 |

| Endor Labs | SCA + Reachability | 우선순위 결정에 강함 | 가격 enterprise |

| Socket.dev | npm 공급망 | 실시간 supply chain 시그널 | npm 외 약함 |

11장 · SBOM (SPDX / CycloneDX) — 표준의 성숙

SBOM(Software Bill of Materials)은 "이 소프트웨어가 어떤 컴포넌트로 만들어졌나"의 목록이다. 2021년 미국 행정명령 14028 이후 사실상 의무화 흐름이 시작됐고, 2024년 EU CRA로 EU 시장에서도 강제화 방향이 잡혔다.

두 표준

- **SPDX** — Linux Foundation. 2010년 시작. 라이선스 컴플라이언스에서 강함.

- **CycloneDX** — OWASP. 2017년 시작. 보안 중심, VEX 통합.

2026년 현재 둘 다 살아남았고, 도구들은 보통 두 형식 모두를 지원한다. CycloneDX가 보안 도구(Trivy, Snyk, Anchore, Syft) 쪽에서 약간 더 우세하다는 인상.

무엇을 담나

| 필드 | 의미 |

| --- | --- |

| Component | 패키지 이름, 버전, 종류 (library, OS, container, ...) |

| Supplier | 누가 만들었나 |

| Hash | 무결성 검증용 |

| License | 라이선스 (SPDX ID) |

| Relationship | depends-on, contains 같은 그래프 |

| Vulnerabilities | (선택) 알려진 CVE 목록, VEX |

생성 도구

- **Syft (Anchore)** — 무료 OSS, 컨테이너 + 파일시스템에서 SBOM 생성.

- **Trivy** — Syft 통합, image scan 시 함께.

- **Snyk, GitHub** — 자동 생성 및 첨부.

- **Dependency-Track (OWASP)** — SBOM을 받아서 CVE와 연결하는 서버.

Syft으로 컨테이너에서 SBOM 생성

syft alpine:3.20 -o cyclonedx-json > sbom.json

syft alpine:3.20 -o spdx-json > sbom.spdx.json

Trivy로 동일하게

trivy image --format cyclonedx -o sbom.json alpine:3.20

GitHub의 SBOM API

gh api /repos/OWNER/REPO/dependency-graph/sbom > sbom.json

VEX (Vulnerability Exploitability eXchange)

SBOM과 짝을 이루는 표준. "이 컴포넌트의 이 CVE는 우리 제품에서 영향 없음" 같은 vendor 응답을 표준화한다. 2025년부터 도구들이 VEX 입력을 받기 시작했고, reachability analysis와 결합해 "진짜 risky한 CVE만" 우선순위 매기는 흐름의 핵심 인프라가 됐다.

12장 · Reachability analysis — Endor, Snyk

"의존성에 CVE가 100개 있다"라는 보고서를 받아본 적이 있다면, 그 중 몇 개가 진짜 우리 앱에서 호출되는지 헤아려본 적도 있을 것이다. Reachability analysis는 이 문제를 자동화한다.

무엇이 reachability인가

- 1단계 — 의존성 그래프에서 패키지가 직접 import 되는가? (dependency)

- 2단계 — 그 패키지의 vulnerable 함수가 import 되는가? (symbol-level)

- 3단계 — 우리 앱 코드에서 그 vulnerable 함수가 실제로 호출되는가? (call-graph)

- 4단계 — 그 호출이 실제 런타임에 도달 가능한가? (taint + control flow)

업계 측정에 따르면, 1단계로 잡힌 CVE의 70~95%는 3~4단계로 가면 unreachable이다. 즉 대부분 패치할 필요가 없거나, 우선순위가 낮다.

주요 제공자

| 도구 | 깊이 | 언어 커버 | 비고 |

| --- | --- | --- | --- |

| Endor Labs | 4단계 (call-graph) | Java, JS/TS, Python, Go, Rust 등 | reachability 전문 |

| Snyk Open Source | 3단계 (symbol) | Java, JS/TS, Python | UX가 매끄러움 |

| Semgrep Supply Chain | 3단계 | Java, JS/TS, Python, Ruby, Go | Semgrep 엔진 활용 |

| Socket.dev | 1단계 + 행위 분석 | npm 특화 | 다른 차원 |

효과

한 실측 사례 — 큰 모노레포(JS/TS, 300K LOC, 의존성 1500개) 기준.

- 의존성 CVE 총 412건 (1단계).

- symbol-level reachability 적용: 87건 (79% 감소).

- call-graph reachability 적용: 31건 (92% 감소).

- 보안팀이 실제로 봐야 할 건 31건.

이 효과 때문에 2024년 이후 SCA 도구를 고를 때 reachability가 사실상 필수 기능이 됐다.

13장 · LLM-powered SAST + Autofix

2023~2026 사이 가장 큰 흐름. LLM이 SAST의 두 가지를 바꿨다.

1. 룰 작성 / dataflow

전통적으로 SAST 룰은 정규식 또는 dataflow 그래프 위의 명시적 규칙이었다. LLM은 자연어 설명 → 코드 패턴을 어느 정도 일반화한다. 결과적으로 "본 적 없는 새로운 취약 패턴"도 잡을 가능성.

- **Snyk DeepCode AI** — ML 학습 기반, 패턴 + AI hybrid.

- **Aikido AI** — 룰 + LLM dedup.

- **Semgrep Assistant** — 자연어 → Semgrep YAML 룰 생성.

- **GitHub Copilot Autofix** (구 Code Scanning Autofix) — CodeQL 결과에 LLM 패치.

2. Autofix

발견된 취약점에 대해 LLM이 패치 PR을 자동 생성한다.

- 의존성 업그레이드 (가장 안전, 채택률 높음).

- 코드 패치 (조심스러움, 사람 리뷰 필수).

- 설정 변경 (Dockerfile, K8s manifest).

실측의 함정

LLM autofix가 자동 PR을 만든다고 해도 그게 항상 옳지는 않다.

- **잘못된 fix** — 취약점은 해결됐는데 기능 회귀. 테스트 커버리지가 충분치 않으면 사고.

- **부분 fix** — sink는 막았는데 source는 그대로. 다른 경로로 같은 공격 가능.

- **컨텍스트 부족** — "이 함수는 internal에서만 호출되니 escape 불필요"라는 도메인 지식 못 봄.

2026년 best practice는 "LLM autofix는 PR 초안 + 사람 리뷰 필수, 의존성 업그레이드 같은 단순 케이스만 자동 머지 허용"이다. 코드 패치는 아직 사람이 확인해야 한다.

Autofix가 자주 실수하는 패턴 예시

Before — SQL injection

query = f"SELECT * FROM users WHERE name = '{name}'"

cursor.execute(query)

LLM autofix v1 (틀림) — escape만 추가

query = f"SELECT * FROM users WHERE name = '{name.replace(chr(39), chr(39)+chr(39))}'"

cursor.execute(query)

LLM autofix v2 (맞음) — parameterized

cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

14장 · EU CRA (2024) — 소프트웨어 규제의 시작

EU Cyber Resilience Act는 2024년 10월 EU 의회 통과, 2024년 11월 발효된 규제다. EU 시장에 출시되는 "디지털 요소를 가진 제품"(여기에 소프트웨어 포함)에 보안 요구사항을 강제한다.

무엇을 요구하나

- **취약점 관리 프로세스** — 최소 5년간 (혹은 제품 수명 동안) 패치를 제공해야 함.

- **알려진 취약점 발견 시 24시간 보고** — ENISA에 알림.

- **SBOM 제공** — 컴포넌트 목록을 시장 감독 당국에 요청 시 제공.

- **Secure by design** — 설계 단계부터 보안 고려.

- **CE 마크** — 적합성 평가 통과 후 CE 마크 부착.

일정

- 2024년 11월 — 발효.

- 2026년 9월 — 보고 의무 적용 시작.

- 2027년 12월 — 전체 요구사항 적용.

한국·일본 회사가 영향받는 경우

- EU 시장에 SaaS 또는 IoT 제품 판매 시.

- EU 고객에게 라이브러리·소프트웨어 컴포넌트 공급 시 (B2B 포함).

- 오픈소스 메인테이너는 "상업적으로 활동"하지 않으면 면제.

도구 영향

EU CRA는 SBOM, 취약점 관리 프로세스, 24시간 보고를 모두 요구하기 때문에, 도구 선택에서 다음이 중요해졌다.

1. SBOM 생성 + 저장 + 외부 공개 기능.

2. 24시간 안에 발견 → 분류 → 패치 → 보고로 이어지는 워크플로.

3. 감사 로그 — 누가 어떤 결정을 했는지 5년간 기록.

Cycode, Aikido, Snyk 같은 ASPM 플랫폼이 EU CRA 대응 기능을 빠르게 추가했고, GHAS도 Security Advisory 워크플로를 강화했다. 2026년 EU 시장 진입을 고려하는 한국·일본 팀이라면 SAST 도구 선택 시 CRA 대응 기능을 반드시 확인해야 한다.

15장 · 한국 / 일본 SAST 도입 현황

한국

한국은 정보통신망법, 개인정보보호법, ISMS-P 인증으로 보안 점검이 사실상 의무인 시장이다. 전통적으로 다음 도구가 강했다.

- **Fortify (Micro Focus / OpenText)** — 금융권 다수 도입.

- **Checkmarx** — 한국 파트너 다수, 대기업 중심.

- **Veracode** — 글로벌 기업 한국 지사 중심.

- **Sparrow (스패로우)** — 한국 토종 SAST. 국정원·금융권 인증 받음.

2020년대 중반부터 모던 도구가 잠식하기 시작.

- **Semgrep** — 스타트업·플랫폼 회사(쿠팡, 토스, 네이버, 카카오) 도입 다수.

- **Snyk** — 토스, 우아한형제들, 라인 등.

- **GHAS** — GitHub Enterprise 도입 회사.

- **카카오엔터프라이즈 KaibAi** — 카카오의 AI 코드 보안 도구. 2024년 즈음부터 카카오·계열사 내부 우선 적용. 한국어 코드 컨텍스트(주석, 변수명) 처리에 강점.

일본

일본 SAST 시장은 보수적이지만, 2020년대 들어 글로벌 도구가 빠르게 침투 중.

- **Veracode, Checkmarx** — 금융·통신 대기업.

- **株式会社FFRIセキュリティ (FFRI Security)** — 일본 토종. 엔드포인트 보호가 주력이지만, 정적 분석/취약점 진단 컨설팅도 강함. 정부·방산 다수 고객.

- **GMO Cybersecurity by Ierae** — 일본 메이저 보안 회사. 진단·컨설팅 + 도구.

- **Snyk Japan** — 2020년대 후반 일본 거점 확대.

- **GitGuardian Japan, Aikido** — 시크릿/올인원 도구 도입 사례 증가.

일본 시장 특성:

1. 자체 호스팅 선호 — SonarQube on-prem이 강하다.

2. 컨설팅 + 도구 결합 모델이 일반적 — 단독 SaaS 도입은 신중.

3. 정부·방산은 일본 회사(FFRI 등) 우선.

결론 — 지역별 권장

| 시나리오 | 한국 권장 | 일본 권장 |

| --- | --- | --- |

| 스타트업 (10~50명) | Semgrep + Trivy + GitGuardian | Aikido 또는 Snyk |

| 중견 (50~500명) | Snyk 또는 GHAS + Aikido | Snyk + Cycode |

| 대기업 (500+) | Checkmarx + Cycode + 자체 | Veracode + FFRI 컨설팅 |

| 금융권 | Sparrow + Fortify + Checkmarx | Checkmarx + GMO + 자체 호스팅 SonarQube |

| EU 진출 검토 | Cycode 또는 Aikido (SBOM + CRA) | Snyk 또는 Aikido (SBOM + CRA) |

마치며 — "도구를 사는 게 아니라, 워크플로를 사는 거다"

2026년의 SAST 시장은 단일 카테고리가 아니라 5축의 토너먼트다. 그리고 다음 5가지 흐름이 시장을 흔들고 있다.

1. **올인원 플랫폼 통합** — Snyk, Aikido, Cycode가 SAST/SCA/Secrets/Container를 한 묶음으로.

2. **Reachability** — "이 CVE 진짜 위험한가"를 자동 판단.

3. **LLM autofix** — 발견에서 패치 PR까지 자동화.

4. **EU CRA** — SBOM + 24h 보고 + 5년 패치 의무화.

5. **개발자 우선 UX** — IDE 통합, PR 즉시 피드백, false positive 자동 dedup.

작은 팀의 시작점은 단순하다 — Semgrep CE + Trivy + GitGuardian 무료 tier. 여기서 시작해 팀이 커지면 한 ASPM(Aikido, Cycode, Snyk)으로 묶거나, GitHub Enterprise를 쓴다면 GHAS로 통합하면 된다. 큰 조직은 enterprise 도구(Checkmarx, Veracode)와 ASPM(Cycode) 조합이 표준.

하나의 진리 — **"도구를 사는 게 아니라, 워크플로(발견 → 분류 → 패치 → 보고)를 사는 거다"**. 어떤 도구를 고르더라도 이 워크플로가 5분 안에 작동하지 않으면, 1만 개의 issue가 백로그에 쌓일 뿐이다. 도구 평가의 첫 질문은 항상 "PR이 SAST에서 빨간 줄을 받으면, 1시간 안에 머지 가능한 상태로 갈 수 있나?" 다.

참고 / References

- Semgrep — [https://semgrep.dev/](https://semgrep.dev/)

- Semgrep rules registry — [https://semgrep.dev/explore](https://semgrep.dev/explore)

- CodeQL — [https://codeql.github.com/](https://codeql.github.com/)

- GitHub Advanced Security — [https://github.com/security/advanced-security](https://github.com/security/advanced-security)

- Snyk — [https://snyk.io/](https://snyk.io/)

- Snyk DeepCode AI Fix — [https://snyk.io/platform/deepcode-ai/](https://snyk.io/platform/deepcode-ai/)

- SonarQube — [https://www.sonarsource.com/products/sonarqube/](https://www.sonarsource.com/products/sonarqube/)

- SonarSource Clean Code — [https://www.sonarsource.com/solutions/clean-code/](https://www.sonarsource.com/solutions/clean-code/)

- Aikido Security — [https://www.aikido.dev/](https://www.aikido.dev/)

- Cycode — [https://cycode.com/](https://cycode.com/)

- GitGuardian — [https://www.gitguardian.com/](https://www.gitguardian.com/)

- Trivy — [https://trivy.dev/](https://trivy.dev/)

- Aqua Security — [https://www.aquasec.com/](https://www.aquasec.com/)

- Checkmarx — [https://checkmarx.com/](https://checkmarx.com/)

- Veracode — [https://www.veracode.com/](https://www.veracode.com/)

- OWASP ZAP — [https://www.zaproxy.org/](https://www.zaproxy.org/)

- Bearer — [https://www.bearer.com/](https://www.bearer.com/)

- Endor Labs — [https://www.endorlabs.com/](https://www.endorlabs.com/)

- Socket.dev — [https://socket.dev/](https://socket.dev/)

- SPDX — [https://spdx.dev/](https://spdx.dev/)

- CycloneDX — [https://cyclonedx.org/](https://cyclonedx.org/)

- OWASP Dependency-Track — [https://dependencytrack.org/](https://dependencytrack.org/)

- Syft (Anchore) — [https://github.com/anchore/syft](https://github.com/anchore/syft)

- OpenSSF — [https://openssf.org/](https://openssf.org/)

- EU Cyber Resilience Act — [https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act](https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act)

- ENISA — [https://www.enisa.europa.eu/](https://www.enisa.europa.eu/)

- US Executive Order 14028 — [https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/](https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/)

- 카카오엔터프라이즈 — [https://www.kakaoenterprise.com/](https://www.kakaoenterprise.com/)

- FFRI Security — [https://www.ffri.jp/](https://www.ffri.jp/)

- Sparrow (한국 SAST) — [https://www.sparrowfasoo.com/](https://www.sparrowfasoo.com/)

현재 단락 (1/385)

2018년쯤 "정적 분석 도구 뭐 써?" 하고 물으면 답은 보통 두 갈래였다. 오픈소스라면 SonarQube, 엔터프라이즈라면 Checkmarx 아니면 Veracode. 그게 전부...

작성 글자: 0원문 글자: 18,828작성 단락: 0/385