# 취약한 의존성 감지

보고된 GitHub의 종속성 정보가 예상과 다르다면, 여러 사항을 고려하고 다양한 항목을 점검할 수 있습니다.

GitHub에서 보고한 종속성 검색 결과는 다른 도구에서 반환한 결과와 다를 수 있습니다. 여기에는 타당한 이유가 있으며, 이는 GitHub에서 프로젝트에 대한 종속성을 결정하는 방법을 이해하는 데 도움이 됩니다.

## 누락되거나 감지되지 않은 종속성

GitHub 는 종속성 데이터를 다른 도구와 다르게 생성하고 표시합니다. 따라서 다른 도구를 사용하여 종속성을 식별한 경우 거의 확실히 다른 결과를 보게 됩니다. 다음을 고려하십시오.

* GitHub Advisory Database 는 취약한 종속성 및 맬웨어를 식별하는 데 사용하는 데이터 원본 GitHub 중 하나입니다. 일반적인 패키지 에코시스템에 대한 보안 권고의 무료 큐레이팅된 데이터베이스입니다 GitHub. 이에는 직접 GitHub에서 GitHub Security Advisories로 보고된 데이터뿐만 아니라 공식 피드 및 커뮤니티 출처도 포함됩니다. 이 데이터는 거짓 또는 실행 불가능한 정보가 개발 커뮤니티와 공유되지 않도록 하기 위해 검토 및 큐레이팅 GitHub 됩니다. 자세한 내용은 [GitHub Advisory Database에서 보안 권고 탐색](/ko/code-security/how-tos/report-and-fix-vulnerabilities/fix-reported-vulnerabilities/browse-advisory-database)을(를) 참조하세요.

* 종속성 그래프는 사용자의 리포지토리에 있는 알려진 모든 패키지 매니페스트 파일을 구문 분석합니다. 예를 들어 npm의 경우 *package-lock.json* 파일을 구문 분석합니다. 리포지토리의 모든 종속성 및 퍼블릭 종속의 그래프를 생성합니다. 이 문제는 종속성 그래프를 사용하도록 설정하고 모든 사용자가 기본 분기로 푸시하고 지원되는 매니페스트 형식을 변경하는 커밋을 포함할 때 발생합니다. 자세한 내용은 [종속성 그래프](/ko/code-security/concepts/supply-chain-security/dependency-graph) 및 [종속성 그래프 문제 해결](/ko/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependency-graph-errors)을(를) 참조하세요.

