Skip to content

GH-500 · Domain 3: Configure and use supply chain security (formerly Dependabot/Dependency Review) · 18% of the exam

Task 3.1: Understand and manage dependency and supply chain risks

The dependency graph and how it learns about dependencies, the GitHub Advisory Database, and exporting an SBOM for audit and compliance.

Study it

  • The dependency graph, the GitHub Advisory Database and SBOM export

    Lesson coming

Sample questions

Try each one before opening the answer. Every option is explained, with the GitHub documentation page that proves it.

Question 1 · choose 1

A new CVE for a library the team uses appears in the GitHub Advisory Database the same day it is published in the National Vulnerability Database, marked as unreviewed. The team's repository has Dependabot alerts enabled, but no alert appears. What explains this?

  1. ADependabot creates alerts only for advisories with a critical CVSS score
  2. BDependabot doesn't create alerts for unreviewed advisories
  3. CAdvisories from the NVD reach repositories only after the next weekly scheduled scan of the default branch
  4. DDependabot alerts need the repository's dependency graph to be exported as an SBOM first
Show the answer and why
  • ADependabot creates alerts only for advisories with a critical CVSS score

    Incorrect

    Severity doesn't decide whether an alert is created.

  • BDependabot doesn't create alerts for unreviewed advisories

    Correct

    Only GitHub-reviewed advisories trigger Dependabot alerts.

  • CAdvisories from the NVD reach repositories only after the next weekly scheduled scan of the default branch

    Incorrect

    Alerts follow new reviewed advisories or graph changes; there is no weekly wait.

  • DDependabot alerts need the repository's dependency graph to be exported as an SBOM first

    Incorrect

    The SBOM is an export; it isn't an input to alerts.

Unreviewed advisories are published automatically from the National Vulnerability Database feed. Dependabot doesn't create alerts for them, because they aren't checked for validity or completeness. When GitHub reviews an advisory and maps it to packages in supported ecosystems, Dependabot alerts affected repositories.

Question 2 · choose 1

A Node.js service lists only its direct dependencies in package.json and doesn't commit a lock file. An advisory affects a library that one of those dependencies pulls in, but Dependabot raises no alert for it. Which change gives Dependabot the coverage it lacks with the least effort?

  1. AAdd the vulnerable library to the manifest as a direct dependency
  2. BTurn on Dependabot version updates for the manifest's directory
  3. CExport an SBOM from the dependency graph, and upload it to each release as an asset
  4. DCommit a lock file that pins the exact indirect versions
Show the answer and why
  • AAdd the vulnerable library to the manifest as a direct dependency

    Incorrect

    That changes what the project depends on just to get an alert, and other indirect libraries stay uncovered.

  • BTurn on Dependabot version updates for the manifest's directory

    Incorrect

    Version updates keep packages current; they don't add indirect dependencies to the graph.

  • CExport an SBOM from the dependency graph, and upload it to each release as an asset

    Incorrect

    An SBOM export doesn't feed the graph or the alerts.

  • DCommit a lock file that pins the exact indirect versions

    Correct

    Indirect dependencies inferred from manifests are excluded from vulnerability checks; lock files define them exactly.

Static analysis of the dependency graph finds indirect dependencies only if they are defined in a manifest or lock file. Indirect dependencies inferred from manifests rather than lock files are excluded from vulnerability checks, so lock files give the most reliable graph and Dependabot coverage. For ecosystems that resolve dependencies at build time, dependency submission is the other option.

Question 3 · choose 2

A platform team needs build-time transitive dependencies in the dependency graph for Java and Python repositories. Which two statements about the options are true? (Choose TWO.)

  1. AAutomatic dependency submission runs a GitHub Actions workflow that counts toward Actions minutes
  2. BDependabot graph jobs support every ecosystem the dependency graph supports
  3. CStatic analysis of manifests already captures dependencies resolved at build time
  4. DAutomatic dependency submission can run only on self-hosted runners
  5. EFor Python, Dependabot graph jobs take precedence over automatic dependency submission
