Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump easymde from 2.15.0 to 2.18.0 in /components #87

Open
wants to merge 97 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
1d3c88b
Added breakline to description
adiffpirate Apr 4, 2021
40ccd1f
Added skip_duplicates flag when importing scans via API
adiffpirate Apr 5, 2021
3de45d7
Improved legacy deduplication performance
adiffpirate Apr 5, 2021
8145342
Added false positive replication across product type
adiffpirate Apr 8, 2021
b44d860
Merge branch 'improved-spotbugs-parser' into local
adiffpirate Apr 8, 2021
2dbcb1a
Merge branch 'import-skip-duplicates' into local
adiffpirate Apr 8, 2021
09f9824
Merge branch 'false-positive-replication' into local
adiffpirate Apr 8, 2021
38aa9fd
Fix migration
adiffpirate Apr 8, 2021
a9e0e60
Merge branch 'false-positive-replication' into local
adiffpirate Apr 8, 2021
922d476
Improved finding history
adiffpirate Apr 8, 2021
0dfb38a
Fixed migration
adiffpirate Apr 8, 2021
fe8799a
Fixed verified setting
adiffpirate Apr 8, 2021
06b1cce
Improved SpotBugs parser
adiffpirate Apr 4, 2021
644b145
Added mitigation to Dependency Check parser
adiffpirate Apr 10, 2021
3424f1e
flake8
adiffpirate Apr 10, 2021
b1bb443
Merge branch 'false-positive-replication' into local
adiffpirate Apr 12, 2021
869dbd4
Merge branch 'improved-import-history' into local
adiffpirate Apr 12, 2021
cd7296e
Merge branch 'minor-improvement-parsers' into local
adiffpirate Apr 12, 2021
bc18d4e
Fix migration
adiffpirate Apr 20, 2021
3d5dbc8
[Semgrep parser] fix internal de-duplication (#4258)
damiencarol Apr 17, 2021
1d2d673
"Merge" code-field-sast
adiffpirate Apr 20, 2021
6a53013
Fix migration
adiffpirate Apr 20, 2021
2e77a0a
Bugfix
adiffpirate May 14, 2021
1d6a958
Added special case for NJSScan
adiffpirate May 14, 2021
770adf1
Merge branch 'import-skip-duplicates' into local
adiffpirate May 14, 2021
dc047d5
Merge branch 'sarif-njsscan' into local
adiffpirate May 14, 2021
8e35b56
Added sast_source_code parsing to SARIF
adiffpirate May 14, 2021
65849c2
Minor fix
adiffpirate May 14, 2021
5c9f3a3
[Generic parser] Add more unit tests (#4354)
damiencarol Apr 25, 2021
a25a5d7
[Generic parser] add JSON format (#4484)
damiencarol May 23, 2021
ec44234
Minor improvement on OWASP ZAP parser
adiffpirate Jun 7, 2021
323e1da
Minor fix
adiffpirate Jun 7, 2021
fd6c084
Integrate interactive and ci/cd engagements in one list (#4243)
StefanFl Apr 9, 2021
1be5d9f
Added logic to handle cases where deduplication_on_engagement is enabled
adiffpirate Jun 17, 2021
e07edf9
Merge branch 'false-positive-replication' into local
adiffpirate Jun 17, 2021
a5092b1
Enabling (re)import history
adiffpirate Jun 17, 2021
c985139
Fixed a bug that happens when Checkov report has multiples check_type
adiffpirate Jun 22, 2021
6a926c8
Added unittests
adiffpirate Jun 22, 2021
3a51df2
Merge branch 'bugfix-checkov' into local with cherry pick
adiffpirate Jun 22, 2021
401a0e8
Added sast_source_code parsing to Checkov
adiffpirate Jun 22, 2021
4c5b948
Added unittests for NJSScan and fixed SARIF/Checkov parser/unittests
adiffpirate Jun 22, 2021
ea78104
Merge branch 'code-field-sast' into local with cherry pick
adiffpirate Jun 22, 2021
01b7239
Fixed CWE for NJSScan (needs to be an integer)
adiffpirate Jun 23, 2021
1e4a79d
Merge branch 'sarif-njsscan' into local with cherry pick
adiffpirate Jun 23, 2021
4a9cade
Improving Checkov code snippet
adiffpirate Jul 1, 2021
3367b53
Deduplication preferences
adiffpirate Jul 1, 2021
6b6ab65
Changed how tests appears on the UI
adiffpirate Jun 29, 2021
5aeb019
UI: Removed reporter column when listing findings
adiffpirate Jul 2, 2021
23696e8
UI: Removed reporter when viewing test page
adiffpirate Jul 3, 2021
a03e4bc
Giving write permissions to authorized users
adiffpirate Jul 3, 2021
ce19e27
Revert "Merge branch 'import-skip-duplicates' into local"
adiffpirate Jul 4, 2021
ffab6b7
Revert "Merge branch 'import-skip-duplicates' into local"
adiffpirate Jul 4, 2021
17a3b36
Merge branch 'master' into local
adiffpirate Jul 4, 2021
7a9c9cb
Fixing migrations
adiffpirate Jul 4, 2021
7301c6a
Added 'found at' column when listing findings
adiffpirate Jul 4, 2021
72d9817
Removed merge leftover
adiffpirate Jul 4, 2021
3681554
Fixed Checkov unittest
adiffpirate Jul 4, 2021
e440760
Added risk acceptance replication
adiffpirate Jul 6, 2021
61c9164
Added global risk acceptance view at product homepage
adiffpirate Jul 6, 2021
2d9b0d7
Retroactive replication when adding findings to risk acceptance
adiffpirate Jul 7, 2021
69a61b2
Also reactivates duplicates when risk acceptance expire
adiffpirate Jul 7, 2021
838d508
Reactivates replicas on risk acceptance deletion
adiffpirate Jul 7, 2021
3bec05d
Retroactive replication when reinstating risk acceptance
adiffpirate Jul 7, 2021
c6a269f
Also reactivates replicas when finding is removed from risk acceptance
adiffpirate Jul 7, 2021
755fa12
Disabling feature by default
adiffpirate Jul 7, 2021
f55f07b
Merge branch 'product-risk-acceptance' into local
adiffpirate Jul 7, 2021
f62c8d3
Enabled product wide risk acceptance
adiffpirate Jul 7, 2021
04d1e2d
Local migration 0001
adiffpirate Jul 7, 2021
691468e
Merge branch 'risk-acceptance-replication' into local
adiffpirate Jul 7, 2021
bb76829
Enabled risk acceptance replication and fixed merge
adiffpirate Jul 7, 2021
cc269f1
Fixed migration
adiffpirate Jul 7, 2021
c5c7925
Fixing migration
adiffpirate Jul 7, 2021
8e7514d
Moved config from system settings to settings.dist.py
adiffpirate Jul 7, 2021
28eb9b7
Changed replication from product type to product
adiffpirate Jul 7, 2021
ba4190d
Renamed feature and fixed bug
adiffpirate Jul 7, 2021
13196a8
Retroactive (un)replication when updating finding with bulk edit
adiffpirate Jul 7, 2021
66c1991
Merge branch 'false-positive-replication' into local
adiffpirate Jul 8, 2021
d207382
Local migration 0002
adiffpirate Jul 8, 2021
d3df3ea
New options to findings dropdown
adiffpirate Aug 18, 2021
ad3bfe1
Fix
adiffpirate Aug 18, 2021
64ed00b
Changed Dependency Check Scan fields for hashing
adiffpirate Sep 16, 2021
e482fc5
Added false positive replication by hash_code
adiffpirate Sep 16, 2021
08d4e7c
Refactoring false positive replication
adiffpirate Sep 16, 2021
aca537a
Bugfix when reactivating false positives via bulk edit
adiffpirate Sep 16, 2021
e5b99b4
Added false positive replication when editing findings via forms
adiffpirate Sep 17, 2021
c4f4dab
Added support for all types of dedup algorithms when replicating RA
adiffpirate Sep 17, 2021
f505ff0
Bugfix
adiffpirate Sep 17, 2021
40df835
Merge branch 'local' of https://github.com/adiffpirate/django-DefectD…
adiffpirate Sep 17, 2021
5f3c295
Fix merge
adiffpirate Sep 17, 2021
c524ea6
Shows active findings by default when opening test page
adiffpirate Sep 17, 2021
b3470e1
Moved options to show findings from engagements to a more obvious place
adiffpirate Sep 17, 2021
f217c53
Reimporter no longer closes duplicated findings
adiffpirate Sep 20, 2021
364cc6e
Skip duplicates when importing findings that doesn't use endpoints fo…
adiffpirate Sep 21, 2021
3467e00
Merge tag '2.1.0' into local
opus-luiz-monteiro Feb 24, 2022
d77beb1
Release 2.1.0-local
opus-luiz-monteiro Feb 24, 2022
d7edf21
Changed version name
opus-luiz-monteiro Feb 25, 2022
78830d9
Bump easymde from 2.15.0 to 2.18.0 in /components
dependabot[bot] Sep 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions dojo/db_migrations/0114_product_risk_acceptance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.1.12 on 2021-07-06 22:23

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('dojo', '0113_endpoint_protocol'),
]

operations = [
migrations.AddField(
model_name='product',
name='risk_acceptance',
field=models.ManyToManyField(blank=True, default=None, editable=False, to='dojo.Risk_Acceptance'),
),
]
2 changes: 2 additions & 0 deletions dojo/engagement/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -794,6 +794,8 @@ def add_risk_acceptance(request, eid, fid=None):
risk_acceptance.notes.add(notes)

eng.risk_acceptance.add(risk_acceptance)
if settings.PRODUCT_WIDE_RISK_ACCEPTANCE:
eng.product.risk_acceptance.add(risk_acceptance)

findings = form.cleaned_data['accepted_findings']

Expand Down
3 changes: 3 additions & 0 deletions dojo/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,9 @@ class Product(models.Model):

enable_simple_risk_acceptance = models.BooleanField(default=False, help_text=_('Allows simple risk acceptance by checking/unchecking a checkbox.'))
enable_full_risk_acceptance = models.BooleanField(default=True, help_text=_('Allows full risk acceptance using a risk acceptance form, expiration date, uploaded proof, etc.'))
risk_acceptance = models.ManyToManyField(
"Risk_Acceptance", default=None, editable=False, blank=True
)

def __str__(self):
return self.name
Expand Down
8 changes: 7 additions & 1 deletion dojo/product/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ def view_product(request, pid):
out_of_scope=False).order_by('numerical_severity').values(
'severity').annotate(count=Count('severity'))

risks_accepted = prod.risk_acceptance.all().select_related('owner').annotate(
accepted_findings_count=Count('accepted_findings__id')
)

critical = 0
high = 0
medium = 0
Expand Down Expand Up @@ -206,7 +210,9 @@ def view_product(request, pid):
'product_type_members': product_type_members,
'product_groups': product_groups,
'product_type_groups': product_type_groups,
'personal_notifications_form': personal_notifications_form})
'personal_notifications_form': personal_notifications_form,
'risks_accepted': risks_accepted
})


