@aegis-scan/skills 0.5.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 +93 -0
- package/package.json +1 -1
- package/sbom.cdx.json +1 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -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/README.md +9 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -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 +60 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
- 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 +106 -30
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
- 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 +55 -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/BFSG/audit-relevance.md +39 -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/DDG/audit-relevance.md +28 -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 +4 -1
- 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 +3 -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/HinSchG/articles.md +96 -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 +3 -2
- 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 +71 -3
- 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/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 +115 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
- 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/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/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/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/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/DSFA-template.md +80 -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-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 +190 -48
- 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/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-quality-gates/SKILL.md +1 -1
- 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
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
name: firebase-firestore
|
|
5
|
+
description: Firebase/Firestore security testing covering security rules, Cloud Functions, and client-side trust issues
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Firebase / Firestore
|
|
9
|
+
|
|
10
|
+
Security testing for Firebase applications. Focus on Firestore/Realtime Database rules, Cloud Storage exposure, callable/onRequest Functions trusting client input, and incorrect ID token validation.
|
|
11
|
+
|
|
12
|
+
## Attack Surface
|
|
13
|
+
|
|
14
|
+
**Data Stores**
|
|
15
|
+
- Firestore (documents/collections, rules, REST/SDK)
|
|
16
|
+
- Realtime Database (JSON tree, rules)
|
|
17
|
+
- Cloud Storage (rules, signed URLs)
|
|
18
|
+
|
|
19
|
+
**Authentication**
|
|
20
|
+
- Auth ID tokens, custom claims, anonymous/sign-in providers
|
|
21
|
+
- App Check attestation (and its limits)
|
|
22
|
+
|
|
23
|
+
**Server-Side**
|
|
24
|
+
- Cloud Functions (onCall/onRequest, triggers)
|
|
25
|
+
- Admin SDK (bypasses rules)
|
|
26
|
+
|
|
27
|
+
**Infrastructure**
|
|
28
|
+
- Hosting rewrites, CDN/caching, CORS
|
|
29
|
+
|
|
30
|
+
## Architecture
|
|
31
|
+
|
|
32
|
+
**Endpoints**
|
|
33
|
+
- Firestore REST: `https://firestore.googleapis.com/v1/projects/<project>/databases/(default)/documents/<path>`
|
|
34
|
+
- Realtime DB: `https://<project>.firebaseio.com/.json`
|
|
35
|
+
- Storage REST: `https://storage.googleapis.com/storage/v1/b/<bucket>`
|
|
36
|
+
|
|
37
|
+
**Auth**
|
|
38
|
+
- Google-signed ID tokens (iss: `accounts.google.com` or `securetoken.google.com/<project>`)
|
|
39
|
+
- Audience: `<project>` or `<app-id>`, identity in `sub`/`uid`
|
|
40
|
+
- Rules engines: separate for Firestore, Realtime DB, and Storage
|
|
41
|
+
- Functions bypass rules when using Admin SDK
|
|
42
|
+
|
|
43
|
+
## High-Value Targets
|
|
44
|
+
|
|
45
|
+
- Firestore collections with sensitive data (users, orders, payments)
|
|
46
|
+
- Realtime Database root and high-level nodes
|
|
47
|
+
- Cloud Storage buckets with private files
|
|
48
|
+
- Cloud Functions (especially triggers that grant roles or issue signed URLs)
|
|
49
|
+
- Admin/staff routes and privilege-granting endpoints
|
|
50
|
+
- Export/report functions that generate signed outputs
|
|
51
|
+
|
|
52
|
+
## Reconnaissance
|
|
53
|
+
|
|
54
|
+
**Extract Project Config**
|
|
55
|
+
|
|
56
|
+
From client bundle:
|
|
57
|
+
```javascript
|
|
58
|
+
// apiKey, authDomain, projectId, appId, storageBucket, messagingSenderId
|
|
59
|
+
firebase.apps[0].options
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Obtain Principals**
|
|
63
|
+
- Unauthenticated
|
|
64
|
+
- Anonymous (if enabled)
|
|
65
|
+
- Basic user A, user B
|
|
66
|
+
- Staff/admin (if available)
|
|
67
|
+
|
|
68
|
+
Capture ID tokens for each.
|
|
69
|
+
|
|
70
|
+
## Key Vulnerabilities
|
|
71
|
+
|
|
72
|
+
### Firestore Rules
|
|
73
|
+
|
|
74
|
+
Rules are not filters—a query must include constraints that make the rule true for all returned documents.
|
|
75
|
+
|
|
76
|
+
**Common Gaps**
|
|
77
|
+
- `allow read: if request.auth != null` — any authenticated user reads all data
|
|
78
|
+
- `allow write: if request.auth != null` — mass write access
|
|
79
|
+
- Missing per-field validation (allows adding `isAdmin`/`role`/`tenantId` fields)
|
|
80
|
+
- Using client-supplied `ownerId`/`orgId` instead of `resource.data.ownerId == request.auth.uid`
|
|
81
|
+
- Over-broad list rules on root collections (per-doc checks exist but list still leaks)
|
|
82
|
+
|
|
83
|
+
**Secure Patterns**
|
|
84
|
+
```javascript
|
|
85
|
+
// Restrict write fields
|
|
86
|
+
request.resource.data.keys().hasOnly(['field1', 'field2', 'field3'])
|
|
87
|
+
|
|
88
|
+
// Enforce ownership
|
|
89
|
+
resource.data.ownerId == request.auth.uid &&
|
|
90
|
+
request.resource.data.ownerId == request.auth.uid
|
|
91
|
+
|
|
92
|
+
// Org membership check
|
|
93
|
+
exists(/databases/(default)/documents/orgs/$(org)/members/$(request.auth.uid))
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Tests**
|
|
97
|
+
- Compare results for users A/B on identical queries; diff counts and IDs
|
|
98
|
+
- Cross-tenant reads: `where orgId == otherOrg`; try queries without org filter
|
|
99
|
+
- Write-path: set/patch with foreign `ownerId`/`orgId`; attempt to flip privilege flags
|
|
100
|
+
|
|
101
|
+
### Firestore Queries
|
|
102
|
+
|
|
103
|
+
- Use REST to avoid SDK client-side constraints
|
|
104
|
+
- Probe composite index requirements (UI-driven queries may hide missing rule coverage)
|
|
105
|
+
- Explore `collectionGroup` queries that may bypass per-collection rules
|
|
106
|
+
- Use `startAt`/`endAt`/`in`/`array-contains` to probe rule edges and pagination cursors
|
|
107
|
+
|
|
108
|
+
### Realtime Database
|
|
109
|
+
|
|
110
|
+
- Misconfigured rules frequently expose entire JSON trees
|
|
111
|
+
- Probe `https://<project>.firebaseio.com/.json` with and without auth
|
|
112
|
+
- Confirm rules use `auth.uid` and granular path checks
|
|
113
|
+
- Avoid `.read/.write: true` or `auth != null` at high-level nodes
|
|
114
|
+
- Attempt to write privilege-bearing nodes (roles, org membership)
|
|
115
|
+
|
|
116
|
+
### Cloud Storage
|
|
117
|
+
|
|
118
|
+
**Common Issues**
|
|
119
|
+
- Public reads on sensitive buckets/paths
|
|
120
|
+
- Signed URLs with long TTL, no content-disposition controls, replayable across tenants
|
|
121
|
+
- List operations exposed: `/o?prefix=` enumerates object keys
|
|
122
|
+
|
|
123
|
+
**Tests**
|
|
124
|
+
- GET gs:// paths via HTTPS without auth; verify Content-Type and `Content-Disposition: attachment`
|
|
125
|
+
- Generate and reuse signed URLs across accounts and paths; try case/URL-encoding variants
|
|
126
|
+
- Upload HTML/SVG and verify `X-Content-Type-Options: nosniff`; check for script execution
|
|
127
|
+
|
|
128
|
+
### Cloud Functions
|
|
129
|
+
|
|
130
|
+
`onCall` provides `context.auth` automatically; `onRequest` must verify ID tokens explicitly. Admin SDK bypasses rules—all ownership/tenant checks must be in code.
|
|
131
|
+
|
|
132
|
+
**Common Gaps**
|
|
133
|
+
- Trusting client `uid`/`orgId` from request body instead of `context.auth`
|
|
134
|
+
- Missing `aud`/`iss` verification when manually parsing tokens
|
|
135
|
+
- Over-broad CORS allowing credentialed cross-origin requests
|
|
136
|
+
- Triggers (onCreate/onWrite) granting roles based on document content controlled by client
|
|
137
|
+
|
|
138
|
+
**Tests**
|
|
139
|
+
- Call both onCall and onRequest endpoints with varied tokens; expect identical decisions
|
|
140
|
+
- Create crafted docs to trigger privilege-granting functions
|
|
141
|
+
- Attempt SSRF via Functions to project/metadata endpoints
|
|
142
|
+
|
|
143
|
+
### Auth & Token Issues
|
|
144
|
+
|
|
145
|
+
**Verification Requirements**
|
|
146
|
+
- Issuer, audience (project), signature (Google JWKS), expiration
|
|
147
|
+
- Optionally App Check binding when used
|
|
148
|
+
|
|
149
|
+
**Pitfalls**
|
|
150
|
+
- Accepting any JWT with valid signature but wrong audience/project
|
|
151
|
+
- Trusting `uid`/account IDs from request body instead of `context.auth.uid`
|
|
152
|
+
- Mixing session cookies and ID tokens without verifying both paths equivalently
|
|
153
|
+
- Custom claims copied into docs then trusted by app code
|
|
154
|
+
|
|
155
|
+
**Tests**
|
|
156
|
+
- Replay tokens across environments/projects; expect strict `aud`/`iss` rejection
|
|
157
|
+
- Call Functions with and without Authorization; verify identical checks
|
|
158
|
+
|
|
159
|
+
### App Check
|
|
160
|
+
|
|
161
|
+
App Check is not a substitute for authorization.
|
|
162
|
+
|
|
163
|
+
**Bypasses**
|
|
164
|
+
- REST calls directly to googleapis endpoints with ID token succeed regardless of App Check
|
|
165
|
+
- Mobile reverse engineering: hook client and reuse ID token flows without attestation
|
|
166
|
+
|
|
167
|
+
**Tests**
|
|
168
|
+
- Compare SDK vs REST behavior with/without App Check headers
|
|
169
|
+
- Confirm no elevated authorization via App Check alone
|
|
170
|
+
|
|
171
|
+
### Tenant Isolation
|
|
172
|
+
|
|
173
|
+
Apps often implement multi-tenant data models (`orgs/<orgId>/...`). Bind tenant from server context (membership doc or custom claim), not client payload.
|
|
174
|
+
|
|
175
|
+
**Tests**
|
|
176
|
+
- Vary org header/subdomain/query while keeping token fixed; verify server denies cross-tenant access
|
|
177
|
+
- Export/report Functions: ensure queries execute under caller scope
|
|
178
|
+
|
|
179
|
+
## Bypass Techniques
|
|
180
|
+
|
|
181
|
+
- Content-type switching: JSON vs form vs multipart to hit alternate code paths in onRequest
|
|
182
|
+
- Parameter/field pollution: duplicate JSON keys (last-one-wins in many parsers); sneak privilege fields
|
|
183
|
+
- Caching/CDN: Hosting rewrites keying responses without Authorization or tenant headers
|
|
184
|
+
- Race windows: write then read before background enforcements complete
|
|
185
|
+
|
|
186
|
+
## Blind Enumeration
|
|
187
|
+
|
|
188
|
+
- Firestore: use error shape, document count, ETag/length to infer existence
|
|
189
|
+
- Storage: length/timing differences on signed URL attempts leak validity
|
|
190
|
+
- Functions: constant-time comparisons vs variable messages reveal authorization branches
|
|
191
|
+
|
|
192
|
+
## Testing Methodology
|
|
193
|
+
|
|
194
|
+
1. **Extract config** - Get project config from client bundle
|
|
195
|
+
2. **Obtain principals** - Collect tokens for unauth, anonymous, user A/B, admin
|
|
196
|
+
3. **Build matrix** - Resource × Action × Principal across Firestore/Realtime/Storage/Functions
|
|
197
|
+
4. **SDK vs REST** - Exercise every action via both to detect parity gaps
|
|
198
|
+
5. **Seed IDs** - Start from list/query paths to gather document IDs
|
|
199
|
+
6. **Cross-principal** - Swap document paths, tenants, and user IDs across principals
|
|
200
|
+
|
|
201
|
+
## Tooling
|
|
202
|
+
|
|
203
|
+
- SDK + REST: httpie/curl + jq for REST; Firebase emulator and Rules Playground for rapid iteration
|
|
204
|
+
- Rules analysis: script probes for common patterns (`auth != null`, missing field validation)
|
|
205
|
+
- Functions: fuzz onRequest with varied content-types and missing/forged Authorization
|
|
206
|
+
- Storage: enumerate prefixes; test signed URL generation and reuse patterns
|
|
207
|
+
|
|
208
|
+
## Validation Requirements
|
|
209
|
+
|
|
210
|
+
- Owner vs non-owner Firestore queries showing unauthorized access or metadata leak
|
|
211
|
+
- Cloud Storage read/write beyond intended scope (public object, signed URL reuse, list exposure)
|
|
212
|
+
- Function accepting forged/foreign identity (wrong `aud`/`iss`) or trusting client `uid`/`orgId`
|
|
213
|
+
- Minimal reproducible requests with roles/tokens used and observed deltas
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# Frida — Dynamic Instrumentation & Runtime Hooking
|
|
4
|
+
|
|
5
|
+
Frida = inject JavaScript into running processes → hook functions, intercept calls, bypass checks, extract secrets at runtime. Works on Android, iOS, Linux, Windows, macOS binaries.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Frida tools (attacker machine):
|
|
11
|
+
pip install frida-tools --break-system-packages
|
|
12
|
+
pip install frida --break-system-packages
|
|
13
|
+
|
|
14
|
+
# Verify:
|
|
15
|
+
frida --version
|
|
16
|
+
frida-ps --version
|
|
17
|
+
|
|
18
|
+
# frida-server (target device — must match frida version exactly):
|
|
19
|
+
# Android: https://github.com/frida/frida/releases → frida-server-X.X.X-android-x86_64.xz
|
|
20
|
+
# Linux: frida-server-X.X.X-linux-x86_64.xz
|
|
21
|
+
# Get version: python3 -c "import frida; print(frida.__version__)"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Phase 1: Setup — Android Target
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Extract frida-server for target arch:
|
|
30
|
+
xz -d frida-server-*-android-x86_64.xz
|
|
31
|
+
adb push frida-server-*-android-x86_64 /data/local/tmp/frida-server
|
|
32
|
+
adb shell chmod 755 /data/local/tmp/frida-server
|
|
33
|
+
|
|
34
|
+
# Start frida-server (as root on device):
|
|
35
|
+
adb shell su -c "/data/local/tmp/frida-server &"
|
|
36
|
+
# OR:
|
|
37
|
+
adb shell "/data/local/tmp/frida-server &" # some emulators don't need su
|
|
38
|
+
|
|
39
|
+
# Verify connection:
|
|
40
|
+
frida-ps -U # list processes on USB device
|
|
41
|
+
frida-ps -U | grep -i target_app
|
|
42
|
+
|
|
43
|
+
# Find app process name:
|
|
44
|
+
frida-ps -U -a -i # installed apps with package name
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Phase 2: Setup — Linux/Native Process
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Attach to running process:
|
|
53
|
+
frida -p <PID> -l hook.js # by PID
|
|
54
|
+
frida -n "processname" -l hook.js # by name
|
|
55
|
+
|
|
56
|
+
# Spawn new process with Frida:
|
|
57
|
+
frida -f /path/to/binary -l hook.js --no-pause
|
|
58
|
+
|
|
59
|
+
# Attach to specific function before main:
|
|
60
|
+
frida -f /path/to/binary --no-pause -l hook.js
|
|
61
|
+
|
|
62
|
+
# frida-server for remote target:
|
|
63
|
+
# On target:
|
|
64
|
+
./frida-server -l 0.0.0.0:27042
|
|
65
|
+
# On attacker:
|
|
66
|
+
frida -H target_ip:27042 -n processname -l hook.js
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Phase 3: Core JavaScript API
|
|
72
|
+
|
|
73
|
+
```javascript
|
|
74
|
+
// hook.js — fundamental patterns
|
|
75
|
+
|
|
76
|
+
// ============================================================
|
|
77
|
+
// JAVA HOOKS (Android)
|
|
78
|
+
// ============================================================
|
|
79
|
+
Java.perform(function() {
|
|
80
|
+
|
|
81
|
+
// Hook a method:
|
|
82
|
+
var TargetClass = Java.use('com.example.app.TargetClass');
|
|
83
|
+
TargetClass.methodName.implementation = function(arg1, arg2) {
|
|
84
|
+
console.log('[*] methodName called: arg1=' + arg1 + ' arg2=' + arg2);
|
|
85
|
+
var result = this.methodName(arg1, arg2); // call original
|
|
86
|
+
console.log('[*] methodName returned: ' + result);
|
|
87
|
+
return result;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// Override return value (bypass check):
|
|
91
|
+
TargetClass.checkLicense.implementation = function() {
|
|
92
|
+
console.log('[*] checkLicense bypassed');
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// Hook overloaded method (specify signature):
|
|
97
|
+
TargetClass.verify.overload('java.lang.String', 'int').implementation = function(s, i) {
|
|
98
|
+
console.log('[*] verify(' + s + ', ' + i + ')');
|
|
99
|
+
return this.verify(s, i);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Enumerate all loaded classes:
|
|
103
|
+
Java.enumerateLoadedClasses({
|
|
104
|
+
onMatch: function(name) {
|
|
105
|
+
if (name.includes('crypto') || name.includes('security')) {
|
|
106
|
+
console.log('[Class] ' + name);
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
onComplete: function() {}
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Trace all methods in a class:
|
|
113
|
+
var methods = Java.use('com.example.app.CryptoHelper').class.getDeclaredMethods();
|
|
114
|
+
methods.forEach(function(method) {
|
|
115
|
+
console.log('[Method] ' + method.getName());
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Access static field:
|
|
119
|
+
var MyClass = Java.use('com.example.app.Config');
|
|
120
|
+
console.log('[*] SECRET_KEY = ' + MyClass.SECRET_KEY.value);
|
|
121
|
+
|
|
122
|
+
// Create new object:
|
|
123
|
+
var ArrayList = Java.use('java.util.ArrayList');
|
|
124
|
+
var list = ArrayList.$new();
|
|
125
|
+
list.add('item');
|
|
126
|
+
|
|
127
|
+
// Call static method:
|
|
128
|
+
var Utils = Java.use('com.example.app.Utils');
|
|
129
|
+
var result = Utils.decrypt('encrypted_data');
|
|
130
|
+
console.log('[*] Decrypted: ' + result);
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Phase 4: Native Hooks (C/C++ functions)
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
// ============================================================
|
|
140
|
+
// NATIVE HOOKS (C/C++ via Interceptor)
|
|
141
|
+
// ============================================================
|
|
142
|
+
|
|
143
|
+
// Hook exported function by name:
|
|
144
|
+
Interceptor.attach(Module.findExportByName(null, 'strcmp'), {
|
|
145
|
+
onEnter: function(args) {
|
|
146
|
+
try {
|
|
147
|
+
var s1 = Memory.readUtf8String(args[0]);
|
|
148
|
+
var s2 = Memory.readUtf8String(args[1]);
|
|
149
|
+
if (s1 && s2 && s1.length > 3) {
|
|
150
|
+
console.log('[strcmp] "' + s1 + '" == "' + s2 + '"');
|
|
151
|
+
}
|
|
152
|
+
} catch(e) {}
|
|
153
|
+
},
|
|
154
|
+
onLeave: function(retval) {
|
|
155
|
+
// Force match (return 0 = strings equal):
|
|
156
|
+
// retval.replace(0);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Hook function by address (when not exported):
|
|
161
|
+
var baseAddr = Module.findBaseAddress('libnative.so');
|
|
162
|
+
var funcAddr = baseAddr.add(0x1234); // offset from r2/objdump analysis
|
|
163
|
+
|
|
164
|
+
Interceptor.attach(funcAddr, {
|
|
165
|
+
onEnter: function(args) {
|
|
166
|
+
console.log('[*] func@0x1234 called');
|
|
167
|
+
console.log('[*] arg0 (int): ' + args[0].toInt32());
|
|
168
|
+
console.log('[*] arg1 (str): ' + Memory.readUtf8String(args[1]));
|
|
169
|
+
console.log('[*] arg2 (ptr): ' + args[2]);
|
|
170
|
+
},
|
|
171
|
+
onLeave: function(retval) {
|
|
172
|
+
console.log('[*] returned: ' + retval.toInt32());
|
|
173
|
+
retval.replace(1); // override return value
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
// Hook all calls to function (trampoline):
|
|
178
|
+
Interceptor.replace(funcAddr, new NativeCallback(function(arg0, arg1) {
|
|
179
|
+
console.log('[*] Replaced function called! arg0=' + arg0);
|
|
180
|
+
// Custom implementation:
|
|
181
|
+
return 1; // always return 1
|
|
182
|
+
}, 'int', ['int', 'pointer']));
|
|
183
|
+
|
|
184
|
+
// Read/write memory:
|
|
185
|
+
var addr = ptr('0x7f1234abcd');
|
|
186
|
+
console.log(Memory.readUtf8String(addr));
|
|
187
|
+
console.log(hexdump(addr, { length: 64 }));
|
|
188
|
+
Memory.writeUtf8String(addr, 'new_value');
|
|
189
|
+
Memory.writeByteArray(addr, [0x90, 0x90, 0x90]); // NOP patch
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Phase 5: Cryptography Tracing
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
// Hook Android crypto APIs to extract keys/plaintext:
|
|
198
|
+
Java.perform(function() {
|
|
199
|
+
|
|
200
|
+
// Hook javax.crypto.Cipher (AES/DES/etc):
|
|
201
|
+
var Cipher = Java.use('javax.crypto.Cipher');
|
|
202
|
+
|
|
203
|
+
Cipher.doFinal.overload('[B').implementation = function(input) {
|
|
204
|
+
console.log('[Cipher.doFinal] input hex: ' + bytesToHex(input));
|
|
205
|
+
var result = this.doFinal(input);
|
|
206
|
+
console.log('[Cipher.doFinal] output hex: ' + bytesToHex(result));
|
|
207
|
+
return result;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
// Hook SecretKeySpec (extract key material):
|
|
211
|
+
var SecretKeySpec = Java.use('javax.crypto.spec.SecretKeySpec');
|
|
212
|
+
SecretKeySpec.$init.overload('[B', 'java.lang.String').implementation = function(key, algorithm) {
|
|
213
|
+
console.log('[SecretKeySpec] algorithm: ' + algorithm);
|
|
214
|
+
console.log('[SecretKeySpec] key (hex): ' + bytesToHex(key));
|
|
215
|
+
return this.$init(key, algorithm);
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
// Hook MessageDigest (SHA/MD5):
|
|
219
|
+
var MessageDigest = Java.use('java.security.MessageDigest');
|
|
220
|
+
MessageDigest.digest.overload('[B').implementation = function(input) {
|
|
221
|
+
console.log('[MessageDigest] input: ' + bytesToHex(input));
|
|
222
|
+
var result = this.digest(input);
|
|
223
|
+
console.log('[MessageDigest] hash: ' + bytesToHex(result));
|
|
224
|
+
return result;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
// Helper:
|
|
228
|
+
function bytesToHex(bytes) {
|
|
229
|
+
var hex = '';
|
|
230
|
+
for (var i = 0; i < bytes.length; i++) {
|
|
231
|
+
hex += ('0' + (bytes[i] & 0xff).toString(16)).slice(-2);
|
|
232
|
+
}
|
|
233
|
+
return hex;
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Phase 6: SSL Pinning Bypass
|
|
241
|
+
|
|
242
|
+
```javascript
|
|
243
|
+
// Universal SSL pinning bypass:
|
|
244
|
+
Java.perform(function() {
|
|
245
|
+
// TrustManager bypass:
|
|
246
|
+
var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager');
|
|
247
|
+
var SSLContext = Java.use('javax.net.ssl.SSLContext');
|
|
248
|
+
|
|
249
|
+
// Create loose TrustManager:
|
|
250
|
+
var TrustManager = Java.registerClass({
|
|
251
|
+
name: 'com.bypass.TrustManager',
|
|
252
|
+
implements: [X509TrustManager],
|
|
253
|
+
methods: {
|
|
254
|
+
checkClientTrusted: function(chain, authType) {},
|
|
255
|
+
checkServerTrusted: function(chain, authType) {},
|
|
256
|
+
getAcceptedIssuers: function() { return []; }
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
var TrustManagers = [TrustManager.$new()];
|
|
261
|
+
var sslContext = SSLContext.getInstance('TLS');
|
|
262
|
+
sslContext.init(null, TrustManagers, null);
|
|
263
|
+
|
|
264
|
+
// OkHttp3 pinning bypass:
|
|
265
|
+
try {
|
|
266
|
+
var OkHttpClient = Java.use('okhttp3.OkHttpClient');
|
|
267
|
+
var builder = OkHttpClient.Builder.$new();
|
|
268
|
+
builder.sslSocketFactory(sslContext.getSocketFactory(), TrustManager.$new());
|
|
269
|
+
builder.hostnameVerifier(Java.use('javax.net.ssl.HttpsURLConnection').getDefaultHostnameVerifier());
|
|
270
|
+
console.log('[*] OkHttp SSL bypass applied');
|
|
271
|
+
} catch(e) {}
|
|
272
|
+
|
|
273
|
+
// HttpsURLConnection bypass:
|
|
274
|
+
var HttpsURLConnection = Java.use('javax.net.ssl.HttpsURLConnection');
|
|
275
|
+
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
|
|
276
|
+
|
|
277
|
+
console.log('[*] SSL pinning bypass loaded');
|
|
278
|
+
});
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Phase 7: Root Detection Bypass
|
|
284
|
+
|
|
285
|
+
```javascript
|
|
286
|
+
Java.perform(function() {
|
|
287
|
+
// Common root detection methods:
|
|
288
|
+
var methods_to_bypass = [
|
|
289
|
+
['com.scottyab.rootbeer.RootBeer', 'isRooted'],
|
|
290
|
+
['com.scottyab.rootbeer.RootBeer', 'detectRootManagementApps'],
|
|
291
|
+
['com.example.app.Utils', 'isDeviceRooted'],
|
|
292
|
+
['java.io.File', 'exists'], // careful — very broad
|
|
293
|
+
];
|
|
294
|
+
|
|
295
|
+
methods_to_bypass.forEach(function(pair) {
|
|
296
|
+
try {
|
|
297
|
+
var cls = Java.use(pair[0]);
|
|
298
|
+
cls[pair[1]].implementation = function() {
|
|
299
|
+
console.log('[*] Bypassing ' + pair[0] + '.' + pair[1]);
|
|
300
|
+
return false;
|
|
301
|
+
};
|
|
302
|
+
} catch(e) { /* class not loaded */ }
|
|
303
|
+
});
|
|
304
|
+
|
|
305
|
+
// Bypass su binary check:
|
|
306
|
+
var Runtime = Java.use('java.lang.Runtime');
|
|
307
|
+
Runtime.exec.overload('java.lang.String').implementation = function(cmd) {
|
|
308
|
+
if (cmd.includes('su') || cmd.includes('which')) {
|
|
309
|
+
console.log('[*] Blocked exec: ' + cmd);
|
|
310
|
+
throw Java.use('java.io.IOException').$new('File not found');
|
|
311
|
+
}
|
|
312
|
+
return this.exec(cmd);
|
|
313
|
+
};
|
|
314
|
+
});
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## Phase 8: Frida Stalker (Code Tracing)
|
|
320
|
+
|
|
321
|
+
```javascript
|
|
322
|
+
// Trace all instructions executed (Stalker):
|
|
323
|
+
// Use for: find which branch is taken, trace flag-check loop
|
|
324
|
+
|
|
325
|
+
Stalker.follow(Process.getCurrentThreadId(), {
|
|
326
|
+
events: {
|
|
327
|
+
call: true, // CALL instructions
|
|
328
|
+
ret: true, // RET instructions
|
|
329
|
+
exec: false, // every instruction (very verbose)
|
|
330
|
+
},
|
|
331
|
+
onReceive: function(events) {
|
|
332
|
+
var list = Stalker.parse(events);
|
|
333
|
+
list.forEach(function(event) {
|
|
334
|
+
console.log(JSON.stringify(event));
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
// Trace specific thread during function call:
|
|
340
|
+
var targetFunc = Module.findExportByName(null, 'check_flag');
|
|
341
|
+
Interceptor.attach(targetFunc, {
|
|
342
|
+
onEnter: function() {
|
|
343
|
+
Stalker.follow(this.threadId, {
|
|
344
|
+
events: { call: true, ret: true },
|
|
345
|
+
onReceive: function(events) {
|
|
346
|
+
console.log(Stalker.parse(events));
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
},
|
|
350
|
+
onLeave: function() {
|
|
351
|
+
Stalker.unfollow(this.threadId);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## Phase 9: CLI Usage — frida-trace
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
# Auto-generate hooks for functions matching pattern:
|
|
362
|
+
frida-trace -U -n com.example.app -i "Java_*check*" # native JNI funcs
|
|
363
|
+
frida-trace -U -n com.example.app -j '*!check*' # Java methods
|
|
364
|
+
frida-trace -U -n com.example.app -j 'com.example.app.MainActivity!*' # all methods
|
|
365
|
+
|
|
366
|
+
# Trace libc functions:
|
|
367
|
+
frida-trace -U -n com.example.app -i "strcmp" -i "strncmp" -i "memcmp"
|
|
368
|
+
|
|
369
|
+
# Output: generated JS handlers in __handlers__/ — edit to customize
|
|
370
|
+
# Default: logs function name + args
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Pro Tips
|
|
376
|
+
|
|
377
|
+
1. **Always hook `strcmp`/`memcmp`** — catches 80% of CTF flag checks instantly
|
|
378
|
+
2. **`Java.use` + `.implementation`** = override any Java method; `.overload()` for overloaded methods
|
|
379
|
+
3. **SSL pinning bypass** — load before app makes first HTTPS request; use `--no-pause` for spawned apps
|
|
380
|
+
4. **Frida-trace generates stubs** automatically — edit `__handlers__/` files to customize output
|
|
381
|
+
5. **`Module.findBaseAddress`** → add offset from `r2/objdump` → hook private functions
|
|
382
|
+
6. **Memory.readUtf8String** can crash on bad pointers — always wrap in `try/catch`
|
|
383
|
+
7. **Stalker** = slowest but most complete; use only for specific function tracing, not global
|
|
384
|
+
|
|
385
|
+
## Summary
|
|
386
|
+
|
|
387
|
+
Frida flow: `frida-ps -U` → find process → write `hook.js` → `Java.perform()` for Android Java, `Interceptor.attach()` for native → hook `strcmp`/crypto APIs → run `frida -U -n app -l hook.js` → observe intercepted args/return values → extract secrets or bypass checks.
|