Skip to content

Conversation

@LuciyVI
Copy link

@LuciyVI LuciyVI commented Oct 24, 2025

This commit implements a Markov Chain-based feedback mechanism for ffuf that enables adaptive fuzzing based on response patterns. The system learns from HTTP response characteristics and adjusts input selection strategy in real-time.

Key features added:

  • Markov Chain implementation tracks response states (status code, content length, word count, etc.)
  • Adaptive input selection that prioritizes inputs leading to interesting responses
  • Thread-safe implementation with proper synchronization to prevent race conditions
  • Verbose parameter display showing Markov Chain statistics during execution
  • Integration with existing ffuf job execution flow maintaining full backward compatibility

The Markov Chain feedback operates by:

  1. Categorizing responses into states based on characteristics
  2. Learning transition probabilities between states
  3. Adapting input selection based on learned patterns
  4. Displaying real-time statistics when verbose mode is enabled

Files added/modified:

  • pkg/ffuf/markov_impl.go: Core Markov Chain implementation
  • pkg/ffuf/markov_interface.go: Markov Feedback interface
  • pkg/ffuf/job.go: Integration with job execution flow
  • pkg/ffuf/markov_test.go: Tests for Markov functionality
  • README.md: Documentation update
  • TESTING.md: Testing instructions
  • test/test_server.go: Test server for demonstrating functionality
  • test_wordlist.txt: Comprehensive test wordlist
  • test_markov.sh: Test script

The implementation passes all existing tests and demonstrates the adaptive behavior during real fuzzing operations.

Description

Please add a short description of pull request contents.
If this PR addresses an existing issue, please add the issue number below.

Fixes: #(issue number)

Additonally

  • If this is the first time you are contributing to ffuf, add your name to CONTRIBUTORS.md.
    The file should be alphabetically ordered.
  • Add a short description of the fix to CHANGELOG.md

Thanks for contributing to ffuf :)

This commit implements a Markov Chain-based feedback mechanism for ffuf that enables adaptive fuzzing based on response patterns. The system learns from HTTP response characteristics and adjusts input selection strategy in real-time.

Key features added:
- Markov Chain implementation tracks response states (status code, content length, word count, etc.)
- Adaptive input selection that prioritizes inputs leading to interesting responses
- Thread-safe implementation with proper synchronization to prevent race conditions
- Verbose parameter display showing Markov Chain statistics during execution
- Integration with existing ffuf job execution flow maintaining full backward compatibility

The Markov Chain feedback operates by:
1. Categorizing responses into states based on characteristics
2. Learning transition probabilities between states
3. Adapting input selection based on learned patterns
4. Displaying real-time statistics when verbose mode is enabled

Files added/modified:
- pkg/ffuf/markov_impl.go: Core Markov Chain implementation
- pkg/ffuf/markov_interface.go: Markov Feedback interface
- pkg/ffuf/job.go: Integration with job execution flow
- pkg/ffuf/markov_test.go: Tests for Markov functionality
- README.md: Documentation update
- TESTING.md: Testing instructions
- test/test_server.go: Test server for demonstrating functionality
- test_wordlist.txt: Comprehensive test wordlist
- test_markov.sh: Test script

The implementation passes all existing tests and demonstrates the adaptive behavior during real fuzzing operations.
- Add Fedor Bogoslavskii to CONTRIBUTORS.md
- Add Markov Chain feedback feature to CHANGELOG.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant