Skip to content

Commit e8e4c5e

Browse files
committed
Fix: Do not leak codefix IDs in API
Signed-off-by: Shrish0098 <shrish409@gmail.com>
1 parent 432a7d4 commit e8e4c5e

3 files changed

Lines changed: 14 additions & 2 deletions

File tree

vulnerabilities/api_v2.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ class CodeFixSerializer(serializers.ModelSerializer):
570570
class Meta:
571571
model = CodeFix
572572
fields = [
573-
"id",
573+
"uuid",
574574
"commits",
575575
"pulls",
576576
"downloads",
@@ -594,6 +594,8 @@ class CodeFixViewSet(viewsets.ReadOnlyModelViewSet):
594594

595595
queryset = CodeFix.objects.all()
596596
serializer_class = CodeFixSerializer
597+
lookup_field = 'uuid'
598+
lookup_url_kwarg = 'uuid'
597599

598600
def get_queryset(self):
599601
"""

vulnerabilities/models.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
import hashlib
1212
import json
1313
import logging
14+
import uuid
1415
import xml.etree.ElementTree as ET
1516
from contextlib import suppress
1617
from functools import cached_property
1718
from itertools import groupby
1819
from operator import attrgetter
1920
from typing import Union
21+
from django.db import models
2022

2123
from cvss.exceptions import CVSS2MalformedError
2224
from cvss.exceptions import CVSS3MalformedError
@@ -1784,6 +1786,14 @@ class CodeFix(CodeChange):
17841786
- optionally with a specific fixing package version when it is known
17851787
"""
17861788

1789+
uuid = models.UUIDField(
1790+
primary_key=True,
1791+
default=uuid.uuid4,
1792+
editable=False,
1793+
unique=True,
1794+
help_text="Unique identifier for this code fix"
1795+
)
1796+
17871797
affected_package_vulnerability = models.ForeignKey(
17881798
"AffectedByPackageRelatedVulnerability",
17891799
on_delete=models.CASCADE,

vulnerablecode/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def __init__(self, *args, **kwargs):
5050
api_v2_router = OptionalSlashRouter()
5151
api_v2_router.register("packages", PackageV2ViewSet, basename="package-v2")
5252
api_v2_router.register("vulnerabilities", VulnerabilityV2ViewSet, basename="vulnerability-v2")
53-
api_v2_router.register("codefixes", CodeFixViewSet, basename="codefix")
53+
api_v2_router.register("codefixes", CodeFixViewSet, basename="codefix", lookup_field="uuid",)
5454

5555

5656
urlpatterns = [

0 commit comments

Comments
 (0)