Skip to content

deprecate: API-based pull parsers, Tool Type/Configuration, and dbbackup (3.2.0 → 3.5.0 EOL)#15353

Open
Maffooch wants to merge 2 commits into
devfrom
deprecate-api-parsers-tool-config-dbbackup
Open

deprecate: API-based pull parsers, Tool Type/Configuration, and dbbackup (3.2.0 → 3.5.0 EOL)#15353
Maffooch wants to merge 2 commits into
devfrom
deprecate-api-parsers-tool-config-dbbackup

Conversation

@Maffooch

@Maffooch Maffooch commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Shortcut: sc-13944

Description

Formally deprecates the API-based (pull) parsers, the Tool Type / Tool Configuration feature, and the django-dbbackup integration in 3.2.0, with planned removal in 3.5.0 (November 2026) — a full quarter of deprecation runway. Based on the maintainer decision thread.

Rationale

Changes

  • Docs: deprecation notices + timeline in docs/content/releases/os_upgrading/3.2.md; legacy upgrade stub repointed.
  • API: X-Deprecated / X-End-Of-Life-Date response headers on the Tool Configuration, Tool Type, and Product/Asset API Scan Configuration viewsets via DeprecationNoticeMixin. The mixin is placed first in the MRO so finalize_response actually runs (listing it last makes it dead code).
  • UI: deprecation banners on the Tool Configuration, Tool Type, and per-product API Scan Configuration pages — rendering on both the new and classic UIs via the messages framework.
  • Tests: assert the deprecation headers on the affected endpoints.

Nothing is removed in this PR — removal is tracked for 3.5.0 (state-only migrations, following the stub-finding / credential-manager pattern).

Open items to reconcile (non-blocking)

  • "Coverity API" is a file parser (not one of the 6 pull parsers) — kept out of scope; reconcile the customer list with the Pro migration.
  • Edgescan/Vulners also accept an uploaded file; the file-import path's fate at 3.5.0 to be confirmed.

🤖 Generated with Claude Code

Deprecate in 3.2.0 with planned removal in 3.5.0 (November 2026), per the
maintainer decision thread. Consolidates API-pull integrations into DefectDojo
Pro connectors and drops config surfaces that will have no consumers after the
parsers are removed.

- Docs: add deprecation notices + timeline to the 3.2.x upgrade note
  (releases/os_upgrading/3.2.md); repoint the legacy upgrade stub.
- API: emit X-Deprecated / X-End-Of-Life-Date headers via DeprecationNoticeMixin
  on the ToolConfigurations, ToolTypes, and Product/Asset API Scan Configuration
  viewsets. The mixin is placed first in the MRO so finalize_response actually
  runs (listing it last makes it dead code).
- UI: show a deprecation banner on the Tool Configuration, Tool Type, and
  per-product API Scan Configuration pages (renders on both the new and classic
  UIs via the messages framework).
- Tests: assert the deprecation headers on the affected endpoints.

dbbackup: the django-dbbackup integration is documented for removal in 3.5.0;
its pg_dump-based backup fails on client/server version skew (see #15301).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Maffooch
Maffooch requested a review from blakeaowens as a code owner July 24, 2026 17:41
@dryrunsecurity

dryrunsecurity Bot commented Jul 24, 2026

Copy link
Copy Markdown

DryRun Security

This pull request introduces multiple critical and high-severity Insecure Direct Object Reference (IDOR) vulnerabilities in various views, including edit_tool_type, edit_tool_config, and API scan configuration functions. These issues arise from missing explicit authorization checks, allowing unauthorized users to potentially access or modify sensitive objects by manipulating ID parameters.

🔴 Potential IDOR Vulnerability in dojo/tool_type/ui/views.py (drs_bf3fa05e)
Vulnerability Potential IDOR Vulnerability
Description The edit_tool_type view retrieves a Tool_Type object directly from a user-controlled path parameter with Tool_Type.objects.get(pk=ttid) and the function has no user-scoped query, ownership check, or authorization decorator. The added deprecated_view decorator only shows a warning message and does not restrict access, so changing ttid can expose another object.

tool_type = Tool_Type.objects.get(pk=ttid)
if request.method == "POST":

🔴 Potential IDOR Vulnerability in dojo/tool_config/ui/views.py (drs_ada348c4)
Vulnerability Potential IDOR Vulnerability
Description The edit_tool_config UI view fetches a Tool_Configuration directly by the caller-controlled ttid primary key and then allows that object to be edited, with no object-level authorization check, ownership filter, or permission decorator shown in the view or URL wiring. The added @deprecated_view(...) decorator only emits a warning message and does not enforce access control.

tool_config = Tool_Configuration.objects.get(pk=ttid)
if request.method == "POST":

🟠 IDOR in edit_tool_type View in dojo/tool_type/ui/views.py (drs_76ba6167)
Vulnerability IDOR in edit_tool_type View
Description The edit_tool_type view in dojo/tool_type/ui/views.py lacks explicit authorization checks to verify if the current user has permission to edit the specified tool type. While the view is deprecated, it remains functional and accessible, potentially allowing unauthorized users to modify tool types if they can guess or discover valid 'ttid' values.

def edit_tool_type(request, ttid):
tool_type = Tool_Type.objects.get(pk=ttid)

🟠 IDOR in add_api_scan_configuration in dojo/product/ui/views.py (drs_09a30758)
Vulnerability IDOR in add_api_scan_configuration
Description The add_api_scan_configuration view in dojo/product/ui/views.py retrieves the product using get_object_or_404(Product, id=pid). While this ensures the product exists, it does not explicitly verify if the current user has authorization to access or modify that specific product. The view lacks an explicit authorization decorator or check (e.g., user_has_permission_or_403) to ensure the user is authorized for the given product ID.

product = get_object_or_404(Product, id=pid)
if request.method == "POST":

🟠 IDOR in view_api_scan_configurations in dojo/product/ui/views.py (drs_8f4b0bd8)
Vulnerability IDOR in view_api_scan_configurations
Description The view_api_scan_configurations function in dojo/product/ui/views.py lacks an explicit authorization check to verify if the current user has permission to access the specified product (pid). While other functions in the same file (e.g., add_product_authorized_users) use user_has_permission_or_403, this view does not, potentially allowing unauthorized users to view API scan configurations for products they are not authorized to access.

def view_api_scan_configurations(request, pid):
product_api_scan_configurations = Product_API_Scan_Configuration.objects.filter(product=pid)

We've notified @mtesauro.


Comment to provide feedback on these findings.

Report false positive: @dryrunsecurity fp [FINDING ID] [FEEDBACK]
Report low-impact: @dryrunsecurity nit [FINDING ID] [FEEDBACK]

Example: @dryrunsecurity fp drs_90eda195 This code is not user-facing

All finding details can be found in the DryRun Security Dashboard.

- dojo/product/api/views.py: wrap the dojo.api_v2.views import block so it
  satisfies ruff's I001 after adding DeprecationNoticeMixin.
- docs/content/en/open_source/upgrading/3.2.md: the release-notes link needs
  four levels up, not three. The page builds to /en/open_source/upgrading/3.2/
  while the release notes build to the root-level /releases/os_upgrading/3.2/,
  so three ../ resolved to a nonexistent /en/releases/... and failed the docs
  link check.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Maffooch Maffooch added this to the 3.2.0 milestone Jul 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant