Skip to content

Commit f42df63

Browse files
authored
Merge pull request #13138 from DefectDojo/master-into-dev/2.50.1-2.51.0-dev
Release: Merge back 2.50.1 into dev from: master-into-dev/2.50.1-2.51.0-dev
2 parents d41ceaf + bc7bf32 commit f42df63

40 files changed

Lines changed: 1294 additions & 139 deletions

Dockerfile.django-alpine

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ ENV \
132132
DD_INITIALIZE=true \
133133
DD_UWSGI_MODE="socket" \
134134
DD_UWSGI_ENDPOINT="0.0.0.0:3031" \
135-
DD_UWSGI_NUM_OF_PROCESSES="2" \
136-
DD_UWSGI_NUM_OF_THREADS="2"
135+
DD_UWSGI_NUM_OF_PROCESSES="4" \
136+
DD_UWSGI_NUM_OF_THREADS="4"
137137
ENTRYPOINT ["/entrypoint-uwsgi.sh"]
138138

139139
FROM django AS django-unittests

Dockerfile.django-debian

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ ENV \
135135
DD_INITIALIZE=true \
136136
DD_UWSGI_MODE="socket" \
137137
DD_UWSGI_ENDPOINT="0.0.0.0:3031" \
138-
DD_UWSGI_NUM_OF_PROCESSES="2" \
139-
DD_UWSGI_NUM_OF_THREADS="2"
138+
DD_UWSGI_NUM_OF_PROCESSES="4" \
139+
DD_UWSGI_NUM_OF_THREADS="4"
140140
ENTRYPOINT ["/entrypoint-uwsgi.sh"]
141141

142142
FROM django AS django-unittests

docker/entrypoint-uwsgi-dev.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ exec uwsgi \
3434
--protocol uwsgi \
3535
--wsgi dojo.wsgi:application \
3636
--enable-threads \
37-
--processes "${DD_UWSGI_NUM_OF_PROCESSES:-2}" \
38-
--threads "${DD_UWSGI_NUM_OF_THREADS:-2}" \
37+
--processes "${DD_UWSGI_NUM_OF_PROCESSES:-4}" \
38+
--threads "${DD_UWSGI_NUM_OF_THREADS:-4}" \
3939
--reload-mercy 1 \
4040
--worker-reload-mercy 1 \
4141
--py-autoreload 1 \

docker/entrypoint-uwsgi.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ exec uwsgi \
3636
"--${DD_UWSGI_MODE}" "${DD_UWSGI_ENDPOINT}" \
3737
--protocol uwsgi \
3838
--enable-threads \
39-
--processes "${DD_UWSGI_NUM_OF_PROCESSES:-2}" \
40-
--threads "${DD_UWSGI_NUM_OF_THREADS:-2}" \
39+
--processes "${DD_UWSGI_NUM_OF_PROCESSES:-4}" \
40+
--threads "${DD_UWSGI_NUM_OF_THREADS:-4}" \
4141
--wsgi dojo.wsgi:application \
4242
--buffer-size="${DD_UWSGI_BUFFER_SIZE:-8192}" \
4343
--http 0.0.0.0:8081 --http-to "${DD_UWSGI_ENDPOINT}" \

docs/content/en/changelog/changelog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@ Here are the release notes for **DefectDojo Pro (Cloud Version)**. These release
88