* Dependabot 는 매니페스트 파일이 포함된 기본 분기로의 푸시를 검색합니다. 새 권고가 추가되면 해당 권고는 모든 기존 리포지토리를 검사하고 영향을 받는 각 리포지토리에 대한 경고를 생성합니다.
  Dependabot alerts 는 권고당 하나의 경고를 만드는 대신 리포지토리 수준에서 집계됩니다. 자세한 내용은 [Dependabot 경고](/ko/code-security/concepts/supply-chain-security/dependabot-alerts#when-dependabot-sends-alerts)을(를) 참조하세요.

* Dependabot security updates 는 리포지토리에서 취약한 종속성에 대한 경고를 받을 때 트리거됩니다. 가능한 Dependabot 경우 취약성을 방지하는 데 필요한 최소 보안 버전으로 취약한 종속성을 업그레이드하기 위해 리포지토리에 끌어오기 요청을 만듭니다. 자세한 내용은 [Dependabot 보안 업데이트](/ko/code-security/concepts/supply-chain-security/dependabot-security-updates) 및 [Dependabot 오류](/ko/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependabot-errors)을(를) 참조하세요.

Dependabot 는 일정에 따라 리포지토리를 검사하지 않고 변동이 있을 때 검사합니다. 예를 들어, 새 종속성이 추가될 때(GitHub는 푸시할 때마다 이를 확인함) 또는 새 권고 사항이 데이터베이스와 동기화될 때 스캔이 트리거됩니다. 자세한 내용은 [Dependabot 경고](/ko/code-security/concepts/supply-chain-security/dependabot-alerts#when-dependabot-sends-alerts)을(를) 참조하세요.

## 경고 적용 범위

Dependabot alerts 는 매니페스트 또는 잠금 파일에서 버전을 확인할 수 있는 전이적 종속성을 포함하여 업데이트해야 하는 종속성에 대해 조언합니다.
Dependabot security updates 종속성을 직접 "수정"할 수 있는 Dependabot 변경, 즉 다음과 같은 경우 변경만 제안합니다.

* 매니페스트 또는 잠금 파일에 명시적으로 선언된 직접 종속성
* 잠금 파일에 선언된 전이적 종속성

**확인**: 리포지토리의 매니페스트 또는 잠금 파일에 지정되지 않은 구성 요소에서 포착되지 않은 취약점인가요?

## 지원되지 않는 에코시스템

Dependabot alerts 는 고품질의 실행 가능한 데이터를 제공할 수 있는 에코시스템 집합에 대해 지원됩니다.
GitHub Advisory Database, 종속성 그래프의 큐레이팅된 권고, Dependabot 보안 업데이트,
및 Dependabot alerts는 Java Maven, JavaScript의 npm 및 Yarn, .NET NuGet, Python pip, Ruby's RubyGems 및 PHP의 작성기 등 여러 에코시스템에 대해 제공됩니다. 지원하는 패키지 에코시스템에 대한 Dependabot alerts개요는 [종속성 그래프에서 지원되는 패키지 에코시스템](/ko/code-security/reference/supply-chain-security/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)을 참조하세요.

다른 에코시스템에 대한 보안 권고가 존재할 수 있다는 점에 유의해야 합니다. 검토되지 않은 보안 공지의 정보는 특정 리포지토리의 유지 관리자가 제공합니다. 이 데이터는 .에 의해 GitHub큐레이팅되지 않습니다. 자세한 내용은 [GitHub Advisory Database에서 보안 권고 탐색](/ko/code-security/how-tos/report-and-fix-vulnerabilities/fix-reported-vulnerabilities/browse-advisory-database)을(를) 참조하세요.

**확인**: 처리되지 않은 취약점이 지원되지 않는 에코시스템에 적용되나요?

## 과거의 취약점

GitHub Advisory Database는 2019년 11월에 출시되었으며, 처음에는 2017년부터 지원 에코시스템에서의 보안 위험 권고를 포함하도록 업데이트되었습니다. 데이터베이스에 CVE를 추가할 때 최신 CVE 및 최신 버전의 소프트웨어에 영향을 미치는 CVE를 큐레이팅하는 우선 순위를 지정합니다.

이전 취약성에 대한 정보 중 일부는 이러한 CVE가 특히 널리 퍼져 있기 때문에 제공됩니다. 그러나 일부 오래된 취약성은 GitHub Advisory Database에 포함되어 있지 않습니다. 데이터베이스에 포함해야 하는 특정 이전 취약성이 있는 경우 문의하세요 사이트 관리자가 [GitHub 지원 포털](https://support.github.com).

**확인**: 2017년 이전에 국가 취약성 데이터베이스에 포착되지 않은 취약성의 게시 날짜가 있나요?

## 권고 데이터베이스 범위

일부 타사 도구는 사람이 검사하거나 필터링하지 않는 처리되지 않은 CVE 데이터를 사용합니다. 즉, 태그 지정 또는 심각도 오류 또는 기타 품질 문제가 있는 CVE는 더 빈번하고, 더 시끄럽고, 덜 유용한 경고를 발생시킵니다.

Dependabot 큐레이팅된 데이터를 GitHub Advisory Database사용하므로 경고 볼륨은 더 낮을 수 있지만 수신하는 경고는 정확하고 관련성이 있습니다.

## 경고 생성 및 집계

종속성에 여러 취약성이 있는 경우 권고 및 매니페스트 수준에서 각 취약성에 대한 경고가 생성됩니다.

![매니페스트가 다른 동일한 패키지의 두 경고를 보여 주는 Dependabot 탭의 스크린샷.](/assets/images/help/repository/dependabot-alerts-view.png)

레거시 Dependabot alerts 는 동일한 종속성에 대한 모든 취약성이 있는 단일 집계 경고로 그룹화되었습니다. 레거시 Dependabot 경고에 대한 링크로 이동하면 해당 종속 패키지 및 매니페스트에 Dependabot 대한 취약성을 표시하도록 필터링된 탭으로 리디렉션됩니다.

![레거시 Dependabot 경고로 이동하지 못하도록 필터링된 경고를 보여 주는 Dependabot 탭의 스크린샷.](/assets/images/help/repository/legacy-dependabot-alerts-view.png)

Dependabot alerts의 GitHub 카운트는 경고 총 개수, 즉 취약점 수를 나타내며 종속성 수를 나타내는 것이 아닙니다.

**확인:** 표시되는 합계가 불일치하는 경우 경고 번호와 종속성 번호를 비교하고 있는 것은 아닌지 확인합니다. 또한 필터링된 경고의 하위 집합이 아닌 모든 경고를 보고 있는지 확인합니다.

## 종속성 무시 옵션

구성 파일에서 특정 종속성을 무시하도록 구성할 Dependabot 수 있으므로 해당 종속성에 대한 보안 및 버전 업데이트를 방지할 수 있습니다. 보안 업데이트만 사용하려는 경우 구성 파일로 기본 동작을 재정의해야 합니다. 자세한 내용은 [Dependabot 보안 업데이트 구성](/ko/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/configure-security-updates#overriding-the-default-behavior-with-a-configuration-file)에서 버전 업데이트가 활성화되지 않도록 하는 방법을 참조하세요. 종속성 무시에 대한 자세한 내용은 [특정 종속성 무시](/ko/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/controlling-dependencies-updated#ignoring-specific-dependencies)를 참조하세요.

## GitHub Actions 버전들의 Monorepo 제한 사항

리포지토리에 여러 개의 GitHub Actions(예: 모노레포)가 포함된 경우, 사용하는 태그 형식은 Dependabot이(가) 작업 버전을 감지하고 업데이트하는 데 영향을 줍니다.

* **대시(`-`) 구분 기호**(예: `@my-action-v0.1.0`):
  * Dependabot 는 단일 종속성 항목에서 여러 작업을 그룹화하거나 새 버전을 올바르게 검색하지 못할 수 있습니다. 이는 Dependabot이(가) 슬래시 기반 태그 구문 분석을 사용하여 동작을 구분하기 때문에 발생합니다.
* **슬래시(`/`) 구분 기호**(예: `@my-action/v0.1.0`):
  * Dependabot는 슬래시가 Dependabot의 구문 분석 논리와 맞아떨어지는 계층적 태그 구조를 만들어주기 때문에 각 작업을 독립적으로 올바르게 감지하고 업데이트합니다.

**권장 사항:** 여러 작업이 있는 모노 리포지토리의 경우 작업 태그에 `name/version`(슬래시) 형식을 사용하세요. 이렇게 하면 Dependabot 태그 계층 구조를 올바르게 구문 분석하고 작업을 독립적으로 업데이트할 수 있습니다.

* Example:

  ```yaml
  # Recommended: namespaced with slash
  uses: my-org/monorepo/my-action@my-action/v0.1.0

  # Not recommended: dash
  uses: my-org/monorepo@my-action-v0.1.0
  ```

## 추가 읽기

* [Dependabot 경고](/ko/code-security/concepts/supply-chain-security/dependabot-alerts#when-dependabot-sends-alerts)
* [Dependabot 경고 보기 및 업데이트](/ko/code-security/how-tos/manage-security-alerts/manage-dependabot-alerts/view-dependabot-alerts)
* [리포지토리에 대한 보안 및 분석 설정 관리](/ko/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository)
* [종속성 그래프 문제 해결](/ko/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependency-graph-errors)
* [Dependabot 오류](/ko/code-security/reference/supply-chain-security/troubleshoot-dependabot/dependabot-errors)
* [GitHub Actions 실행기에서 Dependabot](/ko/code-security/concepts/supply-chain-security/dependabot-on-actions)