Security and hardening release — five fixed fail-opens since v0.12.4.
Security
- Shell long options no longer hide a piped or process-substituted payload.
A shell consumer carrying an unrecognized no-value long option
(bash --norc,--posix,--login,--noprofile, andshequivalents)
was read as if the option were a script-file operand, so
echo 'rm -rf ~' | bash --norcandbash --norc <(echo 'rm -rf ~')were
allowed. The shell still reads its program from stdin / the substitution,
so the payload is now scanned. Value-taking (--rcfile,--init-file) and
terminal (--,--help,--version,--command) long options are
classified precisely. --rcfile/--init-fileprocess substitutions are treated as executing
sinks. An interactive shell sources its init file at startup, and that file
may be a process substitution:bash --init-file <(…) -iruns the
substitution's output (verified on macOS and Linux). The marker was swallowed
as an inert option value, allowing the payload; it is now evaluated as the
shell's source.-o/-Ostill consume their set-option / shopt name
(which bash rejects rather than executes).
Fixed
- Rebase-recovery no longer unlocks a
gitcommand against the wrong
repository. The recovery-mode working-directory resolver now fails closed
when acdcannot reach thegitsegment through a subshell separator
(cd repo & git restore,cd repo | git restore), when
git-repo-redirecting environment assignments (GIT_DIR=,GIT_WORK_TREE=, …)
re-point git, and onpushd -n/ barepushd. - Denials name the allow-once remedy.
permissionDecisionReasonnow states
the scopeddcg allow-once <code>command for harnesses that surface only the
reason string, and the operator banner lists it abovedcg allowlist add
(#332).
Added
- New
database.databrickspack guarding destructive Databricks CLI
operations (executable-scoped), included in thecareful_companypreset
(#333).
Every archive is signed with minisign and cosign and carries SLSA provenance.
Verify with the bundled install.sh / install.ps1, or against the published
SHA256SUMS and its signatures.