Show the answer and why
  • AAutomatic dependency submission runs a GitHub Actions workflow that counts toward Actions minutes

    Correct

    It resolves the tree in a workflow on GitHub-hosted runners by default.

  • BDependabot graph jobs support every ecosystem the dependency graph supports

    Incorrect

    Graph jobs currently support Go and Python only.

  • CStatic analysis of manifests already captures dependencies resolved at build time

    Incorrect

    Static analysis can't see dependencies resolved during the build.

  • DAutomatic dependency submission can run only on self-hosted runners

    Incorrect

    It runs on GitHub-hosted runners by default; self-hosted or larger runners are optional.

  • EFor Python, Dependabot graph jobs take precedence over automatic dependency submission

    Correct

    Once graph jobs are active, automatic submission no longer runs for that ecosystem.

Some ecosystems resolve indirect dependencies at build time. Automatic dependency submission runs a GitHub Actions workflow that builds the full tree and uploads it with the dependency submission API, using Actions minutes. Dependabot graph jobs do the same for Go and Python without Actions minutes, can use organization private registry configurations, and take precedence over automatic submission.

Question 4 · choose 1

What is the dependency graph built from?

  1. ASecret scanning alerts
  2. BThe repository's code scanning results for the default branch
  3. CManifest and lock files, plus submitted dependencies
  4. DThe organization's audit log
Show the answer and why
  • ASecret scanning alerts

    Incorrect

    Secret scanning is about credentials.

  • BThe repository's code scanning results for the default branch

    Incorrect

    Code scanning results aren't dependency data.

  • CManifest and lock files, plus submitted dependencies

    Correct

    It summarizes manifests, lock files and submitted dependencies.

  • DThe organization's audit log

    Incorrect

    The audit log records events.

The dependency graph is a summary of the manifest and lock files stored in a repository and any dependencies submitted for it with the dependency submission API.

Question 5 · choose 1

Which categories of global advisories does the GitHub Advisory Database contain?

  1. ACritical, high, medium and low
  2. BDraft and published
  3. CPublic and private
  4. DGitHub-reviewed, unreviewed and malware
Show the answer and why
  • ACritical, high, medium and low

    Incorrect

    Those are severities.

  • BDraft and published

    Incorrect

    Those are states of repository advisories.

  • CPublic and private

    Incorrect

    Global advisories are public.

  • DGitHub-reviewed, unreviewed and malware

    Correct

    Global advisories fall into these three categories.

Global advisories in the GitHub Advisory Database are grouped into GitHub-reviewed advisories, unreviewed advisories imported from the National Vulnerability Database, and malware advisories.

Question 6 · choose 1

For which repositories does the dependency graph list dependents?

  1. APrivate repositories only
  2. BPublic repositories
  3. CAny repository with Dependabot alerts enabled
  4. DRepositories with an exported SBOM
Show the answer and why
  • APrivate repositories only

    Incorrect

    Dependents aren't reported for private repositories.

  • BPublic repositories

    Correct

    Dependents are listed for public repositories.

  • CAny repository with Dependabot alerts enabled

    Incorrect

    Alerts aren't the condition.

  • DRepositories with an exported SBOM

    Incorrect

    SBOMs don't affect dependents.

For public repositories, the dependency graph lists dependents: other public repositories that depend on the repository or on packages it publishes. This information isn't reported for private repositories.

Question 7 · choose 1

Where do the GitHub Advisory Database's malware advisories come from?

  1. AFrom the npm security team and OpenSSF
  2. BFrom code scanning alerts
  3. CFrom Dependabot version updates
  4. DFrom private vulnerability reports sent to maintainers
Show the answer and why
  • AFrom the npm security team and OpenSSF

    Correct

    These are the documented sources.

  • BFrom code scanning alerts

    Incorrect

    Code scanning doesn't publish advisories.

  • CFrom Dependabot version updates

    Incorrect

    Version updates don't create advisories.

  • DFrom private vulnerability reports sent to maintainers

    Incorrect

    Those become repository advisories.

Malware advisories cover malicious open source packages. GitHub publishes them automatically into the GitHub Advisory Database from the npm security team and the OpenSSF Malicious Packages repository; most are about substitution attacks.

Practise domain 3 →Practise all domains →