-
Notifications
You must be signed in to change notification settings - Fork 33
Revise QA-04.01 to apply only to projects with subprojects, move to level 2 #441
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…evel 2 Signed-off-by: Evan Anderson <evan.k.anderson@gmail.com>
funnelfiasco
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Strictly speaking, this is (as I understand it) less about dependencies and more about different repos for different parts of the same end "product" (e.g. a CLI tool and a web app). That's probably not important for this change, but I just wanted to write it down in case it sparks further conversation.
I initially supported keeping this as a Level 1, but on further discussion, I was convinced that the intersection of "immature" projects and projects with this complexity is small enough to make a 2+ reasonable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like adding the condition to omit this requirement for projects with only one repo. A manual assessment of the baseline should be able to skip over this without any fuss. 👍
But I strongly disagree on it being a maturity 2 item.
Any project with multiple repos should already be doing this. It is unlikely that they won't document their subproject repos.
And adding it is a very simple change. For projects that want manual review this could go in the README.md, for projects that want automated reviews this could live in the SECURITY-INSIGHTS.yml.
If they fail to provide this information, we can't confidently assess whether the project is actually following the baseline. And for end users of projects with build or delivery processes hosted in separate repos, this will NOT be tracked in dependency management. Those will become shadow repos, unseen and unknown by anyone outside of core contributors.
funnelfiasco
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding a fake nack to allow more time for discussion
Ah -- you're imagining a situation where (for example) the CI for a project is in a different repo from the main software development, and the linkage isn't clear? I'll buy that, though I'm not sure for a 1-person project that the payoff is substantial. If we are going to require this, it should be an inventory of all the project components, including additional services beyond source code repos that are used by the project. For example, a Jenkins or TravisCI instance which is configured outside the repo itself, or services like Codecov. |
|
I agree that if it was purely CI we're discussing, that complexity probably wouldn't merit level 1. But it's not always just CI. And the simplicity of just naming your subproject repos renders that moot anyhow. There is virtually no complexity, it affects a low number of projects with the added condition statement, and it creates a LOT of value for folks who are doing security reviews. |
|
Okay, looking at all the text in the control and assessment, we get:
and then:
With the follow-on .02 assessment adding:
So this pretty clearly does not cover CI-only repos (or CI at all). Thinking further about CI, supporting repos containing CI configuration might span multiple projects. In fact, one common case would be to have workflows in the My $0.02 would be to change this to:
The current language and requirements is sort of weird -- we already (QA-02) require a list of dependencies which should capture additional first and third party repos "compiled into a release". I'm not arguing against having a consistent policy across a project's repos, but I'm trying to figure out why that's something that baseline cares about, and why "subprojects" are an important distinction from other types of assets. Concretely, I seem to recall at one point that the GUAC visualizer was a different project from the GUAC backend. Is there a subproject relationship there, or are they two projects that work well (or even have a dependency), but QA-04 doesn't apply at all. |
We consider them as distinct projects from a "things we ship to users" perspective. GUAC Visualizer is "experimental" and not released with GUAC proper, even though the Visualizer is useless without a running GUAC instance.
There's compiled and then there's compiled. QA-02 is about things that are compiled in the "we created a binary" sense. QA-04 is about things that are compiled in the "we put a bunch of things into a nice box for your convenience" sense. We should probably not use "compiled" in -04 since that term means something specific to computer people, even though the usage is technically correct from a general English perspective. |
As discussed in the 2025-11-25 meeting.
In my opinion, if projects with only a single repository don't need to do anything (e.g. no security-insights or SBOM) to indicate that status, then the assessment is not harmful but maybe not useful. In particular, it becomes difficult to assess whether an absence of information means that there is are no sub-projects, or that the control has not been followed. (In general, sub-projects and the scope of "what is a project" is tricky, and I believe we aren't clear enough in our own documentation yet. Our current definition is "A group of people and resources that coordinate to produce a release.") I would be _happy_ to support more work on allowing projects to define "this is our set of assets" in an affirmatory way, and to require it at a certain maturity level. Ideally, this would include not just software repositories, but also distribution channels and other resources.
I believe the concern behind QA-04 as a whole is that a level-3 project ("do-important-thing") might choose to put all their less-savory practices in a sub-project (e.g. "dirty-laundry") and then consume that project through a dependency mechanism. It's not clear to me how relevant that concern is, given that a project might also depend on a third-party or generic library with the same security properties.
A more important property (to me) is being able to affirmatively know that consuming things from the
@babelNPM prefix are owned by https://github.com/babel/babel (for example). I don't know if we have a mechanism or control for that today, but (if widely adopted) that seems helpful for distinguishing typoquatting and other supply chain attacks.