xypriss 2.2.6 → 2.3.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.
Files changed (78) hide show
  1. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +9 -5
  2. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  3. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +9 -5
  4. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  5. package/dist/cjs/mods/security/src/components/cache/index.js +9 -5
  6. package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
  7. package/dist/cjs/mods/security/src/components/fortified-function/index.js +8 -4
  8. package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -1
  9. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +9 -5
  10. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  11. package/dist/cjs/mods/security/src/index.js +9 -5
  12. package/dist/cjs/mods/security/src/index.js.map +1 -1
  13. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +87 -30
  14. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -1
  15. package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +320 -0
  16. package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -0
  17. package/dist/cjs/src/middleware/built-in/security/CommandInjectionDetector.js +215 -0
  18. package/dist/cjs/src/middleware/built-in/security/CommandInjectionDetector.js.map +1 -0
  19. package/dist/cjs/src/middleware/built-in/security/LDAPInjectionDetector.js +96 -0
  20. package/dist/cjs/src/middleware/built-in/security/LDAPInjectionDetector.js.map +1 -0
  21. package/dist/cjs/src/middleware/built-in/security/PathTraversalDetector.js +212 -0
  22. package/dist/cjs/src/middleware/built-in/security/PathTraversalDetector.js.map +1 -0
  23. package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js +335 -0
  24. package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -0
  25. package/dist/cjs/src/middleware/built-in/security/XXEProtector.js +175 -0
  26. package/dist/cjs/src/middleware/built-in/security/XXEProtector.js.map +1 -0
  27. package/dist/cjs/src/middleware/security-middleware.js +249 -132
  28. package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
  29. package/dist/cjs/src/plugins/modules/index.js +8 -4
  30. package/dist/cjs/src/plugins/modules/index.js.map +1 -1
  31. package/dist/cjs/src/server/FastServer.js +49 -32
  32. package/dist/cjs/src/server/FastServer.js.map +1 -1
  33. package/dist/cjs/src/server/ServerFactory.js +34 -1
  34. package/dist/cjs/src/server/ServerFactory.js.map +1 -1
  35. package/dist/cjs/src/server/components/multi-server/MultiServerManager.js +11 -2
  36. package/dist/cjs/src/server/components/multi-server/MultiServerManager.js.map +1 -1
  37. package/dist/cjs/src/server/const/default.js +15 -1
  38. package/dist/cjs/src/server/const/default.js.map +1 -1
  39. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +9 -5
  40. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  41. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +9 -5
  42. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  43. package/dist/esm/mods/security/src/components/cache/index.js +9 -5
  44. package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
  45. package/dist/esm/mods/security/src/components/fortified-function/index.js +8 -4
  46. package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
  47. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +9 -5
  48. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  49. package/dist/esm/mods/security/src/index.js +9 -5
  50. package/dist/esm/mods/security/src/index.js.map +1 -1
  51. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +75 -18
  52. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -1
  53. package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +318 -0
  54. package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -0
  55. package/dist/esm/src/middleware/built-in/security/CommandInjectionDetector.js +213 -0
  56. package/dist/esm/src/middleware/built-in/security/CommandInjectionDetector.js.map +1 -0
  57. package/dist/esm/src/middleware/built-in/security/LDAPInjectionDetector.js +94 -0
  58. package/dist/esm/src/middleware/built-in/security/LDAPInjectionDetector.js.map +1 -0
  59. package/dist/esm/src/middleware/built-in/security/PathTraversalDetector.js +210 -0
  60. package/dist/esm/src/middleware/built-in/security/PathTraversalDetector.js.map +1 -0
  61. package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js +333 -0
  62. package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -0
  63. package/dist/esm/src/middleware/built-in/security/XXEProtector.js +173 -0
  64. package/dist/esm/src/middleware/built-in/security/XXEProtector.js.map +1 -0
  65. package/dist/esm/src/middleware/security-middleware.js +248 -131
  66. package/dist/esm/src/middleware/security-middleware.js.map +1 -1
  67. package/dist/esm/src/plugins/modules/index.js +8 -4
  68. package/dist/esm/src/plugins/modules/index.js.map +1 -1
  69. package/dist/esm/src/server/FastServer.js +50 -33
  70. package/dist/esm/src/server/FastServer.js.map +1 -1
  71. package/dist/esm/src/server/ServerFactory.js +34 -1
  72. package/dist/esm/src/server/ServerFactory.js.map +1 -1
  73. package/dist/esm/src/server/components/multi-server/MultiServerManager.js +11 -2
  74. package/dist/esm/src/server/components/multi-server/MultiServerManager.js.map +1 -1
  75. package/dist/esm/src/server/const/default.js +15 -1
  76. package/dist/esm/src/server/const/default.js.map +1 -1
  77. package/dist/index.d.ts +895 -39
  78. package/package.json +2 -2
