Skip to main content

Enterprise Server 3.7 release notes

November 22, 2022

    Security fixes

  • CRITICAL: An improper neutralization of argument delimiters in a command vulnerability was identified in GitHub Enterprise Server that enabled remote code execution. To exploit this vulnerability, an attacker would need permission to create and build GitHub Pages using GitHub Actions.

  • HIGH: Added an extra check to harden against a path traversal bug that could lead to remote code execution in GitHub Pages builds on a GitHub Enterprise Server instance. To exploit this vulnerability, an attacker would need permission to create and build a GitHub Pages site on the instance. This bug was originally reported via GitHubs Bug Bounty program and assigned CVE-2021-22870.

  • HIGH: Added a check in Pages to ensure the working directory is clean before unpacking new content to prevent an arbitrary file overwrite bug.

  • MEDIUM: Pull request preview links did not properly sanitize URLs, allowing a malicious user to embed dangerous links in the instances web UI. This vulnerability was reported via the GitHub Bug Bounty program.

    Bug fixes

  • If a GitHub Actions dependency uses a pinned SHA version, Dependabot will no longer mark the dependency as vulnerable.

  • Running the ghe-spokesctl command returned a failed to get repo metrics error.

  • Setting the maintenance mode with an IP Exception List would not persist across upgrades.

  • GitHub Pages builds could time out on instances in AWS that are configured for high availability.

  • Status details for the replication of Git LFS objects to repository cache replica nodes were not visible in the ghe-repl-status output on those nodes.

  • The audit log timestamp for Dependabot alert events returned the creation date of the alert instead of the timestamp when a user took action on the alert.

  • When accessing an instances JavaScript resources from behind a proxy, the browser displayed Cross-Origin Resource Sharing (CORS) errors.

  • If a user named a status check with leading or trailing spaces, the instance created a duplicate check if another check existed with the same name and no leading or trailing spaces.

  • If a user configured a pre-receive hook for multiple repositories, the instances Hooks page would not always display the correct status for the hook.

  • In some cases, an instance could replace an active repository with a deleted repository.

  • Git LFS objects in a repository with a cache replication policy would not be copied to cache replicas if the total number of objects in the repository exceeded 5,000.

  • After running migrations for the GitHub Enterprise Importer on an instance configured for high availability, replication of migration storage assets would not catch up.

  • Zombie processes no longer accumulate in the gitrpcd container.

  • On an instance with GitHub Packages configured, package upload and installation could fail for customers using a VPC endpoint URL for AWS S3 blob storage.

  • In some cases, after upgrading to GitHub Enterprise Server 3.7.0, users may encounter Internal Server Error or 500 errors when initiating Git operations over SSH or HTTPS.

    Changes

  • If a site administrator has not yet configured GitHub Actions for the instance, the UI for setting up code scanning will prompt the user to configure GitHub Actions.

  • To avoid failing domain verification due to the 63-character limit enforced by DNS providers for DNS records, the GitHub-generated TXT record to verify domain ownership is now limited to 63 characters.

  • To diagnose zero-length file problems in Git repositories, which can result from a crash of the instance, site administrators can run the git-crash-fix utility.

    Known issues

  • On a freshly set up GitHub Enterprise Server instance without any users, an attacker could create the first admin user.

  • Custom firewall rules are removed during the upgrade process.

  • Git LFS tracked files uploaded through the web interface are incorrectly added directly to the repository.

  • Issues cannot be closed if they contain a permalink to a blob in the same repository, where the blob's file path is longer than 255 characters.

  • When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.

  • The GitHub Packages npm registry no longer returns a time value in metadata responses. This was done to allow for substantial performance improvements. We continue to have all the data necessary to return a time value as part of the metadata response and will resume returning this value in the future once we have solved the existing performance issues.

  • Resource limits that are specific to processing pre-receive hooks may cause some pre-receive hooks to fail.

  • Actions services need to be restarted after restoring an instance from a backup taken on a different host.

  • In a repository's settings, enabling the option to allow users with read access to create discussions does not enable this functionality.

  • In some cases, users cannot convert existing issues to discussions.

  • During the validation phase of a configuration run, a No such object error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start.

  • Following an upgrade to GitHub Enterprise Server 3.6 or later, existing inconsistencies in a repository such as broken refs or missing objects, may now be reported as errors like invalid sha1 pointer 0000000000000000000000000000000000000000, Zero-length loose reference file, or Zero-length loose object file. Previously, these indicators of repository corruption may have been silently ignored. GitHub Enterprise Server now uses an updated Git version with more diligent error reporting enabled. For more information, see this upstream commit in the Git project.

    If you suspect a problem like this exists in one of your repositories, you can run git-crash-fix analyze in the repository on your GitHub Enterprise Server instance. If git-crash-fix analyze reports problems, contact GitHub Enterprise Support for assistance, and include the command output in your support request.

    Deprecations

  • Upcoming deprecation: In GitHub Enterprise Server 3.8 and later, unsecure algorithms will be disabled for SSH connections to the administrative shell.

  • Commit comments, which are comments that users add directly to a commit outside of a pull request, no longer appear in the pull request timeline. Users could not reply to or resolve these comments. The Timeline events REST API and the GraphQL API's PullRequest object also no longer return commit comments.

  • Diffing GeoJSON, PSD, and STL files is no longer possible.

  • Package registries on the new GitHub Packages architecture, including Container registry and npm packages, no longer expose data through the GraphQL API. In a coming release, other GitHub Packages registries will migrate to the new architecture, which will deprecate the GraphQL API for those registries as well. GitHub recommends using the REST API to programmatically access information about GitHub Packages. For more information, see "Packages" in the REST API documentation.

