> What would that accomplish? It certainly wouldn't have stopped this attack.
We could write an entire PhD thesis on the number of dire technical failings that would need to be addressed to stop this attack, so while this alone wouldn't have stopped it, it would have required the actor to come up with another vector of code injection which would have been easier to find.
> Only if you forbid bootstrapping
Codebases that bootstrap are the 0.1%. Those can be built via `bash build.sh` rather than deceptively hiding a Turing-complete environment behind a declarative one. Even if you need to have these in your trusted computing base somewhere, we can focus auditing resources there, especially once we've reduced the amount of auditing that we need to do on the other 99.9% of codebases now that we've systematically limited the build-time shenanigans that they can get up to.
Concretely, what security issues are solved by forcing the build specification language to be Turing incomplete? My guess is the answer is "none."
At worst, you're actually creating more holes. The reason autoconf/automake exist and M4 scripts are innocuous in the first place is because the build system uses an underpowered language and developers have to turn to code generation to get around it.
If you kneecap the build system's language you're not solving problems. You're creating them.
> it would have required the actor to come up with another vector of code injection which would have been easier to find.
If make was standardized and could programmatically determine the environment its run under and write full programs then the attack vector wouldn't exist in the first place.
> Codebases that bootstrap are the 0.1%.
We have different experiences, because ime it's close to 100% especially when you include transitive dependencies. When you care about supply chain security you care about being able to bootstrap from sources for your code and all your dependencies, and it's almost guaranteed that one of your dependencies needs to be bootstrapped.
> 99.9% of all projects have the capability to be built with trivial declarative rulesets.
Only if you forbid bootstrapping, which all projects ultimately rely on at some point in their supply chain.