Accuracy improvements for py/clear-text-logging-sensitive-data
- Langage dominant
- CodeQL
- Étoiles
- 10.1k
- Forks
- 2.1k
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 141
Description
**Description of the issue**
Hey, I found two common cases where the rule doesn't match in my codebase. One creates noise, the other misses a real leak.
First, `SecretStr` masks text automatically (e.g., prints '**********'). Logging these objects is safe, but the rule flags them.
```python
from pydantic import SecretStr
password = SecretStr("super_secret")
logging.info("Login: %s", password) # Flagged, but actually safe
```
2. Logging an exception object leaks its message (via __str__), but the rule misses this if the secret is inside the exception.
```python
secret_token = "secret_123"
# logging.error("Auth failed: %s", secret_token) # Detected ✅
try:
raise ValueError("Auth failed: {}".format(secret_token))
except ValueError as e:
# Currently NOT flagged, but leaks 'secret_123' via __str__ ❌
logging.error("Auth failed: %s", e)
```
Maybe we should add the first pattern to the sanitizers and add the second one as a propagator in the taint tracking config.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par la requête py/clear-text-logging-sensitive-data et sa configuration de taint-tracking, puis suivez la manière dont les sanitizers et les propagators sont définis. Confirmez, en utilisant les exemples de l’issue comme cas de régression, que le logging de SecretStr n’est pas signalé et que le logging d’une exception contenant un secret est signalé.
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
- 52/100