Where
-Infinity
0
Severity
10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N

Impact

Installations which use the GitLab auth connector are vulnerable to identity spoofing by way of configuring a GitLab account with the same full name as another GitLab user who is granted access to a Concourse team by having their full name listed under users in the team configuration or given to the --gitlab-user flag.

See the GitLab auth docs for details.

Concourse installations which do not configure the GitLab auth connector are not affected.

Patches

Concourse v6.3.1 and v6.4.1 were both released with a fix on August 4th, 2020.

Both versions change the GitLab connector to use the username, rather than the full name. This was always the intent, and the previous behavior was originally reported as a bug (concourse/dex#7) prior to being reported as a security issue.

Any Concourse teams which configure GitLab users will have to switch each user from their full name to their username upon upgrading to these versions.

Workarounds

GitLab groups do not have this vulnerability, so GitLab users may be moved into groups which are then configured in the Concourse team.

References

concourse/dex#12: PR with the fix

For more information

If you have any questions or comments about this advisory, you may reach us privately at concourseteam+security@gmail.com.

1 / 2
Source: GitHub
First published (updated )
Severity
5.4
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

Impact For some Post/Put Concourse endpoint containing :teamname in the URL, a Concourse user can send a request with body including :teamname=team2 to bypass team scope check to gain access to certain resources belong to any other team. The user only needs a valid user session and belongs to team2.

Exploitable endpoints: {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/jobs/:jobname/builds/:buildname", Method: "POST", Name: RerunJobBuild}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/jobs/:jobname/pause", Method: "PUT", Name: PauseJob}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/jobs/:jobname/unpause", Method: "PUT", Name: UnpauseJob}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/jobs/:jobname/schedule", Method: "PUT", Name: ScheduleJob},

{Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/pause", Method: "PUT", Name: PausePipeline}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/unpause", Method: "PUT", Name: UnpausePipeline}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/expose", Method: "PUT", Name: ExposePipeline}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/hide", Method: "PUT", Name: HidePipeline}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/rename", Method: "PUT", Name: RenamePipeline}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/archive", Method: "PUT", Name: ArchivePipeline},

{Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/resources/:resourcename/versions/:resourceconfigversionid/enable", Method: "PUT", Name: EnableResourceVersion}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/resources/:resourcename/versions/:resourceconfigversionid/disable", Method: "PUT", Name: DisableResourceVersion}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/resources/:resourcename/versions/:resourceconfigversionid/pin", Method: "PUT", Name: PinResourceVersion}, {Path: "/api/v1/teams/:teamname/pipelines/:pipelinename/resources/:resourcename/unpin", Method: "PUT", Name: UnpinResource}, {Path: "/api/v1/teams/:teamname/artifacts", Method: "POST", Name: CreateArtifact},

Steps to reproduce

1. Set up a Concourse deployment with team 1 (with pipeline 1) and team 2. User is in team 2 but not team 1. 2. Login as user to team 2. fly -t ci login -n team2 -u user -p password 3. Try pausing pipeline 1 in team 1 using fly. Verify the command output is pipeline 'pipeline1' not found. fly -t ci pause-pipeline -p pipeline1

4. Send a customized request through fly curl command intend to pause pipeline 1 again. fly -t ci curl /api/v1/teams/team1/pipelines/pipeline1/pause -- -X PUT -d ":teamname=team2" -H "Content-type: application/x-www-form-urlencoded" 5. pipeline 1 in team 1 will be paused.

In step 4, the parameter pollution would allow an user from any team to pause a pipeline that belongs to other team.

Patches Concourse v6.7.9 and v7.8.3 were both released with a fix on October 12, 2022.

Instead of using FormValue to parse teamname in the request, where allows body parameters to take precedence over URL query string values, both patch versions are now using URL.Query().Get() over multiple scope handlers to prevent the parameter pollution.

Workarounds No known workarounds for existing versions.

References https://github.com/concourse/concourse/pull/8566: PR with the fix

For more information If you have any questions or comments about this advisory, you may reach us privately at security@concourse-ci.org.

1 / 2
Source: GitHub
First published (updated )
Severity
7.5
Infoleak
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Pivotal Concourse, all versions prior to 4.2.2, puts the user access token in a url during the login flow. A remote attacker who gains access to a user's browser history could obtain the access token and use it to authenticate as the user.

First published (updated )
Severity
7.5
SQL Injection
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Pivotal Concourse version 5.0.0, contains an API that is vulnerable to SQL injection. An Concourse resource can craft a version identifier that can carry a SQL injection payload to the Concourse server, allowing the attacker to read privileged data.

First published (updated )
Severity
7.6
AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N

Pivotal Concourse Release, versions 4.x prior to 4.2.2, login flow allows redirects to untrusted websites. A remote unauthenticated attacker could convince a user to click on a link using the oAuth redirect link with an untrusted website and gain access to that user's access token in Concourse.

1 / 2
First published (updated )
Severity
7.6
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Pivotal Concourse, most versions prior to 6.0.0, allows redirects to untrusted websites in its login flow. A remote unauthenticated attacker could convince a user to click on a link using the OAuth redirect link with an untrusted website and gain access to that user's access token in Concourse. (This issue is similar to, but distinct from, CVE-2018-15798.)

First published (updated )
Severity
7.5
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Pivotal Concourse after 2018-03-05 might allow remote attackers to have an unspecified impact, if a customer obtained the Concourse software from a DNS domain that is no longer controlled by Pivotal. The original domain for the Concourse CI (concourse-dot-ci) open source project has been registered by an unknown actor, and is therefore no longer the official website for Concourse CI. The new official domain is concourse-ci.org. At approximately 4 am EDT on March 7, 2018 the Concourse OSS team began receiving reports that the Concourse domain was not responding. The Concourse OSS team discovered, upon investigation with both the original and the new domain registrars, that the originating domain registrar had made the domain available for purchase. This was done despite the domain being renewed by the Concourse OSS team through August 2018. For a customer to be affected, they would have needed to access a download from a "concourse-dot-ci" domain web site after March 6, 2018 18:00:00 EST. Accessing that domain is NOT recommended by Pivotal. Anyone who had been using that domain should immediately begin using the concourse-ci.org domain instead. Customers can also safely access Concourse software from the traditionally available locations on the Pivotal Network or GitHub.

First published (updated )

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203