insa-check-core 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 (258) hide show
  1. package/LICENSE +24 -0
  2. package/dist/annex-b.d.ts +6 -0
  3. package/dist/annex-b.d.ts.map +1 -0
  4. package/dist/annex-b.js +152 -0
  5. package/dist/annex-b.js.map +1 -0
  6. package/dist/checks/content/page.d.ts +7 -0
  7. package/dist/checks/content/page.d.ts.map +1 -0
  8. package/dist/checks/content/page.js +133 -0
  9. package/dist/checks/content/page.js.map +1 -0
  10. package/dist/checks/cookies/cookie-flags.d.ts +3 -0
  11. package/dist/checks/cookies/cookie-flags.d.ts.map +1 -0
  12. package/dist/checks/cookies/cookie-flags.js +41 -0
  13. package/dist/checks/cookies/cookie-flags.js.map +1 -0
  14. package/dist/checks/cookies/cookie-scope.d.ts +6 -0
  15. package/dist/checks/cookies/cookie-scope.d.ts.map +1 -0
  16. package/dist/checks/cookies/cookie-scope.js +60 -0
  17. package/dist/checks/cookies/cookie-scope.js.map +1 -0
  18. package/dist/checks/deployment/server-banner.d.ts +4 -0
  19. package/dist/checks/deployment/server-banner.d.ts.map +1 -0
  20. package/dist/checks/deployment/server-banner.js +60 -0
  21. package/dist/checks/deployment/server-banner.js.map +1 -0
  22. package/dist/checks/deployment/trace.d.ts +3 -0
  23. package/dist/checks/deployment/trace.d.ts.map +1 -0
  24. package/dist/checks/deployment/trace.js +30 -0
  25. package/dist/checks/deployment/trace.js.map +1 -0
  26. package/dist/checks/headers/clickjacking.d.ts +5 -0
  27. package/dist/checks/headers/clickjacking.d.ts.map +1 -0
  28. package/dist/checks/headers/clickjacking.js +57 -0
  29. package/dist/checks/headers/clickjacking.js.map +1 -0
  30. package/dist/checks/headers/content-type-options.d.ts +3 -0
  31. package/dist/checks/headers/content-type-options.d.ts.map +1 -0
  32. package/dist/checks/headers/content-type-options.js +17 -0
  33. package/dist/checks/headers/content-type-options.js.map +1 -0
  34. package/dist/checks/headers/cors.d.ts +4 -0
  35. package/dist/checks/headers/cors.d.ts.map +1 -0
  36. package/dist/checks/headers/cors.js +38 -0
  37. package/dist/checks/headers/cors.js.map +1 -0
  38. package/dist/checks/html.d.ts +11 -0
  39. package/dist/checks/html.d.ts.map +1 -0
  40. package/dist/checks/html.js +30 -0
  41. package/dist/checks/html.js.map +1 -0
  42. package/dist/checks/index.d.ts +7 -0
  43. package/dist/checks/index.d.ts.map +1 -0
  44. package/dist/checks/index.js +48 -0
  45. package/dist/checks/index.js.map +1 -0
  46. package/dist/checks/info-disclosure/directory-listing.d.ts +6 -0
  47. package/dist/checks/info-disclosure/directory-listing.d.ts.map +1 -0
  48. package/dist/checks/info-disclosure/directory-listing.js +60 -0
  49. package/dist/checks/info-disclosure/directory-listing.js.map +1 -0
  50. package/dist/checks/info-disclosure/exposed-files.d.ts +4 -0
  51. package/dist/checks/info-disclosure/exposed-files.d.ts.map +1 -0
  52. package/dist/checks/info-disclosure/exposed-files.js +56 -0
  53. package/dist/checks/info-disclosure/exposed-files.js.map +1 -0
  54. package/dist/checks/info-disclosure/more.d.ts +8 -0
  55. package/dist/checks/info-disclosure/more.d.ts.map +1 -0
  56. package/dist/checks/info-disclosure/more.js +186 -0
  57. package/dist/checks/info-disclosure/more.js.map +1 -0
  58. package/dist/checks/tls/certificate.d.ts +3 -0
  59. package/dist/checks/tls/certificate.d.ts.map +1 -0
  60. package/dist/checks/tls/certificate.js +49 -0
  61. package/dist/checks/tls/certificate.js.map +1 -0
  62. package/dist/checks/tls/hsts.d.ts +5 -0
  63. package/dist/checks/tls/hsts.d.ts.map +1 -0
  64. package/dist/checks/tls/hsts.js +35 -0
  65. package/dist/checks/tls/hsts.js.map +1 -0
  66. package/dist/checks/tls/https-redirect.d.ts +3 -0
  67. package/dist/checks/tls/https-redirect.d.ts.map +1 -0
  68. package/dist/checks/tls/https-redirect.js +46 -0
  69. package/dist/checks/tls/https-redirect.js.map +1 -0
  70. package/dist/checks/tls/legacy-protocols.d.ts +3 -0
  71. package/dist/checks/tls/legacy-protocols.d.ts.map +1 -0
  72. package/dist/checks/tls/legacy-protocols.js +27 -0
  73. package/dist/checks/tls/legacy-protocols.js.map +1 -0
  74. package/dist/checks/util.d.ts +22 -0
  75. package/dist/checks/util.d.ts.map +1 -0
  76. package/dist/checks/util.js +63 -0
  77. package/dist/checks/util.js.map +1 -0
  78. package/dist/code/checks/crypto.d.ts +5 -0
  79. package/dist/code/checks/crypto.d.ts.map +1 -0
  80. package/dist/code/checks/crypto.js +100 -0
  81. package/dist/code/checks/crypto.js.map +1 -0
  82. package/dist/code/checks/django.d.ts +14 -0
  83. package/dist/code/checks/django.d.ts.map +1 -0
  84. package/dist/code/checks/django.js +313 -0
  85. package/dist/code/checks/django.js.map +1 -0
  86. package/dist/code/checks/flask.d.ts +6 -0
  87. package/dist/code/checks/flask.d.ts.map +1 -0
  88. package/dist/code/checks/flask.js +100 -0
  89. package/dist/code/checks/flask.js.map +1 -0
  90. package/dist/code/checks/index.d.ts +9 -0
  91. package/dist/code/checks/index.d.ts.map +1 -0
  92. package/dist/code/checks/index.js +126 -0
  93. package/dist/code/checks/index.js.map +1 -0
  94. package/dist/code/checks/injection.d.ts +27 -0
  95. package/dist/code/checks/injection.d.ts.map +1 -0
  96. package/dist/code/checks/injection.js +189 -0
  97. package/dist/code/checks/injection.js.map +1 -0
  98. package/dist/code/checks/javascript-config.d.ts +14 -0
  99. package/dist/code/checks/javascript-config.d.ts.map +1 -0
  100. package/dist/code/checks/javascript-config.js +251 -0
  101. package/dist/code/checks/javascript-config.js.map +1 -0
  102. package/dist/code/checks/javascript.d.ts +34 -0
  103. package/dist/code/checks/javascript.d.ts.map +1 -0
  104. package/dist/code/checks/javascript.js +333 -0
  105. package/dist/code/checks/javascript.js.map +1 -0
  106. package/dist/code/checks/php.d.ts +27 -0
  107. package/dist/code/checks/php.d.ts.map +1 -0
  108. package/dist/code/checks/php.js +433 -0
  109. package/dist/code/checks/php.js.map +1 -0
  110. package/dist/code/checks/secrets.d.ts +10 -0
  111. package/dist/code/checks/secrets.d.ts.map +1 -0
  112. package/dist/code/checks/secrets.js +140 -0
  113. package/dist/code/checks/secrets.js.map +1 -0
  114. package/dist/code/checks/shared.d.ts +25 -0
  115. package/dist/code/checks/shared.d.ts.map +1 -0
  116. package/dist/code/checks/shared.js +57 -0
  117. package/dist/code/checks/shared.js.map +1 -0
  118. package/dist/code/checks/treesitter.d.ts +15 -0
  119. package/dist/code/checks/treesitter.d.ts.map +1 -0
  120. package/dist/code/checks/treesitter.js +322 -0
  121. package/dist/code/checks/treesitter.js.map +1 -0
  122. package/dist/code/checks/xml.d.ts +9 -0
  123. package/dist/code/checks/xml.d.ts.map +1 -0
  124. package/dist/code/checks/xml.js +78 -0
  125. package/dist/code/checks/xml.js.map +1 -0
  126. package/dist/code/context.d.ts +6 -0
  127. package/dist/code/context.d.ts.map +1 -0
  128. package/dist/code/context.js +92 -0
  129. package/dist/code/context.js.map +1 -0
  130. package/dist/code/detect.d.ts +3 -0
  131. package/dist/code/detect.d.ts.map +1 -0
  132. package/dist/code/detect.js +118 -0
  133. package/dist/code/detect.js.map +1 -0
  134. package/dist/code/django/settings.d.ts +46 -0
  135. package/dist/code/django/settings.d.ts.map +1 -0
  136. package/dist/code/django/settings.js +154 -0
  137. package/dist/code/django/settings.js.map +1 -0
  138. package/dist/code/findings.d.ts +18 -0
  139. package/dist/code/findings.d.ts.map +1 -0
  140. package/dist/code/findings.js +63 -0
  141. package/dist/code/findings.js.map +1 -0
  142. package/dist/code/javascript/ast.d.ts +46 -0
  143. package/dist/code/javascript/ast.d.ts.map +1 -0
  144. package/dist/code/javascript/ast.js +166 -0
  145. package/dist/code/javascript/ast.js.map +1 -0
  146. package/dist/code/javascript/index.d.ts +3 -0
  147. package/dist/code/javascript/index.d.ts.map +1 -0
  148. package/dist/code/javascript/index.js +3 -0
  149. package/dist/code/javascript/index.js.map +1 -0
  150. package/dist/code/javascript/module.d.ts +59 -0
  151. package/dist/code/javascript/module.d.ts.map +1 -0
  152. package/dist/code/javascript/module.js +250 -0
  153. package/dist/code/javascript/module.js.map +1 -0
  154. package/dist/code/php/index.d.ts +92 -0
  155. package/dist/code/php/index.d.ts.map +1 -0
  156. package/dist/code/php/index.js +316 -0
  157. package/dist/code/php/index.js.map +1 -0
  158. package/dist/code/project.d.ts +13 -0
  159. package/dist/code/project.d.ts.map +1 -0
  160. package/dist/code/project.js +69 -0
  161. package/dist/code/project.js.map +1 -0
  162. package/dist/code/python/ast.d.ts +47 -0
  163. package/dist/code/python/ast.d.ts.map +1 -0
  164. package/dist/code/python/ast.js +193 -0
  165. package/dist/code/python/ast.js.map +1 -0
  166. package/dist/code/python/index.d.ts +3 -0
  167. package/dist/code/python/index.d.ts.map +1 -0
  168. package/dist/code/python/index.js +3 -0
  169. package/dist/code/python/index.js.map +1 -0
  170. package/dist/code/python/module.d.ts +55 -0
  171. package/dist/code/python/module.d.ts.map +1 -0
  172. package/dist/code/python/module.js +215 -0
  173. package/dist/code/python/module.js.map +1 -0
  174. package/dist/code/scan.d.ts +24 -0
  175. package/dist/code/scan.d.ts.map +1 -0
  176. package/dist/code/scan.js +159 -0
  177. package/dist/code/scan.js.map +1 -0
  178. package/dist/code/treesitter/index.d.ts +83 -0
  179. package/dist/code/treesitter/index.d.ts.map +1 -0
  180. package/dist/code/treesitter/index.js +243 -0
  181. package/dist/code/treesitter/index.js.map +1 -0
  182. package/dist/code/types.d.ts +48 -0
  183. package/dist/code/types.d.ts.map +1 -0
  184. package/dist/code/types.js +2 -0
  185. package/dist/code/types.js.map +1 -0
  186. package/dist/content/en.d.ts +3 -0
  187. package/dist/content/en.d.ts.map +1 -0
  188. package/dist/content/en.js +722 -0
  189. package/dist/content/en.js.map +1 -0
  190. package/dist/content/index.d.ts +15 -0
  191. package/dist/content/index.d.ts.map +1 -0
  192. package/dist/content/index.js +21 -0
  193. package/dist/content/index.js.map +1 -0
  194. package/dist/content/types.d.ts +87 -0
  195. package/dist/content/types.d.ts.map +1 -0
  196. package/dist/content/types.js +2 -0
  197. package/dist/content/types.js.map +1 -0
  198. package/dist/engine.d.ts +52 -0
  199. package/dist/engine.d.ts.map +1 -0
  200. package/dist/engine.js +120 -0
  201. package/dist/engine.js.map +1 -0
  202. package/dist/index.d.ts +12 -0
  203. package/dist/index.d.ts.map +1 -0
  204. package/dist/index.js +11 -0
  205. package/dist/index.js.map +1 -0
  206. package/dist/meta.d.ts +4 -0
  207. package/dist/meta.d.ts.map +1 -0
  208. package/dist/meta.js +4 -0
  209. package/dist/meta.js.map +1 -0
  210. package/dist/net/context.d.ts +9 -0
  211. package/dist/net/context.d.ts.map +1 -0
  212. package/dist/net/context.js +62 -0
  213. package/dist/net/context.js.map +1 -0
  214. package/dist/net/guard.d.ts +16 -0
  215. package/dist/net/guard.d.ts.map +1 -0
  216. package/dist/net/guard.js +70 -0
  217. package/dist/net/guard.js.map +1 -0
  218. package/dist/net/http.d.ts +22 -0
  219. package/dist/net/http.d.ts.map +1 -0
  220. package/dist/net/http.js +114 -0
  221. package/dist/net/http.js.map +1 -0
  222. package/dist/net/tls.d.ts +15 -0
  223. package/dist/net/tls.d.ts.map +1 -0
  224. package/dist/net/tls.js +103 -0
  225. package/dist/net/tls.js.map +1 -0
  226. package/dist/report/html.d.ts +14 -0
  227. package/dist/report/html.d.ts.map +1 -0
  228. package/dist/report/html.js +210 -0
  229. package/dist/report/html.js.map +1 -0
  230. package/dist/report/index.d.ts +10 -0
  231. package/dist/report/index.d.ts.map +1 -0
  232. package/dist/report/index.js +10 -0
  233. package/dist/report/index.js.map +1 -0
  234. package/dist/report/manual.d.ts +62 -0
  235. package/dist/report/manual.d.ts.map +1 -0
  236. package/dist/report/manual.js +190 -0
  237. package/dist/report/manual.js.map +1 -0
  238. package/dist/report/merge.d.ts +8 -0
  239. package/dist/report/merge.d.ts.map +1 -0
  240. package/dist/report/merge.js +135 -0
  241. package/dist/report/merge.js.map +1 -0
  242. package/dist/report/summary.d.ts +10 -0
  243. package/dist/report/summary.d.ts.map +1 -0
  244. package/dist/report/summary.js +27 -0
  245. package/dist/report/summary.js.map +1 -0
  246. package/dist/report/validate.d.ts +3 -0
  247. package/dist/report/validate.d.ts.map +1 -0
  248. package/dist/report/validate.js +78 -0
  249. package/dist/report/validate.js.map +1 -0
  250. package/dist/types.d.ts +244 -0
  251. package/dist/types.d.ts.map +1 -0
  252. package/dist/types.js +2 -0
  253. package/dist/types.js.map +1 -0
  254. package/dist/validate.d.ts +4 -0
  255. package/dist/validate.d.ts.map +1 -0
  256. package/dist/validate.js +24 -0
  257. package/dist/validate.js.map +1 -0
  258. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/content/en.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AnnexItem } from "../types.js";
