@elizaos/skills 2.0.0-alpha.3

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 (371) hide show
  1. package/README.md +126 -0
  2. package/package.json +53 -0
  3. package/skills/1password/SKILL.md +70 -0
  4. package/skills/1password/references/cli-examples.md +29 -0
  5. package/skills/1password/references/get-started.md +17 -0
  6. package/skills/apple-notes/SKILL.md +77 -0
  7. package/skills/apple-reminders/SKILL.md +96 -0
  8. package/skills/bear-notes/SKILL.md +107 -0
  9. package/skills/bird/SKILL.md +224 -0
  10. package/skills/blogwatcher/SKILL.md +69 -0
  11. package/skills/blucli/SKILL.md +47 -0
  12. package/skills/bluebubbles/SKILL.md +131 -0
  13. package/skills/camsnap/SKILL.md +45 -0
  14. package/skills/canvas/SKILL.md +203 -0
  15. package/skills/clawhub/SKILL.md +77 -0
  16. package/skills/coding-agent/SKILL.md +284 -0
  17. package/skills/discord/SKILL.md +578 -0
  18. package/skills/eightctl/SKILL.md +50 -0
  19. package/skills/food-order/SKILL.md +48 -0
  20. package/skills/gemini/SKILL.md +43 -0
  21. package/skills/gifgrep/SKILL.md +79 -0
  22. package/skills/github/SKILL.md +77 -0
  23. package/skills/gog/SKILL.md +116 -0
  24. package/skills/goplaces/SKILL.md +52 -0
  25. package/skills/healthcheck/SKILL.md +245 -0
  26. package/skills/himalaya/SKILL.md +257 -0
  27. package/skills/himalaya/references/configuration.md +184 -0
  28. package/skills/himalaya/references/message-composition.md +199 -0
  29. package/skills/imsg/SKILL.md +74 -0
  30. package/skills/local-places/SERVER_README.md +101 -0
  31. package/skills/local-places/SKILL.md +102 -0
  32. package/skills/local-places/pyproject.toml +21 -0
  33. package/skills/local-places/src/local_places/__init__.py +2 -0
  34. package/skills/local-places/src/local_places/google_places.py +314 -0
  35. package/skills/local-places/src/local_places/main.py +65 -0
  36. package/skills/local-places/src/local_places/schemas.py +107 -0
  37. package/skills/mcporter/SKILL.md +61 -0
  38. package/skills/model-usage/SKILL.md +69 -0
  39. package/skills/model-usage/references/codexbar-cli.md +33 -0
  40. package/skills/model-usage/scripts/model_usage.py +310 -0
  41. package/skills/nano-banana-pro/SKILL.md +58 -0
  42. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  43. package/skills/nano-pdf/SKILL.md +38 -0
  44. package/skills/notion/SKILL.md +172 -0
  45. package/skills/obsidian/SKILL.md +81 -0
  46. package/skills/openai-image-gen/SKILL.md +89 -0
  47. package/skills/openai-image-gen/scripts/gen.py +240 -0
  48. package/skills/openai-whisper/SKILL.md +38 -0
  49. package/skills/openai-whisper-api/SKILL.md +52 -0
  50. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  51. package/skills/openhue/SKILL.md +51 -0
  52. package/skills/oracle/SKILL.md +125 -0
  53. package/skills/ordercli/SKILL.md +78 -0
  54. package/skills/peekaboo/SKILL.md +190 -0
  55. package/skills/sag/SKILL.md +87 -0
  56. package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
  57. package/skills/security-ask-questions-if-underspecified/README.md +24 -0
  58. package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
  59. package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
  60. package/skills/security-audit-context-building/README.md +58 -0
  61. package/skills/security-audit-context-building/commands/audit-context.md +21 -0
  62. package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
  63. package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
  64. package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
  65. package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
  66. package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
  67. package/skills/security-building-secure-contracts/README.md +241 -0
  68. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
  69. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
  70. package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
  71. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
  72. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
  73. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
  74. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
  75. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
  76. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
  77. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
  78. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
  79. package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
  80. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
  81. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
  82. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
  83. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
  84. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
  85. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
  86. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
  87. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
  88. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
  89. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
  90. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
  91. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
  92. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
  93. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
  94. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
  95. package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +10 -0
  96. package/skills/security-burpsuite-project-parser/README.md +103 -0
  97. package/skills/security-burpsuite-project-parser/commands/burp-search.md +18 -0
  98. package/skills/security-burpsuite-project-parser/skills/SKILL.md +358 -0
  99. package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +99 -0
  100. package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +8 -0
  101. package/skills/security-claude-in-chrome-troubleshooting/README.md +31 -0
  102. package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +251 -0
  103. package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +9 -0
  104. package/skills/security-constant-time-analysis/README.md +381 -0
  105. package/skills/security-constant-time-analysis/commands/ct-check.md +20 -0
  106. package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +49 -0
  107. package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +1284 -0
  108. package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +3081 -0
  109. package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +1 -0
  110. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +1397 -0
  111. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +205 -0
  112. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +181 -0
  113. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +74 -0
  114. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +78 -0
  115. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +92 -0
  116. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +174 -0
  117. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +161 -0
  118. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +181 -0
  119. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +140 -0
  120. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +252 -0
  121. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +188 -0
  122. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +199 -0
  123. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +154 -0
  124. package/skills/security-constant-time-analysis/pyproject.toml +52 -0
  125. package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +90 -0
  126. package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +219 -0
  127. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +129 -0
  128. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +136 -0
  129. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +252 -0
  130. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +172 -0
  131. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +179 -0
  132. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +198 -0
  133. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +288 -0
  134. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +354 -0
  135. package/skills/security-constant-time-analysis/uv.lock +8 -0
  136. package/skills/security-culture-index/.claude-plugin/plugin.json +8 -0
  137. package/skills/security-culture-index/README.md +79 -0
  138. package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +293 -0
  139. package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +255 -0
  140. package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +408 -0
  141. package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +253 -0
  142. package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +158 -0
  143. package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +147 -0
  144. package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +307 -0
  145. package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +228 -0
  146. package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +148 -0
  147. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +108 -0
  148. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +20 -0
  149. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +122 -0
  150. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +187 -0
  151. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +16 -0
  152. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +520 -0
  153. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +237 -0
  154. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +18 -0
  155. package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +113 -0
  156. package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +103 -0
  157. package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +127 -0
  158. package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +85 -0
  159. package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +165 -0
  160. package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +109 -0
  161. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +188 -0
  162. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +267 -0
  163. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +188 -0
  164. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +220 -0
  165. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +206 -0
  166. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +121 -0
  167. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +183 -0
  168. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +234 -0
  169. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +306 -0
  170. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +322 -0
  171. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +250 -0
  172. package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
  173. package/skills/security-differential-review/README.md +109 -0
  174. package/skills/security-differential-review/commands/diff-review.md +21 -0
  175. package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
  176. package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
  177. package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
  178. package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
  179. package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
  180. package/skills/security-dwarf-expert/.claude-plugin/plugin.json +10 -0
  181. package/skills/security-dwarf-expert/README.md +38 -0
  182. package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +93 -0
  183. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +31 -0
  184. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +50 -0
  185. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +8 -0
  186. package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
  187. package/skills/security-entry-point-analyzer/README.md +74 -0
  188. package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
  189. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
  190. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
  191. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
  192. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
  193. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
  194. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
  195. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
  196. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
  197. package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +10 -0
  198. package/skills/security-firebase-apk-scanner/README.md +85 -0
  199. package/skills/security-firebase-apk-scanner/commands/scan-apk.md +18 -0
  200. package/skills/security-firebase-apk-scanner/scanner.sh +1408 -0
  201. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +197 -0
  202. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +803 -0
  203. package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
  204. package/skills/security-fix-review/README.md +118 -0
  205. package/skills/security-fix-review/commands/fix-review.md +24 -0
  206. package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
  207. package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
  208. package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
  209. package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
  210. package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
  211. package/skills/security-insecure-defaults/README.md +45 -0
  212. package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
  213. package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
  214. package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
  215. package/skills/security-modern-python/README.md +58 -0
  216. package/skills/security-modern-python/hooks/hooks.json +16 -0
  217. package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
  218. package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
  219. package/skills/security-modern-python/hooks/test_helper.bash +75 -0
  220. package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
  221. package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
  222. package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
  223. package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
  224. package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
  225. package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
  226. package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
  227. package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
  228. package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
  229. package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
  230. package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
  231. package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
  232. package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
  233. package/skills/security-property-based-testing/README.md +47 -0
  234. package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
  235. package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
  236. package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
  237. package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
  238. package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
  239. package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
  240. package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
  241. package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
  242. package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
  243. package/skills/semgrep-rule-creator/README.md +43 -0
  244. package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
  245. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
  246. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
  247. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
  248. package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +9 -0
  249. package/skills/semgrep-rule-variant-creator/README.md +86 -0
  250. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +205 -0
  251. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +250 -0
  252. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +324 -0
  253. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +518 -0
  254. package/skills/session-logs/SKILL.md +115 -0
  255. package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
  256. package/skills/sharp-edges/README.md +48 -0
  257. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
  258. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
  259. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
  260. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
  261. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
  262. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
  263. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
  264. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
  265. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
  266. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
  267. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
  268. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
  269. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
  270. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
  271. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
  272. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
  273. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
  274. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  275. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  276. package/skills/skill-creator/SKILL.md +370 -0
  277. package/skills/skill-creator/license.txt +202 -0
  278. package/skills/skill-creator/scripts/init_skill.py +378 -0
  279. package/skills/skill-creator/scripts/package_skill.py +111 -0
  280. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  281. package/skills/slack/SKILL.md +144 -0
  282. package/skills/songsee/SKILL.md +49 -0
  283. package/skills/sonoscli/SKILL.md +46 -0
  284. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
  285. package/skills/spec-to-code-compliance/README.md +67 -0
  286. package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
  287. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
  288. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
  289. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
  290. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
  291. package/skills/spotify-player/SKILL.md +64 -0
  292. package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
  293. package/skills/static-analysis/README.md +59 -0
  294. package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
  295. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
  296. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
  297. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
  298. package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
  299. package/skills/summarize/SKILL.md +87 -0
  300. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
  301. package/skills/testing-handbook-skills/README.md +241 -0
  302. package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
  303. package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
  304. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
  305. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
  306. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
  307. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
  308. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
  309. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
  310. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
  311. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
  312. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
  313. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
  314. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
  315. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
  316. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
  317. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
  318. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
  319. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
  320. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
  321. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
  322. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
  323. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
  324. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
  325. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
  326. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
  327. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
  328. package/skills/things-mac/SKILL.md +86 -0
  329. package/skills/tmux/SKILL.md +135 -0
  330. package/skills/tmux/scripts/find-sessions.sh +112 -0
  331. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  332. package/skills/trello/SKILL.md +95 -0
  333. package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
  334. package/skills/variant-analysis/README.md +41 -0
  335. package/skills/variant-analysis/commands/variants.md +23 -0
  336. package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
  337. package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
  338. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
  339. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
  340. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
  341. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
  342. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
  343. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
  344. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
  345. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
  346. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
  347. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
  348. package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
  349. package/skills/video-frames/SKILL.md +46 -0
  350. package/skills/video-frames/scripts/frame.sh +81 -0
  351. package/skills/voice-call/SKILL.md +45 -0
  352. package/skills/wacli/SKILL.md +72 -0
  353. package/skills/weather/SKILL.md +54 -0
  354. package/skills/yara-authoring/.claude-plugin/plugin.json +9 -0
  355. package/skills/yara-authoring/README.md +131 -0
  356. package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +645 -0
  357. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +99 -0
  358. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +170 -0
  359. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +103 -0
  360. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +134 -0
  361. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +185 -0
  362. package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +214 -0
  363. package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +383 -0
  364. package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +333 -0
  365. package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +433 -0
  366. package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +257 -0
  367. package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +399 -0
  368. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +526 -0
  369. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +25 -0
  370. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +631 -0
  371. package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +493 -0
@@ -0,0 +1,507 @@
1
+ ---
2
+ name: constant-time-testing
3
+ type: domain
4
+ description: >
5
+ Constant-time testing detects timing side channels in cryptographic code.
6
+ Use when auditing crypto implementations for timing vulnerabilities.
7
+ ---
8
+
9
+ # Constant-Time Testing
10
+
11
+ Timing attacks exploit variations in execution time to extract secret information from cryptographic implementations. Unlike cryptanalysis that targets theoretical weaknesses, timing attacks leverage implementation flaws - and they can affect any cryptographic code.
12
+
13
+ ## Background
14
+
15
+ Timing attacks were introduced by [Kocher](https://paulkocher.com/doc/TimingAttacks.pdf) in 1996. Since then, researchers have demonstrated practical attacks on RSA ([Schindler](https://link.springer.com/content/pdf/10.1007/3-540-44499-8_8.pdf)), OpenSSL ([Brumley and Boneh](https://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf)), AES implementations, and even post-quantum algorithms like [Kyber](https://eprint.iacr.org/2024/1049.pdf).
16
+
17
+ ### Key Concepts
18
+
19
+ | Concept | Description |
20
+ |---------|-------------|
21
+ | Constant-time | Code path and memory accesses independent of secret data |
22
+ | Timing leakage | Observable execution time differences correlated with secrets |
23
+ | Side channel | Information extracted from implementation rather than algorithm |
24
+ | Microarchitecture | CPU-level timing differences (cache, division, shifts) |
25
+
26
+ ### Why This Matters
27
+
28
+ Timing vulnerabilities can:
29
+ - **Expose private keys** - Extract secret exponents in RSA/ECDH
30
+ - **Enable remote attacks** - Network-observable timing differences
31
+ - **Bypass cryptographic security** - Undermine theoretical guarantees
32
+ - **Persist silently** - Often undetected without specialized analysis
33
+
34
+ Two prerequisites enable exploitation:
35
+ 1. **Access to oracle** - Sufficient queries to the vulnerable implementation
36
+ 2. **Timing dependency** - Correlation between execution time and secret data
37
+
38
+ ### Common Constant-Time Violation Patterns
39
+
40
+ Four patterns account for most timing vulnerabilities:
41
+
42
+ ```c
43
+ // 1. Conditional jumps - most severe timing differences
44
+ if(secret == 1) { ... }
45
+ while(secret > 0) { ... }
46
+
47
+ // 2. Array access - cache-timing attacks
48
+ lookup_table[secret];
49
+
50
+ // 3. Integer division (processor dependent)
51
+ data = secret / m;
52
+
53
+ // 4. Shift operation (processor dependent)
54
+ data = a << secret;
55
+ ```
56
+
57
+ **Conditional jumps** cause different code paths, leading to vast timing differences.
58
+
59
+ **Array access** dependent on secrets enables cache-timing attacks, as shown in [AES cache-timing research](https://cr.yp.to/antiforgery/cachetiming-20050414.pdf).
60
+
61
+ **Integer division and shift operations** leak secrets on certain CPU architectures and compiler configurations.
62
+
63
+ When patterns cannot be avoided, employ [masking techniques](https://link.springer.com/chapter/10.1007/978-3-642-38348-9_9) to remove correlation between timing and secrets.
64
+
65
+ ### Example: Modular Exponentiation Timing Attacks
66
+
67
+ Modular exponentiation (used in RSA and Diffie-Hellman) is susceptible to timing attacks. RSA decryption computes:
68
+
69
+ $$ct^{d} \mod{N}$$
70
+
71
+ where $d$ is the secret exponent. The *exponentiation by squaring* optimization reduces multiplications to $\log{d}$:
72
+
73
+ $$
74
+ \begin{align*}
75
+ & \textbf{Input: } \text{base }y,\text{exponent } d=\{d_n,\cdots,d_0\}_2,\text{modulus } N \\
76
+ & r = 1 \\
77
+ & \textbf{for } i=|n| \text{ downto } 0: \\
78
+ & \quad\textbf{if } d_i == 1: \\
79
+ & \quad\quad r = r * y \mod{N} \\
80
+ & \quad y = y * y \mod{N} \\
81
+ & \textbf{return }r
82
+ \end{align*}
83
+ $$
84
+
85
+ The code branches on exponent bit $d_i$, violating constant-time principles. When $d_i = 1$, an additional multiplication occurs, increasing execution time and leaking bit information.
86
+
87
+ Montgomery multiplication (commonly used for modular arithmetic) also leaks timing: when intermediate values exceed modulus $N$, an additional reduction step is required. An attacker constructs inputs $y$ and $y'$ such that:
88
+
89
+ $$
90
+ \begin{align*}
91
+ y^2 < y^3 < N \\
92
+ y'^2 < N \leq y'^3
93
+ \end{align*}
94
+ $$
95
+
96
+ For $y$, both multiplications take time $t_1+t_1$. For $y'$, the second multiplication requires reduction, taking time $t_1+t_2$. This timing difference reveals whether $d_i$ is 0 or 1.
97
+
98
+ ## When to Use
99
+
100
+ **Apply constant-time analysis when:**
101
+ - Auditing cryptographic implementations (primitives, protocols)
102
+ - Code handles secret keys, passwords, or sensitive cryptographic material
103
+ - Implementing crypto algorithms from scratch
104
+ - Reviewing PRs that touch crypto code
105
+ - Investigating potential timing vulnerabilities
106
+
107
+ **Consider alternatives when:**
108
+ - Code does not process secret data
109
+ - Public algorithms with no secret inputs
110
+ - Non-cryptographic timing requirements (performance optimization)
111
+
112
+ ## Quick Reference
113
+
114
+ | Scenario | Recommended Approach | Skill |
115
+ |----------|---------------------|-------|
116
+ | Prove absence of leaks | Formal verification | SideTrail, ct-verif, FaCT |
117
+ | Detect statistical timing differences | Statistical testing | **dudect** |
118
+ | Track secret data flow at runtime | Dynamic analysis | **timecop** |
119
+ | Find cache-timing vulnerabilities | Symbolic execution | Binsec, pitchfork |
120
+
121
+ ## Constant-Time Tooling Categories
122
+
123
+ The cryptographic community has developed four categories of timing analysis tools:
124
+
125
+ | Category | Approach | Pros | Cons |
126
+ |----------|----------|------|------|
127
+ | **Formal** | Mathematical proof on model | Guarantees absence of leaks | Complexity, modeling assumptions |
128
+ | **Symbolic** | Symbolic execution paths | Concrete counterexamples | Time-intensive path exploration |
129
+ | **Dynamic** | Runtime tracing with marked secrets | Granular, flexible | Limited coverage to executed paths |
130
+ | **Statistical** | Measure real execution timing | Practical, simple setup | No root cause, noise sensitivity |
131
+
132
+ ### 1. Formal Tools
133
+
134
+ Formal verification mathematically proves timing properties on an abstraction (model) of code. Tools create a model from source/binary and verify it satisfies specified properties (e.g., variables annotated as secret).
135
+
136
+ **Popular tools:**
137
+ - [SideTrail](https://github.com/aws/s2n-tls/tree/main/tests/sidetrail)
138
+ - [ct-verif](https://github.com/imdea-software/verifying-constant-time)
139
+ - [FaCT](https://github.com/plsyssec/fact)
140
+
141
+ **Strengths:** Proof of absence, language-agnostic (LLVM bytecode)
142
+ **Weaknesses:** Requires expertise, modeling assumptions may miss real-world issues
143
+
144
+ ### 2. Symbolic Tools
145
+
146
+ Symbolic execution analyzes how paths and memory accesses depend on symbolic variables (secrets). Provides concrete counterexamples. Focus on cache-timing attacks.
147
+
148
+ **Popular tools:**
149
+ - [Binsec](https://github.com/binsec/binsec)
150
+ - [pitchfork](https://github.com/PLSysSec/haybale-pitchfork)
151
+
152
+ **Strengths:** Concrete counterexamples aid debugging
153
+ **Weaknesses:** Path explosion leads to long execution times
154
+
155
+ ### 3. Dynamic Tools
156
+
157
+ Dynamic analysis marks sensitive memory regions and traces execution to detect timing-dependent operations.
158
+
159
+ **Popular tools:**
160
+ - [Memsan](https://clang.llvm.org/docs/MemorySanitizer.html): [Tutorial](https://crocs-muni.github.io/ct-tools/tutorials/memsan)
161
+ - **Timecop** (see below)
162
+
163
+ **Strengths:** Granular control, targeted analysis
164
+ **Weaknesses:** Coverage limited to executed paths
165
+
166
+ > **Detailed Guidance:** See the **timecop** skill for setup and usage.
167
+
168
+ ### 4. Statistical Tools
169
+
170
+ Execute code with various inputs, measure elapsed time, and detect inconsistencies. Tests actual implementation including compiler optimizations and architecture.
171
+
172
+ **Popular tools:**
173
+ - **dudect** (see below)
174
+ - [tlsfuzzer](https://github.com/tlsfuzzer/tlsfuzzer)
175
+
176
+ **Strengths:** Simple setup, practical real-world results
177
+ **Weaknesses:** No root cause info, noise obscures weak signals
178
+
179
+ > **Detailed Guidance:** See the **dudect** skill for setup and usage.
180
+
181
+ ## Testing Workflow
182
+
183
+ ```
184
+ Phase 1: Static Analysis Phase 2: Statistical Testing
185
+ ┌─────────────────┐ ┌─────────────────┐
186
+ │ Identify secret │ → │ Detect timing │
187
+ │ data flow │ │ differences │
188
+ │ Tool: ct-verif │ │ Tool: dudect │
189
+ └─────────────────┘ └─────────────────┘
190
+ ↓ ↓
191
+ Phase 4: Root Cause Phase 3: Dynamic Tracing
192
+ ┌─────────────────┐ ┌─────────────────┐
193
+ │ Pinpoint leak │ ← │ Track secret │
194
+ │ location │ │ propagation │
195
+ │ Tool: Timecop │ │ Tool: Timecop │
196
+ └─────────────────┘ └─────────────────┘
197
+ ```
198
+
199
+ **Recommended approach:**
200
+ 1. **Start with dudect** - Quick statistical check for timing differences
201
+ 2. **If leaks found** - Use Timecop to pinpoint root cause
202
+ 3. **For high-assurance** - Apply formal verification (ct-verif, SideTrail)
203
+ 4. **Continuous monitoring** - Integrate dudect into CI pipeline
204
+
205
+ ## Tools and Approaches
206
+
207
+ ### Dudect - Statistical Analysis
208
+
209
+ [Dudect](https://github.com/oreparaz/dudect/) measures execution time for two input classes (fixed vs random) and uses Welch's t-test to detect statistically significant differences.
210
+
211
+ > **Detailed Guidance:** See the **dudect** skill for complete setup, usage patterns, and CI integration.
212
+
213
+ #### Quick Start for Constant-Time Analysis
214
+
215
+ ```c
216
+ #define DUDECT_IMPLEMENTATION
217
+ #include "dudect.h"
218
+
219
+ uint8_t do_one_computation(uint8_t *data) {
220
+ // Code to measure goes here
221
+ }
222
+
223
+ void prepare_inputs(dudect_config_t *c, uint8_t *input_data, uint8_t *classes) {
224
+ for (size_t i = 0; i < c->number_measurements; i++) {
225
+ classes[i] = randombit();
226
+ uint8_t *input = input_data + (size_t)i * c->chunk_size;
227
+ if (classes[i] == 0) {
228
+ // Fixed input class
229
+ } else {
230
+ // Random input class
231
+ }
232
+ }
233
+ }
234
+ ```
235
+
236
+ **Key advantages:**
237
+ - Simple C header-only integration
238
+ - Statistical rigor via Welch's t-test
239
+ - Works with compiled binaries (real-world conditions)
240
+
241
+ **Key limitations:**
242
+ - No root cause information when leak detected
243
+ - Sensitive to measurement noise
244
+ - Cannot guarantee absence of leaks (statistical confidence only)
245
+
246
+ ### Timecop - Dynamic Tracing
247
+
248
+ [Timecop](https://post-apocalyptic-crypto.org/timecop/) wraps Valgrind to detect runtime operations dependent on secret memory regions.
249
+
250
+ > **Detailed Guidance:** See the **timecop** skill for installation, examples, and debugging.
251
+
252
+ #### Quick Start for Constant-Time Analysis
253
+
254
+ ```c
255
+ #include "valgrind/memcheck.h"
256
+
257
+ #define poison(addr, len) VALGRIND_MAKE_MEM_UNDEFINED(addr, len)
258
+ #define unpoison(addr, len) VALGRIND_MAKE_MEM_DEFINED(addr, len)
259
+
260
+ int main() {
261
+ unsigned long long secret_key = 0x12345678;
262
+
263
+ // Mark secret as poisoned
264
+ poison(&secret_key, sizeof(secret_key));
265
+
266
+ // Any branching or memory access dependent on secret_key
267
+ // will be reported by Valgrind
268
+ crypto_operation(secret_key);
269
+
270
+ unpoison(&secret_key, sizeof(secret_key));
271
+ }
272
+ ```
273
+
274
+ Run with Valgrind:
275
+ ```bash
276
+ valgrind --leak-check=full --track-origins=yes ./binary
277
+ ```
278
+
279
+ **Key advantages:**
280
+ - Pinpoints exact line of timing leak
281
+ - No code instrumentation required
282
+ - Tracks secret propagation through execution
283
+
284
+ **Key limitations:**
285
+ - Cannot detect microarchitecture timing differences
286
+ - Coverage limited to executed paths
287
+ - Performance overhead (runs on synthetic CPU)
288
+
289
+ ## Implementation Guide
290
+
291
+ ### Phase 1: Initial Assessment
292
+
293
+ **Identify cryptographic code handling secrets:**
294
+ - Private keys, exponents, nonces
295
+ - Password hashes, authentication tokens
296
+ - Encryption/decryption operations
297
+
298
+ **Quick statistical check:**
299
+ 1. Write dudect harness for the crypto function
300
+ 2. Run for 5-10 minutes with `timeout 600 ./ct_test`
301
+ 3. Monitor t-value: high absolute values indicate leakage
302
+
303
+ **Tools:** dudect
304
+ **Expected time:** 1-2 hours (harness writing + initial run)
305
+
306
+ ### Phase 2: Detailed Analysis
307
+
308
+ If dudect detects leakage:
309
+
310
+ **Root cause investigation:**
311
+ 1. Mark secret variables with Timecop `poison()`
312
+ 2. Run under Valgrind to identify exact line
313
+ 3. Review the four common violation patterns
314
+ 4. Check assembly output for conditional branches
315
+
316
+ **Tools:** Timecop, compiler output (`objdump -d`)
317
+
318
+ ### Phase 3: Remediation
319
+
320
+ **Fix the timing leak:**
321
+ - Replace conditional branches with constant-time selection (bitwise operations)
322
+ - Use constant-time comparison functions
323
+ - Replace array lookups with constant-time alternatives or masking
324
+ - Verify compiler doesn't optimize away constant-time code
325
+
326
+ **Re-verify:**
327
+ 1. Run dudect again for extended period (30+ minutes)
328
+ 2. Test across different compilers and optimization levels
329
+ 3. Test on different CPU architectures
330
+
331
+ ### Phase 4: Continuous Monitoring
332
+
333
+ **Integrate into CI:**
334
+ - Add dudect tests to test suite
335
+ - Run for fixed duration (5-10 minutes in CI)
336
+ - Fail build if leakage detected
337
+
338
+ See the **dudect** skill for CI integration examples.
339
+
340
+ ## Common Vulnerabilities
341
+
342
+ | Vulnerability | Description | Detection | Severity |
343
+ |---------------|-------------|-----------|----------|
344
+ | Secret-dependent branch | `if (secret_bit) { ... }` | dudect, Timecop | CRITICAL |
345
+ | Secret-dependent array access | `table[secret_index]` | Timecop, Binsec | HIGH |
346
+ | Variable-time division | `result = x / secret` | Timecop | MEDIUM |
347
+ | Variable-time shift | `result = x << secret` | Timecop | MEDIUM |
348
+ | Montgomery reduction leak | Extra reduction when intermediate > N | dudect | HIGH |
349
+
350
+ ### Secret-Dependent Branch: Deep Dive
351
+
352
+ **The vulnerability:**
353
+ Execution time differs based on whether branch is taken. Common in optimized modular exponentiation (square-and-multiply).
354
+
355
+ **How to detect with dudect:**
356
+ ```c
357
+ uint8_t do_one_computation(uint8_t *data) {
358
+ uint64_t base = ((uint64_t*)data)[0];
359
+ uint64_t exponent = ((uint64_t*)data)[1]; // Secret!
360
+ return mod_exp(base, exponent, MODULUS);
361
+ }
362
+
363
+ void prepare_inputs(dudect_config_t *c, uint8_t *input_data, uint8_t *classes) {
364
+ for (size_t i = 0; i < c->number_measurements; i++) {
365
+ classes[i] = randombit();
366
+ uint64_t *input = (uint64_t*)(input_data + i * c->chunk_size);
367
+ input[0] = rand(); // Random base
368
+ input[1] = (classes[i] == 0) ? FIXED_EXPONENT : rand(); // Fixed vs random
369
+ }
370
+ }
371
+ ```
372
+
373
+ **How to detect with Timecop:**
374
+ ```c
375
+ poison(&exponent, sizeof(exponent));
376
+ result = mod_exp(base, exponent, modulus);
377
+ unpoison(&exponent, sizeof(exponent));
378
+ ```
379
+
380
+ Valgrind will report:
381
+ ```
382
+ Conditional jump or move depends on uninitialised value(s)
383
+ at 0x40115D: mod_exp (example.c:14)
384
+ ```
385
+
386
+ **Related skill:** **dudect**, **timecop**
387
+
388
+ ## Case Studies
389
+
390
+ ### Case Study: OpenSSL RSA Timing Attack
391
+
392
+ Brumley and Boneh (2005) extracted RSA private keys from OpenSSL over a network. The vulnerability exploited Montgomery multiplication's variable-time reduction step.
393
+
394
+ **Attack vector:** Timing differences in modular exponentiation
395
+ **Detection approach:** Statistical analysis (precursor to dudect)
396
+ **Impact:** Remote key extraction
397
+
398
+ **Tools used:** Custom timing measurement
399
+ **Techniques applied:** Statistical analysis, chosen-ciphertext queries
400
+
401
+ ### Case Study: KyberSlash
402
+
403
+ Post-quantum algorithm Kyber's reference implementation contained timing vulnerabilities in polynomial operations. Division operations leaked secret coefficients.
404
+
405
+ **Attack vector:** Secret-dependent division timing
406
+ **Detection approach:** Dynamic analysis and statistical testing
407
+ **Impact:** Secret key recovery in post-quantum cryptography
408
+
409
+ **Tools used:** Timing measurement tools
410
+ **Techniques applied:** Differential timing analysis
411
+
412
+ ## Advanced Usage
413
+
414
+ ### Tips and Tricks
415
+
416
+ | Tip | Why It Helps |
417
+ |-----|--------------|
418
+ | Pin dudect to isolated CPU core (`taskset -c 2`) | Reduces OS noise, improves signal detection |
419
+ | Test multiple compilers (gcc, clang, MSVC) | Optimizations may introduce or remove leaks |
420
+ | Run dudect for extended periods (hours) | Increases statistical confidence |
421
+ | Minimize non-crypto code in harness | Reduces noise that masks weak signals |
422
+ | Check assembly output (`objdump -d`) | Verify compiler didn't introduce branches |
423
+ | Use `-O3 -march=native` in testing | Matches production optimization levels |
424
+
425
+ ### Common Mistakes
426
+
427
+ | Mistake | Why It's Wrong | Correct Approach |
428
+ |---------|----------------|------------------|
429
+ | Only testing one input distribution | May miss leaks visible with other patterns | Test fixed-vs-random, fixed-vs-fixed-different, etc. |
430
+ | Short dudect runs (< 1 minute) | Insufficient measurements for weak signals | Run 5-10+ minutes, longer for high assurance |
431
+ | Ignoring compiler optimization levels | `-O0` may hide leaks present in `-O3` | Test at production optimization level |
432
+ | Not testing on target architecture | x86 vs ARM have different timing characteristics | Test on deployment platform |
433
+ | Marking too much as secret in Timecop | False positives, unclear results | Mark only true secrets (keys, not public data) |
434
+
435
+ ## Related Skills
436
+
437
+ ### Tool Skills
438
+
439
+ | Skill | Primary Use in Constant-Time Analysis |
440
+ |-------|---------------------------------------|
441
+ | **dudect** | Statistical detection of timing differences via Welch's t-test |
442
+ | **timecop** | Dynamic tracing to pinpoint exact location of timing leaks |
443
+
444
+ ### Technique Skills
445
+
446
+ | Skill | When to Apply |
447
+ |-------|---------------|
448
+ | **coverage-analysis** | Ensure test inputs exercise all code paths in crypto function |
449
+ | **ci-integration** | Automate constant-time testing in continuous integration pipeline |
450
+
451
+ ### Related Domain Skills
452
+
453
+ | Skill | Relationship |
454
+ |-------|--------------|
455
+ | **crypto-testing** | Constant-time analysis is essential component of cryptographic testing |
456
+ | **fuzzing** | Fuzzing crypto code may trigger timing-dependent paths |
457
+
458
+ ## Skill Dependency Map
459
+
460
+ ```
461
+ ┌─────────────────────────┐
462
+ │ constant-time-analysis │
463
+ │ (this skill) │
464
+ └───────────┬─────────────┘
465
+
466
+ ┌───────────────┴───────────────┐
467
+ │ │
468
+ ▼ ▼
469
+ ┌───────────────────┐ ┌───────────────────┐
470
+ │ dudect │ │ timecop │
471
+ │ (statistical) │ │ (dynamic) │
472
+ └────────┬──────────┘ └────────┬──────────┘
473
+ │ │
474
+ └───────────────┬───────────────┘
475
+
476
+
477
+ ┌──────────────────────────────┐
478
+ │ Supporting Techniques │
479
+ │ coverage, CI integration │
480
+ └──────────────────────────────┘
481
+ ```
482
+
483
+ ## Resources
484
+
485
+ ### Key External Resources
486
+
487
+ **[These results must be false: A usability evaluation of constant-time analysis tools](https://www.usenix.org/system/files/sec24fall-prepub-760-fourne.pdf)**
488
+ Comprehensive usability study of constant-time analysis tools. Key findings: developers struggle with false positives, need better error messages, and benefit from tool integration. Evaluates FaCT, ct-verif, dudect, and Memsan across multiple cryptographic implementations. Recommends improved tooling UX and better documentation.
489
+
490
+ **[List of constant-time tools - CROCS](https://crocs-muni.github.io/ct-tools/)**
491
+ Curated catalog of constant-time analysis tools with tutorials. Covers formal tools (ct-verif, FaCT), dynamic tools (Memsan, Timecop), symbolic tools (Binsec), and statistical tools (dudect). Includes practical tutorials for setup and usage.
492
+
493
+ **[Paul Kocher: Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems](https://paulkocher.com/doc/TimingAttacks.pdf)**
494
+ Original 1996 paper introducing timing attacks. Demonstrates attacks on modular exponentiation in RSA and Diffie-Hellman. Essential historical context for understanding timing vulnerabilities.
495
+
496
+ **[Remote Timing Attacks are Practical (Brumley & Boneh)](https://crypto.stanford.edu/~dabo/papers/ssl-timing.pdf)**
497
+ Demonstrates practical remote timing attacks against OpenSSL. Shows network-level timing differences are sufficient to extract RSA keys. Proves timing attacks work in realistic network conditions.
498
+
499
+ **[Cache-timing attacks on AES](https://cr.yp.to/antiforgery/cachetiming-20050414.pdf)**
500
+ Shows AES implementations using lookup tables are vulnerable to cache-timing attacks. Demonstrates practical attacks extracting AES keys via cache timing side channels.
501
+
502
+ **[KyberSlash: Division Timings Leak Secrets](https://eprint.iacr.org/2024/1049.pdf)**
503
+ Recent discovery of timing vulnerabilities in Kyber (NIST post-quantum standard). Shows division operations leak secret coefficients. Highlights that constant-time issues persist even in modern post-quantum cryptography.
504
+
505
+ ### Video Resources
506
+
507
+ - [Trail of Bits: Constant-Time Programming](https://www.youtube.com/watch?v=vW6wqTzfz5g) - Overview of constant-time programming principles and tools