GitHub Integration Guide
Overview
The CBOM Secure Discover_SourceCode sensor scans GitHub repository contents to discover hard-coded cryptographic material in source, configuration, and infrastructure-as-code files:
- Hard-coded private keys, API keys, and access tokens
- X.509 certificates and chains in source or configuration
- Symmetric keys, secrets, and passphrases in code or dotfiles
- SSH keys and PEM material, and .env files containing secrets
Covers both GitHub.com and GitHub Enterprise Server (GHES). All access is read-only via a Personal Access Token (PAT).
Prerequisites
- A GitHub account with access to the org/repositories to scan (org member for org-wide scans).
- For GHES: connectivity from the sensor host to https://<ghes-host>/api/v3.
- The Discover_SourceCode sensor binary on the sensor host.
- Outbound HTTPS (443) to api.github.com or your GHES hostname.
- Permission to create a PAT (or admin approval if restricted).
Step-by-Step Guide
Step 1: Create a Personal Access Token
A fine-grained PAT is recommended (least privilege). Under Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token: select the resource owner, choose Only select repositories (or All), and set Repository permissions Contents: Read-only and Metadata: Read-only. Copy the token immediately. A classic PAT with the repo scope also works where fine-grained tokens are unavailable.
Step 2: (GHES) Identify the API Endpoint
The GHES REST API base URL is https://<GHES_HOSTNAME>/api/v3. Verify connectivity:
curl -H "Authorization: token <YOUR_PAT>" \ https://github.corp.example.com/api/v3/user
Step 3: Verify API Access
curl -s -H "Authorization: token <YOUR_PAT>" https://api.github.com/user | jq .login curl -s -H "Authorization: token <YOUR_PAT>" \ "https://api.github.com/orgs/<YOUR_ORG>/repos?type=all&per_page=5" | jq ".[].full_name"
Step 4: Configure the CBOM Secure Sensor
sensor:
name: Discover_SourceCode
enabled: true
schedule: "0 2 * * *"
source:
type: github
github_token: "${CBOM_GITHUB_TOKEN}"
# api_base_url: "https://github.corp.example.com/api/v3" # GHES only
org: "your-github-org"
repos: ["your-github-org/backend-api", "your-github-org/infra-terraform"]
branch: "main"
include_patterns: ["**/*.pem", "**/*.key", "**/*.crt", "**/*.env",
"**/*.yaml", "**/*.json", "**/*.tf", "**/*.py", "**/*.js", "**/*.go"]
exclude_patterns: ["**/vendor/**", "**/node_modules/**", "**/.git/**"]
max_file_size_bytes: 5242880
tls_verify: true
output:
format: cbom-json
cbom_api_endpoint: "https://cbom.corp.example.com/api/v1/ingest"
export CBOM_GITHUB_TOKEN="ghp_YourPersonalAccessTokenHere" cbom-sensor start --config /etc/cbom/sensors/discover_sourcecode.yaml
Step 5: Validate
cbom-sensor run --config /etc/cbom/sensors/discover_sourcecode.yaml --dry-run tail -50 /var/log/cbom/discover_sourcecode.log
Confirm authentication, repository enumeration, and a findings summary; verify findings under Assets → Source Code.
Common Errors
401 Unauthorized — Bad credentials
Cause: The PAT is invalid/expired or not passed correctly.
Resolution: Confirm CBOM_GITHUB_TOKEN is set with no whitespace; check the token’s expiry and regenerate if needed.
403 Forbidden — Resource not accessible
Cause: Insufficient scope (missing Contents: Read or repo), or org SAML SSO not authorized for the token.
Resolution: Add the required permission; if the org uses SAML SSO, click Authorize next to the org on the token page.
TLS certificate verify failed (GHES)
Cause: GHES uses an internal CA not in the sensor host trust store.
Resolution: Add the CA to the system bundle or set tls_ca_bundle; never set tls_verify: false in production.
Security Recommendations
- Use a dedicated GitHub service account, not a personal developer account.
- Use fine-grained PATs scoped to only the repositories scanned with Contents/Metadata: Read.
- Rotate tokens every 90 days and automate via your secrets manager.
- Store the PAT in a secrets manager — never plaintext config or shell history.
- Enable GitHub audit log streaming and alert on unexpected API activity.
Conclusion
With a read-only PAT and least-privilege configuration, the Discover_SourceCode sensor maintains an up-to-date inventory of cryptographic assets in GitHub.com or GHES repositories, helping teams find and remediate exposed keys, certificates, and secrets before they are exploited.
