Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,27 @@ Analyzes built container images and build artifacts that include package manager
- Official documentation: [https://github.com/anchore/syft](https://github.com/anchore/syft)
- Recommended analysis targets: built Docker images, OCI images, tar files

> **Warning — Do not scan installation directories or collections of raw files (PURL omission causes full rejection)**
>
> If you use `syft dir:` mode to scan an installation directory or a collection of binaries that has no
> package manager metadata (`package.json`, `go.mod`, `*.jar`, RPM/DEB package DB, etc.), Syft cannot
> identify the ecosystem and produces an **SBOM with empty PURLs**. Because SK Telecom's system maps
> vulnerabilities by PURL, such an SBOM fails matching entirely and is rejected.
>
> In one real case, a supplier scanned an installation directory with `syft dir:/root/nag_pkg`, and the
> submitted SBOM had no PURL on any of its 261 components, so all 251 vulnerability matches failed.
>
> Run Syft against the following targets.
>
> ```bash
> # Recommended: scan a built image (PURL and ecosystem identified automatically)
> syft <image-name>:<tag> -o cyclonedx-json=sbom.json
>
> # Not recommended: scan an installation directory or raw files (rejected due to missing PURL)
> syft dir:/root/nag_pkg # without package manager metadata, PURL count becomes 0
> ```
>
> Immediately after generation, be sure to check the PURL count. See the [Validation Checklist](../checklist/) for how to verify.
{{% alert title="Warning — Do not scan installation directories or collections of raw files (PURL omission causes full rejection)" color="danger" %}}
If you use `syft dir:` mode to scan an installation directory or a collection of binaries that has no
package manager metadata (`package.json`, `go.mod`, `*.jar`, RPM/DEB package DB, etc.), Syft cannot
identify the ecosystem and produces an **SBOM with empty PURLs**. Because SK Telecom's system maps
vulnerabilities by PURL, such an SBOM fails matching entirely and is rejected.

In one real case, a supplier scanned an installation directory with `syft dir:/root/nag_pkg`, and the
submitted SBOM had no PURL on any of its 261 components, so all 251 vulnerability matches failed.

Run Syft against the following targets.

```bash
# Recommended: scan a built image (PURL and ecosystem identified automatically)
syft <image-name>:<tag> -o cyclonedx-json=sbom.json

# Not recommended: scan an installation directory or raw files (rejected due to missing PURL)
syft dir:/root/nag_pkg # without package manager metadata, PURL count becomes 0
```

Immediately after generation, be sure to check the PURL count. See the [Validation Checklist](../checklist/) for how to verify.
{{% /alert %}}

### Trivy (container image analysis)

Expand All @@ -69,32 +69,32 @@ An all-in-one tool that can perform container image analysis and vulnerability s
- Official documentation: [https://aquasecurity.github.io/trivy/](https://aquasecurity.github.io/trivy/)
- GitHub: [https://github.com/aquasecurity/trivy](https://github.com/aquasecurity/trivy)

> **Security Warning — Trivy Supply Chain Attack Incident (2026)**
>
> In March 2026, a supply chain attack occurred in which an attacker re-pointed existing release tags
> of `aquasecurity/trivy` to inject malware. **The GitHub release v0.69.4 (3/19) and the DockerHub images
> v0.69.5 and v0.69.6 (3/22) have been confirmed as compromised, so please stop using them.**
>
> To use Trivy safely, follow these principles.
>
> - **GitHub Actions**: Use a pinned commit SHA or a verified version tag instead of mutable tags (`@master`, `@latest`, `@v1`, etc.).
>
> ```yaml
> # Recommended: pin to a verified version
> - uses: aquasecurity/trivy-action@0.35.0
> # Safer: pin to a commit SHA
> - uses: aquasecurity/trivy-action@<commit-sha>
> ```
>
> - **Docker images**: Specify a particular version tag, or pin to an image digest (`@sha256:...`).
>
> ```bash
> docker run aquasecurity/trivy:<verified-version> image <target-image>
> ```
>
> - **Official channels**: Check the latest security advisories through the [GitHub Security Advisory](https://github.com/aquasecurity/trivy-action/security/advisories).
>
> This incident shows that if you do not pin versions when adopting an open source tool, you can be exposed to a supply chain attack at any time. Always specify the version of every external tool and verify its integrity before use.
{{% alert title="Security Warning — Trivy Supply Chain Attack Incident (2026)" color="danger" %}}
In March 2026, a supply chain attack occurred in which an attacker re-pointed existing release tags
of `aquasecurity/trivy` to inject malware. **The GitHub release v0.69.4 (3/19) and the DockerHub images
v0.69.5 and v0.69.6 (3/22) have been confirmed as compromised, so please stop using them.**

To use Trivy safely, follow these principles.

- **GitHub Actions**: Use a pinned commit SHA or a verified version tag instead of mutable tags (`@master`, `@latest`, `@v1`, etc.).

```yaml
# Recommended: pin to a verified version
- uses: aquasecurity/trivy-action@0.35.0
# Safer: pin to a commit SHA
- uses: aquasecurity/trivy-action@<commit-sha>
```

- **Docker images**: Specify a particular version tag, or pin to an image digest (`@sha256:...`).

```bash
docker run aquasecurity/trivy:<verified-version> image <target-image>
```

- **Official channels**: Check the latest security advisories through the [GitHub Security Advisory](https://github.com/aquasecurity/trivy-action/security/advisories).

This incident shows that if you do not pin versions when adopting an open source tool, you can be exposed to a supply chain attack at any time. Always specify the version of every external tool and verify its integrity before use.
{{% /alert %}}

### Language-Specific Dedicated Plugins

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,26 @@ Java, Python, Node.js, Go 등 다양한 언어 프로젝트를 자동 분석하
- 공식 문서: [https://github.com/anchore/syft](https://github.com/anchore/syft)
- 권장 분석 대상: 빌드된 Docker 이미지, OCI 이미지, tar 파일

> **경고 — 설치 디렉터리나 원시 파일 모음은 스캔하지 마십시오 (purl 누락으로 전량 반려)**
>
> `syft dir:` 모드로 패키지 매니저 메타데이터(`package.json`, `go.mod`, `*.jar`, RPM/DEB 패키지 DB 등)가
> 없는 설치 디렉터리나 바이너리 모음을 스캔하면, Syft가 생태계(ecosystem)를 식별하지 못해 **purl이 비어 있는
> SBOM**이 생성됩니다. SK텔레콤 시스템은 purl로 취약점을 매핑하므로, 이런 SBOM은 매칭이 전량 실패하여 반려됩니다.
>
> 실제로 한 공급사가 `syft dir:/root/nag_pkg`로 설치 디렉터리를 스캔해 제출한 SBOM은 261개 컴포넌트 중 purl이
> 하나도 없어, 취약점 매칭 251건이 모두 실패했습니다.
>
> Syft는 다음 대상으로 실행하시기 바랍니다.
>
> ```bash
> # 권장: 빌드된 이미지 스캔 (purl과 생태계를 자동 식별)
> syft <이미지명>:<태그> -o cyclonedx-json=sbom.json
>
> # 비권장: 설치 디렉터리나 원시 파일 스캔 (purl 누락으로 반려)
> syft dir:/root/nag_pkg # 패키지 매니저 메타데이터가 없으면 purl이 0개가 됩니다
> ```
>
> 생성 직후 반드시 purl 개수를 확인하시기 바랍니다. 검증 방법은 [검증 체크리스트](../checklist/)를 참고하십시오.
{{% alert title="경고 — 설치 디렉터리나 원시 파일 모음은 스캔하지 마십시오 (purl 누락으로 전량 반려)" color="danger" %}}
`syft dir:` 모드로 패키지 매니저 메타데이터(`package.json`, `go.mod`, `*.jar`, RPM/DEB 패키지 DB 등)가
없는 설치 디렉터리나 바이너리 모음을 스캔하면, Syft가 생태계(ecosystem)를 식별하지 못해 **purl이 비어 있는
SBOM**이 생성됩니다. SK텔레콤 시스템은 purl로 취약점을 매핑하므로, 이런 SBOM은 매칭이 전량 실패하여 반려됩니다.

실제로 한 공급사가 `syft dir:/root/nag_pkg`로 설치 디렉터리를 스캔해 제출한 SBOM은 261개 컴포넌트 중 purl이
하나도 없어, 취약점 매칭 251건이 모두 실패했습니다.

Syft는 다음 대상으로 실행하시기 바랍니다.

```bash
# 권장: 빌드된 이미지 스캔 (purl과 생태계를 자동 식별)
syft <이미지명>:<태그> -o cyclonedx-json=sbom.json

# 비권장: 설치 디렉터리나 원시 파일 스캔 (purl 누락으로 반려)
syft dir:/root/nag_pkg # 패키지 매니저 메타데이터가 없으면 purl이 0개가 됩니다
```

생성 직후 반드시 purl 개수를 확인하시기 바랍니다. 검증 방법은 [검증 체크리스트](../checklist/)를 참고하십시오.
{{% /alert %}}

### Trivy (컨테이너 이미지 분석)

Expand All @@ -68,32 +68,32 @@ Java, Python, Node.js, Go 등 다양한 언어 프로젝트를 자동 분석하
- 공식 문서: [https://aquasecurity.github.io/trivy/](https://aquasecurity.github.io/trivy/)
- GitHub: [https://github.com/aquasecurity/trivy](https://github.com/aquasecurity/trivy)

> **보안 경고 — Trivy 공급망 공격 사례 (2026년)**
>
> 2026년 3월, 공격자가 `aquasecurity/trivy`의 기존 릴리즈 태그를 재지정하여 악성코드를 삽입하는
> 공급망 공격이 발생하였습니다. **GitHub 릴리즈 v0.69.4(3/19) 및 DockerHub 이미지
> v0.69.5·v0.69.6(3/22)이 오염된 것으로 확인되었으므로 사용을 중단하시기 바랍니다.**
>
> Trivy를 안전하게 사용하려면 다음 원칙을 따르시기 바랍니다.
>
> - **GitHub Actions**: 가변 태그(`@master`, `@latest`, `@v1` 등) 대신 고정된 Commit SHA 또는 검증된 버전 태그를 사용합니다.
>
> ```yaml
> # 권장: 검증된 버전 고정
> - uses: aquasecurity/trivy-action@0.35.0
> # 더 안전: Commit SHA 고정
> - uses: aquasecurity/trivy-action@<commit-sha>
> ```
>
> - **Docker 이미지**: 특정 버전 태그를 명시하거나 이미지 다이제스트(`@sha256:...`)로 고정합니다.
>
> ```bash
> docker run aquasecurity/trivy:<검증된-버전> image <대상-이미지>
> ```
>
> - **공식 채널**: [GitHub Security Advisory](https://github.com/aquasecurity/trivy-action/security/advisories)를 통해 최신 보안 권고사항을 확인합니다.
>
> 이 사례는 오픈소스 도구를 도입할 때 버전을 고정하지 않으면 언제든 공급망 공격에 노출될 수 있음을 보여줍니다. 모든 외부 도구는 버전을 명시하고 무결성을 검증한 뒤 사용하시기 바랍니다.
{{% alert title="보안 경고 — Trivy 공급망 공격 사례 (2026년)" color="danger" %}}
2026년 3월, 공격자가 `aquasecurity/trivy`의 기존 릴리즈 태그를 재지정하여 악성코드를 삽입하는
공급망 공격이 발생하였습니다. **GitHub 릴리즈 v0.69.4(3/19) 및 DockerHub 이미지
v0.69.5·v0.69.6(3/22)이 오염된 것으로 확인되었으므로 사용을 중단하시기 바랍니다.**

Trivy를 안전하게 사용하려면 다음 원칙을 따르시기 바랍니다.

- **GitHub Actions**: 가변 태그(`@master`, `@latest`, `@v1` 등) 대신 고정된 Commit SHA 또는 검증된 버전 태그를 사용합니다.

```yaml
# 권장: 검증된 버전 고정
- uses: aquasecurity/trivy-action@0.35.0
# 더 안전: Commit SHA 고정
- uses: aquasecurity/trivy-action@<commit-sha>
```

- **Docker 이미지**: 특정 버전 태그를 명시하거나 이미지 다이제스트(`@sha256:...`)로 고정합니다.

```bash
docker run aquasecurity/trivy:<검증된-버전> image <대상-이미지>
```

- **공식 채널**: [GitHub Security Advisory](https://github.com/aquasecurity/trivy-action/security/advisories)를 통해 최신 보안 권고사항을 확인합니다.

이 사례는 오픈소스 도구를 도입할 때 버전을 고정하지 않으면 언제든 공급망 공격에 노출될 수 있음을 보여줍니다. 모든 외부 도구는 버전을 명시하고 무결성을 검증한 뒤 사용하시기 바랍니다.
{{% /alert %}}

### 언어별 전용 플러그인

Expand Down
Loading