Headline
CVE-2023-22381: Release notes - GitHub Enterprise Server 3.8 Docs
A code injection vulnerability was identified in GitHub Enterprise Server that allowed setting arbitrary environment variables from a single environment variable value in GitHub Actions when using a Windows based runner. To exploit this vulnerability, an attacker would need existing permission to control the value of environment variables for use with GitHub Actions. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.8.0 and was fixed in versions 3.4.15, 3.5.12, 3.6.8, 3.7.5. This vulnerability was reported via the GitHub Bug Bounty program.
Projects beta
Projects, the flexible tool for planning and tracking work on GitHub Enterprise Server, is now available as a beta. A project is an adaptable spreadsheet that integrates issues and pull requests to help users plan and track work effectively. Users can create and customize multiple views, and each view can filter, sort, and group issues and pull requests. Users can also define custom fields to track the unique metadata for a team or project, allowing customization for any needs or processes. This feature is subject to change. For more information, see “About Projects (beta).”
Instance administration
Site administrators can improve the security of an instance by creating dedicated user accounts for the Management Console. Only the root site administrator can create user accounts. To control access for the user accounts, assign either the editor or operator role. Operators can manage administrative SSH access for the instance. For more information, see “Managing access to the Management Console.”
To establish or comply with internal policies, site administrators can use the Management Console to configure an instance’s policy for retention of data related to checks, including checks data generated by GitHub Actions and the Statuses API. Administrators can enable or disable retention, set a custom retention threshold, or set a custom hard-delete threshold.
When generating support bundles using the ghe-support-bundle command-line utility, site administrators can specify the exact duration to use for collection of data in the bundle. For more information, see “Command-line utilities.”
Identity and access management
Users can review and revoke both browser and GitHub Mobile sessions for a GitHub Enterprise Server instance. For more information, see “Viewing and managing your sessions.”
Policies
Enterprise owners can configure whether repository administrators can enable or disable Dependabot alerts. On instances with a GitHub Advanced Security license, enterprise owners can also set policies to control whether repository administrators can enable GitHub Advanced Security features or secret scanning. For more information, see “Enforcing policies for code security and analysis for your enterprise.”
Audit logs
Enterprise and organization owners can support adherance to the principle of least privilege by granting access to audit log endpoints without providing full administrative privileges. To provide this access, personal access tokens and OAuth apps now support the read:audit_log scope. For more information, see “Using the audit log API for your enterprise.”
Enterprise owners can more easily detect and trace activity associated with authentication tokens by viewing token data in audit log events. For more information, see “Identifying audit log events performed by an access token.”
Enterprise owners can configure audit log streaming to a Datadog endpoint. For more information, see “Streaming the audit log for your enterprise.”
GitHub Advanced Security
Enterprise owners on an instance with a GitHub Advanced Security license can view changes to GitHub Advanced Security, secret scanning, and push protection enablement in the audit log. Organization owners can view changes to custom messages for push protection in the audit log. For more information, see the following documentation.
- “business_secret_scanning category actions,” “business_secret_scanning_push_protection category actions,” and “business_secret_scanning_push_protection_custom_message category actions” in “Audit log events for your enterprise”
- “Reviewing the audit log for your organization”
Enterprise owners on an instance with a GitHub Advanced Security license can ensure compliance and simplify the rollout of secret scanning and push protection to all organizations on the instance using the REST API. This endpoint supplements the existing web UI, as well as the endpoints for repositories and organizations. For more information, see “Code security and analysis” in the REST API documentation.
Enterprise and organization owners who use secret scanning on an instance with a GitHub Advanced Security license can use the REST API to specify a custom link to display when push protection blocks a push containing a secret. For more information, see “Code security and analysis” or “Organizations” in the REST API documentation.
Users on an instance with a GitHub Advanced Security license who dismiss a secret scanning alert can help other users understand the reason for dismissal by providing an optional comment using the web UI or REST API. For more information, see the following documentation.
- “Managing alerts from secret scanning”
- “Secret scanning” in the REST API documentation
Users on an instance with a GitHub Advanced Security license can filter results from the Code Scanning API based on alert severity at either the repository or organization levels. Use the severity parameter to return only code scanning alerts with a specific severity. For more information, see “Code Scanning” in the REST API documentation.
Users on an instance with a GitHub Advanced Security license can analyze two additional languages for vulnerabilities and errors using CodeQL code scanning. Support for Ruby is generally available, and support for Kotlin is in beta and subject to change.
- Ruby analysis can detect more than twice the number of common weaknesses (CWEs) it could detect during beta. A total of 30 rules can identify a range of vulnerabilities, including cross-site scripting (XSS), regular expression denial-of-service (ReDoS), SQL injection, and more. Additional library and framework coverage for Ruby-on-Rails ensures that web service developers get even more precise results. GitHub Enterprise Server supports all common Ruby versions, up to and including 3.1.
- Kotlin support is an extension of existing Java support, and benefits from the existing CodeQL queries for Java, which apply to both mobile and server-side applications. GitHub has also improved and added a range of mobile-specific queries, covering issues such as handling of Intents, Webview validation problems, fragment injection, and more.
For more information about code scanning, see “About code scanning with CodeQL.”
Users on an instance with a GitHub Advanced Security license who use CodeQL code scanning can customize the build configuration for Go analysis within the GitHub Actions workflow file. Existing CodeQL workflows for Go analysis require no changes, and will continue to be supported. For more information, see “Configuring the CodeQL workflow for compiled languages.”
Dependabot
To improve code security and simplify the process of updating vulnerable dependencies, more users can receive automatic pull requests with dependency updates.
- GitHub Actions authors can automatically update dependencies within workflow files.
- Dart or Flutter developers who use Pub can automatically update dependencies within their projects.
For more information, see “About Dependabot security updates.”
Dart and JavaScript developers on an instance with the dependency graph enabled can receive Dependabot alerts for known vulnerabilities within a project’s dependencies.
- For Dart, the dependency graph detects pubspec.lock and pubspec.yaml files.
- JavaScript developers who use Node.js and npm can receive alerts for known vulnerabilities within Yarn v2 and v3 manifests. This supplements the existing support for v1 manifests. The dependency graph detects package.json, and yarn.lock files.
For more information, see the following articles.
- “About the dependency graph”
- “Browsing security advisories in the GitHub Advisory Database”
- “About Dependabot alerts”
Python developers who use supported package managers on an instance with the dependency graph enabled can receive Dependabot alerts for dependencies within pyproject.toml files that follow the PEP 621 standard. For more information, see “About Dependabot version updates.”
Python developers who receive Dependabot alerts can reduce the number of version updates when a current dependency requirement is already satisfied by a new version. To configure this behavior, use the increase-if-necessary versioning strategy. For more information, see “Configuration options for the dependabot.yml file.”
Enterprise owners can retrieve Dependabot alerts for the instance using the REST API. This endpoint is in beta and subject to change. For more information, see “Dependabot alerts” in the REST API documentation.
Organization owners can retrieve Dependabot alerts for the organization using the REST API. This endpoint is in beta and subject to change. For more information, see “Dependabot alerts.”
Users can programmatically view and act on Dependabot alerts using the REST API. New endpoints to view, list, and update Dependabot alerts are available in beta. These endpoints are subject to change. For more information, see “Dependabot alerts” in the REST API documentation.
Code security
To increase visibility into security posture and improve risk analysis, users can access coverage and risk views within the security overview. The coverage view shows enablement across repositories, while the risk view surfaces alerts across repositories. Organization owners, security managers, and repository administrators on an instance with a GitHub Advanced Security license can enable security features from the security overview’s coverage view. The views replace the “Overview” page, and are in public beta and subject to change. For more information, see “About the security overview.”
Contributors can define a repository’s security policy by creating a SECURITY.md file. To increase the policy’s visibility, GitHub Enterprise Server will link to the policy from the repository’s Code tab. For more information, see “Adding a security policy to your repository.”
The Dependency review API is generally available, and the associated GitHub Action now allows users to reference a local or external configuration file. For more information, see the following documentation.
- “Dependency review” in the REST API documentation
- “Configuring dependency review”
The GraphQL API provides access to a repository’s dependency graph. This feature is in preview and subject to change. For more information, see “Objects” in the GraphQL API documentation.
GitHub Actions
During configuration of storage for GitHub Actions, site administrators can avoid risks associated with the input of sensitive secrets and access keys by using OIDC to connect to object storage providers. GitHub Actions on GitHub Enterprise Server supports OIDC for connections to AWS, Azure, and Google Cloud Platform. This feature is in beta and subject to change. For more information, see “Enabling GitHub Actions for GitHub Enterprise Server.”
To prevent untrusted logging of data from the set-state and set-output workflow commands, action authors can use environment files for the management of state and output.
- To use this feature, the runner application must be version 2.297.0 or later. Versions 2.298.2 and later will warn users who use the save-state or set-output commands. These commands will be fully disabled in a future release.
- To use the updated saveState and setOutput functions, workflows using the GitHub Actions Toolkit must call @actions/core v1.10.0 or later.
For more information, see “Workflow commands for GitHub Actions.”
The ability to share actions and reusable workflows from private repositories is generally available. Users can share workflows in a private repository with other private repositories owned by the same organization or user account, or with all private repositories on the instance. For more information, see the following documentation.
- “Managing GitHub Actions settings for a repository”
- “GitHub Actions Permissions” in the REST API documentation
Users can improve workflow readability and avoid the need to store non-sensitive configuration data as encrypted secrets by defining configuration variables, which allow reuse across workflows in a repository or organization. This feature is in beta and subject to change. For more information, see “Variables.”
Users can dynamically name workflow runs. run-name accepts expressions, and the dynamic name appears in the list of workflow runs. For more information, see “Workflow syntax for GitHub Actions.”
Users can prevent a job from running on a runner outside the intended group by defining the names of the intended runner groups for a workflow within the runs-on key.
runs-on: group: my-group labels: [ self-hosted, label-1 ]
Additionally, GitHub Enterprise Server will no longer allow the creation of runner groups with identical names at the organization and enterprise level. A warning banner will appear for any runner groups within an organization that share a name with a runner group for the enterprise.
Users can enforce standard CI/CD practices across all of an organization’s repositories by defining required workflows. These workflows are triggered as required status checks for all pull requests that target repositories’ default branch, which blocks merging until the check passes. This feature is in beta and subject to change. For more information, see “Required workflows.”
To enable standardization of OIDC configurations across cloud deployment workflows, organization owners and repository administrators can configure the subject claim format within OIDC tokens by defining a custom template. For more information, see “About security hardening with OpenID Connect.”
To enable more transparency and control over cache usage within repositories, users who cache dependencies and other reused files with actions/cache can manage caches from the instance’s web UI. For more information, see “Caching dependencies to speed up workflows.”
Users can set expectations surrounding availability by displaying a local timezone within their profiles. People who view the user’s profile or hovercard will see the timezone, as well as how many hours behind or ahead they are of the user’s local time. For more information, see “Personalizing your profile.”
GitHub Discussions
To improve discoverability, GitHub Discussions features the following improvements.
- Repository owners can pin discussions to a specific category.
- Category titles and descriptions are displayed on the category’s page.
Organizations
To manage how organization members fork repositories, organization owners can set a dedicated forking policy for any organization. This policy must be stricter than an a forking policy set for the enterprise. For more information, see “Managing the forking policy for your organization.”
Organization owners can improve organization security by preventing outside collaborators from requesting the installation of GitHub and OAuth apps. For more information, see “Limiting OAuth App and GitHub App access requests.”
Repositories
To avoid providing full administrative access to a repository when unnecessary, repository administrators can create a custom role that allows users to bypass branch protections. To enforce branch protections for all users with administrative access or bypass permissions, administrators can enable Do not allow bypassing the above settings. For more information, see “Managing custom repository roles for an organization” and “About protected branches.”
Repository administrators can ensure the security and stability of branches by requiring pull request approval by someone other than the last pusher, or by locking the branch. For more information, see “About protected branches.”
In scenarios where someone should review code within a GitHub Actions workflow before the workflow runs, repository administrators can require approval from a user with write access to the repository before a workflow run can be triggered from a private fork. For more information, see “Managing GitHub Actions settings for a repository.”
Issues
The GraphQL API supports creation and removal of the link between a branch and an issue. For more information, see the following documentation.
- “Creating a branch to work on an issue”
- “createLinkedBranch” and “deleteLinkedBranch” in the “Mutations” GraphQL API documentation
- “Objects” in the GraphQL API documentation
Pull requests
Users with multiple email addresses associated with their accounts can better ensure that Git commits created by squash-merging are associated with the correct email address. When merging the pull request, a drop-down menu will appear, allowing the user to select the email address to use as the commit’s author.
Releases
Users can mark a specific release within a repository as the latest release using the web UI, REST API, or GraphQL API. For more information, see the following documentation.
- “Managing releases in a repository”
- “Releases” in the REST API documentation
- “Objects” in the GraphQL API documentation
Integrations
Users can save time and switch context less often by receiving and acting on real-time updates about GitHub Enterprise Server activity directly within Slack or Microsoft Teams. GitHub’s integrations for these services are now generally available. For more information, see “GitHub extensions and integrations.”
Related news
An authorization/sensitive information disclosure vulnerability was identified in GitHub Enterprise Server that allowed a fork to retain read access to an upstream repository after its visibility was changed to private. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.10.0 and was fixed in versions 3.9.4, 3.8.9, 3.7.16 and 3.6.18. This vulnerability was reported via the GitHub Bug Bounty program.