8.5 KiB
8.5 KiB
SECURITY.md
Inhalt
- Kontakt & Meldung von Schwachstellen
- Geltungsbereich
- Unterstützte Versionen
- Transport- & Netzwerksicherheit (TLS)
- Secret-Management (Docker-Secrets, Vault, .env)
- Container- & Orchestrierungs-Sicherheit
- Sicheres Hosting & Infrastruktur-Hardening
- Supply-Chain, Abhängigkeiten & SBOM
- CI/CD- & Releasemanagement-Sicherheit
- Anwendungs-Hardening (Headers, CORS, CSP)
- Daten- & Protokollierungsrichtlinien
- Sicherheits-Tests
- Vorfallreaktion & Backups
- Bedrohungsmodell (kurz)
Kontakt & Meldung von Schwachstellen
Wenn Sie eine Schwachstelle gefunden haben, melden Sie diese vertraulich:
- E-Mail: security@patchping.org
- Optional PGP: , öffentlicher Schlüssel: <Link/Key-ID>
- Reaktionsziel: Erstbestätigung innerhalb von 3 Werktagen, Status-Update innerhalb von 7 Tagen.
- Bitte nutzen Sie Responsible Disclosure: Keine öffentliche Offenlegung, keine Datenveränderung, keine Dienstunterbrechung. Testen Sie nur Systeme im Geltungsbereich.
Außerhalb des Geltungsbereichs: Social Engineering, physischer Zugriff, DDoS/Stress-Tests ohne ausdrückliche schriftliche Genehmigung.
Geltungsbereich
- Repos / Services:
<repo-name>,<service-name> - Umgebungen: Dev, Staging, Production
- Abhängigkeiten: Alle in
package.json/go.mod/requirements.txtetc. - Nicht umfasst: Drittanbieter-Dienste außerhalb unserer Kontrolle, persönliche Forks.
Unterstützte Versionen
| Version | Status | Sicherheitsfixes bis |
|---|---|---|
main |
aktiv | laufend |
vX.Y |
LTS (12 Mon.) | <Datum> |
| <älter> | EOL | – |
Sicherheitsupdates erhalten ausschließlich unterstützte Linien.
Transport & Netzwerksicherheit (TLS)
- Anforderung: TLS 1.2+ (bevorzugt TLS 1.3).
- Zertifikate: Aus vertrauenswürdigem CA-Store, OCSP-Stapling aktivieren, HSTS mit Preload für Public Sites (nach sorgfältiger Prüfung).
- Cipher: Moderne Profile (z. B. Mozilla „intermediate“ oder „modern“). Kein
TLS_RSA_*, keine Null-/Export-Cipher. - Perfect Forward Secrecy (ECDHE) verpflichtend.
- In-Cluster (Service-zu-Service): mTLS (z. B. mit Service Mesh oder Sidecars).
Beispiel NGINX (vereinfacht):
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5:!3DES;
ssl_session_cache shared:SSL:10m;
ssl_stapling on; ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
Secret-Management (Docker-Secrets, Vault, .env)
- Do not: Secrets in Git, Images, Layern oder in
ENVpersistieren. - Do:
- Docker Swarm/Kubernetes/Compose Secrets oder Vault / Cloud Secret Manager verwenden.
- Rotations-Policy, minimale TTLs, Least Privilege.
- Im Code nur über Files/Runtime einlesen (
/run/secrets/...o. ä.).
Docker Compose (Beispiel):
services:
app:
image: your/app:latest
secrets:
- db_password
environment:
DB_PASSWORD_FILE: /run/secrets/db_password
secrets:
db_password:
file: ./secrets/db_password.txt # nicht ins Repo committen
Im Code (Pseudocode):
import os, pathlib
def read_secret(path_or_envfile):
p = os.getenv("DB_PASSWORD_FILE", path_or_envfile)
return pathlib.Path(p).read_text(encoding="utf-8").strip()
Für lokale Entwicklung:
.env.examplebereitstellen,.envin.gitignore.
Container & Orchestrierungs-Sicherheit
- Images: Minimal-Basis (distroless/alpine), keine Paketmanager/Compiler in Runtime-Images; immutable Tags + Digests pinnen.
- User: Container nicht als root (
USER 10001:10001). - FS:
readOnlyRootFilesystem, nur benötigte Volumes. - Capabilities: Drop all; selektiv erlauben (
NET_BIND_SERVICEetc.). - Seccomp/AppArmor: Restriktive Profile aktivieren.
- Netzwerk: Default-Deny zwischen Pods/Services, nur benötigte Egress/DNS.
- Runtime: Health/Readiness, Ressourcengrenzen (
requests/limits), Image-Signing (z. B. cosign).
Dockerfile (Skizze):
FROM gcr.io/distroless/python3
WORKDIR /app
COPY app/ /app
USER 10001:10001
CMD ["python", "main.py"]
Sicheres Hosting & Infrastruktur-Hardening
- Zugriff: MFA/2FA überall, FIDO2 bevorzugt; keine Passwort-SSH-Logins, nur Keys; kurzlebige Zugangstokens (OIDC).
- Patchen: OS & Middleware regelmäßig, automatische Sicherheitsupdates wo möglich.
- Firewalls/WAF: Eingehend/ausgehend minimal; Rate Limiting.
- Logs: Zentral sammeln (tamper-evident), Zeit/NTP synchronisieren.
- Backups: Verschlüsselt (at rest & in transit), Restore-Tests (mind. quartalsweise).
- DNS/Email: DNSSEC wo möglich; SPF, DKIM, DMARC „quarantine/reject“.
- Cloud: Least Privilege IAM, getrennte Accounts/Projekte pro Umgebung, Security Groups knauserig.
Supply-Chain, Abhängigkeiten & SBOM
- Pinning: Exakte Versionen (oder Range + Lockfiles).
- Automatische Updates: Renovate/Dependabot mit Review.
- Scanning: SCA (Dependencies), Image-Scanner (Trivy/Grype), OS-Patches.
- SBOM: Erzeugen (CycloneDX oder SPDX) und dem Release beilegen.
- Verifikation: Signierte Artefakte (Sigstore/cosign); Registry-Policies (nur signiert zulassen).
CI/CD & Releasemanagement-Sicherheit
- Branch Protection: Reviews, status checks, signierte Commits/Tags.
- Secrets im CI: Nur benötigte Variablen, maskiert; keine Secrets in Job-Logs; OIDC-Föderation statt dauerhafter Cloud-Keys.
- Isolierung: Untrusted PRs in isolierten Workflows ohne Secrets; Dependency Caching mit Prüfsummen.
- Artefakte: Prüfsummen/Signaturen veröffentlichen; Provenance (SLSA-Gedanken).
- Checks: SAST, IaC-Scan (Terraform/K8s), Container-Scan als Pflicht vor Release.
Anwendungs-Hardening (Headers, CORS, CSP)
- Security Headers (Beispiele):
Content-Security-Policy: default-src 'self'(feinjustieren)X-Content-Type-Options: nosniffX-Frame-Options: DENY(oderSAMEORIGINfalls nötig)Referrer-Policy: no-referrerPermissions-Policy: camera=(), geolocation=()
- CORS: Nur notwendige Origins/Methoden/Headers; keine
*für Credentials. - AuthN/Z: Rate Limits, Lockouts, MFA-Optionen; sichere Session-Cookies (
Secure,HttpOnly,SameSite=Strict). - Crypto: Bewährte Bibliotheken, aktuelle Algorithmen, kein Eigenbau.
Daten & Protokollierungsrichtlinien
- Klassifizierung: Öffentliche / Intern / Vertraulich / Geheim.
- PII: Data Minimization; Verschlüsselung at rest (z. B. AES-256), Feld-Level-Encryption bei Bedarf.
- Logs: Keine Secrets/PII; Rotations- & Aufbewahrungsfristen; Zugriff nur für Befugte.
- DSGVO: Rechtsgrundlage dokumentieren, Betroffenenrechte, Auftragsverarbeiterverträge.
Sicherheits-Tests
- SAST: Bei jedem Commit/PR.
- DAST: Gegen Staging mit Test-Accounts.
- IaC/Cloud: Terraform/K8s/Cloud Config Scanner.
- Dependency/Container: bei jedem Build.
- Penetrationstests/Bug Bounty: Mind. jährlich bzw. vor großen Releases; Scope wie oben.
Vorfallreaktion & Backups
- Runbooks: Erkennung → Eindämmung → Beseitigung → Wiederherstellung → Lessons Learned.
- Kommunikation: Interne Kanäle, Eskalationsmatrix, rechtliche Meldepflichten (z. B. 72-Stunden-Fenster beachten).
- Backups: 3-2-1-Regel, regelmäßige Restore-Drills, KMS-geschützt.
Bedrohungsmodell (kurz)
- Angriffsflächen: Öffentliche HTTP(S)-Endpunkte, CI/CD, Artefakt-Registry, Admin-Backends, Supply-Chain.
- Gegner: Opportunistische Angreifer, Botnets, gezielte Kompromittierung von Zugangsdaten.
- Kontrollen (Auszug): MFA, mTLS, Least Privilege, Code-& Dependency-Scans, signierte Builds, Netzwerk-Policies, Monitoring/Alerting.
Änderungshistorie
30.01.2025– Initiale Version.