chainwall 0.1.0

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 (348) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +278 -0
  3. package/commands/security-scan.md +35 -0
  4. package/dist/auditor/access-mapper.d.ts +3 -0
  5. package/dist/auditor/access-mapper.d.ts.map +1 -0
  6. package/dist/auditor/access-mapper.js +15 -0
  7. package/dist/auditor/access-mapper.js.map +1 -0
  8. package/dist/auditor/cli-detector.d.ts +7 -0
  9. package/dist/auditor/cli-detector.d.ts.map +1 -0
  10. package/dist/auditor/cli-detector.js +63 -0
  11. package/dist/auditor/cli-detector.js.map +1 -0
  12. package/dist/auditor/cross-reference.d.ts +4 -0
  13. package/dist/auditor/cross-reference.d.ts.map +1 -0
  14. package/dist/auditor/cross-reference.js +16 -0
  15. package/dist/auditor/cross-reference.js.map +1 -0
  16. package/dist/auditor/env-auditor.d.ts +9 -0
  17. package/dist/auditor/env-auditor.d.ts.map +1 -0
  18. package/dist/auditor/env-auditor.js +83 -0
  19. package/dist/auditor/env-auditor.js.map +1 -0
  20. package/dist/auditor/mcp-analyzer.d.ts +11 -0
  21. package/dist/auditor/mcp-analyzer.d.ts.map +1 -0
  22. package/dist/auditor/mcp-analyzer.js +145 -0
  23. package/dist/auditor/mcp-analyzer.js.map +1 -0
  24. package/dist/auditor/mcp-detector.d.ts +17 -0
  25. package/dist/auditor/mcp-detector.d.ts.map +1 -0
  26. package/dist/auditor/mcp-detector.js +86 -0
  27. package/dist/auditor/mcp-detector.js.map +1 -0
  28. package/dist/auditor/remediation.d.ts +26 -0
  29. package/dist/auditor/remediation.d.ts.map +1 -0
  30. package/dist/auditor/remediation.js +222 -0
  31. package/dist/auditor/remediation.js.map +1 -0
  32. package/dist/auditor/tool-detector.d.ts +15 -0
  33. package/dist/auditor/tool-detector.d.ts.map +1 -0
  34. package/dist/auditor/tool-detector.js +241 -0
  35. package/dist/auditor/tool-detector.js.map +1 -0
  36. package/dist/auditor/types.d.ts +31 -0
  37. package/dist/auditor/types.d.ts.map +1 -0
  38. package/dist/auditor/types.js +2 -0
  39. package/dist/auditor/types.js.map +1 -0
  40. package/dist/auditor/vscode-extension-scanner.d.ts +8 -0
  41. package/dist/auditor/vscode-extension-scanner.d.ts.map +1 -0
  42. package/dist/auditor/vscode-extension-scanner.js +51 -0
  43. package/dist/auditor/vscode-extension-scanner.js.map +1 -0
  44. package/dist/cli.d.ts +3 -0
  45. package/dist/cli.d.ts.map +1 -0
  46. package/dist/cli.js +159 -0
  47. package/dist/cli.js.map +1 -0
  48. package/dist/commands/audit.d.ts +8 -0
  49. package/dist/commands/audit.d.ts.map +1 -0
  50. package/dist/commands/audit.js +151 -0
  51. package/dist/commands/audit.js.map +1 -0
  52. package/dist/commands/init.d.ts +2 -0
  53. package/dist/commands/init.d.ts.map +1 -0
  54. package/dist/commands/init.js +34 -0
  55. package/dist/commands/init.js.map +1 -0
  56. package/dist/commands/remediate-cli.d.ts +3 -0
  57. package/dist/commands/remediate-cli.d.ts.map +1 -0
  58. package/dist/commands/remediate-cli.js +96 -0
  59. package/dist/commands/remediate-cli.js.map +1 -0
  60. package/dist/commands/scan.d.ts +11 -0
  61. package/dist/commands/scan.d.ts.map +1 -0
  62. package/dist/commands/scan.js +138 -0
  63. package/dist/commands/scan.js.map +1 -0
  64. package/dist/commands/watch.d.ts +6 -0
  65. package/dist/commands/watch.d.ts.map +1 -0
  66. package/dist/commands/watch.js +203 -0
  67. package/dist/commands/watch.js.map +1 -0
  68. package/dist/config.d.ts +19 -0
  69. package/dist/config.d.ts.map +1 -0
  70. package/dist/config.js +235 -0
  71. package/dist/config.js.map +1 -0
  72. package/dist/mcp-server/index.d.ts +3 -0
  73. package/dist/mcp-server/index.d.ts.map +1 -0
  74. package/dist/mcp-server/index.js +69 -0
  75. package/dist/mcp-server/index.js.map +1 -0
  76. package/dist/mcp-server/schemas.d.ts +13 -0
  77. package/dist/mcp-server/schemas.d.ts.map +1 -0
  78. package/dist/mcp-server/schemas.js +13 -0
  79. package/dist/mcp-server/schemas.js.map +1 -0
  80. package/dist/mcp-server/tools/audit-status.d.ts +3 -0
  81. package/dist/mcp-server/tools/audit-status.d.ts.map +1 -0
  82. package/dist/mcp-server/tools/audit-status.js +46 -0
  83. package/dist/mcp-server/tools/audit-status.js.map +1 -0
  84. package/dist/mcp-server/tools/check-command.d.ts +4 -0
  85. package/dist/mcp-server/tools/check-command.d.ts.map +1 -0
  86. package/dist/mcp-server/tools/check-command.js +30 -0
  87. package/dist/mcp-server/tools/check-command.js.map +1 -0
  88. package/dist/mcp-server/tools/scan-content.d.ts +4 -0
  89. package/dist/mcp-server/tools/scan-content.d.ts.map +1 -0
  90. package/dist/mcp-server/tools/scan-content.js +18 -0
  91. package/dist/mcp-server/tools/scan-content.js.map +1 -0
  92. package/dist/mcp-server/tools/scan-file.d.ts +4 -0
  93. package/dist/mcp-server/tools/scan-file.d.ts.map +1 -0
  94. package/dist/mcp-server/tools/scan-file.js +48 -0
  95. package/dist/mcp-server/tools/scan-file.js.map +1 -0
  96. package/dist/mcp-server/types.d.ts +15 -0
  97. package/dist/mcp-server/types.d.ts.map +1 -0
  98. package/dist/mcp-server/types.js +2 -0
  99. package/dist/mcp-server/types.js.map +1 -0
  100. package/dist/reporter/audit-report.d.ts +4 -0
  101. package/dist/reporter/audit-report.d.ts.map +1 -0
  102. package/dist/reporter/audit-report.js +186 -0
  103. package/dist/reporter/audit-report.js.map +1 -0
  104. package/dist/reporter/json-report.d.ts +3 -0
  105. package/dist/reporter/json-report.d.ts.map +1 -0
  106. package/dist/reporter/json-report.js +4 -0
  107. package/dist/reporter/json-report.js.map +1 -0
  108. package/dist/reporter/remediation-text.d.ts +3 -0
  109. package/dist/reporter/remediation-text.d.ts.map +1 -0
  110. package/dist/reporter/remediation-text.js +12 -0
  111. package/dist/reporter/remediation-text.js.map +1 -0
  112. package/dist/reporter/risk-scorer.d.ts +8 -0
  113. package/dist/reporter/risk-scorer.d.ts.map +1 -0
  114. package/dist/reporter/risk-scorer.js +40 -0
  115. package/dist/reporter/risk-scorer.js.map +1 -0
  116. package/dist/reporter/sarif-report.d.ts +3 -0
  117. package/dist/reporter/sarif-report.d.ts.map +1 -0
  118. package/dist/reporter/sarif-report.js +80 -0
  119. package/dist/reporter/sarif-report.js.map +1 -0
  120. package/dist/reporter/shared.d.ts +11 -0
  121. package/dist/reporter/shared.d.ts.map +1 -0
  122. package/dist/reporter/shared.js +85 -0
  123. package/dist/reporter/shared.js.map +1 -0
  124. package/dist/reporter/summary-generator.d.ts +16 -0
  125. package/dist/reporter/summary-generator.d.ts.map +1 -0
  126. package/dist/reporter/summary-generator.js +89 -0
  127. package/dist/reporter/summary-generator.js.map +1 -0
  128. package/dist/reporter/terminal-report.d.ts +4 -0
  129. package/dist/reporter/terminal-report.d.ts.map +1 -0
  130. package/dist/reporter/terminal-report.js +135 -0
  131. package/dist/reporter/terminal-report.js.map +1 -0
  132. package/dist/rules/crypto-rules.d.ts +3 -0
  133. package/dist/rules/crypto-rules.d.ts.map +1 -0
  134. package/dist/rules/crypto-rules.js +252 -0
  135. package/dist/rules/crypto-rules.js.map +1 -0
  136. package/dist/rules/default-rules.d.ts +9 -0
  137. package/dist/rules/default-rules.d.ts.map +1 -0
  138. package/dist/rules/default-rules.js +1319 -0
  139. package/dist/rules/default-rules.js.map +1 -0
  140. package/dist/rules/index.d.ts +7 -0
  141. package/dist/rules/index.d.ts.map +1 -0
  142. package/dist/rules/index.js +7 -0
  143. package/dist/rules/index.js.map +1 -0
  144. package/dist/rules/injection-rules.d.ts +8 -0
  145. package/dist/rules/injection-rules.d.ts.map +1 -0
  146. package/dist/rules/injection-rules.js +108 -0
  147. package/dist/rules/injection-rules.js.map +1 -0
  148. package/dist/rules/types.d.ts +52 -0
  149. package/dist/rules/types.d.ts.map +1 -0
  150. package/dist/rules/types.js +2 -0
  151. package/dist/rules/types.js.map +1 -0
  152. package/dist/scanner/filesystem-scanner.d.ts +26 -0
  153. package/dist/scanner/filesystem-scanner.d.ts.map +1 -0
  154. package/dist/scanner/filesystem-scanner.js +369 -0
  155. package/dist/scanner/filesystem-scanner.js.map +1 -0
  156. package/dist/scanner/injection-scanner.d.ts +12 -0
  157. package/dist/scanner/injection-scanner.d.ts.map +1 -0
  158. package/dist/scanner/injection-scanner.js +136 -0
  159. package/dist/scanner/injection-scanner.js.map +1 -0
  160. package/dist/scanner/permission-checker.d.ts +4 -0
  161. package/dist/scanner/permission-checker.d.ts.map +1 -0
  162. package/dist/scanner/permission-checker.js +37 -0
  163. package/dist/scanner/permission-checker.js.map +1 -0
  164. package/dist/scanner/redact.d.ts +3 -0
  165. package/dist/scanner/redact.d.ts.map +1 -0
  166. package/dist/scanner/redact.js +17 -0
  167. package/dist/scanner/redact.js.map +1 -0
  168. package/dist/scanner/rule-engine.d.ts +9 -0
  169. package/dist/scanner/rule-engine.d.ts.map +1 -0
  170. package/dist/scanner/rule-engine.js +129 -0
  171. package/dist/scanner/rule-engine.js.map +1 -0
  172. package/dist/scanner/system-targets.d.ts +17 -0
  173. package/dist/scanner/system-targets.d.ts.map +1 -0
  174. package/dist/scanner/system-targets.js +81 -0
  175. package/dist/scanner/system-targets.js.map +1 -0
  176. package/dist/tui/App.d.ts +6 -0
  177. package/dist/tui/App.d.ts.map +1 -0
  178. package/dist/tui/App.js +224 -0
  179. package/dist/tui/App.js.map +1 -0
  180. package/dist/tui/components/BootSequence.d.ts +6 -0
  181. package/dist/tui/components/BootSequence.d.ts.map +1 -0
  182. package/dist/tui/components/BootSequence.js +40 -0
  183. package/dist/tui/components/BootSequence.js.map +1 -0
  184. package/dist/tui/components/BorderedSection.d.ts +12 -0
  185. package/dist/tui/components/BorderedSection.d.ts.map +1 -0
  186. package/dist/tui/components/BorderedSection.js +7 -0
  187. package/dist/tui/components/BorderedSection.js.map +1 -0
  188. package/dist/tui/components/ErrorBoundary.d.ts +18 -0
  189. package/dist/tui/components/ErrorBoundary.d.ts.map +1 -0
  190. package/dist/tui/components/ErrorBoundary.js +36 -0
  191. package/dist/tui/components/ErrorBoundary.js.map +1 -0
  192. package/dist/tui/components/FirstUseHint.d.ts +7 -0
  193. package/dist/tui/components/FirstUseHint.d.ts.map +1 -0
  194. package/dist/tui/components/FirstUseHint.js +20 -0
  195. package/dist/tui/components/FirstUseHint.js.map +1 -0
  196. package/dist/tui/components/Footer.d.ts +10 -0
  197. package/dist/tui/components/Footer.d.ts.map +1 -0
  198. package/dist/tui/components/Footer.js +51 -0
  199. package/dist/tui/components/Footer.js.map +1 -0
  200. package/dist/tui/components/MetricCard.d.ts +11 -0
  201. package/dist/tui/components/MetricCard.d.ts.map +1 -0
  202. package/dist/tui/components/MetricCard.js +8 -0
  203. package/dist/tui/components/MetricCard.js.map +1 -0
  204. package/dist/tui/components/Panel.d.ts +15 -0
  205. package/dist/tui/components/Panel.d.ts.map +1 -0
  206. package/dist/tui/components/Panel.js +25 -0
  207. package/dist/tui/components/Panel.js.map +1 -0
  208. package/dist/tui/components/RemediationMenu.d.ts +10 -0
  209. package/dist/tui/components/RemediationMenu.d.ts.map +1 -0
  210. package/dist/tui/components/RemediationMenu.js +84 -0
  211. package/dist/tui/components/RemediationMenu.js.map +1 -0
  212. package/dist/tui/components/RiskGauge.d.ts +7 -0
  213. package/dist/tui/components/RiskGauge.d.ts.map +1 -0
  214. package/dist/tui/components/RiskGauge.js +55 -0
  215. package/dist/tui/components/RiskGauge.js.map +1 -0
  216. package/dist/tui/components/ScrollableList.d.ts +11 -0
  217. package/dist/tui/components/ScrollableList.d.ts.map +1 -0
  218. package/dist/tui/components/ScrollableList.js +14 -0
  219. package/dist/tui/components/ScrollableList.js.map +1 -0
  220. package/dist/tui/components/Section.d.ts +9 -0
  221. package/dist/tui/components/Section.d.ts.map +1 -0
  222. package/dist/tui/components/Section.js +7 -0
  223. package/dist/tui/components/Section.js.map +1 -0
  224. package/dist/tui/components/SectionHeader.d.ts +8 -0
  225. package/dist/tui/components/SectionHeader.d.ts.map +1 -0
  226. package/dist/tui/components/SectionHeader.js +15 -0
  227. package/dist/tui/components/SectionHeader.js.map +1 -0
  228. package/dist/tui/components/SeverityBadge.d.ts +5 -0
  229. package/dist/tui/components/SeverityBadge.d.ts.map +1 -0
  230. package/dist/tui/components/SeverityBadge.js +7 -0
  231. package/dist/tui/components/SeverityBadge.js.map +1 -0
  232. package/dist/tui/components/Sidebar.d.ts +2 -0
  233. package/dist/tui/components/Sidebar.d.ts.map +1 -0
  234. package/dist/tui/components/Sidebar.js +40 -0
  235. package/dist/tui/components/Sidebar.js.map +1 -0
  236. package/dist/tui/components/StatusIndicator.d.ts +8 -0
  237. package/dist/tui/components/StatusIndicator.d.ts.map +1 -0
  238. package/dist/tui/components/StatusIndicator.js +15 -0
  239. package/dist/tui/components/StatusIndicator.js.map +1 -0
  240. package/dist/tui/components/Table.d.ts +21 -0
  241. package/dist/tui/components/Table.d.ts.map +1 -0
  242. package/dist/tui/components/Table.js +38 -0
  243. package/dist/tui/components/Table.js.map +1 -0
  244. package/dist/tui/components/Transition.d.ts +8 -0
  245. package/dist/tui/components/Transition.d.ts.map +1 -0
  246. package/dist/tui/components/Transition.js +38 -0
  247. package/dist/tui/components/Transition.js.map +1 -0
  248. package/dist/tui/components/WelcomeScreen.d.ts +6 -0
  249. package/dist/tui/components/WelcomeScreen.d.ts.map +1 -0
  250. package/dist/tui/components/WelcomeScreen.js +14 -0
  251. package/dist/tui/components/WelcomeScreen.js.map +1 -0
  252. package/dist/tui/educational.d.ts +32 -0
  253. package/dist/tui/educational.d.ts.map +1 -0
  254. package/dist/tui/educational.js +117 -0
  255. package/dist/tui/educational.js.map +1 -0
  256. package/dist/tui/hooks/useAudit.d.ts +24 -0
  257. package/dist/tui/hooks/useAudit.d.ts.map +1 -0
  258. package/dist/tui/hooks/useAudit.js +263 -0
  259. package/dist/tui/hooks/useAudit.js.map +1 -0
  260. package/dist/tui/hooks/useConfig.d.ts +18 -0
  261. package/dist/tui/hooks/useConfig.d.ts.map +1 -0
  262. package/dist/tui/hooks/useConfig.js +85 -0
  263. package/dist/tui/hooks/useConfig.js.map +1 -0
  264. package/dist/tui/hooks/useHookStatus.d.ts +10 -0
  265. package/dist/tui/hooks/useHookStatus.d.ts.map +1 -0
  266. package/dist/tui/hooks/useHookStatus.js +59 -0
  267. package/dist/tui/hooks/useHookStatus.js.map +1 -0
  268. package/dist/tui/hooks/useLogs.d.ts +42 -0
  269. package/dist/tui/hooks/useLogs.d.ts.map +1 -0
  270. package/dist/tui/hooks/useLogs.js +105 -0
  271. package/dist/tui/hooks/useLogs.js.map +1 -0
  272. package/dist/tui/hooks/useScan.d.ts +39 -0
  273. package/dist/tui/hooks/useScan.d.ts.map +1 -0
  274. package/dist/tui/hooks/useScan.js +255 -0
  275. package/dist/tui/hooks/useScan.js.map +1 -0
  276. package/dist/tui/hooks/useTerminalSize.d.ts +10 -0
  277. package/dist/tui/hooks/useTerminalSize.d.ts.map +1 -0
  278. package/dist/tui/hooks/useTerminalSize.js +27 -0
  279. package/dist/tui/hooks/useTerminalSize.js.map +1 -0
  280. package/dist/tui/index.d.ts +2 -0
  281. package/dist/tui/index.d.ts.map +1 -0
  282. package/dist/tui/index.js +8 -0
  283. package/dist/tui/index.js.map +1 -0
  284. package/dist/tui/screens/AuditPanel.d.ts +7 -0
  285. package/dist/tui/screens/AuditPanel.d.ts.map +1 -0
  286. package/dist/tui/screens/AuditPanel.js +467 -0
  287. package/dist/tui/screens/AuditPanel.js.map +1 -0
  288. package/dist/tui/screens/LogsPanel.d.ts +2 -0
  289. package/dist/tui/screens/LogsPanel.d.ts.map +1 -0
  290. package/dist/tui/screens/LogsPanel.js +127 -0
  291. package/dist/tui/screens/LogsPanel.js.map +1 -0
  292. package/dist/tui/screens/OverviewPanel.d.ts +2 -0
  293. package/dist/tui/screens/OverviewPanel.d.ts.map +1 -0
  294. package/dist/tui/screens/OverviewPanel.js +84 -0
  295. package/dist/tui/screens/OverviewPanel.js.map +1 -0
  296. package/dist/tui/screens/ScanPanel.d.ts +2 -0
  297. package/dist/tui/screens/ScanPanel.d.ts.map +1 -0
  298. package/dist/tui/screens/ScanPanel.js +188 -0
  299. package/dist/tui/screens/ScanPanel.js.map +1 -0
  300. package/dist/tui/screens/ScanResultsPanel.d.ts +2 -0
  301. package/dist/tui/screens/ScanResultsPanel.d.ts.map +1 -0
  302. package/dist/tui/screens/ScanResultsPanel.js +394 -0
  303. package/dist/tui/screens/ScanResultsPanel.js.map +1 -0
  304. package/dist/tui/screens/SettingsPanel.d.ts +2 -0
  305. package/dist/tui/screens/SettingsPanel.d.ts.map +1 -0
  306. package/dist/tui/screens/SettingsPanel.js +353 -0
  307. package/dist/tui/screens/SettingsPanel.js.map +1 -0
  308. package/dist/tui/state.d.ts +35 -0
  309. package/dist/tui/state.d.ts.map +1 -0
  310. package/dist/tui/state.js +13 -0
  311. package/dist/tui/state.js.map +1 -0
  312. package/dist/tui/theme.d.ts +58 -0
  313. package/dist/tui/theme.d.ts.map +1 -0
  314. package/dist/tui/theme.js +80 -0
  315. package/dist/tui/theme.js.map +1 -0
  316. package/dist/version.d.ts +2 -0
  317. package/dist/version.d.ts.map +1 -0
  318. package/dist/version.js +5 -0
  319. package/dist/version.js.map +1 -0
  320. package/hooks/audit-logger.sh +74 -0
  321. package/hooks/detection-lib.sh +301 -0
  322. package/hooks/git-pre-commit.sh +195 -0
  323. package/hooks/git-pre-push.sh +125 -0
  324. package/hooks/git-safety.sh +152 -0
  325. package/hooks/security-scanner.sh +527 -0
  326. package/install.sh +543 -0
  327. package/package.json +67 -0
  328. package/patterns/credentials.yaml +317 -0
  329. package/patterns/dangerous-commands.yaml +167 -0
  330. package/patterns/pii.yaml +95 -0
  331. package/patterns/prompt-injection.yaml +131 -0
  332. package/patterns/supply-chain.yaml +119 -0
  333. package/rules/AGENTS.md +60 -0
  334. package/rules/SECURITY-RULES.md +177 -0
  335. package/rules/claude.md +9 -0
  336. package/rules/clinerules +29 -0
  337. package/rules/continuerules +29 -0
  338. package/rules/copilot-instructions.md +9 -0
  339. package/rules/cursor-security.mdc +14 -0
  340. package/rules/gemini.md +9 -0
  341. package/rules/kiro-security.md +29 -0
  342. package/rules/roocode-security.md +29 -0
  343. package/rules/trae-security.md +29 -0
  344. package/rules/windsurfrules +9 -0
  345. package/skill/llm-antivirus/SKILL.md +73 -0
  346. package/skill/llm-antivirus/references/threat-patterns.yaml +82 -0
  347. package/skill/llm-antivirus/scripts/security-audit.sh +244 -0
  348. package/uninstall.sh +215 -0
