83 lines
9.3 KiB
YAML
83 lines
9.3 KiB
YAML
date: '2025-04-17'
|
||
sections:
|
||
security_fixes:
|
||
- |
|
||
**HIGH**: An attacker could execute arbitrary code, potentially leading to privilege escalation and system compromise, by exploiting the pre-receive hook functionality to bind to dynamically allocated ports that become temporarily available, such as during a hot patch upgrade. This vulnerability is only exploitable under specific operational conditions, such as during the hot patching process, and requires either site administrator permissions or a user with privileges to modify repositories containing pre-receive hooks. GitHub has requested CVE ID: [CVE-2025-3509](https://www.cve.org/cverecord?id=CVE-2025-3509) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/).
|
||
- |
|
||
**MEDIUM:** An attacker could view private repository names, which the signed-in user is not authorized to see, in the GitHub Advanced Security Overview. This was due to a missing authorization check and occurred when filtering with _only_ `archived:`. GitHub has requested CVE ID [CVE-2025-3124](https://www.cve.org/CVERecord?id=CVE-2025-3124) for this vulnerability.
|
||
- |
|
||
**HIGH**: An attacker could exploit an improper neutralization of input vulnerability in GitHub’s Markdown rendering to embed malicious HTML/CSS in math blocks `$$ .. $$`, which allowed cross-site scripting. Exploitation required access to the target GitHub Enterprise Server instance and privileged user interaction with the malicious elements. To mitigate this issue, GitHub has disallowed math blocks to be escaped early by dollar signs and improved math-rendered content by ensuring we escape non-wrapped content. GitHub has requested [CVE-2025-3246](https://www.cve.org/cverecord?id=CVE-2025-3246) for this vulnerability, which was reported via the [GitHub Bug Bounty program](https://bounty.github.com/).
|
||
bugs:
|
||
- |
|
||
For instances in a high availability configuration, because there was no Nomad job for the `aqueduct-lite` service on replica nodes, generating a support bundle from the command line on a replica would result in the erroneous error `ERROR: Failed to get elastomer index build progress` being reported.
|
||
- |
|
||
In very large enterprises, customers who made multiple API requests to get Dependabot alerts for their enterprise encountered performance issues with the GitHub API.
|
||
- |
|
||
In the commit author filter dropdown on the commit history page for a repository, users could not search for a specific author (such as `foo`) if their search query had already returned a similar username (such as `foobar`).
|
||
- |
|
||
Pruning unreachable Git objects on a single replica could cause increased CPU load due to many Git checksum recalculations.
|
||
- |
|
||
Various repository content API endpoints were unable to parse revisions containing invalid UTF-8 byte sequences, triggering `500 Internal Server Error` responses.
|
||
- |
|
||
The "Get allowed actions and reusable workflows" APIs for enterprises, organizations, and repositories did not include the `verified_allowed` response field.
|
||
- |
|
||
Using the "Update a secret scanning alert" REST API endpoint (`PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}`) to change the resolution and resolution comment for a closed alert would return a `422` error.
|
||
- |
|
||
In some cases during an upgrade, GitHub Advanced Security migration `DelegatedBypassConfigurationNotNil` failed.
|
||
- |
|
||
On an instance with GitHub Advanced Security and code scanning enabled, existing code scanning alerts that referenced other code failed to load after an upgrade.
|
||
changes:
|
||
- |
|
||
Upgrading using a hot patch package will fail if the Elasticsearch status is not green. To help prevent post-upgrade problems when the Elasticsearch status is red, usually in a high-availability configuration, a check has been added.
|
||
- |
|
||
Merging a pull request using the "Rebase and merge" option is now limited to 100 commits. If you have a pull request with more than 100 commits, you need to either create a merge commit, squash and merge, or split the commits into multiple pull requests.
|
||
- |
|
||
The `spokesctl info` and `spokesctl repos` commands now also show wikis that are part of a network.
|
||
known_issues:
|
||
- |
|
||
Custom firewall rules are removed during the upgrade process.
|
||
- |
|
||
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.
|
||
- |
|
||
If the root site administrator is locked out of the Management Console after failed login attempts, the account does not unlock automatically after the defined lockout time. Someone with administrative SSH access to the instance must unlock the account using the administrative shell. For more information, see "[AUTOTITLE](/admin/configuration/administering-your-instance-from-the-management-console/troubleshooting-access-to-the-management-console#unlocking-the-root-site-administrator-account)."
|
||
- |
|
||
On an instance with the HTTP `X-Forwarded-For` header configured for use behind a load balancer, all client IP addresses in the instance's audit log erroneously appear as 127.0.0.1.
|
||
- |
|
||
{% data reusables.release-notes.large-adoc-files-issue %}
|
||
- |
|
||
Admin stats REST API endpoints may timeout on appliances with many users or repositories. Retrying the request until data is returned is advised.
|
||
- |
|
||
When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed.
|
||
- |
|
||
Running a config apply as part of the steps for [Replacing a node in an emergency](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-a-node-in-an-emergency) may fail with errors if the node being replaced is still reachable. If this occurs, shutdown the node and repeat the steps.
|
||
- |
|
||
{% data reusables.release-notes.2024-06-possible-frontend-5-minute-outage-during-hotpatch-upgrade %}
|
||
- |
|
||
When restoring data originally backed up from a 3.13 or greater appliance version, the Elasticsearch indices need to be reindexed before some of the data will show up. This happens via a nightly scheduled job. It can also be forced by running `/usr/local/share/enterprise/ghe-es-search-repair`.
|
||
- |
|
||
An organization-level code scanning configuration page is displayed on instances that do not use GitHub Advanced Security or code scanning.
|
||
- |
|
||
When following the steps for [Replacing the primary MySQL node](/admin/monitoring-managing-and-updating-your-instance/configuring-clustering/replacing-a-cluster-node#replacing-the-primary-mysql-node), step 14 (running `ghe-cluster-config-apply`) might fail with errors. If this occurs, re-running `ghe-cluster-config-apply` is expected to succeed.
|
||
- |
|
||
When enabling automatic update checks for the first time in the Management Console, the status is not dynamically reflected until the "Updates" page is reloaded.
|
||
- |
|
||
When restoring from a backup snapshot, a large number of `mapper_parsing_exception` errors may be displayed.
|
||
- |
|
||
When initializing a new GHES cluster, nodes with the `consul-server` role should be added to the cluster before adding additional nodes. Adding all nodes simultaneously creates a race condition between nomad server registration and nomad client registration.
|
||
- |
|
||
Admins setting up cluster high availability (HA) may encounter a spokes error when running `ghe-cluster-repl-status` if a new organization and repositories are created before using the `ghe-cluster-repl-bootstrap` command. To avoid this issue, complete the cluster HA setup with `ghe-cluster-repl-bootstrap` before creating new organizations and repositories.
|
||
- |
|
||
Some customers upgrading from 3.11.x or 3.12.x may experience a bug with the feature "Automatic update checks", filling the root disk with logs causing a system degradation. To prevent this, you can turn off the feature "[Enable automatic update check](/admin/upgrading-your-instance/preparing-to-upgrade/enabling-automatic-update-checks#enabling-automatic-update-checks)" in the management console.
|
||
- |
|
||
In a cluster, the host running restore requires access the storage nodes via their private IPs.
|
||
- |
|
||
On an instance hosted on Azure, commenting on an issue via email meant the comment was not added to the issue.
|
||
- |
|
||
After a restore, existing outside collaborators cannot be added to repositories in a new organization. This issue can be resolved by running `/usr/local/share/enterprise/ghe-es-search-repair` on the appliance.
|
||
- |
|
||
After a geo-replica is promoted to be a primary by running `ghe-repl-promote`, the actions workflow of a repository does not have any suggested workflows.
|
||
- |
|
||
Repository Cache Replicas return `Repository not found` when changes have been pushed to the Primary instance that have not yet synchronized to the Cache Replica. This issue can also occur in all previous patches of this release.
|
||
- |
|
||
The security risk page returns a 500 error when secret scanning is disabled. [Updated: 2025-04-25]
|