2
+ import type { GuidanceCatalog, ItemGuidance } from "./types.js";
3
+ export type { GuidanceCatalog, ItemGuidance, UiStrings } from "./types.js";
4
+ /** Available catalogs. Add a translation (e.g. am.ts) and register it here. */
5
+ export declare const CATALOGS: Readonly<Record<string, GuidanceCatalog>>;
6
+ export declare const DEFAULT_LOCALE = "en";
7
+ /** Catalog for a locale, falling back to English for unknown locales. */
8
+ export declare function catalog(locale?: string): GuidanceCatalog;
9
+ /** Guidance for an item in a locale; missing fields fall back to English. */
10
+ export declare function guidanceFor(id: string, locale?: string): ItemGuidance;
11
+ /** Item with its guided-review content applied for a locale. */
12
+ export declare function localizeItem(item: AnnexItem, locale?: string): AnnexItem;
13
+ /** Fills {name} placeholders. Unknown placeholders are left as-is. */
14
+ export declare function formatText(template: string, vars: Record<string, string | number>): string;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEhE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE3E,+EAA+E;AAC/E,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAc,CAAC;AAC9E,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,MAAM,GAAE,MAAuB,GAAG,eAAe,CAExE;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAuB,GAAG,YAAY,CAErF;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAE,MAAuB,GAAG,SAAS,CAExF;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAE1F"}
@@ -0,0 +1,21 @@
1
+ import { EN } from "./en.js";
2
+ /** Available catalogs. Add a translation (e.g. am.ts) and register it here. */
3
+ export const CATALOGS = { en: EN };
4
+ export const DEFAULT_LOCALE = "en";
5
+ /** Catalog for a locale, falling back to English for unknown locales. */
6
+ export function catalog(locale = DEFAULT_LOCALE) {
7
+ return CATALOGS[locale] ?? EN;
8
+ }
9
+ /** Guidance for an item in a locale; missing fields fall back to English. */
10
+ export function guidanceFor(id, locale = DEFAULT_LOCALE) {
11
+ return { ...EN.items[id], ...catalog(locale).items[id] };
12
+ }
13
+ /** Item with its guided-review content applied for a locale. */
14
+ export function localizeItem(item, locale = DEFAULT_LOCALE) {
15
+ return { ...item, ...guidanceFor(item.id, locale) };
16
+ }
17
+ /** Fills {name} placeholders. Unknown placeholders are left as-is. */
18
+ export function formatText(template, vars) {
19
+ return template.replace(/\{(\w+)\}/g, (m, k) => (k in vars ? String(vars[k]) : m));
20
+ }
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/content/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAK7B,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAA8C,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,yEAAyE;AACzE,MAAM,UAAU,OAAO,CAAC,MAAM,GAAW,cAAc;IACrD,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,EAAU,EAAE,MAAM,GAAW,cAAc;IACrE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,IAAe,EAAE,MAAM,GAAW,cAAc;IAC3E,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,IAAqC;IAChF,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,87 @@
1
+ import type { ManualVerdict, TermExplanation } from "../types.js";
2
+ /**
3
+ * Guided-review content for one Annex B item. Authored per item; never generated at runtime.
4
+ * Every field is optional: items without authored guidance fall back to the registry's manualNote.
5
+ */
6
+ export interface ItemGuidance {
7
+ /** What to check and why it matters (1–3 sentences). */
8
+ guidance?: string;
9
+ /** 2–5 concrete test steps. */
10
+ howToTest?: string[];
11
+ /** What the reviewer should record. */
12
+ evidencePrompt?: string;
13
+ /** Plain-language explanations of technical terms used above. */
14
+ terms?: TermExplanation[];
15
+ /** Related requirements in INSA documents, cited by clause. */
16
+ references?: string[];
17
+ }
18
+ /**
19
+ * All user-facing strings for the manual-review flow (dashboard and CLI) and readiness summary.
20
+ * Placeholders use {name} and are filled with formatText().
21
+ */
22
+ export interface UiStrings {
23
+ manualReviewTitle: string;
24
+ authorizationWarning: string;
25
+ progress: string;
26
+ verdict: Record<ManualVerdict, string>;
27
+ whatToCheck: string;
28
+ howToTest: string;
29
+ evidenceToRecord: string;
30
+ terms: string;
31
+ references: string;
32
+ automatedResult: string;
33
+ verdictLabel: string;
34
+ note: string;
35
+ evidenceText: string;
36
+ screenshots: string;
37
+ addScreenshot: string;
38
+ removeScreenshot: string;
39
+ screenshotTooLarge: string;
40
+ screenshotWrongType: string;
41
+ saved: string;
42
+ saving: string;
43
+ filterAll: string;
44
+ filterPending: string;
45
+ filterReviewed: string;
46
+ backToReport: string;
47
+ startReview: string;
48
+ reviewer: string;
49
+ reviewedAt: string;
50
+ evidenceAttached: string;
51
+ evidenceTextAttached: string;
52
+ noManualItems: string;
53
+ storageNotice: string;
54
+ readinessIncomplete: string;
55
+ readinessErrors: string;
56
+ readinessFailures: string;
57
+ readinessClean: string;
58
+ readinessPendingLine: string;
59
+ readinessNonePending: string;
60
+ readinessNeedsNote: string;
61
+ readinessNeedsNoteLine: string;
62
+ readinessCarriedLine: string;
63
+ carriedFrom: string;
64
+ historyCount: string;
65
+ cliIntro: string;
66
+ cliConfirmAuthorization: string;
67
+ cliItemHeader: string;
68
+ cliVerdictPrompt: string;
69
+ cliKeepCurrent: string;
70
+ cliNotePrompt: string;
71
+ cliEvidencePrompt: string;
72
+ cliScreenshotPrompt: string;
73
+ cliSavedTo: string;
74
+ cliStopped: string;
75
+ cliFinished: string;
76
+ cliNothingToReview: string;
77
+ }
78
+ export interface GuidanceCatalog {
79
+ /** BCP 47 tag, e.g. "en", "am". */
80
+ locale: string;
81
+ /** Name of the language in that language, e.g. "English", "አማርኛ". */
82
+ language: string;
83
+ /** Keyed by Annex B item number. */
84
+ items: Record<string, ItemGuidance>;
85
+ ui: UiStrings;
86
+ }
87
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/content/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/content/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import type { AnnexItem, Check, CheckKind, CheckOutcome, CheckResult, Report, ScanContext } from "./types.js";
2
+ import { TOOL_NAME, TOOL_VERSION } from "./meta.js";
3
+ export { TOOL_NAME, TOOL_VERSION };
4
+ export declare const USER_AGENT = "insa-check/0.1.0 (passive INSA Annex B audit; authorized testing only)";
5
+ export interface ScanOptions {
6
+ /**
7
+ * Caller asserts the operator owns or is authorized to test the target.
8
+ * Required so that every wrapper (CLI, server, library user) must make this explicit.
9
+ */
10
+ permissionConfirmed: true;
11
+ /** Per-request timeout. Default 10 s. */
12
+ timeoutMs?: number;
13
+ /** Per-check time budget. Default 45 s. */
14
+ checkTimeoutMs?: number;
15
+ /** Max concurrent requests to the target. Default 4. */
16
+ concurrency?: number;
17
+ userAgent?: string;
18
+ /** Refuse loopback/private/reserved targets (SSRF protection). Default false; servers should enable it. */
19
+ blockPrivateNetworks?: boolean;
20
+ /** Overrides for tests / extensions. */
21
+ registry?: readonly AnnexItem[];
22
+ checks?: ReadonlyMap<string, Check>;
23
+ context?: ScanContext;
24
+ /** Called as each item completes, e.g. for progress output. */
25
+ onResult?: (result: CheckResult) => void;
26
+ }
27
+ export declare class TargetError extends Error {
28
+ name: string;
29
+ }
30
+ /** Accepts "example.com" or a full http(s) URL. Strips credentials and fragments. */
31
+ export declare function normalizeTarget(input: string): URL;
32
+ export declare function runScan(input: string, options: ScanOptions): Promise<Report>;
33
+ /** Anything the engine can run against a context: a UrlCheck or a CodeCheck. */
34
+ export interface RunnableCheck<C> {
35
+ key: string;
36
+ run(ctx: C): Promise<CheckOutcome>;
37
+ }
38
+ export interface EvaluateOptions<C> {
39
+ registry: readonly AnnexItem[];
40
+ kind: CheckKind;
41
+ ctx: C;
42
+ checkTimeoutMs: number;
43
+ /** The check deciding an item, a string to report the item as manual with that note, or undefined for its manualNote. */
44
+ resolve: (item: AnnexItem) => RunnableCheck<C> | string | undefined;
45
+ onResult?: (result: CheckResult) => void;
46
+ }
47
+ /**
48
+ * Shared engine loop for every scan kind: one row per registry item, in order.
49
+ * A check that decides several items runs once; failures become "error" rows.
50
+ */
51
+ export declare function evaluateRegistry<C>(opts: EvaluateOptions<C>): Promise<CheckResult[]>;
52
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAe,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3H,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AACnC,eAAO,MAAM,UAAU,2EAAuF,CAAC;AAE/G,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,mBAAmB,EAAE,IAAI,CAAC;IAC1B,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2GAA2G;IAC3G,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC1C;AAED,qBAAa,WAAY,SAAQ,KAAK;IAC3B,IAAI,SAAiB;CAC/B;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAelD;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAuClF;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,EAAE,CAAC,CAAC;IACP,cAAc,EAAE,MAAM,CAAC;IACvB,yHAAyH;IACzH,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAgC1F"}
package/dist/engine.js ADDED
@@ -0,0 +1,120 @@
1
+ import { ANNEX_B, STANDARD } from "./annex-b.js";
2
+ import { CHECKS } from "./checks/index.js";
3
+ import { createScanContext } from "./net/context.js";
4
+ import { summarize } from "./report/summary.js";
5
+ import { TOOL_NAME, TOOL_VERSION } from "./meta.js";
6
+ export { TOOL_NAME, TOOL_VERSION };
7
+ export const USER_AGENT = `${TOOL_NAME}/${TOOL_VERSION} (passive INSA Annex B audit; authorized testing only)`;
8
+ export class TargetError extends Error {
9
+ name = "TargetError";
10
+ }
11
+ /** Accepts "example.com" or a full http(s) URL. Strips credentials and fragments. */
12
+ export function normalizeTarget(input) {
13
+ const trimmed = input.trim();
14
+ let url;
15
+ try {
16
+ url = new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(trimmed) ? trimmed : `https://${trimmed}`);
17
+ }
18
+ catch {
19
+ throw new TargetError(`Not a valid URL: ${input}`);
20
+ }
21
+ if (url.protocol !== "http:" && url.protocol !== "https:") {
22
+ throw new TargetError(`Only http and https URLs can be scanned (got ${url.protocol}).`);
23
+ }
24
+ url.username = "";
25
+ url.password = "";
26
+ url.hash = "";
27
+ return url;
28
+ }
29
+ export async function runScan(input, options) {
30
+ if (options.permissionConfirmed !== true) {
31
+ throw new Error("Refusing to scan: permission to test the target was not confirmed.");
32
+ }
33
+ const target = normalizeTarget(input);
34
+ const registry = options.registry ?? ANNEX_B;
35
+ const checks = options.checks ?? CHECKS;
36
+ const ctx = options.context ??
37
+ createScanContext(target, {
38
+ timeoutMs: options.timeoutMs ?? 10_000,
39
+ maxRedirects: 5,
40
+ maxBodyBytes: 1_000_000,
41
+ userAgent: options.userAgent ?? USER_AGENT,
42
+ concurrency: options.concurrency ?? 4,
43
+ blockPrivateNetworks: options.blockPrivateNetworks ?? false,
44
+ });
45
+ const checkTimeoutMs = options.checkTimeoutMs ?? 45_000;
46
+ const startedAt = new Date().toISOString();
47
+ const results = await evaluateRegistry({
48
+ registry,
49
+ kind: "url",
50
+ ctx,
51
+ checkTimeoutMs,
52
+ resolve: (item) => (item.checks?.url ? checks.get(item.checks.url) : undefined),
53
+ onResult: options.onResult,
54
+ });
55
+ return {
56
+ tool: { name: TOOL_NAME, version: TOOL_VERSION },
57
+ standard: STANDARD,
58
+ target: target.href,
59
+ sources: { url: target.href },
60
+ startedAt,
61
+ finishedAt: new Date().toISOString(),
62
+ summary: summarize(results),
63
+ results,
64
+ };
65
+ }
66
+ /**
67
+ * Shared engine loop for every scan kind: one row per registry item, in order.
68
+ * A check that decides several items runs once; failures become "error" rows.
69
+ */
70
+ export async function evaluateRegistry(opts) {
71
+ const outcomes = new Map();
72
+ return Promise.all(opts.registry.map(async (item) => {
73
+ const check = opts.resolve(item);
74
+ let outcome;
75
+ let evaluatedBy = "manual";
76
+ if (check === undefined || typeof check === "string") {
77
+ outcome = { status: "manual", detail: check ?? item.manualNote };
78
+ }
79
+ else {
80
+ let pending = outcomes.get(check.key);
81
+ if (!pending) {
82
+ pending = runCheck(check, opts.ctx, opts.checkTimeoutMs);
83
+ outcomes.set(check.key, pending);
84
+ }
85
+ outcome = await pending;
86
+ evaluatedBy = opts.kind;
87
+ }
88
+ const { findings, ...rest } = outcome;
89
+ const result = {
90
+ id: item.id,
91
+ section: item.section,
92
+ title: item.title,
93
+ tier: item.tier,
94
+ evaluatedBy,
95
+ ...rest,
96
+ ...(findings?.length ? { findings: findings.map((f) => ({ ...f, item: item.id })) } : {}),
97
+ };
98
+ opts.onResult?.(result);
99
+ return result;
100
+ }));
101
+ }
102
+ async function runCheck(check, ctx, timeoutMs) {
103
+ let timer;
104
+ try {
105
+ return await Promise.race([
106
+ check.run(ctx),
107
+ new Promise((_, reject) => {
108
+ timer = setTimeout(() => reject(new Error(`Check timed out after ${timeoutMs / 1000}s`)), timeoutMs);
109
+ }),
110
+ ]);
111
+ }
112
+ catch (err) {
113
+ const e = err;
114
+ return { status: "error", detail: `Could not complete: ${e.message ?? String(err)}${e.code ? ` (${e.code})` : ""}` };
115
+ }
116
+ finally {
117
+ clearTimeout(timer);
118
+ }
119
+ }
120
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export * from "./types.js";
2
+ export { ANNEX_B, STANDARD } from "./annex-b.js";
3
+ export { CHECKS } from "./checks/index.js";
4
+ export { runScan, normalizeTarget, evaluateRegistry, TargetError, TOOL_NAME, TOOL_VERSION, USER_AGENT, type ScanOptions, type RunnableCheck, } from "./engine.js";
5
+ export { validateRegistry } from "./validate.js";
6
+ export { CODE_CHECKS } from "./code/checks/index.js";
7
+ export { runCodeScan, CodeScanError, type CodeScanOptions } from "./code/scan.js";
8
+ export { detectProject } from "./code/detect.js";
9
+ export type * from "./code/types.js";
10
+ export { isPrivateAddress, PrivateTargetError } from "./net/guard.js";
11
+ export * from "./report/index.js";
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EACL,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,mBAAmB,iBAAiB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,cAAc,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export * from "./types.js";
2
+ export { ANNEX_B, STANDARD } from "./annex-b.js";
3
+ export { CHECKS } from "./checks/index.js";
4
+ export { runScan, normalizeTarget, evaluateRegistry, TargetError, TOOL_NAME, TOOL_VERSION, USER_AGENT, } from "./engine.js";
5
+ export { validateRegistry } from "./validate.js";
6
+ export { CODE_CHECKS } from "./code/checks/index.js";
7
+ export { runCodeScan, CodeScanError } from "./code/scan.js";
8
+ export { detectProject } from "./code/detect.js";
9
+ export { isPrivateAddress, PrivateTargetError } from "./net/guard.js";
10
+ export * from "./report/index.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EACL,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAwB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACtE,cAAc,mBAAmB,CAAC"}
package/dist/meta.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /** Tool identity. Kept free of Node APIs so browser code can import it. */
2
+ export declare const TOOL_NAME = "insa-check";
3
+ export declare const TOOL_VERSION = "0.1.0";
4
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,eAAO,MAAM,SAAS,eAAe,CAAC;AACtC,eAAO,MAAM,YAAY,UAAU,CAAC"}
package/dist/meta.js ADDED
@@ -0,0 +1,4 @@
1
+ /** Tool identity. Kept free of Node APIs so browser code can import it. */
2
+ export const TOOL_NAME = "insa-check";
3
+ export const TOOL_VERSION = "0.1.0";
4
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ScanContext } from "../types.js";
2
+ import { type HttpClientOptions } from "./http.js";
3
+ export interface ContextOptions extends HttpClientOptions {
4
+ /** Max requests in flight against the target at once. */
5
+ concurrency: number;
6
+ }
7
+ /** Real network-backed ScanContext with per-scan caching and a concurrency cap. */
8
+ export declare function createScanContext(target: URL, options: ContextOptions): ScanContext;
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/net/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkD,WAAW,EAAW,MAAM,aAAa,CAAC;AACxG,OAAO,EAAe,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGhE,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,GAAG,WAAW,CAsCnF"}
@@ -0,0 +1,62 @@
1
+ import { httpRequest } from "./http.js";
2
+ import { getTlsInfo, probeLegacyTls } from "./tls.js";
3
+ /** Real network-backed ScanContext with per-scan caching and a concurrency cap. */
4
+ export function createScanContext(target, options) {
5
+ const responses = new Map();
6
+ const legacy = new Map();
7
+ let tlsInfo;
8
+ const limit = createLimiter(options.concurrency);
9
+ const tlsTarget = {
10
+ host: target.hostname.replace(/^\[|\]$/g, ""),
11
+ port: target.protocol === "https:" && target.port ? Number(target.port) : 443,
12
+ timeoutMs: options.timeoutMs,
13
+ blockPrivateNetworks: options.blockPrivateNetworks,
14
+ };
15
+ return {
16
+ target,
17
+ request(pathOrUrl, opts = {}) {
18
+ const url = new URL(pathOrUrl, target).href;
19
+ const key = `${opts.method ?? "GET"} ${url} ${opts.followRedirects ?? true} ${JSON.stringify(opts.headers ?? {})}`;
20
+ let pending = responses.get(key);
21
+ if (!pending) {
22
+ pending = limit(() => httpRequest(url, opts, options));
23
+ responses.set(key, pending);
24
+ }
25
+ return pending;
26
+ },
27
+ tlsInfo() {
28
+ tlsInfo ??= limit(() => getTlsInfo(tlsTarget));
29
+ return tlsInfo;
30
+ },
31
+ probeTls(version) {
32
+ let pending = legacy.get(version);
33
+ if (!pending) {
34
+ pending = limit(() => probeLegacyTls(tlsTarget, version));
35
+ legacy.set(version, pending);
36
+ }
37
+ return pending;
38
+ },
39
+ };
40
+ }
41
+ function createLimiter(max) {
42
+ let active = 0;
43
+ const queue = [];
44
+ return function limit(task) {
45
+ return new Promise((resolve, reject) => {
46
+ const run = () => {
47
+ active++;
48
+ task()
49
+ .then(resolve, reject)
50
+ .finally(() => {
51
+ active--;
52
+ queue.shift()?.();
53
+ });
54
+ };
55
+ if (active < max)
56
+ run();
57
+ else
58
+ queue.push(run);
59
+ });
60
+ };
61
+ }
62
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/net/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import dns from "node:dns";
2
+ export declare function isPrivateAddress(ip: string): boolean;
3
+ export declare class PrivateTargetError extends Error {
4
+ readonly code = "EPRIVATETARGET";
5
+ constructor(host: string, ip: string);
6
+ }
7
+ /** Node skips `lookup` for IP-literal hosts, so those must be checked up front. */
8
+ export declare function assertAllowedLiteral(host: string): void;
9
+ type LookupCallback = (err: NodeJS.ErrnoException | null, address: string | dns.LookupAddress[], family?: number) => void;
10
+ /**
11
+ * dns.lookup replacement for http/tls `lookup` options. Validates the address
12
+ * actually connected to, so DNS rebinding cannot bypass the check.
13
+ */
14
+ export declare function guardedLookup(hostname: string, options: dns.LookupOptions, callback: LookupCallback): void;
15
+ export {};
16
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/net/guard.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AA8B3B,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMpD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,oBAAoB;IACjC,YAAY,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAGnC;CACF;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED,KAAK,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAE1H;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAU1G"}
@@ -0,0 +1,70 @@
1
+ import dns from "node:dns";
2
+ import net from "node:net";
3
+ /** Loopback, private, link-local, CGNAT, multicast and reserved ranges. */
4
+ const BLOCKED = new net.BlockList();
5
+ for (const [addr, prefix] of [
6
+ ["0.0.0.0", 8],
7
+ ["10.0.0.0", 8],
8
+ ["100.64.0.0", 10],
9
+ ["127.0.0.0", 8],
10
+ ["169.254.0.0", 16],
11
+ ["172.16.0.0", 12],
12
+ ["192.0.0.0", 24],
13
+ ["192.168.0.0", 16],
14
+ ["198.18.0.0", 15],
15
+ ["224.0.0.0", 4],
16
+ ["240.0.0.0", 4],
17
+ ]) {
18
+ BLOCKED.addSubnet(addr, prefix, "ipv4");
19
+ }
20
+ for (const [addr, prefix] of [
21
+ ["::", 128],
22
+ ["::1", 128],
23
+ ["fc00::", 7],
24
+ ["fe80::", 10],
25
+ ["ff00::", 8],
26
+ ]) {
27
+ BLOCKED.addSubnet(addr, prefix, "ipv6");
28
+ }
29
+ export function isPrivateAddress(ip) {
30
+ const mapped = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i.exec(ip);
31
+ if (mapped)
32
+ return BLOCKED.check(mapped[1], "ipv4");
33
+ const family = net.isIP(ip);
34
+ if (family === 0)
35
+ return true;
36
+ return BLOCKED.check(ip, family === 4 ? "ipv4" : "ipv6");
37
+ }
38
+ export class PrivateTargetError extends Error {
39
+ code = "EPRIVATETARGET";
40
+ constructor(host, ip) {
41
+ super(`${host} resolves to a private or reserved address (${ip}); scanning it is disabled on this server`);
42
+ this.name = "PrivateTargetError";
43
+ }
44
+ }
45
+ /** Node skips `lookup` for IP-literal hosts, so those must be checked up front. */
46
+ export function assertAllowedLiteral(host) {
47
+ const bare = host.replace(/^\[|\]$/g, "");
48
+ if (net.isIP(bare) !== 0 && isPrivateAddress(bare))
49
+ throw new PrivateTargetError(host, bare);
50
+ }
51
+ /**
52
+ * dns.lookup replacement for http/tls `lookup` options. Validates the address
53
+ * actually connected to, so DNS rebinding cannot bypass the check.
54
+ */
55
+ export function guardedLookup(hostname, options, callback) {
56
+ dns.lookup(hostname, { ...options, all: true }, (err, addresses) => {
57
+ if (err)
58
+ return callback(err, []);
59
+ const blocked = addresses.find((a) => isPrivateAddress(a.address));
60
+ if (blocked)
61
+ return callback(new PrivateTargetError(hostname, blocked.address), []);
62
+ if (options.all)
63
+ return callback(null, addresses);
64
+ const first = addresses[0];
65
+ if (!first)
66
+ return callback(Object.assign(new Error(`No address for ${hostname}`), { code: "ENOTFOUND" }), []);
67
+ callback(null, first.address, first.family);
68
+ });
69
+ }
70
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/net/guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { HttpResponse, RequestOptions } from "../types.js";
2
+ export interface HttpClientOptions {
3
+ timeoutMs: number;
4
+ maxRedirects: number;
5
+ maxBodyBytes: number;
6
+ userAgent: string;
7
+ /** Refuse to connect to loopback/private/reserved addresses (SSRF protection). */
8
+ blockPrivateNetworks: boolean;
9
+ }
10
+ export declare class HttpError extends Error {
11
+ readonly code: string | undefined;
12
+ readonly url: string;
13
+ constructor(message: string, code: string | undefined, url: string);
14
+ }
15
+ /**
16
+ * Minimal HTTP(S) client on node:http. We avoid fetch() because it refuses
17
+ * TRACE/TRACK and hides TLS details. Certificate errors are deliberately not
18
+ * fatal here: the certificate check reports them; other checks still need a
19
+ * response from misconfigured hosts.
20
+ */
21
+ export declare function httpRequest(url: string, opts: RequestOptions, client: HttpClientOptions): Promise<HttpResponse>;
22
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/net/http.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,qBAAa,SAAU,SAAQ,KAAK;IAGhC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM;IAHtB,YACE,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,EAAE,MAAM,EAIrB;CACF;AAID;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,YAAY,CAAC,CAqBvB"}