99
For Open Source release notes, please see the [Releases page on GitHub](https://github.com/DefectDojo/django-DefectDojo/releases), or alternatively consult the Open Source [upgrade notes](/en/open_source/upgrading/upgrading_guide/).
1010

11+
## Sept 2025: v2.50
12+
13+
### Sept 2, 2025: v2.50.0
14+
15+
* **(Pro UI)** "Date During" filter has been added to the UI, allowing users to filter by a range of dates
16+
* **(Pro UI)** Vulnerability ID column can now be sorted, however the sorting only considers the **first** vulnerability ID.
17+
* **(Pro UI)** Request/Response pairs can now be added / updated / deleted via the Edit Finding form.
18+
1119
## August 2025: v2.49
1220

1321
The Pro UI has been significantly reorganized, with changes to page organization.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
---
2+
title: "Semgrep Pro JSON Report"
3+
toc_hide: true
4+
---
5+
Import Semgrep Pro findings in JSON format.
6+
7+
### Sample Scan Data
8+
Sample Semgrep Pro JSON Report scans can be found [here](https://github.com/DefectDojo/django-DefectDojo/tree/master/unittests/scans/semgrep_pro).
9+
10+
### Default Deduplication
11+
By default, DefectDojo uses the `match_based_id` from Semgrep Pro for deduplication. If this is not available, it falls back to using a combination of:
12+
- title
13+
- file path
14+
- line number
15+
16+
### Fields Mapped
17+
The following fields are mapped from the Semgrep Pro JSON report:
18+
19+
#### Basic Information
20+
- title: Mapped from `rule_name`
21+
- severity: Mapped from Semgrep Pro severity levels (ERROR/HIGH → High, WARNING/MEDIUM → Medium, INFO/LOW → Low)
22+
- file_path: Path to the affected file from `location.file_path`
23+
- line: Line number from `location.line`
24+
- unique_id_from_tool: Mapped from `match_based_id`
25+
26+
#### Status Fields
27+
- active: Set to false if status is "fixed" or "removed"
28+
- verified: Set to true if triage_state is not "untriaged"
29+
30+
#### Rich Content Fields
31+
- description: Includes:
32+
- Rule message and details
33+
- CWE references
34+
- OWASP references
35+
- Categories
36+
- Triage information
37+
- impact: Includes:
38+
- Vulnerability classes
39+
- Confidence level
40+
- Repository information
41+
- mitigation: Includes:
42+
- Guidance summary
43+
- Detailed instructions
44+
- Auto-fix suggestions
45+
- Auto-triage information
46+
- Component details and risk level
47+
- references: Includes:
48+
- Line of code URL
49+
- CWE references
50+
- OWASP references
51+
- External ticket information
52+
53+
#### Component Information
54+
- component_name: Mapped from `assistant.component.tag`
55+
56+
#### Additional Fields
57+
- static_finding: Always set to true
58+
- dynamic_finding: Always set to false
59+
- cwe: Extracted from first CWE reference if available
60+
- date: Mapped from `created_at`

docs/content/en/open_source/installation/running-in-production.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ handle 4 concurrent connections.
5858
Based on your resource settings, you can tweak:
5959

6060
- `DD_UWSGI_NUM_OF_PROCESSES` for the number of spawned processes.
61-
(default 2)
61+
(default 4)
6262
- `DD_UWSGI_NUM_OF_THREADS` for the number of threads in these
63-
processes. (default 2)
63+
processes. (default 4)
6464

6565
For example, you may have 4 processes with 6 threads each, yielding 24
6666
concurrent connections.

docs/content/en/open_source/performance.md

Lines changed: 0 additions & 39 deletions
This file was deleted.

dojo/api_v2/serializers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,13 @@ class Meta:
614614
model = UserContactInfo
615615
fields = "__all__"
616616

617+
def validate(self, data):
618+
user = data.get("user", None) or self.instance.user
619+
if data.get("force_password_reset", False) and not user.has_usable_password():
620+
msg = "Password resets are not allowed for users authorized through SSO."
621+
raise ValidationError(msg)
622+
return super().validate(data)
623+
617624

618625
class UserStubSerializer(serializers.ModelSerializer):
619626
class Meta:

dojo/finding_group/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,8 @@ def order_field(self, request: HttpRequest, group_findings_queryset: QuerySet[Fi
236236
order_field_param = order_field_param[1:] if reverse_order else order_field_param
237237
if order_field_param in {"name", "creator", "findings_count", "sla_deadline"}:
238238
prefix = "-" if reverse_order else ""
239-
group_findings_queryset = group_findings_queryset.order_by(f"{prefix}{order_field_param}")
240-
return group_findings_queryset
239+
return group_findings_queryset.order_by(f"{prefix}{order_field_param}")
240+
return group_findings_queryset.order_by("id")
241241

242242
def filters(self, request: HttpRequest) -> tuple[str, str | None, list[str], list[str]]:
243243
name_filter: str = request.GET.get("name", "").lower()

0 commit comments

Comments
 (0)