@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,513 @@
1
+ <!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
2
+
3
+ ---
4
+ name: exposed-devtools-detection
5
+ description: Detect and assess publicly exposed development tools including Storybook component libraries, serial terminals, hardware debug interfaces, admin panels on dev clusters, and developer-only services that should never be internet-facing
6
+ ---
7
+
8
+ # Exposed Development Tools & Dev Cluster Detection
9
+
10
+ Development tools accidentally exposed to the internet are consistently underreported in bug bounties but accepted as valid findings. Unlike production vulnerabilities, these require no exploitation — existence on the public internet without authentication IS the vulnerability.
11
+
12
+ **High-value targets:**
13
+ - Storybook instances (expose UI component architecture)
14
+ - Hardware interface tools (serial terminals, JTAG interfaces)
15
+ - Developer-only admin panels and dashboards
16
+ - Internal documentation sites (Notion self-hosted, Confluence, GitBook internal)
17
+ - Database admin UIs (pgAdmin, Adminer, MongoDB Compass web)
18
+ - Container/Kubernetes dashboards (Kubernetes Dashboard, Portainer, k9s web)
19
+
20
+ ---
21
+
22
+ ## STEP 1 — Identify Dev/Staging Subdomain Patterns
23
+
24
+ ```bash
25
+ # From subdomains.txt, identify development cluster patterns
26
+ grep -iE '(dev|staging|stage|qa|uat|sandbox|preview|test|solo|personal|local|internal)\.' \
27
+ output/subdomains.txt | sort -u | tee output/dev_subdomains.txt
28
+
29
+ # More aggressive: any subdomain with dev-related keywords
30
+ grep -iE '(dev\.|\.dev\.|staging\.|stg\.|qa\.|uat\.|test\.|sandbox\.|preview\.|solo\.|canary\.|beta\.|nightly\.|alpha\.)' \
31
+ output/subdomains.txt | sort -u >> output/dev_subdomains.txt
32
+
33
+ # Kubernetes cluster patterns specifically
34
+ grep -iE '(\.(k8s|kube|cluster|node|pod|svc|namespace)|\.(dev|staging)\.solo\.|\.dev\.cluster\.)' \
35
+ output/subdomains.txt | sort -u >> output/dev_subdomains.txt
36
+
37
+ sort -u output/dev_subdomains.txt > output/dev_subdomains_dedup.txt
38
+ echo "Dev subdomains found: $(wc -l < output/dev_subdomains_dedup.txt)"
39
+ cat output/dev_subdomains_dedup.txt
40
+ ```
41
+
42
+ ---
43
+
44
+ ## STEP 2 — Storybook Detection
45
+
46
+ Storybook has unique fingerprints detectable without authentication:
47
+
48
+ ```python
49
+ # tools/detect_storybook.py
50
+ """
51
+ Storybook fingerprints:
52
+ 1. Title: "<x> - Storybook" or "Storybook"
53
+ 2. Body contains: "storybook-root", "sb-show-main", "@storybook/", "storybook.js.org"
54
+ 3. Route: /stories.json (machine-readable story index)
55
+ 4. Route: /index.json (Storybook 7+ stories index)
56
+ 5. Route: /iframe.html (story rendering iframe)
57
+ 6. Static assets: /sb_dll/, /sb-addons/
58
+ """
59
+ import urllib.request, urllib.error, ssl, json, re
60
+
61
+ ctx = ssl.create_default_context()
62
+ ctx.check_hostname = False
63
+ ctx.verify_mode = ssl.CERT_NONE
64
+
65
+ STORYBOOK_INDICATORS = [
66
+ "storybook-root", "sb-show-main", "@storybook/",
67
+ "storybook.js.org", "- Storybook</title>",
68
+ "Storybook</title>", "STORYBOOK_ENV"
69
+ ]
70
+
71
+ STORYBOOK_PATHS = [
72
+ "/stories.json", # Storybook 6 story index
73
+ "/index.json", # Storybook 7+ story index
74
+ "/iframe.html", # Story rendering iframe
75
+ "/project.json", # Storybook project config
76
+ "/sb-addons/", # Addon assets
77
+ ]
78
+
79
+ def check_storybook(base_url):
80
+ findings = []
81
+
82
+ # Check main page for fingerprints
83
+ try:
84
+ req = urllib.request.Request(base_url, headers={"User-Agent": "Mozilla/5.0"})
85
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
86
+ body = r.read(5000).decode('utf-8', 'ignore')
87
+
88
+ for indicator in STORYBOOK_INDICATORS:
89
+ if indicator.lower() in body.lower():
90
+ findings.append(f"INDICATOR: {indicator}")
91
+
92
+ # Extract title
93
+ title = re.search(r'<title>([^<]+)</title>', body)
94
+ if title and 'storybook' in title.group(1).lower():
95
+ findings.append(f"TITLE: {title.group(1)}")
96
+
97
+ # Extract package name from title (usually "<package> - Storybook")
98
+ if title:
99
+ pkg_match = re.match(r'^(.+?)\s*-\s*Storybook', title.group(1))
100
+ if pkg_match:
101
+ findings.append(f"PACKAGE: {pkg_match.group(1)}")
102
+ except Exception as ex:
103
+ return None
104
+
105
+ # Check for stories.json (complete component inventory)
106
+ for path in STORYBOOK_PATHS:
107
+ try:
108
+ req = urllib.request.Request(
109
+ base_url.rstrip('/') + path,
110
+ headers={"User-Agent": "Mozilla/5.0"}
111
+ )
112
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
113
+ body = r.read(10000).decode('utf-8', 'ignore')
114
+ findings.append(f"PATH_EXISTS: {path} [{r.status}]")
115
+
116
+ # Parse stories.json to extract component names
117
+ if path in ('/stories.json', '/index.json'):
118
+ try:
119
+ data = json.loads(body)
120
+ stories = data.get('stories', data.get('entries', {}))
121
+ components = set()
122
+ for story_id, story_data in stories.items():
123
+ if isinstance(story_data, dict):
124
+ kind = story_data.get('kind', story_data.get('title', ''))
125
+ if kind:
126
+ components.add(kind)
127
+ findings.append(f"COMPONENTS ({len(components)} total): {', '.join(list(components)[:10])}...")
128
+ except Exception:
129
+ pass
130
+ except urllib.error.HTTPError as e:
131
+ pass
132
+ except Exception:
133
+ pass
134
+
135
+ return findings if findings else None
136
+
137
+ # Load live hosts and check each
138
+ with open("output/live_hosts.txt") as f:
139
+ hosts = [line.strip() for line in f if line.strip()]
140
+
141
+ print("=== Scanning for exposed Storybook instances ===")
142
+ for host_line in hosts:
143
+ # Parse "https://example.com [200]" format
144
+ parts = host_line.split()
145
+ if not parts:
146
+ continue
147
+ host = parts[0]
148
+ if not host.startswith("http"):
149
+ host = f"https://{host}"
150
+
151
+ result = check_storybook(host)
152
+ if result:
153
+ print(f"\n[STORYBOOK FOUND] {host}")
154
+ for f in result:
155
+ print(f" {f}")
156
+ with open("output/exposed_storybook.txt", "a") as out:
157
+ out.write(f"{host}\n")
158
+ for r in result:
159
+ out.write(f" {r}\n")
160
+ ```
161
+
162
+ ```bash
163
+ python3 tools/detect_storybook.py | tee output/storybook_detection.txt
164
+ ```
165
+
166
+ ---
167
+
168
+ ## STEP 3 — Serial Terminal & Hardware Interface Detection
169
+
170
+ ```python
171
+ # tools/detect_hardware_interfaces.py
172
+ """
173
+ Hardware debugging tools exposed to the internet:
174
+ - Web-based serial terminals (WebSerial API)
175
+ - JTAG/SWD debug interfaces (OpenOCD web UI)
176
+ - Hardware-in-the-loop test dashboards
177
+ - Firmware update servers
178
+
179
+ Indicators:
180
+ - Origin-Trial header with WebSerial API token
181
+ - navigator.serial references in page JS
182
+ - "serial port", "baud rate", "COM port" in page content
183
+ - Titles: "Serial Terminal", "Console", "Debug Terminal"
184
+ """
185
+ import urllib.request, urllib.error, ssl, re
186
+
187
+ ctx = ssl.create_default_context()
188
+ ctx.check_hostname = False
189
+ ctx.verify_mode = ssl.CERT_NONE
190
+
191
+ HARDWARE_INDICATORS = {
192
+ "webserial": [
193
+ "navigator.serial", "requestPort(", "WebSerial",
194
+ "serial-polyfill", "web-serial-polyfill"
195
+ ],
196
+ "serial_ui": [
197
+ "serial terminal", "serial port", "baud rate", "COM port",
198
+ "UART", "RS232", "serial console", "connect to device"
199
+ ],
200
+ "origin_trial": [
201
+ 'http-equiv="origin-trial"',
202
+ "origin-trial"
203
+ ],
204
+ "jtag_debug": [
205
+ "OpenOCD", "JTAG", "SWD", "GDB server", "debug probe",
206
+ "firmware flash", "DFU mode"
207
+ ],
208
+ "hardware_test": [
209
+ "hardware in the loop", "HIL test", "device under test",
210
+ "test fixture", "test harness"
211
+ ]
212
+ }
213
+
214
+ def check_hardware_interface(url):
215
+ findings = []
216
+ try:
217
+ req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
218
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
219
+ headers = dict(r.headers)
220
+ body = r.read(10000).decode('utf-8', 'ignore')
221
+
222
+ # Check Origin-Trial header (indicates experimental API usage)
223
+ origin_trial = headers.get('origin-trial', '')
224
+ ot_meta = re.search(r'origin-trial.*?content="([^"]{20,})"', body, re.I)
225
+ if origin_trial or ot_meta:
226
+ token = origin_trial or (ot_meta.group(1) if ot_meta else '')
227
+ findings.append(f"ORIGIN_TRIAL: {token[:80]}...")
228
+
229
+ # Check each indicator category
230
+ body_lower = body.lower()
231
+ for category, indicators in HARDWARE_INDICATORS.items():
232
+ matched = [ind for ind in indicators if ind.lower() in body_lower]
233
+ if matched:
234
+ findings.append(f"{category.upper()}: {matched}")
235
+
236
+ # Extract page title
237
+ title = re.search(r'<title>([^<]+)</title>', body)
238
+ if title:
239
+ findings.append(f"TITLE: {title.group(1)}")
240
+
241
+ except Exception as ex:
242
+ return None
243
+
244
+ return findings if findings else None
245
+
246
+ # Check dev subdomains specifically
247
+ with open("output/dev_subdomains_dedup.txt") as f:
248
+ dev_hosts = [line.strip() for line in f if line.strip()]
249
+
250
+ print("=== Scanning dev subdomains for hardware interfaces ===")
251
+ for host in dev_hosts:
252
+ url = f"https://{host}" if not host.startswith("http") else host
253
+ result = check_hardware_interface(url)
254
+ if result:
255
+ print(f"\n[HARDWARE INTERFACE] {url}")
256
+ for r in result:
257
+ print(f" {r}")
258
+ ```
259
+
260
+ ```bash
261
+ python3 tools/detect_hardware_interfaces.py | tee output/hardware_interface_detection.txt
262
+ ```
263
+
264
+ ---
265
+
266
+ ## STEP 4 — Generic Dev Tool Fingerprinting
267
+
268
+ ```python
269
+ # tools/detect_devtools.py
270
+ """
271
+ Fingerprint common development tools that should not be public-facing.
272
+ """
273
+ import urllib.request, urllib.error, ssl, re
274
+
275
+ ctx = ssl.create_default_context()
276
+ ctx.check_hostname = False
277
+ ctx.verify_mode = ssl.CERT_NONE
278
+
279
+ # Tool fingerprint definitions: (name, path_patterns, body_indicators, title_patterns)
280
+ DEV_TOOLS = [
281
+ {
282
+ "name": "Storybook",
283
+ "paths": ["/", "/stories.json", "/iframe.html"],
284
+ "body": ["storybook-root", "sb-show-main", "Storybook"],
285
+ "titles": ["Storybook"]
286
+ },
287
+ {
288
+ "name": "Kubernetes Dashboard",
289
+ "paths": ["/", "/#/overview"],
290
+ "body": ["kubernetes-dashboard", "kubernetesui", "kube-system"],
291
+ "titles": ["Kubernetes Dashboard"]
292
+ },
293
+ {
294
+ "name": "Grafana",
295
+ "paths": ["/", "/login"],
296
+ "body": ["grafana", "Grafana", "grafana-app"],
297
+ "titles": ["Grafana"]
298
+ },
299
+ {
300
+ "name": "pgAdmin",
301
+ "paths": ["/", "/pgadmin4/"],
302
+ "body": ["pgAdmin", "pg4_login"],
303
+ "titles": ["pgAdmin", "pgAdmin 4"]
304
+ },
305
+ {
306
+ "name": "Portainer",
307
+ "paths": ["/", "/#/init/admin"],
308
+ "body": ["portainer", "Portainer"],
309
+ "titles": ["Portainer"]
310
+ },
311
+ {
312
+ "name": "Jupyter Notebook",
313
+ "paths": ["/", "/tree"],
314
+ "body": ["jupyter", "ipython", "notebook_app"],
315
+ "titles": ["Jupyter", "JupyterLab"]
316
+ },
317
+ {
318
+ "name": "Adminer",
319
+ "paths": ["/adminer", "/adminer.php", "/adminer/"],
320
+ "body": ["adminer", "Adminer"],
321
+ "titles": ["Adminer"]
322
+ },
323
+ {
324
+ "name": "RabbitMQ Management",
325
+ "paths": ["/#/", "/api/overview"],
326
+ "body": ["rabbitmq_management", "RabbitMQ"],
327
+ "titles": ["RabbitMQ Management"]
328
+ },
329
+ {
330
+ "name": "Laravel Telescope",
331
+ "paths": ["/telescope", "/telescope/requests"],
332
+ "body": ["telescope", "Laravel Telescope"],
333
+ "titles": ["Telescope"]
334
+ },
335
+ {
336
+ "name": "Django Debug Toolbar",
337
+ "paths": ["/__debug__/"],
338
+ "body": ["djdt", "django-debug-toolbar"],
339
+ "titles": ["Django Debug"]
340
+ },
341
+ {
342
+ "name": "Spring Boot Actuator",
343
+ "paths": ["/actuator", "/actuator/health", "/actuator/env"],
344
+ "body": ["actuator", "springBootVersion"],
345
+ "titles": []
346
+ },
347
+ {
348
+ "name": "Serial Terminal (WebSerial)",
349
+ "paths": ["/"],
350
+ "body": ["navigator.serial", "serial terminal", "serialport"],
351
+ "titles": ["Serial Terminal", "Serial Console", "Console"]
352
+ },
353
+ {
354
+ "name": "Caido (Proxy Tool)",
355
+ "paths": ["/"],
356
+ "body": ["caido", "Caido"],
357
+ "titles": ["Caido"]
358
+ },
359
+ {
360
+ "name": "Ngrok Dashboard",
361
+ "paths": ["/"],
362
+ "body": ["ngrok", "inspect.html"],
363
+ "titles": ["ngrok"]
364
+ },
365
+ {
366
+ "name": "HashiCorp Vault UI",
367
+ "paths": ["/ui/", "/v1/sys/health"],
368
+ "body": ["vault-ui", "HashiCorp Vault"],
369
+ "titles": ["Vault"]
370
+ },
371
+ {
372
+ "name": "GitLab (internal instance)",
373
+ "paths": ["/", "/users/sign_in"],
374
+ "body": ["gitlab", "GitLab"],
375
+ "titles": ["GitLab", "Sign in · GitLab"]
376
+ },
377
+ {
378
+ "name": "ArgoCD",
379
+ "paths": ["/", "/auth/login"],
380
+ "body": ["argo-cd", "argocd"],
381
+ "titles": ["Argo CD"]
382
+ },
383
+ {
384
+ "name": "Rancher",
385
+ "paths": ["/"],
386
+ "body": ["rancher", "Rancher"],
387
+ "titles": ["Rancher"]
388
+ }
389
+ ]
390
+
391
+ def fingerprint_host(base_url):
392
+ matches = []
393
+ for tool in DEV_TOOLS:
394
+ for path in tool["paths"]:
395
+ url = base_url.rstrip('/') + path
396
+ try:
397
+ req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
398
+ with urllib.request.urlopen(req, timeout=8, context=ctx) as r:
399
+ body = r.read(5000).decode('utf-8', 'ignore')
400
+ title_match = re.search(r'<title>([^<]+)</title>', body)
401
+ title = title_match.group(1) if title_match else ''
402
+
403
+ body_hit = any(ind.lower() in body.lower() for ind in tool["body"])
404
+ title_hit = any(t.lower() in title.lower() for t in tool["titles"]) if tool["titles"] else False
405
+
406
+ if body_hit or title_hit:
407
+ matches.append({
408
+ "tool": tool["name"], "url": url,
409
+ "status": r.status, "title": title[:80]
410
+ })
411
+ break
412
+ except urllib.error.HTTPError as e:
413
+ body = e.read(1000).decode('utf-8', 'ignore')
414
+ body_hit = any(ind.lower() in body.lower() for ind in tool["body"])
415
+ if body_hit:
416
+ matches.append({"tool": tool["name"], "url": url, "status": e.code})
417
+ except Exception:
418
+ pass
419
+ return matches
420
+
421
+ # Scan all dev subdomains + live hosts
422
+ all_hosts = set()
423
+ for fname in ["output/dev_subdomains_dedup.txt", "output/live_hosts.txt"]:
424
+ try:
425
+ with open(fname) as f:
426
+ for line in f:
427
+ parts = line.strip().split()
428
+ if parts:
429
+ h = parts[0]
430
+ if not h.startswith("http"):
431
+ h = f"https://{h}"
432
+ all_hosts.add(h)
433
+ except FileNotFoundError:
434
+ pass
435
+
436
+ print(f"=== Scanning {len(all_hosts)} hosts for exposed dev tools ===")
437
+ found_any = False
438
+ for host in sorted(all_hosts):
439
+ matches = fingerprint_host(host)
440
+ if matches:
441
+ found_any = True
442
+ for m in matches:
443
+ print(f"\n[DEV TOOL EXPOSED] {m['tool']}")
444
+ print(f" URL: {m['url']}")
445
+ print(f" Status: {m['status']}")
446
+ print(f" Title: {m.get('title', 'N/A')}")
447
+
448
+ if not found_any:
449
+ print("[*] No exposed dev tools detected in current host list")
450
+ ```
451
+
452
+ ```bash
453
+ python3 tools/detect_devtools.py | tee output/devtools_detection.txt
454
+ ```
455
+
456
+ ---
457
+
458
+ ## STEP 5 — Assess Impact of Exposed Dev Tool
459
+
460
+ Once a dev tool is found, collect evidence:
461
+
462
+ ```bash
463
+ # For Storybook: extract full component inventory
464
+ STORYBOOK_URL="https://TARGET_STORYBOOK_URL"
465
+
466
+ # Get all stories
467
+ curl -sk "$STORYBOOK_URL/stories.json" | python3 -c "
468
+ import sys, json
469
+ data = json.load(sys.stdin)
470
+ stories = data.get('stories', data.get('entries', {}))
471
+ components = {}
472
+ for sid, sdata in stories.items():
473
+ if isinstance(sdata, dict):
474
+ title = sdata.get('kind', sdata.get('title', ''))
475
+ name = sdata.get('name', '')
476
+ if title:
477
+ components.setdefault(title, []).append(name)
478
+ print(f'Total components: {len(components)}')
479
+ for comp, stories in sorted(components.items()):
480
+ print(f' {comp}: {stories}')
481
+ " | tee output/storybook_components.txt
482
+
483
+ # Screenshot the tool (via browser_action) as evidence
484
+ # browser_action: take_screenshot of STORYBOOK_URL
485
+ ```
486
+
487
+ ---
488
+
489
+ ## Severity Assessment
490
+
491
+ | Tool | No Auth Required | Auth Required | Severity |
492
+ |------|-----------------|---------------|----------|
493
+ | Serial terminal (prod) | CRITICAL | HIGH | — |
494
+ | Serial terminal (dev) | HIGH | MEDIUM | — |
495
+ | Kubernetes Dashboard | CRITICAL | HIGH | — |
496
+ | Storybook | MEDIUM | LOW | — |
497
+ | Grafana (unauthenticated) | HIGH | MEDIUM | — |
498
+ | Spring Boot Actuator (/env) | HIGH | MEDIUM | — |
499
+ | pgAdmin | CRITICAL | HIGH | — |
500
+ | Jupyter Notebook | CRITICAL | HIGH | — |
501
+ | Internal GitLab | HIGH | MEDIUM | — |
502
+ | ArgoCD | HIGH | MEDIUM | — |
503
+
504
+ ---
505
+
506
+ ## Pro Tips
507
+
508
+ 1. **`dev.solo.` and `dev.personal.` patterns are highest risk** — these are individual developer namespaces that bypass security review processes.
509
+ 2. **Storybook on `circuit.*/design.*/ui.*` subdomains** — design system Storybooks contain payment form components and auth UI that map directly to production XSS surfaces.
510
+ 3. **Check for unauthenticated stories.json** — even if the main Storybook UI requires auth, `stories.json` is often a static file served without auth checks.
511
+ 4. **Hardware terminals on payment companies** — if the target makes physical payment devices (card readers, POS terminals), serial terminals are used for firmware debugging. Finding one exposed = critical.
512
+ 5. **Origin-Trial tokens are time-limited** — capture the token and decode the JWT to see the origin and expiry. If not expired, the WebSerial API is live on that page.
513
+ 6. **Cluster namespace enumeration** — once you find one `service.dev.solo.target.com`, DNS-brute other common service names on the same cluster (`api.dev.solo.target.com`, `admin.dev.solo.target.com`).