xypriss 9.12.44 → 9.12.46
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/dist/cjs/src/middleware/built-in/security/MaliciousUrlScanner.js +68 -21
- package/dist/cjs/src/middleware/built-in/security/MaliciousUrlScanner.js.map +1 -1
- package/dist/cjs/src/server/routing/modules/registry.js +5 -1
- package/dist/cjs/src/server/routing/modules/registry.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/MaliciousUrlScanner.js +68 -21
- package/dist/esm/src/middleware/built-in/security/MaliciousUrlScanner.js.map +1 -1
- package/dist/esm/src/server/routing/modules/registry.js +5 -1
- package/dist/esm/src/server/routing/modules/registry.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/package.json +1 -1
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var strulink = require('strulink');
|
|
4
4
|
|
|
5
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
6
|
+
const HASH_REGEX = /^[0-9a-f]{16,64}$/i;
|
|
7
|
+
const SAFE_PARAM_REGEX = /^[a-zA-Z0-9_\-.~%]+$/;
|
|
5
8
|
class MaliciousUrlScanner {
|
|
6
9
|
/**
|
|
7
10
|
* Middleware for scanning incoming URLs for malicious payloads (XSS, Path Traversal, etc.)
|
|
@@ -25,37 +28,83 @@ class MaliciousUrlScanner {
|
|
|
25
28
|
return (req, res, next) => next?.();
|
|
26
29
|
}
|
|
27
30
|
const mode = scannerConfig.mode || "block";
|
|
28
|
-
const options =
|
|
29
|
-
minScore:
|
|
31
|
+
const options = {
|
|
32
|
+
minScore: 70,
|
|
30
33
|
sensitivity: 1.0,
|
|
34
|
+
enableEntropyAnalysis: false, // Disabled by default to prevent false positives on UUIDs and hash IDs
|
|
35
|
+
...scannerConfig.options,
|
|
31
36
|
advanced: {
|
|
32
37
|
maxEncodingLayers: 3,
|
|
33
|
-
entropyThreshold:
|
|
34
|
-
|
|
38
|
+
entropyThreshold: 5.5,
|
|
39
|
+
...scannerConfig.options?.advanced,
|
|
40
|
+
},
|
|
35
41
|
};
|
|
36
42
|
return async (req, res, next) => {
|
|
37
43
|
try {
|
|
44
|
+
const reqPath = req.path || (req.url ? req.url.split("?")[0] : "");
|
|
45
|
+
// Check excluded paths
|
|
46
|
+
if (scannerConfig.excludePaths && scannerConfig.excludePaths.length > 0) {
|
|
47
|
+
for (const pattern of scannerConfig.excludePaths) {
|
|
48
|
+
if (typeof pattern === "string") {
|
|
49
|
+
if (pattern.endsWith("/**")) {
|
|
50
|
+
const prefix = pattern.slice(0, -3);
|
|
51
|
+
if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
|
|
52
|
+
return next?.();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
else if (pattern.endsWith("/*")) {
|
|
56
|
+
const prefix = pattern.slice(0, -2);
|
|
57
|
+
if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
|
|
58
|
+
return next?.();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (reqPath === pattern || reqPath.startsWith(pattern)) {
|
|
62
|
+
return next?.();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (pattern instanceof RegExp && pattern.test(reqPath)) {
|
|
66
|
+
return next?.();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
38
70
|
// Reconstruct full URL to scan everything including path and query
|
|
39
71
|
const protocol = req.headers["x-forwarded-proto"] || "http";
|
|
40
72
|
const host = req.headers.host || "localhost";
|
|
41
73
|
const fullUrl = `${protocol}://${host}${req.originalUrl || req.url}`;
|
|
42
74
|
const result = await strulink.__strl__.scanUrl(fullUrl, options);
|
|
43
75
|
if (result.isMalicious) {
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
76
|
+
// Filter heuristic false positives on standard UUIDs, hashes, and benign params
|
|
77
|
+
const genuinePatterns = (result.detectedPatterns || []).filter((p) => {
|
|
78
|
+
if (scannerConfig.ignorePatterns?.includes(p.type)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
if (p.type === "encoded_payload" || p.pattern === "high_entropy") {
|
|
82
|
+
const val = p.matchedValue || "";
|
|
83
|
+
if (UUID_REGEX.test(val) || HASH_REGEX.test(val) || SAFE_PARAM_REGEX.test(val)) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
});
|
|
89
|
+
if (genuinePatterns.length > 0) {
|
|
90
|
+
const reasons = genuinePatterns.map((p) => p.type).join(", ");
|
|
91
|
+
const logMessage = `[MaliciousUrlScanner] Detected malicious URL (Score: ${result.score}). Reasons: ${reasons}. URL: ${req.url}`;
|
|
92
|
+
if (logger) {
|
|
93
|
+
logger.warn("security", logMessage);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
console.warn(logMessage);
|
|
97
|
+
}
|
|
98
|
+
if (mode === "block") {
|
|
99
|
+
if (!res.headersSent && !res.writableEnded) {
|
|
100
|
+
res.status(403).json({
|
|
101
|
+
error: "Forbidden",
|
|
102
|
+
code: "EMALICIOUSURL",
|
|
103
|
+
message: "The request was blocked due to suspected malicious payload."
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
59
108
|
}
|
|
60
109
|
}
|
|
61
110
|
next?.();
|
|
@@ -64,8 +113,6 @@ class MaliciousUrlScanner {
|
|
|
64
113
|
if (logger) {
|
|
65
114
|
logger.error("security", "Failed to scan URL for malicious payloads", err);
|
|
66
115
|
}
|
|
67
|
-
// Fail open or fail closed? Usually fail closed for security, but fail open to avoid breaking app if strulink crashes.
|
|
68
|
-
// We'll call next() to fail open.
|
|
69
116
|
next?.();
|
|
70
117
|
}
|
|
71
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":["__strl__"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":["__strl__"],"mappings":";;;;AAMA,MAAM,UAAU,GAAG,iEAAiE;AACpF,MAAM,UAAU,GAAG,oBAAoB;AACvC,MAAM,gBAAgB,GAAG,sBAAsB;MAElC,mBAAmB,CAAA;AAC5B;;;;;;AAMG;AACH,IAAA,OAAO,UAAU,CACb,MAAA,GAA8C,KAAK,EACnD,MAAe,EAAA;;QAGf,IAAI,aAAa,GAA8B,EAAE;AAEjD,QAAA,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM;AAAE,gBAAA,OAAO,CAAC,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAK,IAAI,IAAI;YAC9F,aAAa,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;QACpD;aAAO;YACH,aAAa,GAAG,MAAM;QAC1B;AAEA,QAAA,IAAI,aAAa,CAAC,OAAO,KAAK,KAAK,EAAE;AACjC,YAAA,OAAO,CAAC,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAK,IAAI,IAAI;QACrF;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,IAAI,OAAO;AAC1C,QAAA,MAAM,OAAO,GAAG;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,WAAW,EAAE,GAAG;YAChB,qBAAqB,EAAE,KAAK;YAC5B,GAAG,aAAa,CAAC,OAAO;AACxB,YAAA,QAAQ,EAAE;AACN,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,gBAAgB,EAAE,GAAG;AACrB,gBAAA,GAAI,aAAa,CAAC,OAAe,EAAE,QAAQ;AAC9C,aAAA;SACJ;QAED,OAAO,OAAO,GAAkB,EAAE,GAAmB,EAAE,IAAmB,KAAI;AAC1E,YAAA,IAAI;AACA,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;AAGlE,gBAAA,IAAI,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AACrE,oBAAA,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,YAAY,EAAE;AAC9C,wBAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AAC7B,4BAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gCACzB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,gCAAA,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;oCACxD,OAAO,IAAI,IAAI;gCACnB;4BACJ;AAAO,iCAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gCAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,gCAAA,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;oCACxD,OAAO,IAAI,IAAI;gCACnB;4BACJ;iCAAO,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gCAC3D,OAAO,IAAI,IAAI;4BACnB;wBACJ;6BAAO,IAAI,OAAO,YAAY,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;4BAC3D,OAAO,IAAI,IAAI;wBACnB;oBACJ;gBACJ;;gBAGA,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,MAAM;gBAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW;AAC5C,gBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,QAAQ,MAAM,IAAI,CAAA,EAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,EAAE;gBAEpE,MAAM,MAAM,GAAG,MAAMA,iBAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,OAAc,CAAC;AAE9D,gBAAA,IAAI,MAAM,CAAC,WAAW,EAAE;;AAEpB,oBAAA,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAM,KAAI;wBACtE,IAAI,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAChD,4BAAA,OAAO,KAAK;wBAChB;AACA,wBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,OAAO,KAAK,cAAc,EAAE;AAC9D,4BAAA,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,IAAI,EAAE;4BAChC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5E,gCAAA,OAAO,KAAK;4BAChB;wBACJ;AACA,wBAAA,OAAO,IAAI;AACf,oBAAA,CAAC,CAAC;AAEF,oBAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC5B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAClE,wBAAA,MAAM,UAAU,GAAG,CAAA,qDAAA,EAAwD,MAAM,CAAC,KAAK,CAAA,YAAA,EAAe,OAAO,CAAA,OAAA,EAAU,GAAG,CAAC,GAAG,EAAE;wBAEhI,IAAI,MAAM,EAAE;AACR,4BAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;wBACvC;6BAAO;AACH,4BAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;wBAC5B;AAEA,wBAAA,IAAI,IAAI,KAAK,OAAO,EAAE;4BAClB,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxC,gCAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACjB,oCAAA,KAAK,EAAE,WAAW;AAClB,oCAAA,IAAI,EAAE,eAAe;AACrB,oCAAA,OAAO,EAAE;AACZ,iCAAA,CAAC;4BACN;4BACA;wBACJ;oBACJ;gBACJ;gBAEA,IAAI,IAAI;YACZ;YAAE,OAAO,GAAG,EAAE;gBACV,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,2CAA2C,EAAE,GAAY,CAAC;gBACvF;gBACA,IAAI,IAAI;YACZ;AACJ,QAAA,CAAC;IACL;AACH;;;;"}
|
|
@@ -121,8 +121,12 @@ function mountRouter(mountPath, subRouter, internalState) {
|
|
|
121
121
|
handler: entry.handler,
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
|
+
// NOTE: Do NOT inject `path: normalizedMountPath` here for unscoped/route-level middleware
|
|
125
|
+
// or guards (e.g. guards from router.group() or RichRouteOptions).
|
|
126
|
+
// Injecting a strict path prefix here causes HttpServer to filter out the middleware
|
|
127
|
+
// on parameterized/nested routes (e.g. /client-api/groups/:groupId).
|
|
128
|
+
// Ref: https://github.com/Nehonix-Team/XyPriss/issues/40
|
|
124
129
|
return {
|
|
125
|
-
path: normalizedMountPath,
|
|
126
130
|
handler: entry.handler,
|
|
127
131
|
};
|
|
128
132
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":["path","normalizePath","isValidPath","resolveCondition","middleware","createGuardMiddleware","compileRoutePattern","createCacheMiddleware","wrapWithLifecycle","nextRouteId","detectStatusCodes","joinPaths"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":["path","normalizePath","isValidPath","resolveCondition","middleware","createGuardMiddleware","compileRoutePattern","createCacheMiddleware","wrapWithLifecycle","nextRouteId","detectStatusCodes","joinPaths"],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { __strl__ } from 'strulink';
|
|
2
2
|
|
|
3
|
+
const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
4
|
+
const HASH_REGEX = /^[0-9a-f]{16,64}$/i;
|
|
5
|
+
const SAFE_PARAM_REGEX = /^[a-zA-Z0-9_\-.~%]+$/;
|
|
3
6
|
class MaliciousUrlScanner {
|
|
4
7
|
/**
|
|
5
8
|
* Middleware for scanning incoming URLs for malicious payloads (XSS, Path Traversal, etc.)
|
|
@@ -23,37 +26,83 @@ class MaliciousUrlScanner {
|
|
|
23
26
|
return (req, res, next) => next?.();
|
|
24
27
|
}
|
|
25
28
|
const mode = scannerConfig.mode || "block";
|
|
26
|
-
const options =
|
|
27
|
-
minScore:
|
|
29
|
+
const options = {
|
|
30
|
+
minScore: 70,
|
|
28
31
|
sensitivity: 1.0,
|
|
32
|
+
enableEntropyAnalysis: false, // Disabled by default to prevent false positives on UUIDs and hash IDs
|
|
33
|
+
...scannerConfig.options,
|
|
29
34
|
advanced: {
|
|
30
35
|
maxEncodingLayers: 3,
|
|
31
|
-
entropyThreshold:
|
|
32
|
-
|
|
36
|
+
entropyThreshold: 5.5,
|
|
37
|
+
...scannerConfig.options?.advanced,
|
|
38
|
+
},
|
|
33
39
|
};
|
|
34
40
|
return async (req, res, next) => {
|
|
35
41
|
try {
|
|
42
|
+
const reqPath = req.path || (req.url ? req.url.split("?")[0] : "");
|
|
43
|
+
// Check excluded paths
|
|
44
|
+
if (scannerConfig.excludePaths && scannerConfig.excludePaths.length > 0) {
|
|
45
|
+
for (const pattern of scannerConfig.excludePaths) {
|
|
46
|
+
if (typeof pattern === "string") {
|
|
47
|
+
if (pattern.endsWith("/**")) {
|
|
48
|
+
const prefix = pattern.slice(0, -3);
|
|
49
|
+
if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
|
|
50
|
+
return next?.();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else if (pattern.endsWith("/*")) {
|
|
54
|
+
const prefix = pattern.slice(0, -2);
|
|
55
|
+
if (reqPath === prefix || reqPath.startsWith(prefix + "/")) {
|
|
56
|
+
return next?.();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (reqPath === pattern || reqPath.startsWith(pattern)) {
|
|
60
|
+
return next?.();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (pattern instanceof RegExp && pattern.test(reqPath)) {
|
|
64
|
+
return next?.();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
36
68
|
// Reconstruct full URL to scan everything including path and query
|
|
37
69
|
const protocol = req.headers["x-forwarded-proto"] || "http";
|
|
38
70
|
const host = req.headers.host || "localhost";
|
|
39
71
|
const fullUrl = `${protocol}://${host}${req.originalUrl || req.url}`;
|
|
40
72
|
const result = await __strl__.scanUrl(fullUrl, options);
|
|
41
73
|
if (result.isMalicious) {
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
74
|
+
// Filter heuristic false positives on standard UUIDs, hashes, and benign params
|
|
75
|
+
const genuinePatterns = (result.detectedPatterns || []).filter((p) => {
|
|
76
|
+
if (scannerConfig.ignorePatterns?.includes(p.type)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (p.type === "encoded_payload" || p.pattern === "high_entropy") {
|
|
80
|
+
const val = p.matchedValue || "";
|
|
81
|
+
if (UUID_REGEX.test(val) || HASH_REGEX.test(val) || SAFE_PARAM_REGEX.test(val)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
});
|
|
87
|
+
if (genuinePatterns.length > 0) {
|
|
88
|
+
const reasons = genuinePatterns.map((p) => p.type).join(", ");
|
|
89
|
+
const logMessage = `[MaliciousUrlScanner] Detected malicious URL (Score: ${result.score}). Reasons: ${reasons}. URL: ${req.url}`;
|
|
90
|
+
if (logger) {
|
|
91
|
+
logger.warn("security", logMessage);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
console.warn(logMessage);
|
|
95
|
+
}
|
|
96
|
+
if (mode === "block") {
|
|
97
|
+
if (!res.headersSent && !res.writableEnded) {
|
|
98
|
+
res.status(403).json({
|
|
99
|
+
error: "Forbidden",
|
|
100
|
+
code: "EMALICIOUSURL",
|
|
101
|
+
message: "The request was blocked due to suspected malicious payload."
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
57
106
|
}
|
|
58
107
|
}
|
|
59
108
|
next?.();
|
|
@@ -62,8 +111,6 @@ class MaliciousUrlScanner {
|
|
|
62
111
|
if (logger) {
|
|
63
112
|
logger.error("security", "Failed to scan URL for malicious payloads", err);
|
|
64
113
|
}
|
|
65
|
-
// Fail open or fail closed? Usually fail closed for security, but fail open to avoid breaking app if strulink crashes.
|
|
66
|
-
// We'll call next() to fail open.
|
|
67
114
|
next?.();
|
|
68
115
|
}
|
|
69
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"MaliciousUrlScanner.js","sources":["../../../../../../src/middleware/built-in/security/MaliciousUrlScanner.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -119,8 +119,12 @@ function mountRouter(mountPath, subRouter, internalState) {
|
|
|
119
119
|
handler: entry.handler,
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
|
+
// NOTE: Do NOT inject `path: normalizedMountPath` here for unscoped/route-level middleware
|
|
123
|
+
// or guards (e.g. guards from router.group() or RichRouteOptions).
|
|
124
|
+
// Injecting a strict path prefix here causes HttpServer to filter out the middleware
|
|
125
|
+
// on parameterized/nested routes (e.g. /client-api/groups/:groupId).
|
|
126
|
+
// Ref: https://github.com/Nehonix-Team/XyPriss/issues/40
|
|
122
127
|
return {
|
|
123
|
-
path: normalizedMountPath,
|
|
124
128
|
handler: entry.handler,
|
|
125
129
|
};
|
|
126
130
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sources":["../../../../../../src/server/routing/modules/registry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1604,6 +1604,15 @@ interface MaliciousUrlScannerConfig {
|
|
|
1604
1604
|
* - "log": Allow the request but log a security warning
|
|
1605
1605
|
*/
|
|
1606
1606
|
mode?: "block" | "log";
|
|
1607
|
+
/**
|
|
1608
|
+
* Paths or regex patterns to exclude from malicious URL scanning
|
|
1609
|
+
* e.g. ["/static/**", "/tmp-storage/**", /^\/api\/presence\//]
|
|
1610
|
+
*/
|
|
1611
|
+
excludePaths?: (string | RegExp)[];
|
|
1612
|
+
/**
|
|
1613
|
+
* Pattern types to ignore (e.g. ["encoded_payload", "suspicious_param_name"])
|
|
1614
|
+
*/
|
|
1615
|
+
ignorePatterns?: string[];
|
|
1607
1616
|
/** Custom options passed directly to [StruLink](https://github.com/Nehonix-Team/strulink)'s `scanUrl` method */
|
|
1608
1617
|
options?: MaliciousPatternOptions;
|
|
1609
1618
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xypriss",
|
|
3
|
-
"version": "9.12.
|
|
3
|
+
"version": "9.12.46",
|
|
4
4
|
"description": "XyPriss is a high-performance, TypeScript-first hyper-system web framework powered by a native Go core (XHSC), featuring robust multi-tenant sandboxing, secure native file streaming, and zero Express dependencies.",
|
|
5
5
|
"author": {
|
|
6
6
|
"DEV.to": "https://dev.to/nehonix",
|