Repository navigation
argus 0.5.0-rc.1
Pre-releaseargus 0.5.0-rc.1
A release candidate. It is a prerelease: install.sh never resolves it as
latest, and the Homebrew formula is not bumped to it. It exists so the new
refusals below can be tried on a Linux machine before 0.5.0 is tagged.
Breaking, read first:
- A committed profile: in .argus.yml must be a profile directory name:
lowercase letters, digits, dot, underscore and hyphen, not starting with a
dot. A config naming "Generic" or "acme app" is now refused under the rule
project-config, and init asks again rather than writing one. - argus dast and argus guard run refuse an --out that another user could
replace while a scanner starts (rule private-out): a directory on the way
that belongs to another user, or that others can write to without the sticky
bit. A directory writable only by your own per-user group, as umask 002
leaves one on most Linux systems, is allowed. The refusal names the directory
and the chmod that fixes it. Write access granted by an ACL is not detected. - A scope's exclude_paths must be a list of paths. A single string, an empty
item, or an item holding a line break or a non-ASCII byte is refused under
scope-file; before, each was silently dropped, and ZAP could request a URL
the scope meant to exclude.
What changed:
- Every command speaks through one output system. A terminal gets colour,
aligned rows and a held-back view of bookkeeping; a pipe or a CI log gets
every line, plain. -q prints only what needs you (refusals, failures,
SUSPECT, NOT CHECKED, the verdict); -v prints everything; --no-color,
--plain and --no-input do what they say. docs/CI.md lists them. - Refusals are one block: REFUSED, the rule word a CI job can match, and what
to do. docs/CI.md lists every rule word and the commands that print it. - argus init asks its questions in place, answered with the arrow keys or by
typing; piped, it asks nothing. It asks git whether .argus/ is ignored and
adds the entry when nothing ignores it. - gate and review report a scanner that is not installed, left an empty or
misshapen report, or could not read a directory, as NOT CHECKED, never as
clean. - dast streams each stage live and summarises every SUSPECT and failed stage,
even under -q. Its exit is 3 over 1 over 4, whatever order the stages ran.
The one file it writes, operator.md, is only ever created, in the directory
it judged and holds for the whole run; each scanner runs in that same
directory, and a replaced --out stops the run and says so. The exclude list
is printed in ZAP's run, the one tool that honours it, and one line says the
other tools do not. - A run writes only files it creates, never through a link or a second name,
and never into argus's own inputs. - Whether evidence is gitignored is asked of the repository the evidence is
actually in, without running that repository's hooks or fsmonitor, and
without trusting GIT_DIR and friends from the environment. - A command printed for you to paste stays one inert command, whatever bytes a
path holds.
Known, and not in this candidate: terminal control bytes in a path still reach
the screen in plain rows (#121); a folder named with non-ASCII letters gets a
chmod line that cannot be pasted as printed, among the refusal gaps in #122.
This release is not signed. SHA256SUMS catches a corrupt download and proves
nothing about who built the bytes; provenance is the decision docs/adr/0008
leaves open.
-----BEGIN PGP SIGNATURE-----
iJEEABYKADkWIQTKKELDW9dCd1WCColBoKZCVabq8AUCarVt6BsUgAAAAAAEAA5t
YW51MiwyLjUrMS4xMiwwLDMACgkQQaCmQlWm6vDfZAD/TRDfJyiy5A6KHOzCog9c
1ZIISpsWc2Xh1BLcjRyndyQA+wbFFi890H7JVir1YA3YFaDnBPf4wcbXzHc+gDll
RIIC
=1bgb
-----END PGP SIGNATURE-----