Headline
CVE-2022-23732: Release notes - GitHub Docs
A path traversal vulnerability was identified in GitHub Enterprise Server management console that allowed the bypass of CSRF protections. This could potentially lead to privilege escalation. To exploit this vulnerability, an attacker would need to target a user that was actively logged into the management console. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.5 and was fixed in versions 3.1.19, 3.2.11, 3.3.6, 3.4.1. This vulnerability was reported via the GitHub Bug Bounty program.
For upgrade instructions, see “Upgrading GitHub Enterprise Server.”
This release is dedicated to our colleague and friend John, a Hubber who was always there to help. You will be greatly missed.
John “Ralph” Wiebalk 1986–2021
Features****Secret scanning REST API now returns locations* GitHub Advanced Security customers can now use the REST API to retrieve commit details of secrets detected in private repository scans. The new endpoint returns details of a secret’s first detection within a file, including the secret’s location and commit SHA. For more information, see “Secret scanning” in the REST API documentation.
Export license data of committer-based billing for GitHub Advanced Security* Enterprise and organization owners can now export their GitHub Advanced Security license usage data to a CSV file. The Advanced Security billing data can also be retrieved via billing endpoints in the REST API. For more information, see the “GitHub changelog.”
GitHub Actions reusable workflows in public beta* You can now reuse entire workflows as if they were an action. This feature is available in public beta. Instead of copying and pasting workflow definitions across repositories, you can now reference an existing workflow with a single line of configuration. For more information, see the “GitHub changelog.”
Dependabot security and version updates in public beta* Dependabot is now available in GitHub Enterprise Server 3.4 as a public beta, offering both version updates and security updates for several popular ecosystems. Dependabot on GitHub Enterprise Server requires GitHub Actions and a pool of self-hosted runners configured for Dependabot use. Dependabot on GitHub Enterprise Server also requires GitHub Connect and Dependabot to be enabled by an administrator. Beta feedback and suggestions can be shared in the Dependabot Feedback GitHub discussion. For more information and to try the beta, see “Setting up Dependabot security and version updates on your enterprise.”
SAML authentication supports encrypted assertions* If you use SAML authentication for GitHub Enterprise Server, you can now configure encrypted assertions from your IdP to improve security. Encrypted assertions add an additional layer of encryption when your IdP transmits information to your GitHub Enterprise Server instance. For more information, see “Using SAML.”
Changes****Administration Changes* Users can now choose the number of spaces a tab is equal to, by setting their preferred tab size in the “Appearance” settings of their user account. All code with a tab indent will render using the preferred tab size.
The GitHub Connect data connection record now includes a count of the number of active and dormant users and the configured dormancy period.
You can now give users access to enterprise-specific links by adding custom footers to GitHub Enterprise Server. For more information, see “Configuring custom footers.”
Performance Changes* WireGuard, used to secure communication between GitHub Enterprise Server instances in a High Availability configuration, has been migrated to the Kernel implementation.
Notification Changes* Organization owners can now unsubscribe from email notifications when new deploy keys are added to repositories belonging to their organizations. For more information, see “Configuring notifications.”
- Notification emails from newly created issues and pull requests now include
(Issue #xx)
or(PR #xx)
in the email subject, so you can recognize and filter emails that reference these types of issues.
Organization Changes* Organizations can now display a README.md
file on their profile Overview. For more information, see the “GitHub changelog.”
- Members of organizations can now view a list of their enterprise owners under the organization’s “People” tab. The enterprise owners list is also now accessible using the GraphQL API. For more information, see the "
enterpriseOwners
" field under the Organization object in the GraphQL API documentation.
Repositories changes* A “Manage Access” section is now shown on the “Collaborators and teams” page in your repository settings. The new section makes it easier for repository administrators to see and manage who has access to their repository, and the level of access granted to each user. Administrators can now:
* Search all members, teams and collaborators who have access to the repository.
* View when members have mixed role assignments, granted to them directly as individuals or indirectly via a team. This is visualized through a new "mixed roles" warning, which displays the highest level role the user is granted if their permission level is higher than their assigned role.
* Manage access to popular repositories reliably, with page pagination and fewer timeouts when large groups of users have access.
GitHub Enterprise Server 3.4 includes improvements to the repository invitation experience, such as notifications for private repository invites, a UI prompt when visiting a private repository you have a pending invitation for, and a banner on a public repository overview page when there is an pending invitation.
You can now use single-character prefixes for custom autolinks. Autolink prefixes also now allow
.
,-
,_
,+
,=
,:
,/
, and#
characters, as well as alphanumerics. For more information about custom autolinks, see “Configuring autolinks to reference external resources.”A
CODE_OF_CONDUCT.md
file in the root of a repository is now highlighted in the “About” sidebar on the repository overview page.
Releases changes* GitHub Enterprise Server 3.4 includes improvements to the Releases UI, such as automatically generated release notes which display a summary of all the pull requests for a given release. For more information, see the “GitHub changelog.”
- When a release is published, an avatar list is now displayed at the bottom of the release. Avatars for all user accounts mentioned in the release notes are shown. For more information, see “Managing releases in a repository.”
Markdown changes* You can now use the new “Accessibility” settings page to manage your keyboard shortcuts. You can choose to disable keyboard shortcuts that only use single characters like S, G C, and . (the period key). For more information, see the “GitHub changelog.”
You can now choose to use a fixed-width font in Markdown-enabled fields, like issue comments and pull request descriptions. For more information, see the “GitHub changelog.”
You can now paste a URL on selected text to quickly create a Markdown link. This works in all Markdown-enabled fields, such as issue comments and pull request descriptions. For more information, see the “GitHub changelog.”
An image URL can now be appended with a theme context, such as
#gh-dark-mode-only
, to define how the Markdown image is displayed to a viewer. For more information, see the “GitHub changelog.”When creating or editing a gist file with the Markdown (
.md
) file extension, you can now use the “Preview” or “Preview Changes” tab to display a Markdown rendering of the file contents. For more information, see the “GitHub changelog.”When typing the name of a GitHub user in issues, pull requests and discussions, the @mention suggester now ranks existing participants higher than other GitHub users, so that it’s more likely the user you’re looking for will be listed.
Right-to-left languages are now supported natively in Markdown files, issues, pull requests, discussions, and comments.
Issues and pull requests changes* The diff setting to hide whitespace changes in the pull request “Files changed” tab is now retained for your user account for that pull request. The setting you have chosen is automatically reapplied if you navigate away from the page and then revisit the “Files changed” tab of the same pull request.
- When using auto assignment for pull request code reviews, you can now choose to only notify requested team members independently of your auto assignment settings. This setting is useful in scenarios where many users are auto assigned but not all users require notification. For more information, see the “GitHub changelog.”
Branches changes* Organization and repository administrators can now trigger webhooks to listen for changes to branch protection rules on their repositories. For more information, see the “branch_protection_rule” event in the webhooks events and payloads documentation.
When configuring protected branches, you can now enforce that a required status check is provided by a specific GitHub App. If a status is then provided by a different application, or by a user via a commit status, merging is prevented. This ensures all changes are validated by the intended application. For more information, see the “GitHub changelog.”
Only users with administrator permissions are now able to rename protected branches and modify branch protection rules. Previously, with the exception of the default branch, a collaborator could rename a branch and consequently any non-wildcard branch protection rules that applied to that branch were also renamed. For more information, see “Renaming a branch” and “Managing a branch protection rule.”
Administrators can now allow only specific users and teams to bypass pull request requirements. For more information, see the “GitHub changelog.”
Administrators can now allow only specific users and teams to force push to a repository. For more information, see the “GitHub changelog.”
When requiring pull requests for all changes to a protected branch, administrators can now choose if approved reviews are also a requirement. For more information, see the “GitHub changelog.”
GitHub Actions changes* GitHub Actions workflows triggered by Dependabot for the create
, deployment
, and deployment_status
events now always receive a read-only token and no secrets. Similarly, workflows triggered by Dependabot for the pull_request_target
event on pull requests where the base ref was created by Dependabot, now always receive a read-only token and no secrets. These changes are designed to prevent potentially malicious code from executing in a privileged workflow. For more information, see “Automating Dependabot with GitHub Actions.”
Workflow runs on
push
andpull_request
events triggered by Dependabot will now respect the permissions specified in your workflows, allowing you to control how you manage automatic dependency updates. The default token permissions will remain read-only. For more information, see the “GitHub changelog.”GitHub Actions workflows triggered by Dependabot will now be sent the Dependabot secrets. You can now pull from private package registries in your CI using the same secrets you have configured for Dependabot to use, improving how GitHub Actions and Dependabot work together. For more information, see “Automating Dependabot with GitHub Actions.”
You can now manage runner groups and see the status of your self-hosted runners using new Runners and Runner Groups pages in the UI. The Actions settings page for your repository or organization now shows a summary view of your runners, and allows you to deep dive into a specific runner to edit it or see what job it may be currently running. For more information, see the “GitHub changelog.”
Actions authors can now have their action run in Node.js 16 by specifying
runs.using
asnode16
in the action’saction.yml
. This is in addition to the existing Node.js 12 support; actions can continue to specifyruns.using: node12
to use the Node.js 12 runtime.For manually triggered workflows, GitHub Actions now supports the
choice
,boolean
, andenvironment
input types in addition to the defaultstring
type. For more information, see "on.workflow_dispatch.inputs
."Actions written in YAML, also known as composite actions, now support
if
conditionals. This lets you prevent specific steps from executing unless a condition has been met. Like steps defined in workflows, you can use any supported context and expression to create a conditional.The search order behavior for self-hosted runners has now changed, so that the first available matching runner at any level will run the job in all cases. This allows jobs to be sent to self-hosted runners much faster, especially for organizations and enterprises with lots of self-hosted runners. Previously, when running a job that required a self-hosted runner, GitHub Actions would look for self-hosted runners in the repository, organization, and enterprise, in that order.
Runner labels for GitHub Actions self-hosted runners can now be listed, added and removed using the REST API. For more information about using the new APIs at a repository, organization, or enterprise level, see "Repositories", "Organizations", and “Enterprises” in the REST API documentation.
Dependabot and Dependency graph changes* Dependency graph now supports detecting Python dependencies in repositories that use the Poetry package manager. Dependencies will be detected from both pyproject.toml
and poetry.lock
manifest files.
When configuring Dependabot security and version updates on GitHub Enterprise Server, we recommend you also enable Dependabot in GitHub Connect. This will allow Dependabot to retrieve an updated list of dependencies and vulnerabilities from GitHub.com, by querying for information such as the changelogs of the public releases of open source code that you depend upon. For more information, see “Enabling the dependency graph and Dependabot alerts for your enterprise.”
Dependabot alerts alerts can now be dismissed using the GraphQL API. For more information, see the “dismissRepositoryVulnerabilityAlert” mutation in the GraphQL API documentation.
Code scanning and secret scanning changes* The CodeQL CLI now supports including markdown-rendered query help in SARIF files, so that the help text can be viewed in the code scanning UI when the query generates an alert. For more information, see the “GitHub changelog.”
The CodeQL CLI and Visual Studio Code extension now support building databases and analyzing code on machines powered by Apple Silicon, such as Apple M1. For more information, see the “GitHub changelog.”
The depth of CodeQL’s analysis has been improved by adding support for more libraries and frameworks from the Python ecosystem. As a result, CodeQL can now detect even more potential sources of untrusted user data, steps through which that data flows, and potentially dangerous sinks where the data could end up. This results in an overall improvement of the quality of code scanning alerts. For more information, see the “GitHub changelog.”
Code scanning with CodeQL now includes beta support for analyzing code in all common Ruby versions, up to and including 3.02. For more information, see the “GitHub changelog.”
Several improvements have been made to the code scanning API:
- The
fixed_at
timestamp has been added to alerts. This timestamp is the first time that the alert was not detected in an analysis. - Alert results can now be sorted using
sort
anddirection
on eithercreated
,updated
ornumber
. For more information, see “List code scanning alerts for a repository.” - A
Last-Modified
header has been added to the alerts and alert endpoint response. For more information, seeLast-Modified
in the Mozilla documentation. - The
relatedLocations
field has been added to the SARIF response when you request a code scanning analysis. The field may contain locations which are not the primary location of the alert. See an example in the SARIF spec and for more information see “Get a code scanning analysis for a repository.” - Both
help
andtags
data have been added to the webhook response alert rule object. For more information, see “Code scanning alert webhooks events and payloads.” - Personal access tokens with the
public_repo
scope now have write access for code scanning endpoints on public repos, if the user has permission.
For more information, see “Code scanning” in the REST API documentation.
- The
GitHub Advanced Security customers can now use the REST API to retrieve private repository secret scanning results at the enterprise level. The new endpoint supplements the existing repository-level and organization-level endpoints. For more information, see “Secret scanning” in the REST API documentation.
Mobile changes* Support for GitHub Mobile is now enabled by default for new GitHub Enterprise Server instances. If you have not explicitly disabled or enabled GitHub Mobile, GitHub Mobile will be enabled when you upgrade to GitHub Enterprise Server 3.4.0 or later. If you previously disabled or enabled GitHub Mobile for your instance, your preference will be preserved upon upgrade. For more information, see “Managing GitHub Mobile for your enterprise.”
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 needs to be restarted after restoring appliance from backup taken on a different host.
Deprecations****Deprecation of GitHub Enterprise Server 3.0* GitHub Enterprise Server 3.0 was discontinued on February 16, 2022. This means that no patch releases will be made, even for critical security issues, after this date. For better performance, improved security, and new features, upgrade to the newest version of GitHub Enterprise Server as soon as possible.
Deprecation of GitHub Enterprise Server 3.1* GitHub Enterprise Server 3.1 will be discontinued on June 3, 2022. This means that no patch releases will be made, even for critical security issues, after this date. For better performance, improved security, and new features, upgrade to the newest version of GitHub Enterprise Server as soon as possible.
Deprecation of XenServer Hypervisor support* Starting in GitHub Enterprise Server 3.3, GitHub Enterprise Server on XenServer was deprecated and is no longer supported. Please contact GitHub Support with questions or concerns.
Deprecation of the Content Attachments API preview* Due to low usage, we have deprecated the Content References API preview in GitHub Enterprise Server 3.4. The API was previously accessible with the corsair-preview
header. Users can continue to navigate to external URLs without this API. Any registered usages of the Content References API will no longer receive a webhook notification for URLs from your registered domain(s) and we no longer return valid response codes for attempted updates to existing content attachments.
Deprecation of the Codes of Conduct API preview* The Codes of Conduct API preview, which was accessible with the scarlet-witch-preview
header, is deprecated and no longer accessible in GitHub Enterprise Server 3.4. We instead recommend using the “Get community profile metrics” endpoint to retrieve information about a repository’s code of conduct. For more information, see the “Deprecation Notice: Codes of Conduct API preview” in the GitHub changelog.
Deprecation of OAuth Application API endpoints and API authentication using query parameters* Starting with GitHub Enterprise Server 3.4, the deprecated version of the OAuth Application API endpoints have been removed. If you encounter 404 error messages on these endpoints, convert your code to the versions of the OAuth Application API that do not have access_tokens
in the URL. We’ve also disabled the use of API authentication using query parameters. We instead recommend using API authentication in the request header.
Deprecation of the CodeQL runner* The CodeQL runner is deprecated in GitHub Enterprise Server 3.4 and is no longer supported. The deprecation only affects users who use CodeQL code scanning in third party CI/CD systems; GitHub Actions users are not affected. We strongly recommend that customers migrate to the CodeQL CLI, which is a feature-complete replacement for the CodeQL runner. For more information, see the GitHub changelog.
Deprecation of custom bit-cache extensions* Starting in GitHub Enterprise Server 3.1, support for GitHub’s proprietary bit-cache extensions began to be phased out. These extensions are deprecated in GitHub Enterprise Server 3.3 onwards.
Any repositories that were already present and active on your GitHub Enterprise Server instance running version 3.1 or 3.2 will have been automatically updated.
Repositories which were not present and active before upgrading to GitHub Enterprise Server 3.3 may not perform optimally until a repository maintenance task is run and has successfully completed.
To start a repository maintenance task manually, browse to `https://<hostname>/stafftools/repositories/<owner>/<repository>/network` for each affected repository and click the Schedule button.
Backups* GitHub Enterprise Server 3.4 requires at least GitHub Enterprise Backup Utilities 3.4.0 for Backups and Disaster Recovery.