@@ -0,0 +1,175 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * XXE (XML External Entity) Protection Module
5
+ *
6
+ * Detects and prevents XXE attacks in XML parsing
7
+ * Uses libxmljs2 for secure XML parsing
8
+ */
9
+ class XXEProtector {
10
+ constructor(config = {}) {
11
+ // Dangerous XXE patterns
12
+ this.dangerousPatterns = [
13
+ // External entity declarations
14
+ /<!ENTITY\s+\w+\s+SYSTEM\s+/gi,
15
+ /<!ENTITY\s+\w+\s+PUBLIC\s+/gi,
16
+ // Parameter entities
17
+ /<!ENTITY\s+%\s+\w+/gi,
18
+ // External DTD
19
+ /<!DOCTYPE\s+\w+\s+SYSTEM\s+/gi,
20
+ /<!DOCTYPE\s+\w+\s+PUBLIC\s+/gi,
21
+ // File protocol
22
+ /SYSTEM\s+["']file:\/\//gi,
23
+ // HTTP/HTTPS external resources
24
+ /SYSTEM\s+["'](https?|ftp):\/\//gi,
25
+ // PHP wrappers (common in XXE)
26
+ /php:\/\//gi,
27
+ /expect:\/\//gi,
28
+ // Data URIs
29
+ /data:\/\//gi,
30
+ ];
31
+ this.config = {
32
+ enabled: config.enabled ?? true,
33
+ strictMode: config.strictMode ?? true,
34
+ logAttempts: config.logAttempts ?? true,
35
+ blockOnDetection: config.blockOnDetection ?? true,
36
+ falsePositiveThreshold: config.falsePositiveThreshold ?? 0.5,
37
+ customPatterns: config.customPatterns ?? [],
38
+ allowDTD: config.allowDTD ?? false,
39
+ allowExternalEntities: config.allowExternalEntities ?? false,
40
+ maxEntityExpansions: config.maxEntityExpansions ?? 0,
41
+ };
42
+ }
43
+ /**
44
+ * Detect XXE attempts in XML content
45
+ */
46
+ detect(xmlContent) {
47
+ if (!xmlContent || typeof xmlContent !== 'string') {
48
+ return {
49
+ isMalicious: false,
50
+ confidence: 0,
51
+ detectedPatterns: [],
52
+ riskLevel: 'LOW',
53
+ };
54
+ }
55
+ const result = {
56
+ isMalicious: false,
57
+ confidence: 0,
58
+ detectedPatterns: [],
59
+ sanitizedInput: xmlContent,
60
+ riskLevel: 'LOW',
61
+ };
62
+ // Check for dangerous patterns
63
+ let riskScore = 0;
64
+ this.dangerousPatterns.forEach((pattern, index) => {
65
+ const matches = xmlContent.match(pattern);
66
+ if (matches) {
67
+ const patternName = this.getPatternName(index);
68
+ result.detectedPatterns.push(`${patternName}: ${matches.length} occurrence(s)`);
69
+ riskScore += 0.7;
70
+ }
71
+ });
72
+ // Check for DTD if not allowed
73
+ if (!this.config.allowDTD && /<!DOCTYPE/gi.test(xmlContent)) {
74
+ result.detectedPatterns.push('DTD declaration (not allowed)');
75
+ riskScore += 0.5;
76
+ }
77
+ // Check for entity declarations
78
+ if (!this.config.allowExternalEntities && /<!ENTITY/gi.test(xmlContent)) {
79
+ result.detectedPatterns.push('Entity declaration (not allowed)');
80
+ riskScore += 0.6;
81
+ }
82
+ // Calculate confidence
83
+ result.confidence = Math.min(riskScore, 1.0);
84
+ // Determine risk level
85
+ if (result.confidence >= 0.8) {
86
+ result.riskLevel = 'CRITICAL';
87
+ result.isMalicious = true;
88
+ }
89
+ else if (result.confidence >= this.config.falsePositiveThreshold) {
90
+ result.riskLevel = 'HIGH';
91
+ result.isMalicious = true;
92
+ }
93
+ else if (result.confidence >= 0.3) {
94
+ result.riskLevel = 'MEDIUM';
95
+ result.isMalicious = this.config.strictMode;
96
+ }
97
+ // Sanitize XML
98
+ if (result.confidence >= 0.3) {
99
+ result.sanitizedInput = this.sanitizeXML(xmlContent);
100
+ }
101
+ // Log attempts
102
+ if (this.config.logAttempts && result.confidence >= 0.5) {
103
+ this.logAttempt(result);
104
+ }
105
+ return result;
106
+ }
107
+ /**
108
+ * Sanitize XML by removing dangerous constructs
109
+ */
110
+ sanitizeXML(xml) {
111
+ let sanitized = xml;
112
+ // Remove DOCTYPE declarations
113
+ sanitized = sanitized.replace(/<!DOCTYPE[^>]*>/gi, '');
114
+ // Remove ENTITY declarations
115
+ sanitized = sanitized.replace(/<!ENTITY[^>]*>/gi, '');
116
+ // Remove SYSTEM references
117
+ sanitized = sanitized.replace(/SYSTEM\s+["'][^"']*["']/gi, '');
118
+ // Remove PUBLIC references
119
+ sanitized = sanitized.replace(/PUBLIC\s+["'][^"']*["']/gi, '');
120
+ return sanitized;
121
+ }
122
+ /**
123
+ * Safe XML parsing helper (returns parsed object or null)
124
+ * Note: In production, use a library like 'libxmljs2' with secure defaults
125
+ */
126
+ safeParseXML(xmlContent) {
127
+ const detection = this.detect(xmlContent);
128
+ if (detection.isMalicious) {
129
+ if (this.config.blockOnDetection) {
130
+ throw new Error(`XXE attack detected: ${detection.detectedPatterns.join(', ')}`);
131
+ }
132
+ return null;
133
+ }
134
+ // In production, use a secure XML parser here
135
+ // Example with libxmljs2:
136
+ // const libxmljs = require('libxmljs2');
137
+ // return libxmljs.parseXml(detection.sanitizedInput, {
138
+ // noent: false, // Disable entity substitution
139
+ // dtdload: false, // Disable DTD loading
140
+ // dtdvalid: false, // Disable DTD validation
141
+ // nonet: true, // Disable network access
142
+ // });
143
+ return { warning: 'Use a secure XML parser library in production' };
144
+ }
145
+ getPatternName(index) {
146
+ const names = [
147
+ 'External SYSTEM entity',
148
+ 'External PUBLIC entity',
149
+ 'Parameter entity',
150
+ 'DOCTYPE SYSTEM',
151
+ 'DOCTYPE PUBLIC',
152
+ 'File protocol',
153
+ 'HTTP/HTTPS external resource',
154
+ 'PHP wrapper',
155
+ 'Data URI',
156
+ ];
157
+ return names[index] || `Pattern ${index}`;
158
+ }
159
+ logAttempt(result) {
160
+ console.warn('[XXE] Attack detected:', {
161
+ timestamp: new Date().toISOString(),
162
+ confidence: result.confidence,
163
+ patterns: result.detectedPatterns,
164
+ });
165
+ }
166
+ updateConfig(newConfig) {
167
+ this.config = { ...this.config, ...newConfig };
168
+ }
169
+ getConfig() {
170
+ return { ...this.config };
171
+ }
172
+ }
173
+
174
+ module.exports = XXEProtector;
175
+ //# sourceMappingURL=XXEProtector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XXEProtector.js","sources":["../../../../../../src/middleware/built-in/security/XXEProtector.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}