Fix: Unauthorized users can be allowed to view the private pipeline if the logged-in user's scmContext and the pipeline's scmContext are different (scm-github) #194
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
If multiple ghe instances are available from Screwdriver.cd, you may be able to see private pipelines that shouldn't be visible.
For example, if you have the following ghe instances:
Create a private pipeline
private-1
onghe-b
. In this case, the user logged in to the Screwdriver in the context ofghe-b
will not be able to viewprivate-1
. This access is 404 because this user's privileges cannot look up the target pipeline.The problem occurs when the user's login context is
ghe-a
. ThelookUpScmUri
function does not take into account the pipeline's scmContext at all and uses the user's login context to get the repository information. Therefore, although the repository id is the same asprivate-1
, the destination isghe-a
. Since this meaningless repository is public, you can see what you shouldn't be able to see after passing authentication.Objective
Check the user's login context just before hitting the API to look up GHE. Accessing a GHE instance in a different context is meaningless and throws an error.
References
PR for scm-gitlab
screwdriver-cd/scm-gitlab#46
License
I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.