October 25, 2022

📣 This is not the latest patch release of Enterprise Server. Please use the latest release for the latest security, performance, and bug fixes.

For upgrade instructions, see "Upgrading GitHub Enterprise Server."

    Features

    Instance administration

  • To increase the security of the Management Console, site administrators can configure the rate limit for sign-in attempts, as well as the lockout duration after exceeding the rate limit. For more information, see "Configuring rate limits."

  • The minimum password requirements for the Management Console are more stringent.

  • Attempts to authenticate to the Management Console and changes made by a site administrator within the Management Console are written to a log file in /var/log/enterprise-manage/audit.log.

  • Instance services

  • Azure Maps replaces MapBox for rendering GeoJSON files as graphical maps. Administrators can enable map rendering and provide an Azure Maps token in the Management Console. For more information, see "Accessing the management console."

  • Authentication

  • Users can verify commits using an SSH public key. For more information, see "About commit signature verification."

  • Site administrators can provision users and groups on a GitHub Enterprise Server instance automatically with SCIM. SCIM for GitHub Enterprise Server is in private beta and subject to change. For more information, see "Configuring user provisioning with SCIM for your enterprise" and "SCIM" in the REST API documentation.

  • GitHub Advanced Security

  • Enterprise owners on an instance with a GitHub Advanced Security license can see an overview of code scanning alerts for the entire instance, including a repository-centric view of application security risks, and an alert-centric view of all code scanning, secret scanning, and Dependabot alerts. For more information, see "Viewing the security overview."

  • Users on an instance with a GitHub Advanced Security license can view and comment on code scanning alerts in their repository within a pull request's Conversation tab. If the Require conversation resolution before merging branch protection rule is enabled for the repository, all comments on these code scanning alerts must be resolved before a user merges the pull request. For more information, see "About code scanning," "About pull request reviews," and "About protected branches."

  • To simplify the rollout of secret scanning for instances with dozens, hundreds, or even thousands of organizations, enterprise owners on an instance with a GitHub Advanced Security license can enable secret scanning and push protection for the instance using the web interface. For more information, see "Managing GitHub Advanced Security features for your enterprise."

  • Organization owners on an instance with a GitHub Advanced Security license can perform a dry run of custom patterns for secret scanning for all repositories within an organization. For more information, see "Defining custom patterns for secret scanning."

  • If a site administrator has enabled email notifications for an instance with a GitHub Advanced Security license, users who watch a repository's secret scanning alerts will receive an email notification when a contributor bypasses a secret blocked by push protection. Previously, notifications were not sent if the secret was marked as a false positive or used in tests. For more information, see "Protecting pushes with secret scanning" and "Configuring email for notifications."

  • To ease the management of dozens or hundreds of custom patterns for secret scanning, users, organization owners, or enterprise owners on an instance with a GitHub Advanced Security license can sort and filter the list of patterns for a repository, organization, or the entire instance. For more information, see "Defining custom patterns for secret scanning."

  • Users on an instance with a GitHub Advanced Security license who protect pushes with secret scanning can specify a custom link that will display in the error message when push protection detects and blocks a potential secret. For more information, see "Protecting pushes with secret scanning."

  • Users can publish CodeQL packs to the Container registry. For more information, see Creating and working with CodeQL packs in the CodeQL CLI documentation.

  • Users on an instance with a GitHub Advanced Security license can use CodeQL packs with code scanning, including packs that are published to the instance's GitHub Container registry. For more information, see "Configuring code scanning" and Publishing and using CodeQL packs" in the CodeQL CLI documentation.

  • Users on an instance with a GitHub Advanced Security license can exclude unnecessary CodeQL queries for code scanning by using query filters. For more information, see "Configuring code scanning."

  • Enterprise owners on an instance with a GitHub Advanced Security license can retrieve code scanning results for the entire instance using the REST API. The new endpoint supplements the existing endpoints for repositories and organizations. For more information, see "Code Scanning" in the REST API documentation.

  • Organization owners on an instance with a GitHub Advanced Security license can retrieve the enablement status or configure the automatic enablement of the following features using the REST API.

    • GitHub Advanced Security
    • Secret scanning
    • Push protection

    For more information, see "Organizations" in the REST API documentation.

  • Users on an instance with a GitHub Advanced Security license can use cursors to paginate secret scanning alert results retrieved with the REST API's organization and repository endpoints. For more information, see "Secret scanning" in the REST API documentation.

  • Dependabot

  • Users can see more information about the activity associated with a Dependabot alert. Within the details for a Dependabot alert, users can see a timeline of events, such as when the alert was opened, fixed, or reopened. Events will also show additional metadata when available, like relevant pull requests. For more information, see "About Dependabot alerts."

  • Users' Dependabot alerts are sorted by importance by default. Importance considers CVSS as the primary factor, as well as potential risk, relevancy, and ease of fixing the vulnerability. The calculation will improve over time.

  • Users can sort Dependabot alerts by the scope of the dependency, either runtime or development.

  • Users can optionally add a comment when dismissing a Dependabot alert. Dismissal comments appear in the event timeline and within the dismissComment field in the GraphQL API's RepositoryVulnerabilityAlert object. For more information about the GraphQL API, see "Objects" in the GraphQL API documentation.

  • Users can select multiple Dependabot alerts, then dismiss or reopen the alerts. For example, from the Closed alerts tab, you can select multiple alerts that have been previously dismissed, and then reopen them all at once.

  • Organization owners on an instance can retrieve the enablement status or configure the automatic enablement of the following features for dependency management using the REST API.

    • Dependency graph
    • Dependabot alerts
    • Dependabot security updates

    For more information, see "Organizations" in the REST API documentation.

  • Code security

  • Enterprise and organization owners can see the security overview for the entire GitHub Enterprise Server instance or individual organizations on the instance. The security overview provides a centralized view of risk for application security teams, engineering leaders, and developers who work across many repositories. For more information, see "About the security overview."

  • Organization owners can manage teams of security managers using the REST API. For more information, see "Security Managers" in the REST API documentation.

  • Users can take advantage of the following improvements to the GitHub Advisory Database.

    • The database displays advisories for for Elixir, Erlang's Hex package manager, and more.
    • Users can find malware advisories by searching for type:malware.
    • The database displays advisories for GitHub Actions vulnerabilities.

    For more information, see "Browsing security advisories in the GitHub Advisory Database."

  • Users can populate a repository's dependency graph by submitting the dependencies for the repository using the REST API. The dependency graph powers Dependabot alerts and Dependabot security updates. For more information, see "Using the Dependency submission API."

  • GitHub Actions

  • GitHub Actions supports Google Cloud Storage as a storage provider for logs, artifacts, and caches. For more information, see "Enabling GitHub Actions with Google Cloud Storage."

  • GitHub Actions users who use dependency caching to speed up workflows can now use the GitHub CLI to manage the GitHub Actions cache for a repository. To manage caches using the GitHub CLI, install the gh-actions-cache extension. For more information, see the gh-actions-cache documentation.

  • Workflow re-runs in GitHub Actions use the actor who initially triggered the workflow for privilege evaluation. The actor who triggered the re-run will continue to be displayed in the UI, and can be accessed in a workflow via the triggering_actor field in the github context. For more information, see "Re-running workflows and jobs" and "Contexts."

  • Users can call reusable workflows from a matrix or other reusable workflows. For more information, see "Reusing workflows."

  • When querying GitHub Actions for artifacts, the REST API returns information about the run and branch that produced the artifact. For more information, see "GitHub Actions Artifacts" in the REST API documentation.

  • To support secure cloud deployments at scale, organization owners and repository administrators can complete the following tasks with the OpenID Connect REST API. For more information, see "GitHub Actions OIDC" in the REST API documentation

    • Enable a standard OpenID Connect configuration across cloud deployment workflows by customizing the subject claim format.
    • Ensure additional compliance and security for OpenID Connect deployments by appending the issuer URL with the enterprise's slug.
    • Configure advanced OpenID Connect policies by using additional OpenID Connect token claims like repository_id and repo_visibility.

    For more information, see "About security hardening with OpenID Connect."

  • GitHub Actions users who use dependency caching to speed up workflows can now use the GitHub Actions Cache REST API to accomplish the following tasks.

  • If a non-ephemeral self-hosted GitHub Actions runner does not communicate with the GitHub Enterprise Server instance for more than 14 days, the instance will automatically remove the runner. If an ephemeral self-hosted runner does not communicate with the instance for more than one day, the instance will automatically remove the runner. Previously, GitHub Enterprise Server removed runners after 30 days. For more information, see "About self-hosted runners."

  • GitHub Actions can run self-hosted macOS workflows in a macOS ARM64 runtime with runner support for Apple silicon, such as the M1 or M2 chip. For more information, see "Using self-hosted runners in a workflow."

  • GitHub Pages

  • Users can deploy a GitHub Pages site directly from a repository using GitHub Actions, without configuration of a publishing source. Using GitHub Actions provides control over the authoring framework and version, as well as more control over the publishing process with features like deployment gates. For more information, see "Configuring a publishing source for your GitHub Pages site."

  • Repositories

  • Enterprise owners can prevent users from creating repositories owned by their user accounts. For more information, see "Enforcing repository management policies in your enterprise."

  • Enterprise owners can control where users can fork repositories. Forking can be limited to preset combinations of organizations, the same organization as the parent repository, user accounts, or everywhere. For more information, see "Enforcing repository management policies in your enterprise."

  • Repository administrators can block potentially destructive pushes by limiting the number of branches and tags that can be updated by a single push. By default, there is no limit to the number of branches and tags that can be updated in a single push. For more information, see "Managing the push policy for your repository."

  • Users can further customize the default commit message when squash-merging a pull request. For more information, see "Configuring commit merging for pull requests" and "Configuring commit squashing for pull requests."

  • Users can create a branch from a repository's Branches overview page by clicking the New branch button. For more information, see "Creating and deleting branches within your repository."

  • Improvements have been made to the creation and management of forks.

    • When forking a repository, users can choose to only include the repository's default branch in the fork.
    • Users can use a repository's' Fork button to see existing forks of the repository.
    • The Fetch upstream button has been renamed to Sync fork to better describe the button's behavior. If the sync causes a conflict, the web UI prompts the user to contribute changes to the parent repository, discard changes, or resolve the conflict.
    • To address situations where people work within one organization and don't want to fork a repository to a different organization or user account, users can fork a repository to the same organization as the parent repository.
    • Users can fork an internal repository to another organization and the fork will retain internal visibility. When forking an internal repository, users can choose which organization should own the fork.

    For more information, see "Fork a repo."

  • Repository administrators can block the creation of branches that match a configured name pattern with the Restrict pushes that create matching branches branch protection rule. For example, if a repository's default branch changes from master to main, a repository administrator can prevent any subsequent creation or push of the master branch. For more information, see "About protected branches" and "Managing a branch protection rule."

  • Users can create files with geoJSON, topoJSON, and STL diagrams and render the diagrams in the web interface. For more information, see "Working with non-code files."

  • Users can create autolink references using either alphanumeric or numeric identifiers. For more information, see "Configuring autolinks to reference external resources autolinks."

  • Users can customize exclusions in the file finder like vendor/ and build/ by using linguist attributes in a .gitattributes file. For more information, see "Finding files on GitHub" and "Customizing how changed files appear on GitHub."

  • Pull requests

  • Users can browse the files modified in an individual commit using the tree view. For more information, see "About commits."

  • Issues

  • Users can manually link existing branches or pull requests to an issue from the "Development" section in the issue's sidebar. For more information, see "Linking a pull request to an issue."

  • Markdown

  • Users can use Mermaid syntax when writing Markdown, which displays a diagram when rendering the Markdown. For more information, see "Creating diagrams."

  • Users can write mathematical expressions using fenced code blocks with the math syntax in addition to the existing delimiters. $$ is not required with this method. For more information, see "Writing mathematical expressions."

    • Note: This feature is unavailable in GitHub Enterprise Server 3.7. The feature will be available in an upcoming release. [Updated: 2022-11-16]
  • Users can render maps directly in Markdown using fenced code blocks with the geojson or topojson syntax, and embed STL 3D renders using stl syntax. For more information, see "Creating diagrams."

  • In Markdown, users can write LaTeX-style syntax to render math expressions inline using $ delimiters, or in blocks using $$ delimiters. For more information, see "Writing mathematical expressions."

    Changes

  • Secret scanning no longer supports custom patterns that use .* as an end delimiter in the "After secret" field, as the pattern syntax would cause scan problems and inconsistencies.

  • When creating a new release, users can now submit the form using Ctrl + Enter in macOS, or Ctrl + Enter in Windows or Linux.

  • The Wiki tab in a repository only appears when a wiki exists. Previously, the tab always appeared.

  • Rendered wikis display mathematical expressions and Mermaid diagrams.

  • The size of the search field for user, organization, and enterprise audit logs has increased.

  • To improve stability, the service for rendering GeoJSON, Jupyter Notebook, PDF, PSD, SVG, SolidWorks, and other binary formats has been replaced.

    Known issues

  • On a freshly set up GitHub Enterprise Server instance without any users, an attacker could create the first admin user.

  • Custom firewall rules are removed during the upgrade process.

  • Git LFS tracked files uploaded through the web interface are incorrectly added directly to the repository.

  • Issues cannot be closed if they contain a permalink to a blob in the same repository, where the blob's file path is longer than 255 characters.

  • When "Users can search GitHub.com" is enabled with GitHub Connect, issues in private and internal repositories are not included in GitHub.com search results.

  • The GitHub Packages npm registry no longer returns a time value in metadata responses. This was done to allow for substantial performance improvements. We continue to have all the data necessary to return a time value as part of the metadata response and will resume returning this value in the future once we have solved the existing performance issues.

  • Resource limits that are specific to processing pre-receive hooks may cause some pre-receive hooks to fail.

  • Actions services need to be restarted after restoring an instance from a backup taken on a different host.

  • In a repository's settings, enabling the option to allow users with read access to create discussions does not enable this functionality.

  • In some cases, users cannot convert existing issues to discussions.

  • During the validation phase of a configuration run, a No such object error may occur for the Notebook and Viewscreen services. This error can be ignored as the services should still correctly start.

  • In some cases after upgrading to GitHub Enterprise Server 3.7.0, users may encounter Internal Server Error or 500 errors when initiating git operations over SSH or HTTPS. Example:

    git push origin master
    Total 0 (delta 0), reused 0 (delta 0)
    remote: Internal Server Error
    To ghes.hostname.com:User/repo.git
    ! [remote rejected]       master -> master (Internal Server Error)
    

    If these are encountered, please contact GitHub Enterprise Support with a support bundle. The known temporary workaround at this time is to restart the github-gitauth service with the commands below:

    nomad stop github-gitauth
    nomad run /etc/nomad-jobs/github/gitauth.hcl
    nomad status github-gitauth
    

    We are currently investigating a permanent fix for a future hot patch [Updated: 2022-11-24].

    Deprecations

  • Upcoming deprecation: In GitHub Enterprise Server 3.8 and later, unsecure algorithms will be disabled for SSH connections to the administrative shell.

  • Commit comments, which are comments that users add directly to a commit outside of a pull request, no longer appear in the pull request timeline. Users could not reply to or resolve these comments. The Timeline events REST API and the GraphQL API's PullRequest object also no longer return commit comments.

  • Diffing GeoJSON, PSD, and STL files is no longer possible.

  • Package registries on the new GitHub Packages architecture, including Container registry and npm packages, no longer expose data through the GraphQL API. In a coming release, other GitHub Packages registries will migrate to the new architecture, which will deprecate the GraphQL API for those registries as well. GitHub recommends using the REST API to programmatically access information about GitHub Packages. For more information, see "Packages" in the REST API documentation.