fix(security): [CRITICAL] resolve Denial of Service (DoS) via memory exhaustion in automaton builders#170
Conversation
…exhaustion in automaton builders Adds a MAX_STATES limit (10000) to AbstractAutomatonBuilder to prevent state explosion and memory exhaustion DoS attacks during manual automaton construction. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|



Severity: CRITICAL
Vulnerability: Denial of Service (DoS) via memory exhaustion in automaton builders. The
AbstractAutomatonBuilderallowed an unbounded number of states to be added, leading to potentialOutOfMemoryErrorand application crashes when constructing overly large or malicious automata.Impact: An attacker or malicious input could cause the system to allocate massive amounts of memory for states, leading to application downtime.
Fix: Introduced a
MAX_STATESlimit (10000) inAbstractAutomatonBuilder.javaand enforced it inside theaddStatemethod. A descriptiveIllegalStateExceptionis thrown when the limit is exceeded.Verification: Added
testAddState_ExceedsMaxStatesinAbstractAutomatonBuilderTest.javato verify that attempting to add more than 10000 states securely throws anIllegalStateException. Ranmvn testandmvn spotless:applyto ensure functionality and formatting.PR created automatically by Jules for task 16975968773069851637 started by @Tugamer89