py/insecure-protocol missing urllib3 ssl_version tracking & false positive on secure defaults
- Langage dominant
- CodeQL
- Étoiles
- 10.1k
- Forks
- 2.1k
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 141
Description
1. The analysis only inspects standard SSL and pyOpenSSL module constructors and fails to detect insecure ssl_version arguments passed to widely used libraries like urllib3.PoolManager.
2. It seems ssl.create_default_context() is incorrectly flagged as vulnerable; it is the best default for the client as per the doc.
```python
import ssl
import socket
from urllib3.poolmanager import PoolManager
sock = socket.socket()
# FN: use urllib3 PoolManager with explicit insecure ssl_version
pool_mgr = PoolManager(ssl_version=ssl.PROTOCOL_TLSv1)
# FP: https://docs.python.org/3/library/ssl.html#ssl-security
ctx = ssl.create_default_context()
ctx.wrap_socket(sock, server_hostname='example.com')
```
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez au point d’entrée de la requête py/insecure-protocol et utilisez l’exemple Python pour suivre la façon dont les arguments de version SSL sont détectés. Vérifiez que urllib3.PoolManager avec un ssl_version non sécurisé est signalé, contrairement à ssl.create_default_context(), puis ajoutez ou mettez à jour les tests de requête concernés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- security
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100