You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The setSecret method doesn't document this behaviour in the API docs, it's an external documentation line only found in the docs. AT MINIMUM this should be documented on the method itself.
The actions toolkit library is supposed to be an API to make interacting with GitHub actions easier/safer. By not incorporating any sort of protections on this API, this API leaves users vulnerable to leaking sensitive multi-line secrets to the console.
Fundamentally, this is a security issue because it fails open instead of failing closed.
Impact
Multi-line secrets passed to core.setSecret do not protect those secrets. But because the lack of protection is silent, instead of an error, the end user will not know they are not protected, although the toolkit provides no indication they are not.
Thanks for the submission! This is an intentional design decision and is working as expected and as currently documented. We may make this functionality more strict in the future, but we don't have anything to announce right now. As a result, this is not eligible for reward under the Bug Bounty program.
In my professional opinion, as a Senior Software Security Researcher for the Open Source Security Foundation project Alpha Omega, and a GitHub Security Ambassador, we should avoid insecure-by-default method such as setSecret. We should instead aspire to prevent users from inadvertently shooting themselves in the foot by putting controls in place to protect against these sorts of vulnerabilities.
The text was updated successfully, but these errors were encountered:
I do not. Did they fix the underlying vulnerability? If so, this actually may be completely resolved. I would, however, suggest adding integration tests to ensure there aren't regressions
Original report on H1 to the GitHub security team: https://hackerone.com/reports/1929487
Description:
From the GitHub actions toolkit documentation:
However, if you look at the code for the
setSecret
method doesn't protect against this vulnerability in any way.toolkit/packages/core/src/core.ts
Lines 95 to 101 in 4573039
Steps To Reproduce:
Run the following code in any action script:
Prints the following, without erroring, when this mask will have, as documented, no effect.
Problems
setSecret
method doesn't document this behaviour in the API docs, it's an external documentation line only found in the docs. AT MINIMUM this should be documented on the method itself.Fundamentally, this is a security issue because it fails open instead of failing closed.
Impact
Multi-line secrets passed to
core.setSecret
do not protect those secrets. But because the lack of protection is silent, instead of an error, the end user will not know they are not protected, although the toolkit provides no indication they are not.Response from GitHub Hacker one Triage Team:
In my professional opinion, as a Senior Software Security Researcher for the Open Source Security Foundation project Alpha Omega, and a GitHub Security Ambassador, we should avoid insecure-by-default method such as
setSecret
. We should instead aspire to prevent users from inadvertently shooting themselves in the foot by putting controls in place to protect against these sorts of vulnerabilities.The text was updated successfully, but these errors were encountered: