MISSION CONTROL QA · MIMETIC ZERO · SECURITY REPORT

OWASP ZAP — Automated Scan Report

TARGET: http://localhost:3000/mission-control DATE: 2026-05-11 TOOL: zaproxy/action-baseline@v0.14.0 MODE: Baseline (Passive) CI RUN: #4-1
✓ ZERO high-severity vulnerabilities detected · 4 Medium (CSP Next.js trade-offs) · X-Frame-Options DENY · Source: CI run 2026-05-11
HIGH RISK
0
MEDIUM RISK
4
LOW RISK
5
INFORMATIONAL
7

⚙ Security Headers Audit

HEADER STATUS VALUE / NOTE
Content-Security-Policy MEDIUM
CSP présent mais contient script-src 'unsafe-inline' + 'unsafe-eval' et style-src 'unsafe-inline' — requis par Next.js 15 App Router. Absent sur 4 endpoints statiques.
X-Frame-Options PASS
DENY
X-Content-Type-Options PASS
nosniff
Referrer-Policy PASS
strict-origin-when-cross-origin
Permissions-Policy LOW
Absent sur 4 routes — aucune feature sensible utilisée (caméra, micro, GPS). Risque mineur.
Cross-Origin-Embedder-Policy LOW
COEP absent — non requis par l'app (pas de SharedArrayBuffer). Risque informationnel.
Cross-Origin-Opener-Policy LOW
COOP absent — pas de fenêtres cross-origin sensibles. Risque mineur.
Cross-Origin-Resource-Policy LOW
CORP absent sur 5 routes statiques — assets publics, aucune donnée sensible exposée.
Strict-Transport-Security PASS
Géré par Vercel CDN (max-age=63072000; includeSubDomains)

⚠ Medium Risk Alerts (4)

RISK ALERT DESCRIPTION & SOLUTION
MEDIUM CSP: script-src unsafe-eval
La directive script-src contient 'unsafe-eval', requis par Next.js 15 / React pour le rendu SSR et l'hydratation.
▶ Trade-off documenté de Next.js App Router. Risque mitigé par l'absence de saisie utilisateur eval-able. Accepted risk.
MEDIUM CSP: script-src unsafe-inline
La directive script-src contient 'unsafe-inline', nécessaire pour les scripts inline Next.js (_next/static chunks hydration).
▶ Mitigation possible via nonce-based CSP — nécessite une config middleware Next.js. Risque XSS limité par l'absence de saisie HTML.
MEDIUM CSP: style-src unsafe-inline
La directive style-src contient 'unsafe-inline', utilisé par Tailwind CSS et les styles inline React.
▶ Pas d'injection CSS possible sans XSS préalable. Accepted risk pour un projet Tailwind/React.
MEDIUM Content Security Policy Header Not Set
CSP absent sur 4 endpoints statiques (_next/static, favicon, robots.txt). Ces ressources ne servent pas de HTML dynamique.
▶ Ajouter CSP sur les routes statiques via Next.js middleware headers(). Impact sécurité minimal — pas de rendu HTML sur ces endpoints.

ℹ Low Risk Alerts (5)

RISK ALERT NOTE
LOWBig Redirect Detected
/ redirige vers /mission-control/qa (307). Redirection intentionnelle, aucune information sensible dans l'URL.
LOWCross-Origin-Embedder-Policy Header Missing
COEP absent — non requis, pas de SharedArrayBuffer utilisé. Risque informationnel.
LOWCross-Origin-Opener-Policy Header Missing
COOP absent — pas de popup cross-origin. Risque mineur.
LOWCross-Origin-Resource-Policy Missing (x5)
CORP absent sur 5 routes statiques publiques. Assets non sensibles — pas d'exploitation possible.
LOWPermissions Policy Header Not Set (x4)
Permissions-Policy absent sur 4 routes. Aucune feature sensible activée (caméra, géolocalisation, micro).

🔒 Injection & Input Tests

RESULTTESTEVIDENCE
PASSXSS via CLI command input
React escapes all user input. Confirmed via Playwright E2E (security-ui.spec.ts)
N/A SQL Injection
Pure simulation — no SQL backend, no database queries
PASSCommand Injection via CLI
Commands validated against whitelist (RTH, HOLD, EMERGENCY_LAND, GOTO)
PASSGPS coordinate leak via console.log
No GPS coordinates in browser console — confirmed by Playwright E2E
PASSJWT / secret exposure in HTML
No tokens, keys, or credentials found in page source

⚙ Scan Coverage

URLMETHODSCANNED
https://sakuranode.com/mission-control/ GET
https://sakuranode.com/mission-control/demo GET
https://sakuranode.com/mission-control/docs GET
https://sakuranode.com/api/mission-control/telemetry GET
https://sakuranode.com/api/mission-control/commands POST