This is an automated email from the ASF dual-hosted git repository.
paulk-asert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new e28ead4664 minor wording threat model clarification re picocli
@-expansion
e28ead4664 is described below
commit e28ead46643207f145e8a6f65d9f68643f82c6b9
Author: Paul King <[email protected]>
AuthorDate: Mon Sep 7 12:07:21 2026 +1000
minor wording threat model clarification re picocli @-expansion
---
THREAT_MODEL.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/THREAT_MODEL.md b/THREAT_MODEL.md
index ea026c21aa..cf95ee9374 100644
--- a/THREAT_MODEL.md
+++ b/THREAT_MODEL.md
@@ -302,6 +302,7 @@ hunt for the former and discount the latter.
| `jdk.xml.maxElementDepth` | `1000` (Groovy's default; the JAXP default is
`0`, unlimited) | Caps the element nesting depth
`XmlParser`/`XmlSlurper`/`DOMBuilder` accept, so a deeply nested document fails
the parse rather than driving a `StackOverflowError` in the first consumer that
walks the result. Set the property yourself to choose another bound, including
`0` for unlimited; a caller-supplied parser is left alone. Available from
6.0.0. *(documented — verified in `groovy-xml` `Factor [...]
| Grape / `@Grab` resolution | enabled in the runtime; **off** in
AI/automation tooling via `-Dgroovy.grape.enable=false` | Controls whether a
script may fetch and load remote dependencies. Keep off for untrusted scripts.
*(documented — see [`AGENTS.md`](AGENTS.md))* |
| `groovy.asttest.enable` | `true` | When `false`, `@ASTTest` becomes a no-op
instead of evaluating its closure during compilation. Since the closure runs at
compile time, this matters wherever attacker-influenced source is *compiled*,
whether or not the result is then run. Keep off for untrusted source. Available
from 5.1.0 and 6.0.0. *(documented — verified in `ASTTestTransformation`)* |
+| `CliBuilder.expandArgumentFiles` | `true` | When `true`, an argv token
`@file` expands to the contents of `file` (the javac/picocli `@argfile`
convention). The argument vector is developer-supplied and trusted
([§6](#6-assumptions-about-inputs)), so this reads only files the invoker
named; set `false` (or call `setExpandArgumentFiles(false)`) to disable.
*(documented — verified in `CliBuilderInternal`)* |
| `SecureASTCustomizer` allow/deny lists | none unless configured | A
*partial* grammar restriction, not a sandbox. *(documented)* |
| `groovy.antlr4.cache.threshold` and similar | tuning | Resource tuning, not
a security boundary. |