@@ -0,0 +1,317 @@
1
+ # ChainWall — Credential Detection Patterns
2
+ #
3
+ # 50+ patterns for API keys, tokens, and secrets from major providers.
4
+ # Reference database. Consumed by security-audit.sh for project scanning.
5
+ # Critical patterns are hardcoded in hooks for real-time enforcement.
6
+ #
7
+ # Fields:
8
+ # name: Human-readable pattern name
9
+ # regex: POSIX ERE with `(?i)` prefix convention (stripped by scanner, replaced with -i flag)
10
+ # severity: critical | high | medium
11
+ # description: What this pattern detects and why it matters
12
+ #
13
+ # Severity guide:
14
+ # critical — Live production credentials, immediate exploitation risk
15
+ # high — API keys/tokens with significant access scope
16
+ # medium — Keys with limited scope or test-mode indicators
17
+
18
+ patterns:
19
+
20
+ # ── AWS ──────────────────────────────────────────────────────────────
21
+ - name: AWS Access Key ID
22
+ regex: "AKIA[0-9A-Z]{16}"
23
+ severity: critical
24
+ description: AWS IAM access key — grants programmatic access to AWS services
25
+
26
+ - name: AWS Secret Access Key
27
+ regex: "(?i)aws_secret_access_key[\"'\\s=:]+[A-Za-z0-9/+=]{40}"
28
+ severity: critical
29
+ description: AWS secret key paired with access key ID
30
+
31
+ - name: AWS Session Token
32
+ regex: "(?i)aws_session_token[\"'\\s=:]+[A-Za-z0-9/+=]{100,}"
33
+ severity: critical
34
+ description: Temporary AWS session token from STS
35
+
36
+ # ── GCP / Google ─────────────────────────────────────────────────────
37
+ - name: Google API Key
38
+ regex: "AIza[0-9A-Za-z_-]{35}"
39
+ severity: high
40
+ description: Google Cloud / Maps / Firebase API key
41
+
42
+ - name: GCP Service Account Key
43
+ regex: "\"type\":\\s*\"service_account\""
44
+ severity: critical
45
+ description: GCP service account JSON key file marker
46
+
47
+ - name: Google OAuth Client Secret
48
+ regex: "(?i)client_secret[\"'\\s=:]+[A-Za-z0-9_-]{24,}"
49
+ severity: high
50
+ description: Google OAuth2 client secret
51
+
52
+ # ── Azure ────────────────────────────────────────────────────────────
53
+ - name: Azure Storage Account Key
54
+ regex: "(?i)(AccountKey|azure_storage_key)[\"'\\s=:]+[A-Za-z0-9/+=]{86,88}=="
55
+ severity: critical
56
+ description: Azure Storage account access key
57
+
58
+ - name: Azure AD Client Secret
59
+ regex: "(?i)(client_secret|azure_client_secret)[\"'\\s=:]+[A-Za-z0-9_.~-]{34,}"
60
+ severity: high
61
+ description: Azure Active Directory application secret
62
+
63
+ - name: Azure Connection String
64
+ regex: "DefaultEndpointsProtocol=https;AccountName=[^;]+;AccountKey=[A-Za-z0-9/+=]{86,88}=="
65
+ severity: critical
66
+ description: Azure Storage connection string with embedded key
67
+
68
+ # ── GitHub ───────────────────────────────────────────────────────────
69
+ - name: GitHub Personal Access Token
70
+ regex: "ghp_[a-zA-Z0-9]{36,}"
71
+ severity: critical
72
+ description: GitHub classic personal access token
73
+
74
+ - name: GitHub Fine-Grained Token
75
+ regex: "github_pat_[a-zA-Z0-9]{22,}_[a-zA-Z0-9]{59,}"
76
+ severity: critical
77
+ description: GitHub fine-grained personal access token
78
+
79
+ - name: GitHub OAuth Access Token
80
+ regex: "gho_[a-zA-Z0-9]{36}"
81
+ severity: high
82
+ description: GitHub OAuth access token
83
+
84
+ - name: GitHub App Token
85
+ regex: "(ghu|ghs)_[a-zA-Z0-9]{36}"
86
+ severity: high
87
+ description: GitHub App user-to-server or server-to-server token
88
+
89
+ - name: GitHub App Refresh Token
90
+ regex: "ghr_[a-zA-Z0-9]{36}"
91
+ severity: high
92
+ description: GitHub App refresh token
93
+
94
+ # ── GitLab ───────────────────────────────────────────────────────────
95
+ - name: GitLab Personal Access Token
96
+ regex: "glpat-[a-zA-Z0-9_-]{20,}"
97
+ severity: critical
98
+ description: GitLab personal access token
99
+
100
+ - name: GitLab Pipeline Token
101
+ regex: "glptt-[a-zA-Z0-9_-]{20,}"
102
+ severity: high
103
+ description: GitLab pipeline trigger token
104
+
105
+ - name: GitLab Runner Token
106
+ regex: "glrt-[a-zA-Z0-9_-]{20,}"
107
+ severity: high
108
+ description: GitLab runner registration token
109
+
110
+ # ── Slack ────────────────────────────────────────────────────────────
111
+ - name: Slack Bot/User Token
112
+ regex: "xox[pboa]-[0-9]{10,13}-[0-9]{10,13}-[a-zA-Z0-9]{24,}"
113
+ severity: critical
114
+ description: Slack API token (bot, user, app, or OAuth)
115
+
116
+ - name: Slack Webhook URL
117
+ regex: "https://hooks\\.slack\\.com/services/T[A-Z0-9]{8,}/B[A-Z0-9]{8,}/[a-zA-Z0-9]{24,}"
118
+ severity: high
119
+ description: Slack incoming webhook URL
120
+
121
+ # ── Stripe ───────────────────────────────────────────────────────────
122
+ - name: Stripe Secret Key
123
+ regex: "sk_(live|test)_[a-zA-Z0-9]{24,}"
124
+ severity: critical
125
+ description: Stripe API secret key (live or test mode)
126
+
127
+ - name: Stripe Restricted Key
128
+ regex: "rk_(live|test)_[a-zA-Z0-9]{24,}"
129
+ severity: high
130
+ description: Stripe restricted API key
131
+
132
+ - name: Stripe Webhook Secret
133
+ regex: "whsec_[a-zA-Z0-9]{32,}"
134
+ severity: high
135
+ description: Stripe webhook signing secret
136
+
137
+ # ── OpenAI / Anthropic ──────────────────────────────────────────────
138
+ - name: OpenAI API Key
139
+ regex: "sk-[a-zA-Z0-9]{48}"
140
+ severity: critical
141
+ description: OpenAI API key for GPT/DALL-E/Whisper access
142
+
143
+ - name: OpenAI Project Key
144
+ regex: "sk-proj-[a-zA-Z0-9_-]{48,}"
145
+ severity: critical
146
+ description: OpenAI project-scoped API key
147
+
148
+ - name: Anthropic API Key
149
+ regex: "sk-ant-[a-zA-Z0-9_-]{40,}"
150
+ severity: critical
151
+ description: Anthropic API key for Claude access
152
+
153
+ # ── Twilio ───────────────────────────────────────────────────────────
154
+ - name: Twilio API Key
155
+ regex: "SK[a-f0-9]{32}"
156
+ severity: high
157
+ description: Twilio API key (SK prefix + 32 hex chars)
158
+
159
+ - name: Twilio Account SID
160
+ regex: "AC[a-f0-9]{32}"
161
+ severity: medium
162
+ description: Twilio Account SID (not secret but sensitive identifier)
163
+
164
+ # ── SendGrid ─────────────────────────────────────────────────────────
165
+ - name: SendGrid API Key
166
+ regex: "SG\\.[a-zA-Z0-9_-]{22}\\.[a-zA-Z0-9_-]{43}"
167
+ severity: critical
168
+ description: SendGrid API key for email sending
169
+
170
+ # ── Supabase ─────────────────────────────────────────────────────────
171
+ - name: Supabase Service Role Key
172
+ regex: "(?i)(supabase_service_role_key|SUPABASE_SERVICE_KEY)[\"'\\s=:]+eyJ[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+"
173
+ severity: critical
174
+ description: Supabase service role JWT — bypasses Row Level Security
175
+
176
+ - name: Supabase Anon Key (exposed)
177
+ regex: "(?i)supabase_anon_key[\"'\\s=:]+eyJ[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+\\.[a-zA-Z0-9_-]+"
178
+ severity: medium
179
+ description: Supabase anonymous key — public but sensitive in server context
180
+
181
+ # ── Firebase ─────────────────────────────────────────────────────────
182
+ - name: Firebase Server Key
183
+ regex: "AAAA[a-zA-Z0-9_-]{7,}:[a-zA-Z0-9_-]{140,}"
184
+ severity: critical
185
+ description: Firebase Cloud Messaging server key
186
+
187
+ # ── Databricks ───────────────────────────────────────────────────────
188
+ - name: Databricks Access Token
189
+ regex: "dapi[a-f0-9]{32}"
190
+ severity: high
191
+ description: Databricks personal access token
192
+
193
+ # ── npm / PyPI / Docker ──────────────────────────────────────────────
194
+ - name: npm Access Token
195
+ regex: "npm_[a-zA-Z0-9]{36}"
196
+ severity: critical
197
+ description: npm registry authentication token
198
+
199
+ - name: PyPI API Token
200
+ regex: "pypi-[a-zA-Z0-9_-]{50,}"
201
+ severity: critical
202
+ description: PyPI package repository API token
203
+
204
+ - name: Docker Hub Access Token
205
+ regex: "dckr_pat_[a-zA-Z0-9_-]{20,}"
206
+ severity: high
207
+ description: Docker Hub personal access token
208
+
209
+ # ── JWT / Bearer ─────────────────────────────────────────────────────
210
+ - name: JSON Web Token
211
+ regex: "eyJ[a-zA-Z0-9_-]{10,}\\.[a-zA-Z0-9_-]{10,}\\.[a-zA-Z0-9_-]{10,}"
212
+ severity: medium
213
+ description: JWT token (may contain sensitive claims)
214
+
215
+ - name: Bearer Token
216
+ regex: "Bearer\\s+[a-zA-Z0-9_-]{20,}"
217
+ severity: medium
218
+ description: Authorization Bearer token in header format (entropy-validated in TypeScript layer)
219
+
220
+ # ── SSH / PGP ────────────────────────────────────────────────────────
221
+ - name: RSA Private Key
222
+ regex: "-----BEGIN RSA PRIVATE KEY-----"
223
+ severity: critical
224
+ description: PEM-encoded RSA private key header
225
+
226
+ - name: DSA Private Key
227
+ regex: "-----BEGIN DSA PRIVATE KEY-----"
228
+ severity: critical
229
+ description: PEM-encoded DSA private key header
230
+
231
+ - name: EC Private Key
232
+ regex: "-----BEGIN EC PRIVATE KEY-----"
233
+ severity: critical
234
+ description: PEM-encoded Elliptic Curve private key header
235
+
236
+ - name: OpenSSH Private Key
237
+ regex: "-----BEGIN OPENSSH PRIVATE KEY-----"
238
+ severity: critical
239
+ description: OpenSSH format private key header
240
+
241
+ - name: PGP Private Key Block
242
+ regex: "-----BEGIN PGP PRIVATE KEY BLOCK-----"
243
+ severity: critical
244
+ description: PGP/GPG private key block header
245
+
246
+ # ── Hashicorp Vault ──────────────────────────────────────────────────
247
+ - name: Vault Token
248
+ regex: "hvs\\.[a-zA-Z0-9_-]{24,}"
249
+ severity: critical
250
+ description: HashiCorp Vault service token
251
+
252
+ - name: Vault Batch Token
253
+ regex: "hvb\\.[a-zA-Z0-9_-]{24,}"
254
+ severity: high
255
+ description: HashiCorp Vault batch token
256
+
257
+ # ── Datadog ──────────────────────────────────────────────────────────
258
+ - name: Datadog API Key
259
+ regex: "(?i)(dd_api_key|datadog_api_key)[\"'\\s=:]+[a-f0-9]{32}"
260
+ severity: high
261
+ description: Datadog API key for monitoring data access
262
+
263
+ # ── Mailgun ──────────────────────────────────────────────────────────
264
+ - name: Mailgun API Key
265
+ regex: "key-[a-f0-9]{32}"
266
+ severity: high
267
+ description: Mailgun API key for email service
268
+
269
+ # ── Heroku ───────────────────────────────────────────────────────────
270
+ - name: Heroku API Key
271
+ regex: "(?i)(heroku_api_key|HEROKU_API_KEY)[\"'\\s=:]+[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
272
+ severity: high
273
+ description: Heroku platform API key (UUID format)
274
+
275
+ # ── Shopify ──────────────────────────────────────────────────────────
276
+ - name: Shopify Access Token
277
+ regex: "shpat_[a-f0-9]{32}"
278
+ severity: high
279
+ description: Shopify Admin API access token
280
+
281
+ - name: Shopify Custom App Token
282
+ regex: "shpca_[a-f0-9]{32}"
283
+ severity: high
284
+ description: Shopify custom app access token
285
+
286
+ - name: Shopify Private App Password
287
+ regex: "shppa_[a-f0-9]{32}"
288
+ severity: high
289
+ description: Shopify private app password
290
+
291
+ # ── Linear ───────────────────────────────────────────────────────────
292
+ - name: Linear API Key
293
+ regex: "lin_api_[a-zA-Z0-9]{40,}"
294
+ severity: high
295
+ description: Linear project management API key
296
+
297
+ # ── Vercel ───────────────────────────────────────────────────────────
298
+ - name: Vercel Access Token
299
+ regex: "(?i)(vercel_token|VERCEL_TOKEN)[\"'\\s=:]+[a-zA-Z0-9]{24,}"
300
+ severity: high
301
+ description: Vercel platform access token
302
+
303
+ # ── Generic High-Entropy Secrets ─────────────────────────────────────
304
+ - name: Generic API Key Assignment
305
+ regex: "(?i)(api_key|apikey|api_secret|secret_key)[\"'\\s=:]+[a-zA-Z0-9_-]{20,}"
306
+ severity: medium
307
+ description: Generic API key or secret in assignment context
308
+
309
+ - name: Password in Config
310
+ regex: "(?i)(password|passwd|pwd)[\"'\\s=:]+[^\\s\"']{8,}"
311
+ severity: medium
312
+ description: Password value in configuration or code
313
+
314
+ - name: Private Key Variable
315
+ regex: "(?i)(private_key|privatekey)[\"'\\s=:]+[a-zA-Z0-9/+=_-]{20,}"
316
+ severity: high
317
+ description: Private key value in variable assignment
@@ -0,0 +1,167 @@
1
+ # ChainWall — Dangerous Command Detection Patterns
2
+ #
3
+ # Shell commands that could cause system damage, data loss, or compromise.
4
+ # Reference database. Consumed by security-audit.sh for project scanning.
5
+ # Critical patterns are hardcoded in hooks for real-time enforcement.
6
+ #
7
+ # Fields:
8
+ # name: Human-readable pattern name
9
+ # regex: POSIX ERE with `(?i)` prefix convention (stripped by scanner, replaced with -i flag)
10
+ # severity: critical | high | medium
11
+ # description: What this command does and why it's dangerous
12
+ # scope: command (only checked against tool_input.command)
13
+
14
+ patterns:
15
+
16
+ # ── Destructive File Operations ──────────────────────────────────────
17
+ - name: Recursive Force Delete
18
+ regex: "rm\\s+-[^\\s]*r[^\\s]*f|rm\\s+-[^\\s]*f[^\\s]*r"
19
+ severity: critical
20
+ description: "rm with both -r and -f flags — recursive force deletion, data loss risk"
21
+ scope: command
22
+
23
+ - name: Shred File
24
+ regex: "shred\\s+"
25
+ severity: high
26
+ description: "Securely overwrites file content — irreversible data destruction"
27
+ scope: command
28
+
29
+ # ── Remote Code Execution ────────────────────────────────────────────
30
+ - name: Curl Pipe to Shell
31
+ regex: "(curl|wget)\\s.+\\|\\s*(bash|sh|zsh|ksh|dash|fish|python|perl|ruby|node)"
32
+ severity: critical
33
+ description: "Downloads and executes remote code — classic malware delivery vector"
34
+ scope: command
35
+
36
+ - name: Eval from Variable
37
+ regex: "eval\\s+\\$"
38
+ severity: high
39
+ description: "Evaluates shell variable as code — command injection risk"
40
+ scope: command
41
+
42
+ - name: Base64 Decode Execute
43
+ regex: "base64\\s+(-d|--decode).*\\|\\s*(bash|sh|eval)"
44
+ severity: critical
45
+ description: "Decodes and executes base64 content — obfuscated code execution"
46
+ scope: command
47
+
48
+ # ── Dangerous Permissions ────────────────────────────────────────────
49
+ - name: World-Writable Permissions
50
+ regex: "chmod\\s+777"
51
+ severity: high
52
+ description: "Sets world-readable/writable/executable — security misconfiguration"
53
+ scope: command
54
+
55
+ - name: SetUID Bit
56
+ regex: "chmod\\s+[u+]*s|chmod\\s+[0-7]*4[0-7]{3}"
57
+ severity: critical
58
+ description: "Sets SUID/SGID bit — privilege escalation vector"
59
+ scope: command
60
+
61
+ # ── Disk/Device Operations ───────────────────────────────────────────
62
+ - name: DD to Device
63
+ regex: "dd\\s.+of=/dev/"
64
+ severity: critical
65
+ description: "Writes directly to block device — potential disk destruction"
66
+ scope: command
67
+
68
+ - name: Filesystem Format
69
+ regex: "mkfs"
70
+ severity: critical
71
+ description: "Formats a filesystem — complete data loss on target device"
72
+ scope: command
73
+
74
+ - name: Direct Device Write
75
+ regex: ">/dev/(sd|hd|nvme|vd|xvd)"
76
+ severity: critical
77
+ description: "Redirects output to block device — disk corruption risk"
78
+ scope: command
79
+
80
+ # ── Network Exfiltration ─────────────────────────────────────────────
81
+ - name: Netcat Listener
82
+ regex: "nc\\s+(-l|-p|--listen)"
83
+ severity: high
84
+ description: "Opens network listener — potential reverse shell or data exfiltration"
85
+ scope: command
86
+
87
+ - name: Reverse Shell
88
+ regex: "/dev/tcp/|bash\\s+-i\\s+>&|/dev/udp/"
89
+ severity: critical
90
+ description: "Bash reverse shell pattern — remote access backdoor"
91
+ scope: command
92
+
93
+ - name: SSH Tunnel
94
+ regex: "ssh\\s+.*-[RLD]\\s+[0-9]+:"
95
+ severity: medium
96
+ description: "SSH port forwarding — potential data exfiltration tunnel"
97
+ scope: command
98
+
99
+ # ── System Modification ──────────────────────────────────────────────
100
+ - name: Crontab Modification
101
+ regex: "crontab\\s+(-e|-r|-l)|echo.*>>\\s*/etc/cron"
102
+ severity: high
103
+ description: "Modifies scheduled tasks — persistence mechanism"
104
+ scope: command
105
+
106
+ - name: Hosts File Modification
107
+ regex: ">/etc/hosts|>>\\s*/etc/hosts"
108
+ severity: high
109
+ description: "Modifies DNS resolution — potential traffic hijacking"
110
+ scope: command
111
+
112
+ - name: Sudoers Modification
113
+ regex: "visudo|>/etc/sudoers|>>\\s*/etc/sudoers"
114
+ severity: critical
115
+ description: "Modifies sudo permissions — privilege escalation"
116
+ scope: command
117
+
118
+ - name: Systemd Service Install
119
+ regex: "systemctl\\s+(enable|start).*\\.service|cp.*\\.service.*/etc/systemd/"
120
+ severity: high
121
+ description: "Installs or enables systemd service — persistence mechanism"
122
+ scope: command
123
+
124
+ # ── Container Escape ─────────────────────────────────────────────────
125
+ - name: Docker Socket Mount
126
+ regex: "docker.*-v.*/var/run/docker\\.sock"
127
+ severity: critical
128
+ description: "Mounts Docker socket — container escape / host access"
129
+ scope: command
130
+
131
+ - name: Privileged Container
132
+ regex: "docker\\s+run.*--privileged"
133
+ severity: critical
134
+ description: "Runs container in privileged mode — full host access"
135
+ scope: command
136
+
137
+ # ── Environment Manipulation ─────────────────────────────────────────
138
+ - name: LD_PRELOAD Injection
139
+ regex: "LD_PRELOAD="
140
+ severity: critical
141
+ description: "Sets LD_PRELOAD — shared library injection for code hijacking"
142
+ scope: command
143
+
144
+ - name: PATH Manipulation
145
+ regex: "export\\s+PATH=.*:\\."
146
+ severity: high
147
+ description: "Adds current directory to PATH — binary hijacking risk"
148
+ scope: command
149
+
150
+ # ── History/Log Tampering ────────────────────────────────────────────
151
+ - name: History Deletion
152
+ regex: "history\\s+(-c|-d)|>.*\\.bash_history|>.*\\.zsh_history|unset\\s+HISTFILE"
153
+ severity: high
154
+ description: "Clears or disables shell history — anti-forensics technique"
155
+ scope: command
156
+
157
+ - name: Log Tampering
158
+ regex: ">/var/log/|truncate.*(/var/log/|/var/audit/)"
159
+ severity: high
160
+ description: "Clears system logs — anti-forensics technique"
161
+ scope: command
162
+
163
+ - name: History File Deletion
164
+ regex: "history\\s+-c|>.*\\.bash_history"
165
+ severity: high
166
+ description: "Deletes bash history file — evidence destruction technique"
167
+ scope: command
@@ -0,0 +1,95 @@
1
+ # ChainWall — PII Detection Patterns
2
+ #
3
+ # Personally Identifiable Information patterns for Layer 5 detection.
4
+ # Reference database. Consumed by security-audit.sh for project scanning.
5
+ # Critical patterns are hardcoded in hooks for real-time enforcement.
6
+ #
7
+ # Fields:
8
+ # name: Human-readable pattern name
9
+ # regex: POSIX ERE with `(?i)` prefix convention (stripped by scanner, replaced with -i flag)
10
+ # severity: critical | high | medium
11
+ # description: What PII this detects
12
+ # validation: Optional extra validation logic (implemented in scanner)
13
+
14
+ patterns:
15
+
16
+ # ── Government IDs ───────────────────────────────────────────────────
17
+ - name: US Social Security Number
18
+ regex: "[0-9]{3}-[0-9]{2}-[0-9]{4}"
19
+ severity: critical
20
+ description: "US SSN in XXX-XX-XXXX format — identity theft risk"
21
+ validation: "first_group_not_000_666_900plus"
22
+
23
+ - name: US SSN (No Dashes)
24
+ regex: "(?i)(ssn|social.?security)[\"'\\s=:]+[0-9]{9}"
25
+ severity: high
26
+ description: "US SSN as 9 continuous digits in labeled context"
27
+
28
+ - name: US EIN/Tax ID
29
+ regex: "(?i)(ein|tax.?id)[\"'\\s=:]+[0-9]{2}-[0-9]{7}"
30
+ severity: high
31
+ description: "US Employer Identification Number"
32
+
33
+ # ── Financial ────────────────────────────────────────────────────────
34
+ - name: Credit Card Number
35
+ regex: "[0-9]{4}[-\\s]?[0-9]{4}[-\\s]?[0-9]{4}[-\\s]?[0-9]{3,4}"
36
+ severity: critical
37
+ description: "15-16 digit credit/debit card number with optional separators (Amex=15, others=16)"
38
+
39
+ - name: Bank Account Number
40
+ regex: "(?i)(account.?num|acct.?no|bank.?account)[\"'\\s=:]+[0-9]{8,17}"
41
+ severity: high
42
+ description: "Bank account number in labeled context"
43
+
44
+ - name: Routing Number
45
+ regex: "(?i)(routing.?num|aba.?num|routing.?no)[\"'\\s=:]+[0-9]{9}"
46
+ severity: high
47
+ description: "US bank routing number (ABA) in labeled context"
48
+
49
+ - name: IBAN
50
+ regex: "[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}"
51
+ severity: high
52
+ description: "International Bank Account Number"
53
+
54
+ # ── Personal Contact ─────────────────────────────────────────────────
55
+ - name: Email with PII Context
56
+ regex: "(?i)(patient|ssn|medical|diagnosis|prescription).*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
57
+ severity: medium
58
+ description: "Email address in medical/PII context — HIPAA risk"
59
+
60
+ - name: Phone in PII Context
61
+ regex: "(?i)(patient|ssn|medical|dob|birth).*[0-9]{3}[-.]?[0-9]{3}[-.]?[0-9]{4}"
62
+ severity: medium
63
+ description: "Phone number in medical/PII context"
64
+
65
+ # ── Medical/Health ───────────────────────────────────────────────────
66
+ - name: Medical Record Number
67
+ regex: "(?i)(mrn|medical.?record|patient.?id)[\"'\\s=:]+[A-Z0-9]{6,20}"
68
+ severity: high
69
+ description: "Medical record number — HIPAA protected"
70
+
71
+ - name: DEA Number
72
+ regex: "[A-Z][A-Z9][0-9]{7}"
73
+ severity: high
74
+ description: "DEA registration number for controlled substances"
75
+
76
+ # ── Identity Documents ───────────────────────────────────────────────
77
+ - name: Passport Number
78
+ regex: "(?i)(passport)[\"'\\s=:]+[A-Z0-9]{6,12}"
79
+ severity: high
80
+ description: "Passport number in labeled context"
81
+
82
+ - name: Driver License
83
+ regex: "(?i)(driver.?licen[sc]e|dl.?num)[\"'\\s=:]+[A-Z0-9]{5,15}"
84
+ severity: high
85
+ description: "Driver's license number in labeled context"
86
+
87
+ - name: Date of Birth
88
+ regex: "(?i)(dob|date.?of.?birth|birthdate)[\"'\\s=:]+[0-9]{1,4}[-/][0-9]{1,2}[-/][0-9]{1,4}"
89
+ severity: medium
90
+ description: "Date of birth in labeled context"
91
+
92
+ - name: Medicare ID
93
+ regex: "[0-9]{4}-[0-9]{3}-[0-9]{4}-[0-9]{3}"
94
+ severity: high
95
+ description: "US Medicare Beneficiary Identifier — HIPAA protected"