[python] The tuple (*) argument of a call cannot step to function parameter for the CommandInjectionCustomizations flow
- Langage dominant
- CodeQL
- Étoiles
- 10.1k
- Forks
- 2.1k
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 141
Description
In Python, when passing the typle (*) argument to function parameters, the taint propagation chain breaks. As shown in the following code snippet, this issue occurs. Are there plans to support this scenario? How do i resolve this issue?
```python
from django.contrib.auth.decorators import login_required
from django.conf.urls import url
import os
def build_cmd(cmd: str):
cmd = cmd + "; touch aa"
print(cmd)
return cmd
@login_required
def GetOperateLog(request):
cmd = request.POST.get('cmd', None)
args = []
args.append(cmd)
cmd3 = build_cmd(*args)
os.system(cmd3)
urlpatterns = [
url(r'^GetOperateLog', GetOperateLog, name='GetOperateLog'),
]
```
This is the taint propagation flow.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par reproduire l’exemple Python fourni et examiner la gestion de la propagation du taint de CodeQL pour les arguments étoilés. L’issue ne mentionne aucun fichier source ni aucun test ; le travail est terminé lorsque le flux de taint atteint os.system via build_cmd(*args), avec un test de régression couvrant l’exemple.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- django, python
- Domaine
- security
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100