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. |
 

Reply via email to