Changelog¶
All notable changes to ReDoctor are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.4] - 2026-01-10¶
Added¶
- Match Mode Configuration: New
MatchModesetting to control false positive behavior AUTO(default): Infer exploitability from pattern anchors ($,\Z)FULL: Conservative mode assuming full-string matchingPARTIAL: Fewer false positives for search-style matching- Anchor Detection Helpers: New AST functions
has_end_anchor(),has_start_anchor(),is_anchored(),requires_continuation() - NGINX Usage Guide: New documentation page for checking NGINX location regexes
- Cursor Rules: Added
.cursor/rules/20-redos-detection.mdcdocumenting architecture decisions
Changed¶
- Improved False Positive Handling: SCC checker now considers pattern anchoring when determining if multi-transitions are exploitable
(a*)*without anchors → correctly marked as safe (can escape early)^(a*)*$with anchor → correctly marked as exponential (must match to end)^([^@]+)+@→ correctly marked as exponential (continuation required)- NFAwLA Precision: Look-ahead pruning now preserves all transitions; exploitability determined by
_is_multi_trans_exploitable
Documentation¶
- Updated
docs/configuration.mdwith Match Mode section - Updated
docs/how-it-works.mdwith NFAwLA architecture and exploitability checks - Added
docs/nginx-usage.mdfor NGINX-specific guidance
[0.1.3] - 2026-01-09¶
Changed¶
- Verified 1:1 Behavior with Recheck: Comprehensive verification that detection behavior matches the reference recheck implementation
- Added test suite mirroring recheck's
AutomatonCheckerSuite.scalatests - Verified all constant, linear, polynomial, and exponential complexity patterns
- Confirmed no false positives on safe patterns like
^a+$,^[a-z]+$,^(a|b)+$ - Confirmed no false negatives on vulnerable patterns like
^(a+)+$,^(a|a)*$,^(a|b|ab)*$
Added¶
- Extended Test Coverage
test_recheck_compatibility.py- Tests for must-be-safe and must-be-vulnerable patternstest_recheck_full_suite.py- Full test suite matching recheck's complexity classificationtest_recheck_automaton_suite.py- Direct ports from recheck's Scala test suite
Fixed¶
- Edge cases in polynomial ambiguity detection with product automaton
[0.1.2] - 2026-01-08¶
Fixed¶
- Improved detection accuracy for nested quantifiers
[0.1.1] - 2026-01-08¶
Fixed¶
- Fixed false positives on simple patterns like
^a+$
[0.1.0] - 2026-01-09¶
🎉 Initial Release¶
First public release of ReDoctor!
Added¶
- Hybrid Analysis Engine
- Automaton-based static analysis for patterns without backreferences
- Fuzz-based dynamic analysis for complex patterns
-
Automatic checker selection based on pattern features
-
Comprehensive Detection
- Exponential complexity (O(2^n)) detection
- Polynomial complexity (O(n^k)) detection
- Attack string generation with prefix/pump/suffix structure
-
Hotspot identification for vulnerable pattern portions
-
Command Line Interface
redoctorcommand for checking patterns- Support for regex flags (
-i,-m,-s) - Verbose and quiet output modes
- Stdin support for batch processing
-
Configurable timeout
-
Python API
check()function for pattern analysisis_vulnerable()andis_safe()helpersHybridCheckerclass for reuse-
Full type hints
-
Configuration
Configclass with extensive options- Preset configurations:
default(),quick(),thorough() -
Timeout, iteration limits, and more
-
Source Code Scanning
scan_file()for individual filesscan_directory()for projects-
AST-based pattern extraction from
remodule calls -
Diagnostics
Diagnosticsresult object with full detailsStatusenum (SAFE, VULNERABLE, UNKNOWN, ERROR)Complexitywith type and degreeAttackPatternwith build methods-
JSON serialization via
to_dict() -
Documentation
- Comprehensive README
- Full API documentation
- CLI reference
- Pattern examples
- MkDocs site with Material theme
Supported Python Versions¶
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
- Python 3.10
- Python 3.11
- Python 3.12
- Python 3.13
Links¶
Roadmap¶
Planned for Future Releases¶
- v0.2.0
- GitHub Actions integration
- Pre-commit hook support
- JSON/SARIF output format
-
Improved NFA construction for edge cases
-
v0.3.0
- Pattern rewriting suggestions
- VS Code extension
-
Performance improvements
-
v1.0.0
- Stable API
- Comprehensive test coverage
- Production-ready guarantees
Release Notes Format¶
Each release includes:
- Added - New features
- Changed - Changes in existing functionality
- Deprecated - Features to be removed in future releases
- Removed - Removed features
- Fixed - Bug fixes
- Security - Vulnerability fixes