@js-recon/js-recon 2.0.1-alpha.2 → 2.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/build-and-prettify.yaml +33 -21
- package/.github/workflows/codeql.yml +5 -3
- package/.github/workflows/exploit-smoke-test.yaml +15 -12
- package/.github/workflows/framework-detection-smoke-test.yaml +7 -4
- package/.github/workflows/plumber.yml +4 -2
- package/.github/workflows/pr_checker.yml +3 -1
- package/.github/workflows/promote-js-recon.yml +19 -15
- package/.github/workflows/publish-js-recon.yml +9 -9
- package/.github/workflows/rules-smoke-test.yaml +7 -4
- package/AGENTS.md +694 -0
- package/CHANGELOG.md +40 -0
- package/Dockerfile +1 -1
- package/Dockerfile.release +1 -1
- package/build/analyze/engine/astEngine.js +3 -5
- package/build/analyze/engine/astEngine.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findDirectAssignment.js +1 -3
- package/build/analyze/helpers/engineHelpers/findDirectAssignment.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js +1 -3
- package/build/analyze/helpers/engineHelpers/findMemberExpressionAssignment.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js +1 -3
- package/build/analyze/helpers/engineHelpers/resolveFunctionIdentifier.js.map +1 -1
- package/build/analyze/helpers/engineHelpers/taintFlow.js +1 -3
- package/build/analyze/helpers/engineHelpers/taintFlow.js.map +1 -1
- package/build/analyze/helpers/initRules.js +19 -17
- package/build/analyze/helpers/initRules.js.map +1 -1
- package/build/endpoints/next_js/client_jsFilesHref.js +2 -4
- package/build/endpoints/next_js/client_jsFilesHref.js.map +1 -1
- package/build/endpoints/next_js/client_jsonParse.js +2 -4
- package/build/endpoints/next_js/client_jsonParse.js.map +1 -1
- package/build/endpoints/next_js/client_mappedJsonFile.js +2 -4
- package/build/endpoints/next_js/client_mappedJsonFile.js.map +1 -1
- package/build/endpoints/next_js/client_subsequentRequests.js +2 -4
- package/build/endpoints/next_js/client_subsequentRequests.js.map +1 -1
- package/build/globalConfig.js +1 -1
- package/build/globalConfig.js.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/lazyLoad/angular/angular_recursiveChunkImports.js +4 -9
- package/build/lazyLoad/angular/angular_recursiveChunkImports.js.map +1 -1
- package/build/lazyLoad/downloadFilesUtil.js +7 -1
- package/build/lazyLoad/downloadFilesUtil.js.map +1 -1
- package/build/lazyLoad/downloadQueue.js +7 -1
- package/build/lazyLoad/downloadQueue.js.map +1 -1
- package/build/lazyLoad/downloadResponse.js +9 -1
- package/build/lazyLoad/downloadResponse.js.map +1 -1
- package/build/lazyLoad/index.js +138 -9
- package/build/lazyLoad/index.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js +2 -4
- package/build/lazyLoad/next_js/next_GetLazyResourcesBuildManifestJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js +2 -4
- package/build/lazyLoad/next_js/next_GetLazyResourcesWebpackJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_parseLayoutJs.js +2 -4
- package/build/lazyLoad/next_js/next_parseLayoutJs.js.map +1 -1
- package/build/lazyLoad/next_js/next_promiseResolve.js +2 -4
- package/build/lazyLoad/next_js/next_promiseResolve.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js +3 -5
- package/build/lazyLoad/nuxt_js/nuxt_astParse.js.map +1 -1
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js +31 -15
- package/build/lazyLoad/nuxt_js/nuxt_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/outputPath.js +9 -1
- package/build/lazyLoad/outputPath.js.map +1 -1
- package/build/lazyLoad/react/react_followImports.js +20 -3
- package/build/lazyLoad/react/react_followImports.js.map +1 -1
- package/build/lazyLoad/shared/webpackChunkParsers.js +117 -4
- package/build/lazyLoad/shared/webpackChunkParsers.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js +59 -5
- package/build/lazyLoad/svelte/svelte_getFromPageSource.js.map +1 -1
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js +2 -4
- package/build/lazyLoad/svelte/svelte_stringAnalysisJSFiles.js.map +1 -1
- package/build/lazyLoad/techDetect/checkAngularDevServer.js +51 -0
- package/build/lazyLoad/techDetect/checkAngularDevServer.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNextDevServer.js +25 -0
- package/build/lazyLoad/techDetect/checkNextDevServer.js.map +1 -0
- package/build/lazyLoad/techDetect/checkNuxtDevServer.js +52 -0
- package/build/lazyLoad/techDetect/checkNuxtDevServer.js.map +1 -0
- package/build/lazyLoad/techDetect/checkReactDevServer.js +93 -0
- package/build/lazyLoad/techDetect/checkReactDevServer.js.map +1 -0
- package/build/lazyLoad/techDetect/checkSvelteDevServer.js +32 -0
- package/build/lazyLoad/techDetect/checkSvelteDevServer.js.map +1 -0
- package/build/lazyLoad/techDetect/checkVueDevServer.js +51 -0
- package/build/lazyLoad/techDetect/checkVueDevServer.js.map +1 -0
- package/build/lazyLoad/techDetect/index.js +57 -20
- package/build/lazyLoad/techDetect/index.js.map +1 -1
- package/build/lazyLoad/vue/vue_RuntimeJs.js +1 -3
- package/build/lazyLoad/vue/vue_RuntimeJs.js.map +1 -1
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js +2 -4
- package/build/lazyLoad/vue/vue_SingleJsFileOnHome.js.map +1 -1
- package/build/lazyLoad/vue/vue_getClientSidePaths.js +3 -5
- package/build/lazyLoad/vue/vue_getClientSidePaths.js.map +1 -1
- package/build/lazyLoad/vue/vue_jsImports.js +22 -13
- package/build/lazyLoad/vue/vue_jsImports.js.map +1 -1
- package/build/lazyLoad/vue/vue_stringJsFiles.js +1 -1
- package/build/lazyLoad/vue/vue_stringJsFiles.js.map +1 -1
- package/build/lazyLoad/vue/vue_viteMapDeps.js +3 -5
- package/build/lazyLoad/vue/vue_viteMapDeps.js.map +1 -1
- package/build/map/angular_js/getAngularConnections.js +1 -1
- package/build/map/angular_js/getAngularConnections.js.map +1 -1
- package/build/map/graphql/resolveGraphql.js +2 -4
- package/build/map/graphql/resolveGraphql.js.map +1 -1
- package/build/map/interactive-mode/esqueryGen.js +3 -6
- package/build/map/interactive-mode/esqueryGen.js.map +1 -1
- package/build/map/next_js/getExports.js +2 -4
- package/build/map/next_js/getExports.js.map +1 -1
- package/build/map/next_js/getFetchInstances.js +2 -4
- package/build/map/next_js/getFetchInstances.js.map +1 -1
- package/build/map/next_js/getTurbopackConnections.js +2 -4
- package/build/map/next_js/getTurbopackConnections.js.map +1 -1
- package/build/map/next_js/getWebpackConnections.js +2 -4
- package/build/map/next_js/getWebpackConnections.js.map +1 -1
- package/build/map/next_js/resolveAxios.js +2 -4
- package/build/map/next_js/resolveAxios.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js +1 -3
- package/build/map/next_js/resolveAxiosHelpers/directCallsWithoutAssignment.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js +1 -3
- package/build/map/next_js/resolveAxiosHelpers/findAxiosInstance.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js +2 -4
- package/build/map/next_js/resolveAxiosHelpers/findCrossChunkParams.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js +1 -3
- package/build/map/next_js/resolveAxiosHelpers/handleAxiosCreate.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js +0 -3
- package/build/map/next_js/resolveAxiosHelpers/handleZDotCreate.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js +2 -4
- package/build/map/next_js/resolveAxiosHelpers/interceptorHeaders.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js +1 -3
- package/build/map/next_js/resolveAxiosHelpers/processExportedEndpoints.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js +2 -4
- package/build/map/next_js/resolveAxiosHelpers/traceAxiosInstanceExports.js.map +1 -1
- package/build/map/next_js/resolveAxiosHelpers/traceBody.js +2 -4
- package/build/map/next_js/resolveAxiosHelpers/traceBody.js.map +1 -1
- package/build/map/next_js/resolveFetch.js +2 -4
- package/build/map/next_js/resolveFetch.js.map +1 -1
- package/build/map/next_js/resolveNewRequest.js +2 -4
- package/build/map/next_js/resolveNewRequest.js.map +1 -1
- package/build/map/next_js/resolveServerActions.js +2 -4
- package/build/map/next_js/resolveServerActions.js.map +1 -1
- package/build/map/next_js/utils.js +2 -4
- package/build/map/next_js/utils.js.map +1 -1
- package/build/map/react_js/getReactConnections.js +2 -4
- package/build/map/react_js/getReactConnections.js.map +1 -1
- package/build/map/vue_js/crossFileResolver.js +2 -4
- package/build/map/vue_js/crossFileResolver.js.map +1 -1
- package/build/map/vue_js/getViteConnections.js +2 -4
- package/build/map/vue_js/getViteConnections.js.map +1 -1
- package/build/map/vue_js/taint_utils.js +2 -4
- package/build/map/vue_js/taint_utils.js.map +1 -1
- package/build/map/vue_js/vue_resolveFetch.js +2 -4
- package/build/map/vue_js/vue_resolveFetch.js.map +1 -1
- package/build/map/vue_js/vue_resolveHttpClient.js +2 -4
- package/build/map/vue_js/vue_resolveHttpClient.js.map +1 -1
- package/build/map/vue_js/vue_resolveXhr.js +2 -4
- package/build/map/vue_js/vue_resolveXhr.js.map +1 -1
- package/build/refactor/next/index.js +3 -6
- package/build/refactor/next/index.js.map +1 -1
- package/build/refactor/next/transform.js +2 -6
- package/build/refactor/next/transform.js.map +1 -1
- package/build/refactor/next/validator.js +2 -4
- package/build/refactor/next/validator.js.map +1 -1
- package/build/refactor/react/index.js +3 -6
- package/build/refactor/react/index.js.map +1 -1
- package/build/refactor/react/library-classify.js +1 -3
- package/build/refactor/react/library-classify.js.map +1 -1
- package/build/refactor/react/transform.js +8 -15
- package/build/refactor/react/transform.js.map +1 -1
- package/build/refactor/react/validator.js +2 -4
- package/build/refactor/react/validator.js.map +1 -1
- package/build/refactor/react-vite/index.js +3 -8
- package/build/refactor/react-vite/index.js.map +1 -1
- package/build/refactor/react-vite/vendor-analyze.js +2 -5
- package/build/refactor/react-vite/vendor-analyze.js.map +1 -1
- package/build/refactor/vue/index.js +2 -4
- package/build/refactor/vue/index.js.map +1 -1
- package/build/refactor/vue/vendor-analyze-vue.js +4 -5
- package/build/refactor/vue/vendor-analyze-vue.js.map +1 -1
- package/build/refactor/vue/vite.js +3 -5
- package/build/refactor/vue/vite.js.map +1 -1
- package/build/run/index.js +55 -12
- package/build/run/index.js.map +1 -1
- package/build/strings/index.js +1 -1
- package/build/strings/index.js.map +1 -1
- package/build/utility/ai.js +16 -32
- package/build/utility/ai.js.map +1 -1
- package/build/utility/fatalHandlers.js +29 -0
- package/build/utility/fatalHandlers.js.map +1 -0
- package/build/utility/globals.js +27 -0
- package/build/utility/globals.js.map +1 -1
- package/build/utility/openapiGenerator.js +1 -1
- package/build/utility/openapiGenerator.js.map +1 -1
- package/build/utility/postmanGenerator.js +2 -1
- package/build/utility/postmanGenerator.js.map +1 -1
- package/package.json +9 -10
- package/scripts/dev-server-benchmark-utils.mjs +24 -0
- package/scripts/dev-server-benchmark.mjs +225 -0
|
@@ -15,7 +15,9 @@ jobs:
|
|
|
15
15
|
!startsWith(github.event.head_commit.message, 'chore: prettify code')
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
19
|
+
with:
|
|
20
|
+
persist-credentials: false
|
|
19
21
|
- name: Check version mismatch
|
|
20
22
|
env:
|
|
21
23
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -45,8 +47,10 @@ jobs:
|
|
|
45
47
|
runs-on: ubuntu-latest
|
|
46
48
|
needs: version_check
|
|
47
49
|
steps:
|
|
48
|
-
- uses: actions/checkout@
|
|
49
|
-
|
|
50
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
51
|
+
with:
|
|
52
|
+
persist-credentials: false
|
|
53
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
50
54
|
with:
|
|
51
55
|
node-version: "22"
|
|
52
56
|
cache: "npm"
|
|
@@ -63,7 +67,7 @@ jobs:
|
|
|
63
67
|
contents: write
|
|
64
68
|
steps:
|
|
65
69
|
- name: Checkout
|
|
66
|
-
uses: actions/checkout@
|
|
70
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
67
71
|
with:
|
|
68
72
|
# Make sure the action checks out the repository to the pull request branch
|
|
69
73
|
ref: ${{ github.ref_name }}
|
|
@@ -76,7 +80,7 @@ jobs:
|
|
|
76
80
|
commit-email: ${{ secrets.JS_RECON_SIGNING_EMAIL }}
|
|
77
81
|
|
|
78
82
|
- name: Set up Node.js
|
|
79
|
-
uses: actions/setup-node@
|
|
83
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
80
84
|
with:
|
|
81
85
|
node-version: "22"
|
|
82
86
|
cache: "npm"
|
|
@@ -104,12 +108,13 @@ jobs:
|
|
|
104
108
|
runs-on: ubuntu-latest
|
|
105
109
|
steps:
|
|
106
110
|
- name: Checkout
|
|
107
|
-
uses: actions/checkout@
|
|
111
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
108
112
|
with:
|
|
113
|
+
persist-credentials: false
|
|
109
114
|
ref: ${{ github.ref_name }}
|
|
110
115
|
|
|
111
116
|
- name: Set up Node.js
|
|
112
|
-
uses: actions/setup-node@
|
|
117
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
113
118
|
with:
|
|
114
119
|
node-version: "22"
|
|
115
120
|
cache: "npm"
|
|
@@ -125,12 +130,13 @@ jobs:
|
|
|
125
130
|
runs-on: ubuntu-latest
|
|
126
131
|
steps:
|
|
127
132
|
- name: Checkout
|
|
128
|
-
uses: actions/checkout@
|
|
133
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
129
134
|
with:
|
|
135
|
+
persist-credentials: false
|
|
130
136
|
ref: ${{ github.ref_name }}
|
|
131
137
|
|
|
132
138
|
- name: Set up Node.js
|
|
133
|
-
uses: actions/setup-node@
|
|
139
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
134
140
|
with:
|
|
135
141
|
node-version: "22"
|
|
136
142
|
cache: "npm"
|
|
@@ -146,13 +152,14 @@ jobs:
|
|
|
146
152
|
runs-on: ubuntu-latest
|
|
147
153
|
steps:
|
|
148
154
|
- name: Checkout
|
|
149
|
-
uses: actions/checkout@
|
|
155
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
150
156
|
with:
|
|
157
|
+
persist-credentials: false
|
|
151
158
|
# Make sure the action checks out the repository to the pull request branch
|
|
152
159
|
ref: ${{ github.ref_name }}
|
|
153
160
|
|
|
154
161
|
- name: Set up Node.js
|
|
155
|
-
uses: actions/setup-node@
|
|
162
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
156
163
|
with:
|
|
157
164
|
node-version: "22"
|
|
158
165
|
cache: "npm"
|
|
@@ -167,8 +174,9 @@ jobs:
|
|
|
167
174
|
runs-on: ubuntu-latest
|
|
168
175
|
steps:
|
|
169
176
|
- name: Checkout
|
|
170
|
-
uses: actions/checkout@
|
|
177
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
171
178
|
with:
|
|
179
|
+
persist-credentials: false
|
|
172
180
|
# Make sure the action checks out the repository to the pull request branch
|
|
173
181
|
ref: ${{ github.ref_name }}
|
|
174
182
|
- name: Build docker container
|
|
@@ -180,13 +188,15 @@ jobs:
|
|
|
180
188
|
timeout-minutes: 30
|
|
181
189
|
steps:
|
|
182
190
|
- name: Checkout js-recon
|
|
183
|
-
uses: actions/checkout@
|
|
191
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
184
192
|
with:
|
|
193
|
+
persist-credentials: false
|
|
185
194
|
ref: ${{ github.ref_name }}
|
|
186
195
|
|
|
187
196
|
- name: Checkout js-recon-labs
|
|
188
|
-
uses: actions/checkout@
|
|
197
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
189
198
|
with:
|
|
199
|
+
persist-credentials: false
|
|
190
200
|
repository: js-recon/js-recon-labs
|
|
191
201
|
path: js-recon-labs
|
|
192
202
|
|
|
@@ -202,7 +212,7 @@ jobs:
|
|
|
202
212
|
git clone --depth 1 --branch "$BRANCH" https://github.com/js-recon/js-recon-rules.git js-recon-rules
|
|
203
213
|
|
|
204
214
|
- name: Set up Node.js
|
|
205
|
-
uses: actions/setup-node@
|
|
215
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
206
216
|
with:
|
|
207
217
|
node-version: "22"
|
|
208
218
|
cache: "npm"
|
|
@@ -250,7 +260,7 @@ jobs:
|
|
|
250
260
|
|
|
251
261
|
- name: Upload analyze.json on failure
|
|
252
262
|
if: failure()
|
|
253
|
-
uses: actions/upload-artifact@
|
|
263
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
254
264
|
with:
|
|
255
265
|
name: analyze-json-docker
|
|
256
266
|
path: output/**/analyze.json
|
|
@@ -284,7 +294,7 @@ jobs:
|
|
|
284
294
|
|
|
285
295
|
- name: Upload w-rules analyze.json on failure
|
|
286
296
|
if: failure()
|
|
287
|
-
uses: actions/upload-artifact@
|
|
297
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
288
298
|
with:
|
|
289
299
|
name: analyze-json-docker-w-rules
|
|
290
300
|
path: output-w-rules/**/analyze.json
|
|
@@ -296,13 +306,15 @@ jobs:
|
|
|
296
306
|
timeout-minutes: 30
|
|
297
307
|
steps:
|
|
298
308
|
- name: Checkout js-recon
|
|
299
|
-
uses: actions/checkout@
|
|
309
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
300
310
|
with:
|
|
311
|
+
persist-credentials: false
|
|
301
312
|
ref: ${{ github.ref_name }}
|
|
302
313
|
|
|
303
314
|
- name: Checkout js-recon-labs
|
|
304
|
-
uses: actions/checkout@
|
|
315
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
305
316
|
with:
|
|
317
|
+
persist-credentials: false
|
|
306
318
|
repository: js-recon/js-recon-labs
|
|
307
319
|
path: js-recon-labs
|
|
308
320
|
|
|
@@ -318,7 +330,7 @@ jobs:
|
|
|
318
330
|
git clone --depth 1 --branch "$BRANCH" https://github.com/js-recon/js-recon-rules.git js-recon-rules
|
|
319
331
|
|
|
320
332
|
- name: Set up Node.js
|
|
321
|
-
uses: actions/setup-node@
|
|
333
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
322
334
|
with:
|
|
323
335
|
node-version: "22"
|
|
324
336
|
cache: "npm"
|
|
@@ -377,7 +389,7 @@ jobs:
|
|
|
377
389
|
|
|
378
390
|
- name: Upload analyze.json on failure
|
|
379
391
|
if: failure()
|
|
380
|
-
uses: actions/upload-artifact@
|
|
392
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
381
393
|
with:
|
|
382
394
|
name: analyze-json-macos
|
|
383
395
|
path: output/**/analyze.json
|
|
@@ -20,14 +20,16 @@ jobs:
|
|
|
20
20
|
name: Analyze (javascript-typescript)
|
|
21
21
|
runs-on: ubuntu-latest
|
|
22
22
|
steps:
|
|
23
|
-
- uses: actions/checkout@
|
|
23
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
24
|
+
with:
|
|
25
|
+
persist-credentials: false
|
|
24
26
|
|
|
25
27
|
- name: Initialize CodeQL
|
|
26
|
-
uses: github/codeql-action/init@
|
|
28
|
+
uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
|
|
27
29
|
with:
|
|
28
30
|
languages: javascript-typescript
|
|
29
31
|
|
|
30
32
|
- name: Perform CodeQL Analysis
|
|
31
|
-
uses: github/codeql-action/analyze@
|
|
33
|
+
uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
|
|
32
34
|
with:
|
|
33
35
|
category: "/language:javascript-typescript"
|
|
@@ -15,16 +15,19 @@ jobs:
|
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
17
|
- name: Checkout js-recon
|
|
18
|
-
uses: actions/checkout@
|
|
18
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
19
|
+
with:
|
|
20
|
+
persist-credentials: false
|
|
19
21
|
|
|
20
22
|
- name: Checkout js-recon-labs
|
|
21
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
22
24
|
with:
|
|
25
|
+
persist-credentials: false
|
|
23
26
|
repository: js-recon/js-recon-labs
|
|
24
27
|
path: js-recon-labs
|
|
25
28
|
|
|
26
29
|
- name: Set up Node.js
|
|
27
|
-
uses: actions/setup-node@
|
|
30
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
28
31
|
with:
|
|
29
32
|
node-version: "22"
|
|
30
33
|
cache: "npm"
|
|
@@ -38,7 +41,7 @@ jobs:
|
|
|
38
41
|
# --- Next.js: CVE-2025-29927 (middleware bypass) ---
|
|
39
42
|
- name: Build cve-2025-29927 fixture
|
|
40
43
|
working-directory: js-recon-labs/next_js/cve-2025-29927
|
|
41
|
-
run: npm
|
|
44
|
+
run: npm ci && npm run build
|
|
42
45
|
|
|
43
46
|
- name: Start cve-2025-29927 fixture
|
|
44
47
|
working-directory: js-recon-labs/next_js/cve-2025-29927
|
|
@@ -47,7 +50,7 @@ jobs:
|
|
|
47
50
|
# --- Next.js: CVE-2026-64645 (rewrites SSRF) ---
|
|
48
51
|
- name: Build cve-2026-64645 fixture
|
|
49
52
|
working-directory: js-recon-labs/next_js/cve-2026-64645
|
|
50
|
-
run: npm
|
|
53
|
+
run: npm ci && npm run build
|
|
51
54
|
|
|
52
55
|
- name: Start cve-2026-64645 fixture
|
|
53
56
|
working-directory: js-recon-labs/next_js/cve-2026-64645
|
|
@@ -56,7 +59,7 @@ jobs:
|
|
|
56
59
|
# --- Next.js: CVE-2025-55182 (React Flight RCE) ---
|
|
57
60
|
- name: Install cve-2025-55182 fixture dependencies
|
|
58
61
|
working-directory: js-recon-labs/next_js/cve-2025-55182
|
|
59
|
-
run: npm
|
|
62
|
+
run: npm ci
|
|
60
63
|
|
|
61
64
|
- name: Start cve-2025-55182 fixture
|
|
62
65
|
working-directory: js-recon-labs/next_js/cve-2025-55182
|
|
@@ -65,7 +68,7 @@ jobs:
|
|
|
65
68
|
# --- Vite: CVE-2025-30208 (fs.deny double-'?' bypass) ---
|
|
66
69
|
- name: Install cve-2025-30208 fixture dependencies
|
|
67
70
|
working-directory: js-recon-labs/vite/cve-2025-30208
|
|
68
|
-
run: npm
|
|
71
|
+
run: npm ci
|
|
69
72
|
|
|
70
73
|
- name: Start cve-2025-30208 fixture
|
|
71
74
|
working-directory: js-recon-labs/vite/cve-2025-30208
|
|
@@ -74,7 +77,7 @@ jobs:
|
|
|
74
77
|
# --- Vite: CVE-2026-39363 (WebSocket fetchModule bypass) ---
|
|
75
78
|
- name: Install cve-2026-39363 fixture dependencies
|
|
76
79
|
working-directory: js-recon-labs/vite/cve-2026-39363
|
|
77
|
-
run: npm
|
|
80
|
+
run: npm ci
|
|
78
81
|
|
|
79
82
|
- name: Start cve-2026-39363 fixture
|
|
80
83
|
working-directory: js-recon-labs/vite/cve-2026-39363
|
|
@@ -83,7 +86,7 @@ jobs:
|
|
|
83
86
|
# --- Nuxt: CVE-2026-71320 (Server Island RCE) ---
|
|
84
87
|
- name: Build cve-2026-71320 fixture
|
|
85
88
|
working-directory: js-recon-labs/nuxt/cve-2026-71320
|
|
86
|
-
run: npm
|
|
89
|
+
run: npm ci && npm run build
|
|
87
90
|
|
|
88
91
|
- name: Start cve-2026-71320 fixture
|
|
89
92
|
working-directory: js-recon-labs/nuxt/cve-2026-71320
|
|
@@ -92,7 +95,7 @@ jobs:
|
|
|
92
95
|
# --- Nuxt: CVE-2026-71315 (route-rule casing bypass) ---
|
|
93
96
|
- name: Build cve-2026-71315 fixture
|
|
94
97
|
working-directory: js-recon-labs/nuxt/cve-2026-71315
|
|
95
|
-
run: npm
|
|
98
|
+
run: npm ci && npm run build
|
|
96
99
|
|
|
97
100
|
- name: Start cve-2026-71315 fixture
|
|
98
101
|
working-directory: js-recon-labs/nuxt/cve-2026-71315
|
|
@@ -101,7 +104,7 @@ jobs:
|
|
|
101
104
|
# --- Angular: CVE-2026-68945 (HttpTransferCache collision) ---
|
|
102
105
|
- name: Build cve-2026-68945 fixture
|
|
103
106
|
working-directory: js-recon-labs/angular/cve-2026-68945
|
|
104
|
-
run: npm
|
|
107
|
+
run: npm ci && npm run build
|
|
105
108
|
|
|
106
109
|
- name: Start cve-2026-68945 fixture
|
|
107
110
|
working-directory: js-recon-labs/angular/cve-2026-68945
|
|
@@ -153,7 +156,7 @@ jobs:
|
|
|
153
156
|
|
|
154
157
|
- name: Upload exploit results on failure
|
|
155
158
|
if: failure()
|
|
156
|
-
uses: actions/upload-artifact@
|
|
159
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
157
160
|
with:
|
|
158
161
|
name: exploit-results
|
|
159
162
|
path: /tmp/exploit-results/**
|
|
@@ -23,16 +23,19 @@ jobs:
|
|
|
23
23
|
|
|
24
24
|
steps:
|
|
25
25
|
- name: Checkout js-recon
|
|
26
|
-
uses: actions/checkout@
|
|
26
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
27
|
+
with:
|
|
28
|
+
persist-credentials: false
|
|
27
29
|
|
|
28
30
|
- name: Checkout js-recon-labs
|
|
29
|
-
uses: actions/checkout@
|
|
31
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
30
32
|
with:
|
|
33
|
+
persist-credentials: false
|
|
31
34
|
repository: js-recon/js-recon-labs
|
|
32
35
|
path: js-recon-labs
|
|
33
36
|
|
|
34
37
|
- name: Set up Node.js
|
|
35
|
-
uses: actions/setup-node@
|
|
38
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
36
39
|
with:
|
|
37
40
|
node-version: "22"
|
|
38
41
|
|
|
@@ -128,7 +131,7 @@ jobs:
|
|
|
128
131
|
|
|
129
132
|
- name: Upload fingerprint result on failure
|
|
130
133
|
if: failure()
|
|
131
|
-
uses: actions/upload-artifact@
|
|
134
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
132
135
|
with:
|
|
133
136
|
name: fingerprint-result
|
|
134
137
|
path: /tmp/fingerprint-result.json
|
|
@@ -14,7 +14,9 @@ jobs:
|
|
|
14
14
|
plumber:
|
|
15
15
|
runs-on: ubuntu-latest
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
18
|
-
|
|
17
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
18
|
+
with:
|
|
19
|
+
persist-credentials: false
|
|
20
|
+
- uses: getplumber/plumber@e81ed4965fd92e0d2b63e95d399ed0419f5de2fa # v0.4.12, 2026-07-20
|
|
19
21
|
with:
|
|
20
22
|
score-push: true
|
|
@@ -11,7 +11,9 @@ jobs:
|
|
|
11
11
|
permissions:
|
|
12
12
|
pull-requests: write
|
|
13
13
|
steps:
|
|
14
|
-
- uses: actions/checkout@
|
|
14
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
15
|
+
with:
|
|
16
|
+
persist-credentials: false
|
|
15
17
|
- name: Redirect PR to dev
|
|
16
18
|
if: github.head_ref != 'dev' || github.event.pull_request.head.repo.full_name != 'js-recon/js-recon'
|
|
17
19
|
env:
|
|
@@ -45,7 +45,7 @@ jobs:
|
|
|
45
45
|
VERSION: ${{ inputs.version }}
|
|
46
46
|
|
|
47
47
|
- name: Check out homebrew-tap
|
|
48
|
-
uses: actions/checkout@
|
|
48
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
49
49
|
with:
|
|
50
50
|
repository: js-recon/homebrew-tap
|
|
51
51
|
token: ${{ secrets.HOMEBREW_TAP_GH_PAT }}
|
|
@@ -85,9 +85,11 @@ jobs:
|
|
|
85
85
|
contents: read
|
|
86
86
|
packages: write
|
|
87
87
|
steps:
|
|
88
|
-
- uses: actions/checkout@
|
|
88
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
89
|
+
with:
|
|
90
|
+
persist-credentials: false
|
|
89
91
|
- name: Checkout js-recon-rules
|
|
90
|
-
uses: actions/checkout@
|
|
92
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
91
93
|
with:
|
|
92
94
|
repository: js-recon/js-recon-rules
|
|
93
95
|
path: js-recon-rules
|
|
@@ -95,7 +97,7 @@ jobs:
|
|
|
95
97
|
# Dockerfile.w-rules builds from this context and would otherwise bake
|
|
96
98
|
# the writable GHCR credential into an image layer.
|
|
97
99
|
persist-credentials: false
|
|
98
|
-
- uses: docker/login-action@
|
|
100
|
+
- uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
99
101
|
with:
|
|
100
102
|
registry: ghcr.io
|
|
101
103
|
username: ${{ github.actor }}
|
|
@@ -142,13 +144,13 @@ jobs:
|
|
|
142
144
|
contents: read
|
|
143
145
|
steps:
|
|
144
146
|
- name: Checkout js-recon-labs
|
|
145
|
-
uses: actions/checkout@
|
|
147
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
146
148
|
with:
|
|
147
149
|
repository: js-recon/js-recon-labs
|
|
148
150
|
path: js-recon-labs
|
|
149
151
|
persist-credentials: false
|
|
150
152
|
|
|
151
|
-
- uses: actions/setup-node@
|
|
153
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
152
154
|
with:
|
|
153
155
|
node-version: "22"
|
|
154
156
|
|
|
@@ -195,17 +197,17 @@ jobs:
|
|
|
195
197
|
packages: read
|
|
196
198
|
steps:
|
|
197
199
|
- name: Checkout js-recon-labs
|
|
198
|
-
uses: actions/checkout@
|
|
200
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
199
201
|
with:
|
|
200
202
|
repository: js-recon/js-recon-labs
|
|
201
203
|
path: js-recon-labs
|
|
202
204
|
persist-credentials: false
|
|
203
205
|
|
|
204
|
-
- uses: actions/setup-node@
|
|
206
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
205
207
|
with:
|
|
206
208
|
node-version: "22"
|
|
207
209
|
|
|
208
|
-
- uses: docker/login-action@
|
|
210
|
+
- uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
209
211
|
with:
|
|
210
212
|
registry: ghcr.io
|
|
211
213
|
username: ${{ github.actor }}
|
|
@@ -260,20 +262,22 @@ jobs:
|
|
|
260
262
|
packages: read
|
|
261
263
|
steps:
|
|
262
264
|
- name: Checkout js-recon
|
|
263
|
-
uses: actions/checkout@
|
|
265
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
266
|
+
with:
|
|
267
|
+
persist-credentials: false
|
|
264
268
|
|
|
265
269
|
- name: Checkout js-recon-labs
|
|
266
|
-
uses: actions/checkout@
|
|
270
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
267
271
|
with:
|
|
268
272
|
repository: js-recon/js-recon-labs
|
|
269
273
|
path: js-recon-labs
|
|
270
274
|
persist-credentials: false
|
|
271
275
|
|
|
272
|
-
- uses: actions/setup-node@
|
|
276
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
273
277
|
with:
|
|
274
278
|
node-version: "22"
|
|
275
279
|
|
|
276
|
-
- uses: docker/login-action@
|
|
280
|
+
- uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
|
|
277
281
|
with:
|
|
278
282
|
registry: ghcr.io
|
|
279
283
|
username: ${{ github.actor }}
|
|
@@ -329,14 +333,14 @@ jobs:
|
|
|
329
333
|
formula: [js-recon, js-recon-alpha, js-recon-beta]
|
|
330
334
|
steps:
|
|
331
335
|
- name: Checkout js-recon-labs
|
|
332
|
-
uses: actions/checkout@
|
|
336
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
333
337
|
with:
|
|
334
338
|
repository: js-recon/js-recon-labs
|
|
335
339
|
path: js-recon-labs
|
|
336
340
|
persist-credentials: false
|
|
337
341
|
|
|
338
342
|
- name: Checkout js-recon-rules
|
|
339
|
-
uses: actions/checkout@
|
|
343
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
340
344
|
with:
|
|
341
345
|
repository: js-recon/js-recon-rules
|
|
342
346
|
path: js-recon-rules
|
|
@@ -14,7 +14,7 @@ jobs:
|
|
|
14
14
|
version_check:
|
|
15
15
|
runs-on: ubuntu-latest
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
18
18
|
- name: Check version mismatch
|
|
19
19
|
run: |
|
|
20
20
|
echo "[i] Checking if the version in the CHANGELOG.md, package.json, and Github release version matches"
|
|
@@ -42,8 +42,8 @@ jobs:
|
|
|
42
42
|
needs: version_check
|
|
43
43
|
runs-on: ubuntu-latest
|
|
44
44
|
steps:
|
|
45
|
-
- uses: actions/checkout@
|
|
46
|
-
- uses: actions/setup-node@
|
|
45
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
46
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
47
47
|
with:
|
|
48
48
|
node-version: 22
|
|
49
49
|
- run: npm ci
|
|
@@ -54,8 +54,8 @@ jobs:
|
|
|
54
54
|
needs: audit
|
|
55
55
|
runs-on: ubuntu-latest
|
|
56
56
|
steps:
|
|
57
|
-
- uses: actions/checkout@
|
|
58
|
-
- uses: actions/setup-node@
|
|
57
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
58
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
59
59
|
with:
|
|
60
60
|
node-version: 22
|
|
61
61
|
- run: npm ci
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
needs: build
|
|
67
67
|
runs-on: ubuntu-latest
|
|
68
68
|
steps:
|
|
69
|
-
- uses: actions/checkout@
|
|
69
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
70
70
|
- name: Download and verify depx (SHA256-pinned)
|
|
71
71
|
run: |
|
|
72
72
|
set -euo pipefail
|
|
@@ -94,8 +94,8 @@ jobs:
|
|
|
94
94
|
id-token: write
|
|
95
95
|
contents: read
|
|
96
96
|
steps:
|
|
97
|
-
- uses: actions/checkout@
|
|
98
|
-
- uses: actions/setup-node@
|
|
97
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
98
|
+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
99
99
|
with:
|
|
100
100
|
node-version: 22
|
|
101
101
|
registry-url: https://registry.npmjs.org/
|
|
@@ -120,7 +120,7 @@ jobs:
|
|
|
120
120
|
permissions:
|
|
121
121
|
contents: write
|
|
122
122
|
steps:
|
|
123
|
-
- uses: actions/checkout@
|
|
123
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
124
124
|
with:
|
|
125
125
|
fetch-depth: 0
|
|
126
126
|
- name: Configure SSH commit signing
|
|
@@ -15,11 +15,14 @@ jobs:
|
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
17
|
- name: Checkout js-recon
|
|
18
|
-
uses: actions/checkout@
|
|
18
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
19
|
+
with:
|
|
20
|
+
persist-credentials: false
|
|
19
21
|
|
|
20
22
|
- name: Checkout js-recon-labs
|
|
21
|
-
uses: actions/checkout@
|
|
23
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
22
24
|
with:
|
|
25
|
+
persist-credentials: false
|
|
23
26
|
repository: js-recon/js-recon-labs
|
|
24
27
|
path: js-recon-labs
|
|
25
28
|
|
|
@@ -35,7 +38,7 @@ jobs:
|
|
|
35
38
|
git clone --depth 1 --branch "$BRANCH" https://github.com/js-recon/js-recon-rules.git js-recon-rules
|
|
36
39
|
|
|
37
40
|
- name: Set up Node.js
|
|
38
|
-
uses: actions/setup-node@
|
|
41
|
+
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
|
39
42
|
with:
|
|
40
43
|
node-version: "22"
|
|
41
44
|
cache: "npm"
|
|
@@ -80,7 +83,7 @@ jobs:
|
|
|
80
83
|
|
|
81
84
|
- name: Upload analyze.json on failure
|
|
82
85
|
if: failure()
|
|
83
|
-
uses: actions/upload-artifact@
|
|
86
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
84
87
|
with:
|
|
85
88
|
name: analyze-json
|
|
86
89
|
path: output/**/analyze.json
|