correction securité sandbox

This commit is contained in:
Chevallier
2026-07-07 11:13:40 +02:00
parent 7b1a975f06
commit 5f06de19e0

View File

@@ -2,8 +2,11 @@ import subprocess
import json
import time
from fastapi import FastAPI
import logging
app = FastAPI()
logger = logging.getLogger(__name__)
SEMGREP_TIMEOUT = 300.0
@app.post("/scan/{repo_name}")
async def scan_repository(repo_name: str):
@@ -11,13 +14,43 @@ async def scan_repository(repo_name: str):
issues_list = []
start_time = time.time()
try:
secure_command = f"ulimit -f 10240 && semgrep scan --config=p/r2c-security-audit --json --quiet {repo_path}"
result = subprocess.run(
["semgrep", "scan", "--config=p/r2c-security-audit", "--json", "--quiet", repo_path],
secure_command,
shell=True,
capture_output=True,
text=True
text=True,
timeout=SEMGREP_TIMEOUT
)
duration = round(time.time() - start_time, 2)
exit_code = result.returncode
stderr_output = result.stderr
timeout_triggered = False
is_executable = True
except subprocess.TimeoutExpired as te:
logger.error(f"[Sandbox] Semgrep a dépassé le timeout sur {repo_name}")
duration = round(time.time() - start_time, 2)
exit_code = -1
stderr_output = f"L'analyse statique a été coupée : Timeout de {SEMGREP_TIMEOUT}s dépassé."
timeout_triggered = True
is_executable = False
return {
"results": {
"is_executable": is_executable,
"runtime": {
"exit_code": exit_code,
"stdout": "",
"stderr": stderr_output,
"duration_seconds": duration,
"timeout_triggered": timeout_triggered
},
"issues": []
}
}
try:
if result.stdout.strip():
@@ -41,11 +74,11 @@ async def scan_repository(repo_name: str):
"results": {
"is_executable": is_executable,
"runtime": {
"exit_code": 0, # <-- ON FORCE À 0 ICI : Tout s'est bien passé pour le scanner
"exit_code": exit_code,
"stdout": "Scan statique universel effectué avec succès.",
"stderr": stderr_output,
"duration_seconds": duration,
"timeout_triggered": False
"timeout_triggered": timeout_triggered
},
"issues": issues_list
}