convert paramiko query to SecondaryServerCmdInjection query, Add inline tests

This commit is contained in:
amammad
2024-02-24 18:09:43 +04:00
committed by Taus
parent 6520e2fdfb
commit 5fea71e5d6
10 changed files with 52 additions and 26 deletions

View File

@@ -0,0 +1,3 @@
missingAnnotationOnSink
testFailures
failures

View File

@@ -0,0 +1,4 @@
import python
import experimental.dataflow.TestUtil.DataflowQueryTest
import experimental.semmle.python.security.SecondaryServerCmdInjection
import FromTaintTrackingConfig<ParamikoConfig>

View File

@@ -0,0 +1 @@
experimental/Security/CWE-074/secondaryCommandInjection/SecondaryServerCmdInjection.ql

View File

@@ -13,15 +13,15 @@ app = FastAPI()
@app.get("/bad1")
async def read_item(cmd: str):
stdin, stdout, stderr = paramiko_ssh_client.exec_command(cmd)
stdin, stdout, stderr = paramiko_ssh_client.exec_command(cmd) # $ result=BAD
return {"success": stdout}
@app.get("/bad2")
async def read_item(cmd: str):
stdin, stdout, stderr = paramiko_ssh_client.exec_command(command=cmd)
stdin, stdout, stderr = paramiko_ssh_client.exec_command(command=cmd) # $ result=BAD
return {"success": "OK"}
@app.get("/bad3")
async def read_item(cmd: str):
stdin, stdout, stderr = paramiko_ssh_client.connect('hostname', username='user',password='yourpassword',sock=paramiko.ProxyCommand(cmd))
stdin, stdout, stderr = paramiko_ssh_client.connect('hostname', username='user',password='yourpassword',sock=paramiko.ProxyCommand(cmd)) # $ result=BAD
return {"success": "OK"}

View File

@@ -1 +0,0 @@
experimental/Security/CWE-074/paramiko/paramiko.ql