Thank you for your interest in contributing to Spring2Shell! Contributions from the security research and developer community are vital to keeping this project robust, performant, and up-to-date.
Please read our Code of Conduct before participating in this project.
- Our Policy on Responsible Disclosure
- How Can I Contribute?
- Local Development Setup
- Code Quality & Linting
- Testing Guidelines
- Pull Request Process
Because Spring2Shell is a vulnerability scanner and security assessment tool:
- Do NOT open public issues for security vulnerabilities found within Spring2Shell itself.
- Instead, please refer to our Security Policy for details on how to report vulnerabilities privately.
- Reporting Bugs: First, search the existing issues. If your problem hasn't been reported, open an issue using the Bug Report template.
- Suggesting Features: Open an issue using the Feature Request template, detailing the proposed change and its benefits.
- Adding Payloads / Signatures: We welcome PRs that update
data/payloads/cve_payloads.jsonto cover new CVEs or add evasion techniques. - Submitting Pull Requests: Fix open issues or implement approved feature requests.
To set up a local development environment:
-
Fork and Clone the repository:
git clone https://github.com/your-username/Spring2Shell.git cd Spring2Shell -
Set up a Virtual Environment:
make venv source .venv/bin/activate -
Install Dependencies in Editable Mode:
make install-dev
We maintain high code quality and strict formatting standards using ruff and mypy. Before submitting a pull request, ensure your code passes all checks:
- Format Code:
make format
- Lint Code:
make lint
- Type Checking:
make typecheck
- Run All Quality Checks:
make check
We use pytest for unit and integration testing. Any new features or bug fixes must include corresponding tests.
- Run all tests (with coverage report):
make test - Run unit tests only:
make test-unit
- Run integration tests only:
make test-integration
Ensure that coverage does not drop as a result of your contribution.
- Branch Naming: Use descriptive branch names (e.g.,
feature/add-cve-2026-xxxxorfix/connection-timeout). - Commit Messages: Write clear, descriptive commit messages matching standard conventions (e.g.,
feat: add scanner support for CVE-2026-XYZ). - Update Documentation: If your change introduces new flags, CLI modes, or configuration values, update the
README.mdand relevant help screens. - Pass CI/CD: Ensure all tests and lints pass.
- Open Pull Request: Fill out the provided Pull Request Template completely so the maintainers can review your changes efficiently.