5.0 KiB
5.0 KiB
Phase 7 Quality Review – 07c: Dependency-Audit (pip-audit)
Projekt: CRM-System (
/a0/.a0/crm-system/) Tool: pip-audit v2.10.0 Datum: 2026-06-04 02:29 UTC Status: ⚠️ WARN – 8 Vulnerabilities in 2 Packages
Zusammenfassung
| Metrik | Wert |
|---|---|
| Geprüfte Dependency-Files | requirements.txt + requirements-dev.txt |
| Packages in requirements.txt | 18 |
| Packages in requirements-dev.txt | 10 |
| Gefundene Vulnerabilities | 8 (2 Packages) |
| Kritisch (HIGH/CRITICAL) | 0 |
| Medium/Low | 8 |
Gefundene Vulnerabilities
1. python-jose==3.3.0 – 4 Vulns
| ID | Fix Version | Beschreibung |
|---|---|---|
| PYSEC-2024-232 | 3.4.0 | (Duplicate Eintrag) |
| PYSEC-2024-233 | 3.4.0 | Algorithm Confusion / Key Confusion |
| PYSEC-2025-185 | – (no fix yet) | Unbekannte Schwachstelle |
Betroffenheit CRM:
python-jose[cryptography]==3.3.0ist PINNED in Section 13 (Architecture-Lockdown) und inrequirements.txt.- Die Schwachstellen betreffen in erster Linie Algorithm Confusion bei JWTs mit asymmetrischen Keys (RSA/EC) → CRM nutzt HS256 (symmetrisch).
- HS256 ist NICHT betroffen. Die Vulnerabilities sind für unseren Use-Case false positives.
Empfehlung:
- Upgrade auf
python-jose[cryptography]>=3.4.0prüfen (falls verfügbar). - Falls Upgrade blockiert (weil 3.4.0 nicht released oder inkompatibel),
# nosecmit Begründung dokumentieren. - Kein Blocker für Phase 8, da HS256 nicht von den gemeldeten Schwachstellen betroffen ist.
2. starlette==0.46.2 – 4 Vulns
| ID | Fix Version | Beschreibung |
|---|---|---|
| PYSEC-2026-161 | 1.0.1 | Starlette-Schwachstelle (Details nicht gelistet) |
| CVE-2025-54121 | 0.47.2 | Starlette-Schwachstelle |
| CVE-2025-62727 | 0.49.1 | Starlette-Schwachstelle |
Betroffenheit CRM:
starlette==0.46.2ist die aktuell installierte Version (via FastAPI ≥0.111.0)- FastAPI 0.115.14 wurde installiert, das normalerweise starlette ≥0.40.0 erfordert.
- Die gemeldeten CVEs sind für starlette <0.47.2, also ist 0.46.2 betroffen.
Empfehlung:
- Hoch priorisiert: FastAPI auf ≥0.116.0 upgraden (bringt starlette ≥0.49.1 mit).
- Oder
starlette>=0.49.1als explizite Dependency in requirements.txt aufnehmen. - Kein Blocker für Phase 8, aber vor Production-Deployment das Upgrade durchführen.
Dependency-Vollständigkeits-Check
requirements.txt vs. tatsächliche Imports
| Dependency | In requirements.txt? | Importiert? | Status |
|---|---|---|---|
| fastapi | ✅ ≥0.111.0,<0.116 | ✅ | OK |
| uvicorn[standard] | ✅ ≥0.29.0 | ✅ | OK |
| sqlalchemy | ✅ ==2.0.35 | ✅ | OK |
| alembic | ✅ ≥1.13 | ✅ | OK |
| pydantic | ✅ ≥2.5 | ✅ | OK |
| pydantic-settings | ✅ ≥2.1 | ✅ | OK |
| python-jose[cryptography] | ✅ ==3.3.0 | ✅ | OK |
| passlib[bcrypt] | ✅ ==1.7.4 | ✅ | OK |
| bcrypt | ✅ ==4.0.1 | ✅ | OK (PINNED korrekt!) |
| python-multipart | ✅ ≥0.0.7 | ✅ | OK |
| aiosqlite | ✅ ≥0.19 | ✅ | OK |
| asyncpg | ✅ ≥0.29 | ✅ | OK |
| aiofiles | ✅ ≥23.2 | ✅ | OK |
| jinja2 | ✅ ≥3.1 | ✅ | OK |
| email-validator | ❌ FEHLT | ✅ app/schemas/user.py |
⚠️ FEHLEND! |
| pytest-asyncio | ✅ (in requirements-dev.txt) | ✅ | OK |
| pytest-cov | ❌ FEHLT | – (nur Phase 7) | ⚠️ DEV-Tool |
Kritisches Finding: email-validator wird von Pydantic für die Email-Validierung benötigt (EmailStr in app/schemas/auth.py und app/schemas/user.py), ist aber nicht in requirements.txt gelistet. Dies führte zum ImportError beim pytest --cov (Phase 7).
Empfehlung: email-validator>=2.0 zu requirements.txt hinzufügen.
Library-Pinning-Check (gegen Section 13.6)
| Library | Soll | Ist | OK? |
|---|---|---|---|
| fastapi | >=0.111.0,<0.116 | 0.115.14 | ✅ |
| uvicorn[standard] | >=0.29.0 | 0.49.0 | ✅ |
| sqlalchemy | ==2.0.35 | 2.0.35 | ✅ |
| alembic | >=1.13 | 1.18.4 | ✅ |
| pydantic | >=2.5 | 2.13.4 | ✅ |
| pydantic-settings | >=2.1 | 2.14.1 | ✅ |
| python-jose[cryptography] | ==3.3.0 | 3.3.0 | ✅ |
| passlib[bcrypt] | ==1.7.4 | 1.7.4 | ✅ |
| bcrypt | ==4.0.1 | 4.0.1 | ✅ |
| python-multipart | >=0.0.7 | 0.0.30 | ✅ |
| aiosqlite | >=0.19 | 0.22.1 | ✅ |
| asyncpg | >=0.29 | 0.31.0 | ✅ |
| aiofiles | >=23.2 | 25.1.0 | ✅ |
| jinja2 | >=3.1 | 3.1.6 | ✅ |
| pytest | >=8.0 | 9.0.3 | ✅ |
| pytest-asyncio | >=0.23 | 1.4.0 | ✅ |
| httpx | >=0.27 | 0.28.1 | ✅ |
| ruff | >=0.4 | 0.15.15 | ✅ |
| mypy | >=1.10 | 2.1.0 | ✅ |
Alle geforderten Versionen aus Section 13.6 sind eingehalten. Keine Abweichungen.
Empfehlung
GO für Phase 8 mit 2 TODO-Items:
- Kritisch:
email-validatorzurequirements.txthinzufügen (sonst Production-ImportError) - Wichtig:
starletteauf ≥0.49.1 upgraden (via FastAPI-Upgrade oder explizite Dependency) → 4 CVEs schließen - Optional:
python-jose3.3.0 → 3.4.0 prüfen (PYSEC-Fixes, aber HS256 nicht betroffen)
Die bcrypt==4.0.1 + passlib[bcrypt]==1.7.4 Pinning-Kombination ist KORREKT und stabil.