Skip to content

Commit 5354a41

Browse files
committed
Implement vulnerability rules support in the API
Signed-off-by: ziad hany <ziadhany2016@gmail.com>
1 parent e8dd820 commit 5354a41

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

vulnerabilities/api_v2.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from vulnerabilities.models import AdvisoryWeakness
3232
from vulnerabilities.models import CodeFix
3333
from vulnerabilities.models import CodeFixV2
34+
from vulnerabilities.models import DetectionRule
3435
from vulnerabilities.models import ImpactedPackage
3536
from vulnerabilities.models import Package
3637
from vulnerabilities.models import PackageV2
@@ -1398,3 +1399,20 @@ def lookup(self, request):
13981399

13991400
qs = self.get_queryset().for_purls([purl]).with_is_vulnerable()
14001401
return Response(PackageV3Serializer(qs, many=True, context={"request": request}).data)
1402+
1403+
1404+
class DetectionRuleSerializer(serializers.ModelSerializer):
1405+
advisory_avid = serializers.ReadOnlyField(source='advisory.avid')
1406+
1407+
class Meta:
1408+
model = DetectionRule
1409+
fields = ["id", "rule_type", "source_url", "rule_metadata", "rule_text", "advisory_avid"]
1410+
1411+
1412+
class DetectionRuleViewSet(viewsets.ReadOnlyModelViewSet):
1413+
"""
1414+
API endpoint that allows Detection Rules to be viewed or edited.
1415+
"""
1416+
1417+
queryset = DetectionRule.objects.all()
1418+
serializer_class = DetectionRuleSerializer

vulnerabilities/pipelines/v2_improvers/sigma_rules.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,10 @@ def collect_and_store_rules(self):
7575
DetectionRule.objects.update_or_create(
7676
rule_text=raw_text,
7777
rule_type=DetectionRuleTypes.SIGMA,
78-
advisory=adv,
7978
defaults={
8079
"rule_metadata": rule_metadata,
8180
"source_url": rule_url,
81+
"advisory": adv,
8282
},
8383
)
8484

vulnerablecode/urls.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from vulnerabilities.api import VulnerabilityViewSet
2323
from vulnerabilities.api_v2 import CodeFixV2ViewSet
2424
from vulnerabilities.api_v2 import CodeFixViewSet
25+
from vulnerabilities.api_v2 import DetectionRuleViewSet
2526
from vulnerabilities.api_v2 import PackageV2ViewSet
2627
from vulnerabilities.api_v2 import PackageV3ViewSet
2728
from vulnerabilities.api_v2 import PipelineScheduleV2ViewSet
@@ -71,6 +72,8 @@ def __init__(self, *args, **kwargs):
7172

7273
api_v3_router.register("packages", PackageV3ViewSet, basename="package-v3")
7374

75+
api_v3_router.register("detection-rules", DetectionRuleViewSet, basename="detection-rule")
76+
7477
urlpatterns = [
7578
path("admin/login/", AdminLoginView.as_view(), name="admin-login"),
7679
path("api/v2/", include(api_v2_router.urls)),

0 commit comments

Comments
 (0)