@user_is_authorized(Product, Permissions.Component_View, 'pid', 'view')
Expand Down
4 changes: 4 additions & 0 deletions dojo/settings/settings.dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@
DD_EDITABLE_MITIGATED_DATA=(bool, False),
# new experimental feature that tracks history across multiple reimports for the same test
DD_TRACK_IMPORT_HISTORY=(bool, True),
# new experimental feature that implements risk acceptance across product (useful with deduplication within engagement)
DD_PRODUCT_WIDE_RISK_ACCEPTANCE=(bool, False),

# Feature toggle for new authorization, which is incomplete at the moment.
# Don't set it to True for productive environments!
Expand Down Expand Up @@ -1054,6 +1056,8 @@ def generate_url(scheme, double_slashes, user, password, host, port, path, param

TRACK_IMPORT_HISTORY = env('DD_TRACK_IMPORT_HISTORY')

PRODUCT_WIDE_RISK_ACCEPTANCE = env('DD_PRODUCT_WIDE_RISK_ACCEPTANCE')

# ------------------------------------------------------------------------------
# JIRA
# ------------------------------------------------------------------------------
Expand Down
83 changes: 83 additions & 0 deletions dojo/templates/dojo/view_product_details.html
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,89 @@ <h3 class="panel-title"><span class="fa fa-pie-chart" aria-hidden="true"></span>
</div>
</div>
<!-- end metrics -->

{% if 'PRODUCT_WIDE_RISK_ACCEPTANCE'|setting_enabled %}
<div class="row">
<div id="risk" class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h4> Risk Acceptance </h4>
</div>
{% if risks_accepted %}
<div class="table-responsive">
<table id="risk_acceptances"
class="tablesorter-bootstrap table table-condensed table-striped">
<thead>
<tr>
<th></th>
<th>Date</th>
<th>Accepted By</th>
<th>Name</th>
<th>Decision</th>
<!-- <th>Decision Details</th> -->
<th>Expiration</th>
<th>Findings</th>
<th>Proof</th>
<th>Owner</th>
</thead>
<tbody>
{% for risk_acceptance in risks_accepted %}
<tr>
<td class="centered">
<ul>
<li class="dropdown" style="list-style:none;position:absolute">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="true">&nbsp;<b class="fa fa-ellipsis-v"></b>&nbsp;</a>
<ul class="dropdown-menu">
{% with engagement=risk_acceptance.engagement %}
{% include 'dojo/snippets/risk_acceptance_actions_snippet.html' with include_view=True %}
{% endwith %}
</ul>
</li>
</ul>
</td>
<td><a href="{% url 'view_risk_acceptance' risk_acceptance.engagement.id risk_acceptance.id %}">{{ risk_acceptance.created|date }}</a></td>
<td>{{ risk_acceptance.accepted_by.get_full_name }}</td>
<td><a href="{% url 'view_risk_acceptance' risk_acceptance.engagement.id risk_acceptance.id %}">{{ risk_acceptance.name }}</a></td>
<td>
{{ risk_acceptance.get_decision_display|default_if_none:"" }}
{% if risk_acceptance.decision_details %}
&nbsp;<i style="position:absolute;" class="fa has-popover fa-info-circle" title="Decision Details" data-trigger="hover" data-placement="bottom" data-container="body" data-html="true"
data-content="{{ risk_acceptance.decision_details }}"></i>
{% endif %}
</td>
<!-- <td>{{ risk_acceptance.decision_details|default_if_none:""| truncatechars_html:100 }}</td> -->
<td class="{% if risk_acceptance.is_expired %}red{% endif%}">
{% if risk_acceptance.expiration_date %}
{{ risk_acceptance.expiration_date|date }}
{% else %}
Never
{% endif %}
</td>
<td>{{ risk_acceptance.accepted_findings_count }}</td>
{% if risk_acceptance.filename %}
<td><a href="{% url 'download_risk_acceptance' risk_acceptance.engagement.id risk_acceptance.id %}">Yes</a>
&nbsp;<i style="position:absolute;" class="fa has-popover fa-info-circle" title="Uploaded proof" data-trigger="hover" data-placement="bottom" data-container="body" data-html="true"
data-content="{{ risk_acceptance.filename }}"></i>
</td>
{% else %}
<td>No</a></td>
{% endif %}
<td>{{ risk_acceptance.owner.get_full_name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="panel-body">
<small class="text-muted"><em>No Risk Acceptances found.</em></small>
</div>
{% endif %}
</div>
</div>
</div>
{% endif %}

<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
Expand Down