GitHub의 공급망 보안 정보
소프트웨어 프로젝트를 개발할 때, 오픈 소스 라이브러리, 프레임워크 또는 기타 도구와 같이 애플리케이션을 빌드하고 실행하기 위해 다른 소프트웨어를 사용하는 경우가 많습니다. 이러한 리소스는 프로젝트가 정상적으로 작동하기 위해 의존하므로, 통칭하여 “종속성”이라고 합니다. 프로젝트는 이러한 수백 개의 종속성에 의존할 수 있으며, 이는 이른바 “공급망”을 형성합니다.
공급망은 보안 문제를 야기할 수 있습니다. 종속성 중 하나에 알려진 보안 취약점이나 버그가 있는 경우, 악의적인 행위자가 해당 취약성을 악용하여 예를 들어 악성 코드(“멀웨어”)를 삽입하거나, 민감한 데이터를 탈취하거나, 프로젝트에 기타 형태의 장애를 초래할 수 있습니다. 이러한 유형의 위협을 “공급망 공격”이라고 합니다. 공급망에 취약한 종속성이 포함되어 있으면 자체 프로젝트의 보안이 저하되며, 사용자 또한 위험에 노출됩니다.
공급망을 보호하기 위해 수행할 수 있는 가장 중요한 작업 중 하나는 취약한 종속성을 패치하고 모든 멀웨어를 교체하는 것입니다.
매니페스트 파일 또는 잠금 파일에서 종속성을 지정할 때 공급망에 직접 종속성을 추가합니다. 종속성을 전이적으로 포함할 수도 있습니다. 즉, 특정 종속성을 지정하지 않더라도 자신의 종속성에서 이를 사용하므로 해당 종속성에 종속됩니다.
GitHub 에서는 환경의 종속성을 이해하고, 해당 종속성의 취약성을 파악하고, 패치하는 데 도움이 되는 다양한 기능을 제공합니다.
공급망 기능은 다음과 같습니다.GitHub * 종속성 그래프 * 종속성 검토
- Dependabot alerts
- Dependabot updates
- Dependabot security updates
- Dependabot version updates
종속성 그래프는 공급망 보안의 핵심입니다. 종속성 그래프는 리포지토리 또는 패키지의 모든 업스트림 종속성 및 퍼블릭 다운스트림 종속 항목을 식별합니다. 리포지토리의 종속성 그래프는 종속성과 취약성 정보와 같은 일부 속성을 추적하고 표시합니다.
다음 공급망 기능은 GitHub 종속성 그래프에서 제공하는 정보를 사용합니다.
- 종속성 검토는 종속성 그래프를 사용하여 종속성 변경 내용을 식별하고 끌어오기 요청을 검토할 때 변경 내용의 보안 영향을 이해하는 데 도움이 됩니다.
-
Dependabot는 종속성 그래프에서 제공하는 종속성 데이터를 GitHub Advisory Database에 게시된 권고 목록과 상호 참조하여 종속성을 검사하고, 잠재적 취약성이 감지되었을 때 Dependabot alerts 를 생성합니다. -
Dependabot security updates 종속성 그래프 및 Dependabot alerts를 사용하여 리포지토리에서 알려진 취약성이 있는 종속성을 업데이트하는 데 도움을 받으세요. Dependabot version updates 종속성 그래프를 사용하지 말고, 대신 종속성의 의미 버전 관리에 의존하세요. Dependabot version updates 는 취약성이 없는 경우에도 종속성을 업데이트된 상태로 유지하는 데 도움이 됩니다.
개인 계정, 코드 및 빌드 프로세스 보호를 포함한 엔드투엔드 공급망 보안에 대한 모범 사례 가이드는 엔드투엔드 공급망 보안을 참조하세요.
기능 개요
종속성 그래프란?
종속성 그래프 GitHub 를 생성하려면 매니페스트 및 잠금 파일에 선언된 리포지토리의 명시적 종속성을 확인합니다. 사용하도록 설정하면 종속성 그래프는 리포지토리의 알려진 모든 패키지 매니페스트 파일을 자동으로 구문 분석하고 이를 사용하여 알려진 종속성 이름 및 버전으로 그래프를 생성합니다.
- 종속성 그래프에는 직접 종속성 및 전이적 종속성에 대한 정보가 포함됩니다.
- 종속성 그래프는 해당 변경 내용에 대한 커밋을 GitHub 푸시하거나 지원되는 매니페스트 또는 잠금 파일을 기본 분기에 추가하고 모든 사용자가 종속성 중 하나의 리포지토리에 변경 내용을 푸시할 때 자동으로 업데이트됩니다.
- 종속성 그래프에는 프로젝트를 GitHub Actions를 사용하여 빌드하는 도중에 제공된 정보가 포함될 수도 있습니다. 일부 패키지 에코시스템은 빌드 시점에 대부분의 전이적 종속성을 가져오므로, 빌드가 진행되는 동안 종속성 정보를 제출하면 공급망을 보다 완전하게 파악할 수 있습니다.
- 리포지토리의 기본 페이지를 GitHub열고 인사이트 탭으로 이동하여 종속성 그래프를 볼 수 있습니다.
- 리포지토리에 대한 최소한의 읽기 권한이 있는 경우 GitHub UI 또는 GitHub REST API를 통해 리포지토리에 대한 종속성 그래프를 SPDX 호환 SBOM(Software Bill of Materials)으로 내보낼 수 있습니다. 자세한 내용은 리포지토리에 대한 소프트웨어 자료 청구서 내보내기을(를) 참조하세요.
종속성 제출 API을(를) 사용하여 선택한 패키지 관리자나 에코시스템의 종속성을 제출할 수 있습니다. 에코시스템이 매니페스트나 잠금 파일 분석용 종속성 그래프에서 지원되지 않는 경우에도 수행할 수 있습니다. 종속성 제출 API을 사용하여 프로젝트에 제출된 종속성은 제출에 사용된 탐지기와 제출된 시점을 표시합니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을 참조하세요.
종속성 그래프에 대한 자세한 내용은 종속성 그래프 정보을 참조하세요.
종속성 검토란 무엇인가?
종속성 검토는 검토자와 기여자가 모든 끌어오기 요청에서 종속성 변경 내용과 그 보안 영향을 이해하는 데 도움이 됩니다.
- 종속성 검토는 끌어오기 요청에서 추가, 제거 또는 업데이트된 종속성을 알려줍니다. 릴리스 날짜, 종속성 인기도 및 취약성 정보를 사용하여 변경 내용을 허용할지 여부를 결정할 수 있습니다.
-
**변경된 파일** 탭에 rich diff를 표시하여 끌어오기 요청에 대한 종속성 검토를 볼 수 있습니다.
종속서 검토에 대한 자세한 내용은 종속성 검토 정보을 참조하세요.
Dependabot이란 무엇인가?
Dependabot 종속성의 보안 취약성을 알리고 자동으로 끌어오기 요청을 열어 종속성을 업그레이드하여 종속성을 최신 상태로 유지합니다.
Dependabot 풀 요청은 Dependabot 경고가 트리거될 때 사용 가능한 다음 보안 버전을, 또는 릴리스가 게시될 때 최신 버전을 대상으로 합니다.
"Dependabot"라는 용어는 다음과 같은 기능을 포함합니다. * Dependabot alerts: 리포지토리의 Security 탭 및 리포지토리의 종속성 그래프에 알림이 표시됩니다. 경고에는 프로젝트에서 영향을 받는 파일에 대한 링크와 고정 버전에 대한 정보가 포함됩니다. * Dependabot updates: * Dependabot security updates: 경고가 트리거될 때 종속성을 보안 버전으로 업그레이드하기 위한 업데이트가 트리거되었습니다. * Dependabot version updates: 최신 버전으로 종속성을 최신 상태로 유지하기 위한 예약된 업데이트입니다.
Dependabot security updates 및 Dependabot version updates은 GitHub Enterprise Server에서 실행하기 위해 GitHub Actions가 필요합니다.
Dependabot alerts 은 필요하지 GitHub Actions않습니다. 자세한 내용은 [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)을(를) 참조하세요.
Dependabot security updates은(는) GitHub Actions의 취약한 종속성을 해결할 수 있습니다. 보안 업데이트를 사용하도록 설정하면 Dependabot은(는) 워크플로에 사용된 취약한 GitHub Actions을(를) 패치된 최소 버전으로 업데이트하기 위한 끌어오기 요청을 자동으로 발생합니다. 자세한 내용은 [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates)을 참조하세요.
Dependabot 경고란 무엇인가?
Dependabot alerts 종속성 그래프 및 알려진 취약성에 대한 권고가 포함된 새로 검색된 취약성의 GitHub Advisory Database영향을 받는 리포지토리를 강조 표시합니다.
* Dependabot는 안전하지 않은 종속성을 검색하기 위해 검사를 수행하고 다음과 같은 경우를 보냅니다.Dependabot alerts
- 새로운 안내 데이터가 매 시간 GitHub.com 인스턴스에 동기화됩니다. 자세한 내용은 GitHub Advisory Database에서 보안 권고 탐색을(를) 참조하세요.
- 리포지토리 변경에 대한 종속성 그래프
-
Dependabot alerts 는 리포지토리의 탭과 리포지토리의 종속성 그래프에 표시됩니다 **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security** . 경고에는 프로젝트에서 영향을 받는 파일에 대한 링크와 고정 버전에 대한 정보가 포함됩니다.
자세한 내용은 Dependabot 경고 정보을(를) 참조하세요.
Dependabot 업데이트란 무엇인가?
Dependabot updates 업데이트 및 Dependabot 업데이트의 ____ 두 가지 유형이 있습니다.
Dependabot 는 두 경우 모두 종속성을 업데이트하는 자동 끌어오기 요청을 생성하지만 몇 가지 차이점이 있습니다.
Dependabot security updates:
-
경고에 Dependabot 의해 트리거됨
-
알려진 취약성을 해결하는 최소 버전으로 종속성 업데이트
-
종속성 그래프에서 지원하는 에코시스템 지원
-
구성 파일이 필요하지 않지만 구성 파일을 사용하여 기본 동작을 재정의할 수 있습니다.
Dependabot version updates: -
구성 파일 필요
-
구성한 일정에 따라 실행
-
구성과 일치하는 최신 버전으로 종속성 업데이트
-
다른 에코시스템 그룹 지원
자세한 내용은 Dependabot updatesAUTOTITLE 및 AUTOTITLE을 참조하세요.
변경할 수 없는 릴리스란?
리포지토리는 변경 불가능한 릴리스를 사용하도록 설정하여 게시 후 릴리스의 자산 및 관련 Git 태그가 변경되지 않도록 할 수 있습니다. 이렇게 하면 공격자가 사용하는 릴리스에 취약성을 주입하지 못하게 하여 공급망 공격의 위험을 줄일 수 있습니다. 또한 특정 릴리스에 의존하는 프로젝트가 중단될 가능성이 적다는 것을 의미합니다.
변경할 수 없는 릴리스를 만들면 릴리스에 대한 증명이 자동으로 생성됩니다. 이 증명을 사용하여 릴리스 및 해당 아티팩트가 게시된 정보와 일치하는지 확인할 수 있습니다.
아티팩트 증명이란?
소프트웨어 공급자는 .로 빌드된 GitHub Actions소프트웨어에 대한 증명을 생성할 수 있습니다. 인증은 빌드의 출처(빌드에 사용된 소스 코드와 워크플로 실행) 또는 관련 소프트웨어 자재 명세서를 입증하는 암호학적으로 서명된 주장입니다.
종속성에 대한 증명을 확인하여 공급망 보안을 강화할 수 있습니다. 증명은 보안을 보장하지는 않지만 소프트웨어가 빌드된 위치와 방법에 대한 정보를 제공하므로 종속성이 변조되지 않았음을 더 확신할 수 있습니다. Kubernetes 허용 컨트롤러와 같은 도구를 사용하여 배포를 제어하여 테스트되지 않은 빌드가 배포되지 않도록 방지할 수 있습니다.
조직의 자체 빌드를 위한 증명을 생성하기 위해 GitHub Actions를 사용하면 빌드된 아티팩트가 linked artifacts page에 자동으로 업로드됩니다. 이 플랫폼을 사용하면 연결된 모든 아티팩트에서 스토리지 및 배포 레코드를 볼 수 있으므로 아티팩트를 빌드하거나 배포 컨텍스트에 따라 보안 경고를 필터링하는 데 사용되는 소스 코드 및 워크플로 실행을 찾을 수 있습니다.
기능 가용성
-
**종속성 그래프 및 Dependabot alerts:** 기본적으로 사용하도록 설정되지 않습니다. 두 기능 모두 엔터프라이즈 수준에서 엔터프라이즈 소유자에 의해 구성됩니다. 자세한 내용은 [AUTOTITLE](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise) 및 [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)을(를) 참조하세요. -
**종속성 검토:** 인스턴스 GitHub Code Security or GitHub Advanced Security 에 대해 종속성 그래프를 사용하도록 설정하고 조직 또는 리포지토리에 대해 사용하도록 설정된 경우 사용할 수 있습니다. 자세한 내용은 [AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)을(를) 참조하세요. -
** Dependabot security updates:** 기본적으로 사용하도록 설정되지 않습니다. 사용하는 Dependabot security updates 및 종속성 그래프를 사용하는 모든 리포지토리에 대해 Dependabot alerts를 사용 설정할 수 있습니다. 보안 업데이트를 사용하도록 설정하는 방법에 대한 자세한 내용은 [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates)을(를) 참조하세요. -
** Dependabot version updates:** 기본적으로 사용하도록 설정되지 않습니다. 리포지토리에 대한 쓰기 권한이 있는 사용자는 Dependabot version updates를 활성화할 수 있습니다. 버전 업데이트를 활성화하는 방법에 대한 자세한 내용은 [AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates)을 참조하세요.