Skip to content

Commit

Permalink
added a rule to detect usage of uuid version 1 in python (#3517)
Browse files Browse the repository at this point in the history
* added a rule to detect usage of uuid version 1 in python

* Applying suggestion to move url from message to references

Co-authored-by: Pieter De Cremer (Semgrep) <pieter@r2c.dev>

---------

Co-authored-by: Pieter De Cremer (Semgrep) <pieter@r2c.dev>
  • Loading branch information
mohamed-osama-aboelkheir and 0xDC0DE authored Nov 19, 2024
1 parent 3b05904 commit e8a1345
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
19 changes: 19 additions & 0 deletions python/lang/security/insecure-uuid-version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import uuid
def example_1():
# ruleid:insecure-uuid-version
uuid = uuid.uuid1()

from uuid import uuid1
def example_2():
# ruleid:insecure-uuid-version
uuid = uuid1()

from uuid import *
def example_3():
# ruleid:insecure-uuid-version
uuid = uuid1()

import uuid
def unrelated_function():
# ok:insecure-uuid-version
uuid = uuid4()
33 changes: 33 additions & 0 deletions python/lang/security/insecure-uuid-version.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
rules:
- id: insecure-uuid-version
patterns:
- pattern: uuid.uuid1(...)
message: |
Using UUID version 1 for UUID generation can lead to predictable UUIDs based on system information (e.g., MAC address, timestamp). This may lead to security risks such as the sandwich attack. Consider using `uuid.uuid4()` instead for better randomness and security.
metadata:
references:
- https://www.landh.tech/blog/20230811-sandwich-attack/
cwe:
- 'CWE-330: Use of Insufficiently Random Values'
owasp:
- A02:2021 - Cryptographic Failures
asvs:
section: V6 Stored Cryptography Verification Requirements
control_id: 6.3.2 Insecure UUID Generation
control_url: https://github.com/OWASP/ASVS/blob/master/4.0/en/0x14-V6-Cryptography.md#v63-random-values
version: '4'
category: security
technology:
- python
subcategory:
- audit
likelihood: LOW
impact: MEDIUM
confidence: MEDIUM
languages:
- python
severity: WARNING
fix-regex:
regex: uuid1
replacement: uuid4

0 comments on commit e8a1345

Please sign in to comment.