SECURITY (#1115): mosaic-init evaled interactive prompt answers (eval "$var_name=\"$value\"" at 4 sites) — a $() or backtick in the FIRST command a new user runs executed arbitrary code / crashed init. Fixed: printf -v "$var_name" %s "$value" at all four sites (0 eval remaining). Red-first regression test test-mosaic-init-rce.sh feeds literal "$(touch /tmp/pwned)" and asserts the answer round-trips LITERALLY and /tmp/pwned is never created. fred §4 gate: code+security PASS, test reproduced green. Structure-independent (does not depend on the ~/.mosaic/W-F rework). Found by scooby greenfield audit.
SECURITY (#1115): mosaic-init evaled interactive prompt answers (eval "$var_name=\\"$value\\"" at 4 sites) — a $() or backtick in the FIRST command a new user runs executed arbitrary code / crashed init. Fixed: printf -v "$var_name" %s "$value" at all four sites (0 eval remaining). Red-first regression test test-mosaic-init-rce.sh feeds literal "$(touch /tmp/pwned)" and asserts the answer round-trips LITERALLY and /tmp/pwned is never created. fred §4 gate: code+security PASS, test reproduced green. Structure-independent (does not depend on the ~/.mosaic/W-F rework). Found by scooby greenfield audit.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
SECURITY (#1115): mosaic-init evaled interactive prompt answers (eval "$var_name=\"$value\"" at 4 sites) — a $() or backtick in the FIRST command a new user runs executed arbitrary code / crashed init. Fixed: printf -v "$var_name" %s "$value" at all four sites (0 eval remaining). Red-first regression test test-mosaic-init-rce.sh feeds literal "$(touch /tmp/pwned)" and asserts the answer round-trips LITERALLY and /tmp/pwned is never created. fred §4 gate: code+security PASS, test reproduced green. Structure-independent (does not depend on the ~/.mosaic/W-F rework). Found by scooby greenfield audit.