@aegis-scan/skills 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +204 -0
- package/CHANGELOG.md +48 -3
- package/package.json +1 -1
- package/sbom.cdx.json +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +1080 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/LICENSE +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +242 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +427 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +63 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +1581 -10
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +323 -31
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +610 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +107 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +81 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/paragraphs.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/paragraphs.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/paragraphs.md +112 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/paragraphs.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/articles.md +182 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/paragraphs.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/INDEX.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +185 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/paragraphs.md +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +137 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +122 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/mistral-eu.md +123 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/openai-dpa.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/nextauth-tom.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/supabase-auth-tom.md +104 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/proxy-csp-pattern.md +93 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/payment/stripe-pci-tom.md +121 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/plausible-pattern.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/AffiliateDisclaimer.tsx.example +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/COMPLIANCE-AUDIT-TRAIL-template.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSE-Section-UGC.md.example +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +156 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/LostFoundReportForm-consent.tsx.example +126 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/README.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/UmamiScript.tsx.example +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-cron.ts.example +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/data-retention-workflow.yml.example +47 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/proxy-strict-dynamic.ts.example +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/security.txt.example +26 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/aegis-native/rls-defense/SKILL.md +85 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-module-builder/SKILL.md +5 -1
- package/skills/foundation/aegis-native/aegis-orchestrator/SKILL.md +87 -4
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +69 -9
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
- package/skills/offensive/matty-fork/cicd-redteam/SKILL.md +531 -0
- package/skills/offensive/matty-fork/cloud-security/SKILL.md +106 -0
- package/skills/offensive/matty-fork/container-escape/SKILL.md +174 -0
- package/skills/offensive/matty-fork/mobile-pentester/SKILL.md +357 -0
- package/skills/offensive/matty-fork/subdomain-takeover/SKILL.md +154 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/README.md +92 -0
- package/skills/osint/elementalsouls-fork/offensive-osint/SKILL.md +4177 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/README.md +66 -0
- package/skills/osint/elementalsouls-fork/osint-methodology/SKILL.md +1695 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
license: MIT
|
|
3
|
+
purpose: Generische DSFA-Vorlage (Art. 35 DSGVO). Anonym, brand-agnostic.
|
|
4
|
+
references: dsgvo.md (DSFA-Trigger-Liste)
|
|
5
|
+
sources: BayLDA-Hinweise zur DSFA + DSK-Whitelist 2018
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Datenschutz-Folgenabschaetzung (DSFA) — Vorlage
|
|
9
|
+
|
|
10
|
+
> Diese Vorlage erfuellt Art. 35 DSGVO + DSK-Whitelist 2018 + BayLDA-Hinweise.
|
|
11
|
+
> Kein Ersatz fuer anwaltliche Bewertung. Vor Inbetriebnahme der Verarbeitung
|
|
12
|
+
> intern abnehmen lassen (Datenschutzbeauftragter / interner Compliance-Officer).
|
|
13
|
+
|
|
14
|
+
## 1. Verantwortlicher (Art. 4 Nr. 7 DSGVO)
|
|
15
|
+
|
|
16
|
+
| Feld | Wert |
|
|
17
|
+
|------|------|
|
|
18
|
+
| Verantwortlicher | `<Operator-Firma>` |
|
|
19
|
+
| Anschrift | `<vollstaendige-Anschrift>` |
|
|
20
|
+
| Kontakt DSB | `<email-DSB>` (sofern bestellt) |
|
|
21
|
+
| DSFA-Datum | `<YYYY-MM-DD>` |
|
|
22
|
+
| DSFA-Version | `<vN.N>` |
|
|
23
|
+
|
|
24
|
+
## 2. Beschreibung der Verarbeitung (Art. 35 Abs. 7 lit. a DSGVO)
|
|
25
|
+
|
|
26
|
+
- **Verarbeitungszweck**: `<Zweck>`
|
|
27
|
+
- **Datenkategorien**: `<Kategorien>` (z.B. Stammdaten, Kontaktdaten, Nutzungsdaten, ggf. besondere Kategorien Art. 9)
|
|
28
|
+
- **Betroffene Personen**: `<Personenkreis>`
|
|
29
|
+
- **Empfaenger**: `<intern>` / `<Auftragsverarbeiter>` / `<Drittland>`
|
|
30
|
+
- **Speicherdauer**: `<Frist>` (mit gesetzlichem Anker)
|
|
31
|
+
- **Rechtsgrundlage**: Art. 6 Abs. 1 lit. `<a/b/c/d/e/f>` DSGVO `<+ Art. 9 lit. X falls relevant>`
|
|
32
|
+
|
|
33
|
+
## 3. Notwendigkeit + Verhaeltnismaessigkeit (Art. 35 Abs. 7 lit. b)
|
|
34
|
+
|
|
35
|
+
- **Notwendigkeit**: warum diese Daten?
|
|
36
|
+
- **Datenminimierung**: was wurde weggelassen?
|
|
37
|
+
- **Pseudonymisierung / Anonymisierung**: wo moeglich?
|
|
38
|
+
|
|
39
|
+
## 4. Risiken fuer Betroffene (Art. 35 Abs. 7 lit. c)
|
|
40
|
+
|
|
41
|
+
| Risiko-Kategorie | Bewertung | Begruendung |
|
|
42
|
+
|------------------|-----------|-------------|
|
|
43
|
+
| Identitaetsdiebstahl | `<niedrig/mittel/hoch>` | `<...>` |
|
|
44
|
+
| Diskriminierung | `<...>` | `<...>` |
|
|
45
|
+
| Reputations-/Vermoegensschaden | `<...>` | `<...>` |
|
|
46
|
+
| Profiling | `<...>` | `<...>` |
|
|
47
|
+
| Verlust Kontrolle ueber Daten | `<...>` | `<...>` |
|
|
48
|
+
|
|
49
|
+
### 4.1 Schadensersatz-Erwartungswert (post-EuGH C-300/21)
|
|
50
|
+
|
|
51
|
+
| Schaden-Klasse | Realistische Hoehe pro Betroffener | Begruendung |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| Bagatell-Verletzung | 0-100 EUR | C-456/22 Gemeinde Ummendorf — keine Erheblichkeitsschwelle, aber kurzfristiger Kontrollverlust niedrig bewertet |
|
|
54
|
+
| Befuerchtungs-Schaden (Datenleck) | 100-500 EUR | C-340/21 Natsionalna agentsia — bei Cyber-Angriff ausreichend; pro Betroffener |
|
|
55
|
+
| Massendaten-Verarbeitung ohne Rechtsgrundlage | 500-2.000 EUR | C-446/21 Schrems vs Meta — Datenminimierungs-Verstoss bei Profiling-Aggregation |
|
|
56
|
+
| Sensible Daten Art. 9 DSGVO | 1.000-5.000 EUR | C-21/23 Lindenapotheke — Gesundheits-/Religiose/Biometrie-Daten erhoehter Schutz |
|
|
57
|
+
| Identitaetsdiebstahl tatsaechlich erfolgt | bis Vollausgleich materieller Schaden | C-182/22 + C-189/22 Scalable — voller Ausgleich |
|
|
58
|
+
|
|
59
|
+
**Wichtig (C-590/22 PS GbR)**: Schadensersatz hat **reine Kompensationsfunktion** — NICHT mit Bussgeld-Hoehen argumentieren. Bemessung orientiert sich an konkreten Auswirkungen fuer Betroffene (Aerger-Dauer, Daten-Sensitivitaet, Wiederholbarkeit). Cross-Reference: `references/eu-eugh-dsgvo-schadensersatz.md` Tier-1.
|
|
60
|
+
|
|
61
|
+
### 4.2 Doku-Pflicht nach § 35 BDSG (Beschaeftigtendaten-Spezifika)
|
|
62
|
+
|
|
63
|
+
Bei Beschaeftigtendaten-Verarbeitung zusaetzlich zur DSGVO-DSFA pruefen:
|
|
64
|
+
- **§ 35 Abs. 1 BDSG**: Recht auf Berichtigung — Verfahren ueberhaupt vorgesehen?
|
|
65
|
+
- **§ 35 Abs. 2 BDSG**: Loeschungs-Anspruch enger als Art. 17 DSGVO bei behoerdlichen Aufbewahrungspflichten
|
|
66
|
+
- **§ 35 Abs. 3 BDSG**: Statt Loeschung Einschraenkung der Verarbeitung bei Pflicht-Aufbewahrung
|
|
67
|
+
- **EuGH C-65/23 MK gg K GmbH (19.12.2024)**: Beschaeftigten-Betriebsvereinbarung muss kumulativ Art. 88 Abs. 2 DSGVO **UND** Art. 5/6/9 DSGVO erfuellen — BV kein Schutzschild fuer DSGVO-Nicht-Konformitaet (Cross-Reference: `references/eu-eugh-dsgvo-schadensersatz.md` Tier-1 #10)
|
|
68
|
+
|
|
69
|
+
**Pflicht-Pruefung bei HR-Tools (Workday, HRIS, Workforce-Analytics, KI-Hiring)**:
|
|
70
|
+
1. Rechtsgrundlage Art. 88 + Art. 6 + ggf. Art. 9 DSGVO
|
|
71
|
+
2. § 26 BDSG-Verhaeltnismaessigkeit
|
|
72
|
+
3. BetrVG § 87 Abs. 1 Nr. 6 (Mitbestimmung KI-Tools)
|
|
73
|
+
4. AGG § 7 + § 22 (Diskriminierungs-Beweislast bei KI-Bewerbungstools)
|
|
74
|
+
5. § 35 BDSG-Berichtigungs-/Loeschungs-Verfahren
|
|
75
|
+
|
|
76
|
+
## 5. Abhilfemassnahmen (Art. 35 Abs. 7 lit. d)
|
|
77
|
+
|
|
78
|
+
| Massnahme | Implementierungsstatus | Verify-Command |
|
|
79
|
+
|-----------|------------------------|----------------|
|
|
80
|
+
| Verschluesselung at-rest (TLS, DB) | `<umgesetzt>` | `<curl -sI ...>` |
|
|
81
|
+
| Verschluesselung in-transit | `<umgesetzt>` | `<...>` |
|
|
82
|
+
| Zugriffsbeschraenkung (RBAC) | `<...>` | `<...>` |
|
|
83
|
+
| Audit-Logging | `<...>` | `<...>` |
|
|
84
|
+
| Datenminimierung in Logs | `<...>` | `<...>` |
|
|
85
|
+
| Auto-Cleanup nach Frist | `<...>` | `<...>` |
|
|
86
|
+
| TOMs (Art. 32 DSGVO) | `<verweis>` | `<...>` |
|
|
87
|
+
|
|
88
|
+
## 6. Konsultations-Pflicht (Art. 36 DSGVO)
|
|
89
|
+
|
|
90
|
+
- Wenn nach Massnahmen Risiko **weiterhin hoch** → Pflicht, Aufsichtsbehoerde
|
|
91
|
+
zu konsultieren VOR Beginn der Verarbeitung.
|
|
92
|
+
- Frist Aufsichtsbehoerde: 8 Wochen (verlaengerbar 6 Wochen).
|
|
93
|
+
|
|
94
|
+
## 7. Review-Frist
|
|
95
|
+
|
|
96
|
+
DSFA mindestens jaehrlich oder bei wesentlicher Aenderung der Verarbeitung
|
|
97
|
+
ueberpruefen. Naechstes Review: `<YYYY-MM-DD>`.
|
|
98
|
+
|
|
99
|
+
## 8. Spezifika fuer Art-9-Verarbeitungen (V4-Pattern, post-Art-9-Workflow-Audit 2026-05-03)
|
|
100
|
+
|
|
101
|
+
Bei besonderen Kategorien Art. 9 DSGVO (Gesundheitsdaten, biometrisch, Gewerkschaft,
|
|
102
|
+
Religion, politische Meinung) gelten **verschaerfte Anforderungen** (Art. 35 Abs. 3
|
|
103
|
+
lit. b — DSFA Pflicht; KMU-Privileg gilt nicht).
|
|
104
|
+
|
|
105
|
+
### 8.1 Rechtsgrundlage-Pruefung
|
|
106
|
+
|
|
107
|
+
- Hauptpfad: Art. 9 Abs. 2 lit. a DSGVO (ausdrueckliche Einwilligung)
|
|
108
|
+
- Alternativen pruefen + ausschliessen:
|
|
109
|
+
- lit. b (Arbeitsrecht / Sozialschutz) — nur HR-Kontexte
|
|
110
|
+
- lit. c (lebenswichtige Interessen) — nur Notfall
|
|
111
|
+
- lit. f (Rechtsanspruechen) — nur prozessual
|
|
112
|
+
- lit. h (Gesundheitsvorsorge durch Berufsgeheimnistraeger) — nur Heilberuf
|
|
113
|
+
- § 22 BDSG: Detail-Erlaubnis-Norm, NUR wenn lit. h greift
|
|
114
|
+
- **Verbotener Verweis**: Art. 6 Abs. 1 lit. f (berechtigtes Interesse) — bei Art-9 nicht zulaessig
|
|
115
|
+
|
|
116
|
+
### 8.2 Beweis-Pflicht-Mechanismus (Art. 7 Abs. 1)
|
|
117
|
+
|
|
118
|
+
| Modus | Implementierung |
|
|
119
|
+
|-------|-----------------|
|
|
120
|
+
| Tablet-eES | SignaturePad-PNG verschluesselt im DB-Record (eIDAS Art. 3 Nr. 10) |
|
|
121
|
+
| Papier eigenhaendig + Scan | Original im Tresor + SHA-256-Hash in DB |
|
|
122
|
+
| Mitarbeiter-Abtipp + Scan + Mitarbeiter-Co-Signatur | Pflicht-Upload + Mitarbeiter-Bestaetigungs-Signatur |
|
|
123
|
+
|
|
124
|
+
### 8.3 Crypto-at-Rest-TOMs
|
|
125
|
+
|
|
126
|
+
- [ ] AES-256-GCM (oder ChaCha20-Poly1305) mit AAD-Bindung an Row-ID
|
|
127
|
+
- [ ] Key-Versioning im Ciphertext-Format
|
|
128
|
+
- [ ] Decrypt-Fail-Audit-Log (Tampering- + Key-Loss-Detection)
|
|
129
|
+
- [ ] Recovery-Procedure dokumentiert (`docs/security/encryption-recovery.md`)
|
|
130
|
+
- [ ] Mind. 3 unabhaengige Key-Backup-Standorte (Production-ENV + Vault + Offline)
|
|
131
|
+
|
|
132
|
+
### 8.4 Aufbewahrungs-Differenzierung
|
|
133
|
+
|
|
134
|
+
| Setup | Frist | Norm |
|
|
135
|
+
|-------|-------|------|
|
|
136
|
+
| Wellness/Kosmetik | 3 Jahre | BGB § 195 |
|
|
137
|
+
| Heilpraktiker | 10 Jahre | BGB § 630f Abs. 3 |
|
|
138
|
+
| Personenschaden-Sondercase | bis 30 Jahre | BGB § 199 Abs. 2 |
|
|
139
|
+
|
|
140
|
+
### 8.5 Audit-Log-Pflicht-Events
|
|
141
|
+
|
|
142
|
+
- create / view / export / revoke / delete (Metadaten-only beim DELETE!)
|
|
143
|
+
- decrypt_failure mit reason + version + keyId
|
|
144
|
+
- scan_hash_mismatch (Tampering-Indikator)
|
|
145
|
+
|
|
146
|
+
### 8.6 Public-Form-Validierung
|
|
147
|
+
|
|
148
|
+
Wenn Patienten via Public-Tablet/Self-Service Anamnese ausfuellen koennen — Pflicht-Signatur-Block muss UI-seitig vor Submit erzwingen werden. DB-CHECK-Constraint allein → schlechte UX (500-Error statt Submit-Block).
|
|
149
|
+
|
|
150
|
+
> Audit-Pattern fuer Art-9: siehe `references/audit-patterns.md` Phase 5h (Art-9-Beweis-Workflow-Audit).
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
*Disclaimer: Diese Vorlage ist eine technisch-indikative Hilfe, keine Rechtsberatung
|
|
155
|
+
i.S.d. § 2 RDG. Vor produktivem Einsatz von einem Fachanwalt fuer Datenschutzrecht
|
|
156
|
+
oder einem zertifizierten Datenschutzbeauftragten pruefen lassen.*
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// MIT-License — anonymized teaching snippet for brutaler-anwalt
|
|
2
|
+
// References: audit-patterns.md Phase 5c UGC-PUBLIC-PII-AUDIT
|
|
3
|
+
// Pattern: Posting-Form mit Pflicht-Checkbox "wird oeffentlich" (Art. 7 DSGVO Einwilligung)
|
|
4
|
+
|
|
5
|
+
// File: src/components/forms/LostFoundReportForm.tsx (Beispiel: Vermisst-Inserat)
|
|
6
|
+
// Generalisierbar fuer: Marketplace-Inserate, Forum-Threads, oeffentliche Profile.
|
|
7
|
+
|
|
8
|
+
'use client';
|
|
9
|
+
|
|
10
|
+
import { useState, FormEvent } from 'react';
|
|
11
|
+
|
|
12
|
+
interface LostFoundFormState {
|
|
13
|
+
petName: string;
|
|
14
|
+
city: string;
|
|
15
|
+
contactPhone: string;
|
|
16
|
+
contactEmail: string;
|
|
17
|
+
description: string;
|
|
18
|
+
photo: File | null;
|
|
19
|
+
// Pflicht-Consent — ohne diesen kein Submit
|
|
20
|
+
publicConsent: boolean;
|
|
21
|
+
// Optional zusaetzlich: Speicherdauer-Consent + DSE-Akzeptanz
|
|
22
|
+
privacyAccepted: boolean;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const initialState: LostFoundFormState = {
|
|
26
|
+
petName: '',
|
|
27
|
+
city: '',
|
|
28
|
+
contactPhone: '',
|
|
29
|
+
contactEmail: '',
|
|
30
|
+
description: '',
|
|
31
|
+
photo: null,
|
|
32
|
+
publicConsent: false,
|
|
33
|
+
privacyAccepted: false,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export function LostFoundReportForm() {
|
|
37
|
+
const [form, setForm] = useState<LostFoundFormState>(initialState);
|
|
38
|
+
const [error, setError] = useState<string | null>(null);
|
|
39
|
+
const [submitting, setSubmitting] = useState(false);
|
|
40
|
+
|
|
41
|
+
// Submit-Gate — Pflicht-Checkbox + DSE-Akzeptanz
|
|
42
|
+
const canSubmit =
|
|
43
|
+
form.publicConsent &&
|
|
44
|
+
form.privacyAccepted &&
|
|
45
|
+
form.petName.length > 0 &&
|
|
46
|
+
form.city.length > 0 &&
|
|
47
|
+
(form.contactPhone.length > 0 || form.contactEmail.length > 0);
|
|
48
|
+
|
|
49
|
+
async function handleSubmit(e: FormEvent) {
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
setError(null);
|
|
52
|
+
if (!canSubmit) {
|
|
53
|
+
setError('Bitte fuelle alle Pflichtfelder aus und bestaetige beide Hinweise.');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setSubmitting(true);
|
|
57
|
+
try {
|
|
58
|
+
const fd = new FormData();
|
|
59
|
+
Object.entries(form).forEach(([k, v]) => {
|
|
60
|
+
if (v instanceof File) fd.append(k, v);
|
|
61
|
+
else if (typeof v === 'boolean') fd.append(k, v ? 'true' : 'false');
|
|
62
|
+
else fd.append(k, String(v));
|
|
63
|
+
});
|
|
64
|
+
const res = await fetch('/api/lost-found', { method: 'POST', body: fd });
|
|
65
|
+
if (!res.ok) throw new Error(`Server returned ${res.status}`);
|
|
66
|
+
// erfolgreich — redirect / toast
|
|
67
|
+
} catch (err) {
|
|
68
|
+
setError(String(err));
|
|
69
|
+
} finally {
|
|
70
|
+
setSubmitting(false);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<form onSubmit={handleSubmit} className="lost-found-form">
|
|
76
|
+
{/* ... regular fields ... */}
|
|
77
|
+
|
|
78
|
+
{/* PFLICHT-Consent — sichtbar, NICHT vorausgewaehlt */}
|
|
79
|
+
<fieldset className="consent-block" aria-required="true">
|
|
80
|
+
<legend>Veroeffentlichungs-Hinweise (Pflicht)</legend>
|
|
81
|
+
|
|
82
|
+
<label className="consent-row">
|
|
83
|
+
<input
|
|
84
|
+
type="checkbox"
|
|
85
|
+
checked={form.publicConsent}
|
|
86
|
+
onChange={(e) => setForm({ ...form, publicConsent: e.target.checked })}
|
|
87
|
+
required
|
|
88
|
+
/>
|
|
89
|
+
<span>
|
|
90
|
+
Ich habe verstanden, dass dieser Beitrag <strong>oeffentlich
|
|
91
|
+
abrufbar</strong> ist und in Suchmaschinen erscheinen koennte.
|
|
92
|
+
Telefonnummer/E-Mail werden bewusst veroeffentlicht, damit Finder
|
|
93
|
+
Kontakt aufnehmen koennen.
|
|
94
|
+
</span>
|
|
95
|
+
</label>
|
|
96
|
+
|
|
97
|
+
<label className="consent-row">
|
|
98
|
+
<input
|
|
99
|
+
type="checkbox"
|
|
100
|
+
checked={form.privacyAccepted}
|
|
101
|
+
onChange={(e) => setForm({ ...form, privacyAccepted: e.target.checked })}
|
|
102
|
+
required
|
|
103
|
+
/>
|
|
104
|
+
<span>
|
|
105
|
+
Ich akzeptiere die <a href="/datenschutz" target="_blank">
|
|
106
|
+
Datenschutzerklaerung</a> und stimme der Verarbeitung gem. Art. 6
|
|
107
|
+
Abs. 1 lit. a DSGVO zu. Ich kann den Beitrag jederzeit selbst
|
|
108
|
+
loeschen.
|
|
109
|
+
</span>
|
|
110
|
+
</label>
|
|
111
|
+
</fieldset>
|
|
112
|
+
|
|
113
|
+
{error && <div role="alert" className="form-error">{error}</div>}
|
|
114
|
+
|
|
115
|
+
<button type="submit" disabled={!canSubmit || submitting}>
|
|
116
|
+
{submitting ? 'Wird abgeschickt…' : 'Vermisst-Inserat veroeffentlichen'}
|
|
117
|
+
</button>
|
|
118
|
+
</form>
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// VERIFY:
|
|
123
|
+
// - Server-Side: API muss `publicConsent === true` UND `privacyAccepted === true` enforcen
|
|
124
|
+
// (Client-Disable allein reicht nicht — Browser-Devtools koennen den Disable umgehen).
|
|
125
|
+
// - Audit-Log: pro Posting consentId + IP-prefix + Zeitpunkt + Form-Version speichern
|
|
126
|
+
// (Rechenschaftspflicht Art. 5 Abs. 2).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
license: MIT
|
|
3
|
+
purpose: Anonymized teaching snippets referenced by audit-patterns.md / dsgvo.md / checklisten.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Templates — anonymisierte Lehrbuch-Snippets
|
|
7
|
+
|
|
8
|
+
Diese Templates sind brand-agnostische Vorlagen, die in den References als
|
|
9
|
+
konkrete Lehrbuch-Beispiele zitiert werden. Sie ersetzen die in fruehen
|
|
10
|
+
Skill-Versionen direkt eingebetteten Brand-spezifischen Snippets.
|
|
11
|
+
|
|
12
|
+
**Konvention:**
|
|
13
|
+
- `<placeholder>` = vom Operator zu ersetzen (z.B. `<brand>`, `<your-domain>`)
|
|
14
|
+
- `<...>` in Code-Snippets sind absichtlich syntactically-invalid, damit
|
|
15
|
+
copy-paste-Hygiene erzwungen wird
|
|
16
|
+
- Alle `.example`-Files sind **keine** lauffaehigen Module — Build-Tools
|
|
17
|
+
sollen sie ignorieren
|
|
18
|
+
|
|
19
|
+
## Index
|
|
20
|
+
|
|
21
|
+
| Template | Referenced from | Use case |
|
|
22
|
+
|----------|----------------|----------|
|
|
23
|
+
| `DSFA-template.md` | `dsgvo.md` DSFA-Trigger | Datenschutz-Folgenabschaetzung Doc-Vorlage |
|
|
24
|
+
| `VVT-template.md` | `dsgvo.md` VVT | Verzeichnis Verarbeitungstaetigkeiten Vorlage |
|
|
25
|
+
| `COMPLIANCE-AUDIT-TRAIL-template.md` | (Skill-Output-Pattern) | Audit-Trail-Doku-Vorlage fuer eigene Audits |
|
|
26
|
+
| `AffiliateDisclaimer.tsx.example` | `checklisten.md` 3c | React-Component-Vorlage UWG § 5a Abs. 4 |
|
|
27
|
+
| `proxy-strict-dynamic.ts.example` | `audit-patterns.md` HIGH-RISK-CSP | Next.js proxy-CSP Strict-Dynamic-Pattern |
|
|
28
|
+
| `data-retention-cron.ts.example` | `audit-patterns.md` Phase 4 | Bearer-auth Retention-Cleanup Route |
|
|
29
|
+
| `data-retention-workflow.yml.example` | `audit-patterns.md` Phase 4 | GitHub Actions Cron-Trigger |
|
|
30
|
+
| `UmamiScript.tsx.example` | `audit-patterns.md` env-driven Tracking | env-driven Tracking-Component |
|
|
31
|
+
| `security.txt.example` | `audit-patterns.md` Phase 2 | RFC 9116 (kein Placeholder-Bug) |
|
|
32
|
+
| `DSE-Section-UGC.md.example` | `audit-patterns.md` Phase 5c | Vermisst-/Marketplace-DSE-Block |
|
|
33
|
+
| `LostFoundReportForm-consent.tsx.example` | `audit-patterns.md` Phase 5c | Consent-Toggle-Pattern UGC-Posts |
|
package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/UmamiScript.tsx.example
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// MIT-License — anonymized teaching snippet for brutaler-anwalt
|
|
2
|
+
// References: audit-patterns.md env-driven Tracking-Component
|
|
3
|
+
// Pattern: env-driven Umami / Plausible / Fathom Tracking-Snippet
|
|
4
|
+
|
|
5
|
+
// File: src/components/analytics/UmamiScript.tsx
|
|
6
|
+
// Use: include in app/layout.tsx (root layout). Loads only after consent OR
|
|
7
|
+
// if the tracker is configured "cookieless + IP-anon + DNT respect".
|
|
8
|
+
|
|
9
|
+
import Script from 'next/script';
|
|
10
|
+
|
|
11
|
+
interface UmamiScriptProps {
|
|
12
|
+
/** override the env-default; pass site-id explicitly when SSR-safe */
|
|
13
|
+
websiteId?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function UmamiScript({ websiteId }: UmamiScriptProps) {
|
|
17
|
+
// 1. host: env-driven; default = your own analytics subdomain (NOT vendor-default cloud).
|
|
18
|
+
// NEVER hardcode a vendor cloud URL — that's a Drittland-Trigger.
|
|
19
|
+
const host = (
|
|
20
|
+
process.env.NEXT_PUBLIC_ANALYTICS_HOST ??
|
|
21
|
+
'https://<your-analytics-subdomain>'
|
|
22
|
+
).replace(/\/+$/, '');
|
|
23
|
+
|
|
24
|
+
// 2. site-id from env (or prop override)
|
|
25
|
+
const id = websiteId ?? process.env.NEXT_PUBLIC_ANALYTICS_SITE_ID;
|
|
26
|
+
|
|
27
|
+
// 3. fail-soft: no tracking if env not configured (better than fallback to default-cloud)
|
|
28
|
+
if (!id) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<Script
|
|
34
|
+
strategy="afterInteractive"
|
|
35
|
+
src={`${host}/script.js`}
|
|
36
|
+
data-website-id={id}
|
|
37
|
+
data-host-url={host}
|
|
38
|
+
// Privacy-Hardening: respect DNT and GPC client-side (server-side opt: track-DNT off)
|
|
39
|
+
data-do-not-track="true"
|
|
40
|
+
// Cookieless mode + IP-anonymisation are server-side settings.
|
|
41
|
+
// The DSE statement MUST match the actual server-config — verify with admin-panel.
|
|
42
|
+
async
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// USAGE in app/layout.tsx:
|
|
48
|
+
//
|
|
49
|
+
// import { UmamiScript } from '@/components/analytics/UmamiScript';
|
|
50
|
+
// export default function RootLayout({ children }) {
|
|
51
|
+
// return (
|
|
52
|
+
// <html><body>{children}<UmamiScript /></body></html>
|
|
53
|
+
// );
|
|
54
|
+
// }
|
|
55
|
+
//
|
|
56
|
+
// VERIFY:
|
|
57
|
+
// curl -s https://<your-domain> | grep -oE 'data-host-url="[^"]+"'
|
|
58
|
+
// # erwarte: dein operator-eigener Analytics-Host, nie ein Vendor-Cloud-Default
|
|
59
|
+
//
|
|
60
|
+
// DSE-PFLICHT (analog dazu):
|
|
61
|
+
// "Wir nutzen das selbstgehostete Analyse-Tool [Tool-Name] auf <your-analytics-subdomain>.
|
|
62
|
+
// Verarbeitung erfolgt cookieless mit serverseitiger IP-Anonymisierung. DNT/GPC werden
|
|
63
|
+
// respektiert. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an
|
|
64
|
+
// aggregierter Reichweitenmessung). Widerspruch jederzeit moeglich..."
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# VVT-Template — Direct-File-Upload-Verarbeitung
|
|
2
|
+
> Vorlage fuer Verarbeitungstaetigkeit „Datei-Upload via Web-Form".
|
|
3
|
+
> Lege im internen Compliance-Vault als `vvt-direct-file-upload.md` ab.
|
|
4
|
+
> Aktualisiere bei jeder Erweiterung (neue Datei-Typen, neue Storage-Pfade, neue Auftragsverarbeiter).
|
|
5
|
+
>
|
|
6
|
+
> Disclaimer: Technisch-indikative Vorlage, keine Rechtsberatung i.S.d. § 2 RDG.
|
|
7
|
+
> Vor produktivem Einsatz von einem Fachanwalt fuer Datenschutzrecht oder
|
|
8
|
+
> einem zertifizierten Datenschutzbeauftragten pruefen lassen.
|
|
9
|
+
|
|
10
|
+
## Bezeichnung
|
|
11
|
+
Direct-File-Upload via [Form-Name, z.B. „Konfigurator", „Onboarding-Wizard"]
|
|
12
|
+
|
|
13
|
+
## Verantwortlicher
|
|
14
|
+
[Vor- und Nachname, Adresse, Email]
|
|
15
|
+
[ggf. interner Datenschutzbeauftragter — falls Pflicht]
|
|
16
|
+
|
|
17
|
+
## Zweck der Verarbeitung
|
|
18
|
+
[Konkret z.B.: Erfassung von Brand-Assets (Logos, Bilder) fuer Webdesign-
|
|
19
|
+
Briefing-Erstellung im Rahmen der Vertragsanbahnung]
|
|
20
|
+
|
|
21
|
+
## Datenkategorien
|
|
22
|
+
- Datei-Bytes (Bilder, Logos, PDFs)
|
|
23
|
+
- Metadata: Dateiname, Groesse, MIME-Type
|
|
24
|
+
- Indirekte PII: ggf. in Bild-Inhalten (Personenfotos, Unterschriften, Logos mit
|
|
25
|
+
Personenbezug) — siehe Art. 9-Bewertung unten
|
|
26
|
+
|
|
27
|
+
## Art. 9 DSGVO Spezial-Kategorien Bewertung
|
|
28
|
+
- [ ] Personenfotos potentiell biometrische Daten?
|
|
29
|
+
- Wenn nicht zur **eindeutigen Identifikation** verarbeitet → KEINE Art. 9
|
|
30
|
+
- Wenn ja (z.B. Gesichtserkennung, Vergleichs-Hash) → Art. 9-Pflichten
|
|
31
|
+
- [ ] Unterschriften = biometrische Daten? → ja, falls zur Identifikation; ansonsten
|
|
32
|
+
regulaere PII
|
|
33
|
+
|
|
34
|
+
## Empfaenger / Kategorien von Empfaengern
|
|
35
|
+
- Operator selbst (intern)
|
|
36
|
+
- SMTP-Auftragsverarbeiter (z.B. All-Inkl, Mailgun, Postmark) — siehe AVV-Liste
|
|
37
|
+
- ggf. Object-Storage-Anbieter (z.B. Hetzner Object Storage) — siehe AVV-Liste
|
|
38
|
+
- ggf. Mail-Forwarding-Empfaenger (z.B. externe Berater) — siehe interne Empfaenger-Liste
|
|
39
|
+
|
|
40
|
+
## Drittland-Status
|
|
41
|
+
- [ ] Auftragsverarbeiter alle in EU/EWR? → JA / NEIN
|
|
42
|
+
- Wenn NEIN: SCCs + TIA pro Drittland-Empfaenger
|
|
43
|
+
|
|
44
|
+
## Speicherdauer
|
|
45
|
+
- [Konkret z.B.: 180 Tage ab Submit, danach automatische rekursive Loeschung
|
|
46
|
+
via Cron-Job <Pfad-zur-API-oder-Skript>]
|
|
47
|
+
- Bei Vertragsschluss: Aufbewahrungsfristen § 257 HGB (6 J Geschaeftsbriefe) +
|
|
48
|
+
§ 147 AO (10 J Buchungsbelege) gelten
|
|
49
|
+
|
|
50
|
+
## Rechtsgrundlage
|
|
51
|
+
- [Konkret z.B.: Art. 6 Abs. 1 lit. b DSGVO (Vertragsanbahnung) + lit. f
|
|
52
|
+
(berechtigtes Interesse — Briefing-Vollstaendigkeit)]
|
|
53
|
+
- Wenn KI-Auswertung der Bilder: zusaetzlich Art. 22 DSGVO pruefen
|
|
54
|
+
|
|
55
|
+
## TOMs (Technische und organisatorische Massnahmen) — Art. 32 DSGVO
|
|
56
|
+
|
|
57
|
+
### Eingangs-Filter (Server-side)
|
|
58
|
+
- [ ] MIME-Whitelist [konkret listen z.B.: image/png, image/jpeg, image/webp,
|
|
59
|
+
image/svg+xml, application/pdf]
|
|
60
|
+
- [ ] Magic-Bytes-Check zusaetzlich
|
|
61
|
+
- [ ] Size-Cap pro Datei [konkret z.B.: 10 MB]
|
|
62
|
+
- [ ] Total-Cap pro Submission [konkret z.B.: 15 MB]
|
|
63
|
+
- [ ] Path-Traversal-Schutz (basename + char-whitelist + UUID-Praefix)
|
|
64
|
+
|
|
65
|
+
### Speicherung
|
|
66
|
+
- [ ] Storage-Pfad: [konkret z.B.: /var/data/inquiries/<id>/uploads/]
|
|
67
|
+
- [ ] Container/VPS-Setup: [konkret z.B.: Hetzner-VPS Falkenstein, Disk-
|
|
68
|
+
Verschluesselung gem. Server-Setup]
|
|
69
|
+
- [ ] Bucket-side AES-256 (fuer Object Storage)
|
|
70
|
+
- [ ] LUKS at-rest (fuer VPS-Disk) — falls aktiv
|
|
71
|
+
|
|
72
|
+
### Uebertragung
|
|
73
|
+
- [ ] TLS 1.3 in transit (HTTPS)
|
|
74
|
+
- [ ] STARTTLS fuer SMTP-Versand (Port 587 + secure=false)
|
|
75
|
+
- [ ] MTA-STS-Empfaenger-Check (falls aktiviert)
|
|
76
|
+
|
|
77
|
+
### Loeschung
|
|
78
|
+
- [ ] Automatisierter Cleanup-Cron [konkret: Pfad-zur-API + Cron-Schedule]
|
|
79
|
+
- [ ] Recursive-Delete inkl. uploads/-Subfolder
|
|
80
|
+
- [ ] Manueller Loeschpfad: [konkret z.B.: Email an datenschutz@... → manuell
|
|
81
|
+
aus Inquiries-Folder entfernen]
|
|
82
|
+
|
|
83
|
+
### Logging
|
|
84
|
+
- [ ] Filename in Logs als SHA-256-Hash (nicht raw)
|
|
85
|
+
- [ ] Log-Retention max [konkret: 30 Tage]
|
|
86
|
+
- [ ] Datei-Bytes NIE in Logs
|
|
87
|
+
|
|
88
|
+
### Disk-Resilienz
|
|
89
|
+
- [ ] `fs.statfs`-Check vor write
|
|
90
|
+
- [ ] Per-IP-Tagesbudget (falls aktiviert)
|
|
91
|
+
- [ ] Disk-Monitoring + Operator-Alert bei < 1 GB free
|
|
92
|
+
|
|
93
|
+
## Bezug zu anderen VVT-Eintraegen
|
|
94
|
+
- [Verweis auf VVT fuer Briefing-Daten allgemein]
|
|
95
|
+
- [Verweis auf VVT fuer Email-Versand]
|
|
96
|
+
|
|
97
|
+
## Letzte Aktualisierung
|
|
98
|
+
[Datum, Editor, Anlass]
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
license: MIT
|
|
3
|
+
purpose: Generische VVT-Vorlage (Art. 30 DSGVO). KMU-best-practice.
|
|
4
|
+
references: dsgvo.md (VVT-Block)
|
|
5
|
+
sources: Art. 30 Abs. 1 DSGVO + BayLDA-VVT-Hinweise
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Verzeichnis von Verarbeitungstaetigkeiten (VVT) — Vorlage
|
|
9
|
+
|
|
10
|
+
> Diese Vorlage entspricht Art. 30 Abs. 1 DSGVO. KMU mit < 250 MA und
|
|
11
|
+
> gelegentlicher Verarbeitung ohne Sonderkategorien sind nicht VVT-pflichtig
|
|
12
|
+
> (Art. 30 Abs. 5), aber BayLDA empfiehlt VVT auch fuer KMU zur Erfuellung
|
|
13
|
+
> Rechenschaftspflicht Art. 5 Abs. 2.
|
|
14
|
+
|
|
15
|
+
## Stammblatt
|
|
16
|
+
|
|
17
|
+
| Feld | Wert |
|
|
18
|
+
|------|------|
|
|
19
|
+
| Verantwortlicher | `<Operator-Firma>` |
|
|
20
|
+
| Anschrift | `<vollstaendige-Anschrift>` |
|
|
21
|
+
| Vertreter (Art. 27) | `<falls EU-Drittland-Sitz>` |
|
|
22
|
+
| DSB | `<falls bestellt>` |
|
|
23
|
+
| Stand | `<YYYY-MM-DD>` |
|
|
24
|
+
| Version | `<vN.N>` |
|
|
25
|
+
|
|
26
|
+
## Verarbeitungstaetigkeiten
|
|
27
|
+
|
|
28
|
+
Pro Verarbeitung ein Block.
|
|
29
|
+
|
|
30
|
+
### VT-001: `<Bezeichnung>`
|
|
31
|
+
|
|
32
|
+
| Pflicht-Feld (Art. 30 Abs. 1) | Wert |
|
|
33
|
+
|------------------------------|------|
|
|
34
|
+
| **a) Name + Kontaktdaten Verantwortlicher** | siehe Stammblatt |
|
|
35
|
+
| **b) Zwecke der Verarbeitung** | `<Zweck>` (Rechtsgrundlage Art. 6 Abs. 1 lit. `<a/b/c/d/e/f>`) |
|
|
36
|
+
| **c) Kategorien betroffener Personen** | `<Kunden / Mitarbeiter / Lieferanten / ...>` |
|
|
37
|
+
| **c) Kategorien personenbezogener Daten** | `<Stammdaten / Kontaktdaten / Nutzungsdaten / besondere Kategorien>` |
|
|
38
|
+
| **d) Kategorien von Empfaengern** | `<intern / Auftragsverarbeiter / Drittland>` |
|
|
39
|
+
| **e) Drittlandtransfer** | `<keine / USA / UK / ...>` (mit Mechanismus: SCC + TIA / Adequacy / DPF) |
|
|
40
|
+
| **f) Speicherdauer / Loeschfristen** | `<Frist>` (gesetzlicher Anker, z.B. § 257 HGB / § 147 AO) |
|
|
41
|
+
| **g) Allgemeine Beschreibung TOMs** | siehe `<TOMs-Doku-Verweis>` |
|
|
42
|
+
|
|
43
|
+
### VT-002: `<naechste Verarbeitung>`
|
|
44
|
+
|
|
45
|
+
(analog)
|
|
46
|
+
|
|
47
|
+
## Auftragsverarbeiter (Art. 28)
|
|
48
|
+
|
|
49
|
+
| Auftragsverarbeiter | Zweck | AVV-Status | Drittland | Standort |
|
|
50
|
+
|---------------------|-------|-----------|-----------|----------|
|
|
51
|
+
| `<Anbieter>` | `<Zweck>` | `<abgeschlossen YYYY-MM-DD>` | `<DE/EU/USA>` | `<Region>` |
|
|
52
|
+
|
|
53
|
+
## Review
|
|
54
|
+
|
|
55
|
+
VVT bei wesentlichen Aenderungen sofort updaten, ansonsten jaehrlich.
|
|
56
|
+
Naechstes Review: `<YYYY-MM-DD>`.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
*Disclaimer: technisch-indikative Vorlage, keine Rechtsberatung i.S.d. § 2 RDG.*
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// MIT-License — anonymized teaching snippet for brutaler-anwalt
|
|
2
|
+
// References: audit-patterns.md Phase 4 DSE-Drift-Audit Style 2 (DSE-Aussage "wir loeschen nach X")
|
|
3
|
+
// Pattern: Next.js API-Route mit Bearer-Auth, idempotent, audit-logged
|
|
4
|
+
|
|
5
|
+
// File: src/app/api/cron/data-retention/route.ts (Next.js App-Router)
|
|
6
|
+
|
|
7
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
8
|
+
|
|
9
|
+
const RETENTION_DAYS = Number(process.env.DATA_RETENTION_DAYS ?? '180');
|
|
10
|
+
|
|
11
|
+
export async function POST(req: NextRequest) {
|
|
12
|
+
// 1. Bearer-Auth — Cron-Secret aus env, nicht hardcoded
|
|
13
|
+
const authHeader = req.headers.get('authorization') ?? '';
|
|
14
|
+
const expected = `Bearer ${process.env.CRON_SECRET}`;
|
|
15
|
+
if (!process.env.CRON_SECRET || authHeader !== expected) {
|
|
16
|
+
return NextResponse.json({ error: 'unauthorized' }, { status: 401 });
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// 2. Compute cutoff
|
|
20
|
+
const cutoff = new Date(Date.now() - RETENTION_DAYS * 24 * 60 * 60 * 1000);
|
|
21
|
+
|
|
22
|
+
// 3. Delete-Logik — pro Tabelle / Collection / Bucket einzeln
|
|
23
|
+
const results = {
|
|
24
|
+
cutoff: cutoff.toISOString(),
|
|
25
|
+
deleted: {} as Record<string, number>,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
try {
|
|
29
|
+
// Pseudocode — durch echten DB-Client ersetzen
|
|
30
|
+
// results.deleted.session_logs = await db.sessionLogs.deleteMany({ created_at: { lt: cutoff } });
|
|
31
|
+
// results.deleted.lost_found_posts = await db.lostFoundPosts.deleteMany({ expires_at: { lt: new Date() } });
|
|
32
|
+
// results.deleted.unverified_signups = await db.users.deleteMany({ verified: false, created_at: { lt: cutoff } });
|
|
33
|
+
} catch (err) {
|
|
34
|
+
console.error('[retention-cron] error', err);
|
|
35
|
+
return NextResponse.json({ error: 'cleanup-failed', details: String(err) }, { status: 500 });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 4. Audit-Log — Pflicht fuer Rechenschafts-Nachweis Art. 5 Abs. 2 DSGVO
|
|
39
|
+
console.log(JSON.stringify({
|
|
40
|
+
event: 'data_retention_cleanup',
|
|
41
|
+
timestamp: new Date().toISOString(),
|
|
42
|
+
cutoff: results.cutoff,
|
|
43
|
+
deleted: results.deleted,
|
|
44
|
+
}));
|
|
45
|
+
|
|
46
|
+
return NextResponse.json(results);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// VERIFY:
|
|
50
|
+
// curl -X POST https://<your-domain>/api/cron/data-retention \
|
|
51
|
+
// -H "Authorization: Bearer $CRON_SECRET"
|
|
52
|
+
// # erwarte 200 + JSON mit deleted-counts; ohne Auth 401.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
## MIT-License — anonymized teaching snippet for brutaler-anwalt
|
|
2
|
+
## References: audit-patterns.md Phase 4 DSE-Drift-Audit Style 2
|
|
3
|
+
## Pattern: GitHub Actions Cron-Trigger fuer DSGVO-Retention-Cleanup
|
|
4
|
+
|
|
5
|
+
# File: .github/workflows/data-retention.yml
|
|
6
|
+
|
|
7
|
+
name: data-retention-cleanup
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
schedule:
|
|
11
|
+
# tgl. 03:00 UTC = 04:00 CET (low-traffic-window)
|
|
12
|
+
- cron: '0 3 * * *'
|
|
13
|
+
workflow_dispatch: {}
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
cleanup:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
timeout-minutes: 5
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
steps:
|
|
22
|
+
- name: Trigger retention API
|
|
23
|
+
env:
|
|
24
|
+
CRON_SECRET: ${{ secrets.CRON_SECRET }}
|
|
25
|
+
API_URL: ${{ secrets.RETENTION_API_URL }} # https://<your-domain>/api/cron/data-retention
|
|
26
|
+
run: |
|
|
27
|
+
if [ -z "$CRON_SECRET" ] || [ -z "$API_URL" ]; then
|
|
28
|
+
echo "::error::CRON_SECRET or RETENTION_API_URL not set in GH secrets"
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
response=$(curl -sS -w "\n%{http_code}" -X POST "$API_URL" \
|
|
32
|
+
-H "Authorization: Bearer $CRON_SECRET" \
|
|
33
|
+
-H "Content-Type: application/json" \
|
|
34
|
+
--max-time 60)
|
|
35
|
+
body=$(echo "$response" | sed '$d')
|
|
36
|
+
status=$(echo "$response" | tail -n1)
|
|
37
|
+
echo "::group::API response"
|
|
38
|
+
echo "$body"
|
|
39
|
+
echo "::endgroup::"
|
|
40
|
+
if [ "$status" != "200" ]; then
|
|
41
|
+
echo "::error::retention API returned status $status"
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# VERIFY in repo:
|
|
46
|
+
# gh workflow run data-retention-cleanup
|
|
47
|
+
# gh run list --workflow=data-retention-cleanup --limit 5
|