[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,21 +2,152 @@
|
||||
id: wiki-2026-0508-sca
|
||||
title: SCA
|
||||
category: 10_Wiki/Topics
|
||||
status: merged
|
||||
redirect_to: 보안_및_시스템_신뢰성_표준
|
||||
canonical_id: wiki-2026-0507-039
|
||||
aliases: []
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [Software Composition Analysis, dependency scanning, OSS vulnerability scanning]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
confidence_score: 0.95
|
||||
verification_status: applied
|
||||
tags: [security, sca, dependencies, sbom, supply-chain]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack:
|
||||
language: multi
|
||||
framework: snyk-dependabot-renovate-osv
|
||||
---
|
||||
|
||||
# Redirect
|
||||
# SCA
|
||||
|
||||
이 문서는 Canonical 문서인 [[보안_및_시스템_신뢰성_표준]]으로 통합되었습니다.
|
||||
모든 최신 지식과 세부 내용은 위 링크를 참조하십시오.
|
||||
## 매 한 줄
|
||||
> **"매 your code 의 1% 의 yours — 매 99% 의 dependencies 의"**. SCA (Software Composition Analysis) 의 third-party / OSS dependencies 의 scanning 의 known CVEs, license issues, malicious packages 의 detecting 의. 2026 의 SBOM (CycloneDX/SPDX) 의 mandatory 의 — 매 EU CRA, US EO 14028 의 driving.
|
||||
|
||||
## 매 핵심
|
||||
|
||||
### 매 SCA 의 stack
|
||||
- **manifest scan**: package-lock.json, Cargo.lock, go.sum 의 → CVE DB lookup.
|
||||
- **OSV.dev** (Google): 매 unified vuln DB across ecosystems.
|
||||
- **GitHub Advisory DB**: 매 npm-aware, 매 Dependabot 의 backbone.
|
||||
- **Snyk DB**: commercial, 매 deeper exploit metadata.
|
||||
|
||||
### 매 SBOM 의 formats
|
||||
- **CycloneDX** (OWASP): JSON/XML, 매 vuln-friendly.
|
||||
- **SPDX** (Linux Foundation): license-friendly.
|
||||
- **2026 default**: CycloneDX 1.5+ JSON.
|
||||
|
||||
### 매 응용
|
||||
1. PR gate — 매 new high CVE 의 introduce 의 block.
|
||||
2. SBOM 의 release artifact 의 attached 의 (sigstore signed).
|
||||
3. Renovate/Dependabot 의 weekly bump PRs.
|
||||
|
||||
## 💻 패턴
|
||||
|
||||
### Dependabot config
|
||||
```yaml
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: /
|
||||
schedule: { interval: weekly }
|
||||
groups:
|
||||
minor-and-patch:
|
||||
update-types: [minor, patch]
|
||||
open-pull-requests-limit: 10
|
||||
- package-ecosystem: github-actions
|
||||
directory: /
|
||||
schedule: { interval: monthly }
|
||||
```
|
||||
|
||||
### Renovate 의 group + auto-merge
|
||||
```json5
|
||||
{
|
||||
extends: ['config:base', ':semanticCommits'],
|
||||
packageRules: [
|
||||
{
|
||||
matchUpdateTypes: ['patch', 'minor'],
|
||||
matchCurrentVersion: '!/^0/',
|
||||
automerge: true,
|
||||
automergeType: 'pr',
|
||||
platformAutomerge: true,
|
||||
},
|
||||
{ matchPackagePatterns: ['^@types/'], groupName: 'types' },
|
||||
],
|
||||
vulnerabilityAlerts: { enabled: true, labels: ['security'] },
|
||||
}
|
||||
```
|
||||
|
||||
### CycloneDX SBOM 의 generate (npm)
|
||||
```bash
|
||||
npx @cyclonedx/cyclonedx-npm --output-format json --output-file sbom.json
|
||||
cosign sign-blob --yes sbom.json --output-signature sbom.sig
|
||||
```
|
||||
|
||||
### OSV-Scanner (Go)
|
||||
```yaml
|
||||
name: OSV
|
||||
on: [pull_request]
|
||||
jobs:
|
||||
scan:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: google/osv-scanner-action@v1
|
||||
with:
|
||||
scan-args: |-
|
||||
--lockfile=package-lock.json
|
||||
--lockfile=go.sum
|
||||
--format=sarif
|
||||
--output=osv.sarif
|
||||
- uses: github/codeql-action/upload-sarif@v3
|
||||
with: { sarif_file: osv.sarif }
|
||||
```
|
||||
|
||||
### License gate
|
||||
```bash
|
||||
npx license-checker --production --excludePackages="$(cat allowed.txt)" \
|
||||
--failOn 'GPL-3.0;AGPL-3.0' --json > licenses.json
|
||||
```
|
||||
|
||||
### Malicious package 의 detect (Socket-style)
|
||||
```yaml
|
||||
- name: Socket Security
|
||||
uses: SocketDev/socket-security-action@v1
|
||||
with: { api-token: ${{ secrets.SOCKET_TOKEN }} }
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Tool |
|
||||
|---|---|
|
||||
| GitHub repo, 매 free | Dependabot + OSV-Scanner |
|
||||
| polyrepo enterprise | Snyk + Renovate |
|
||||
| supply-chain risk (typosquats) | Socket + Snyk |
|
||||
| compliance (FedRAMP, EU CRA) | CycloneDX SBOM + cosign sign |
|
||||
|
||||
**기본값**: Renovate + OSV-Scanner + CycloneDX SBOM (signed).
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[DevSecOps]] · [[Supply Chain Security]]
|
||||
- 변형: [[SAST]] · [[DAST]] · [[Container Scanning]]
|
||||
- 응용: [[SBOM]] · [[Sigstore]] · [[SLSA]]
|
||||
- Adjacent: [[Dependabot]] · [[Renovate]] · [[Snyk]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: vuln triage (exploitability scoring), changelog summarization for upgrades, breaking-change detection in PRs.
|
||||
**언제 X**: auto-merging high-CVE patches 없이 의 review.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **Pin everything forever**: 매 stale deps 의 더 vulnerable.
|
||||
- **Auto-merge majors**: 매 breaking change 의 prod 의 escape.
|
||||
- **No SBOM**: 매 incident response 의 grep 의 시작 — 매 too late.
|
||||
- **Scan only on release**: 매 dev branch 의 weeks of exposure.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (OSV.dev docs, CycloneDX 1.5 spec, GitHub Dependabot 2026, Renovate docs).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — modern SCA + SBOM patterns |
|
||||
|
||||
Reference in New Issue
Block a user