@panguard-ai/panguard-trap 1.6.1 → 1.7.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threat-cloud-uploader.d.ts","sourceRoot":"","sources":["../src/threat-cloud-uploader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"threat-cloud-uploader.d.ts","sourceRoot":"","sources":["../src/threat-cloud-uploader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkFnD;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAA+C;IAEjE,qDAAqD;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,4DAA4D;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IACzC,4CAA4C;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;gBAEpC,QAAQ,EAAE,MAAM;IAa5B;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAetC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA0C9B;;;OAGG;IACH,IAAI,IAAI,IAAI;IAOZ,wCAAwC;IACxC,eAAe,IAAI,MAAM;IAQzB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAqBnB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;CAiBlB"}
|
|
@@ -13,6 +13,77 @@
|
|
|
13
13
|
import { createHash } from 'node:crypto';
|
|
14
14
|
import { createLogger } from '@panguard-ai/core';
|
|
15
15
|
const logger = createLogger('panguard-trap:cloud-uploader');
|
|
16
|
+
/**
|
|
17
|
+
* Validate that an upload endpoint is safe (HTTPS + not a private/reserved host).
|
|
18
|
+
* Prevents SSRF: trap intel must only ever leave to the real Threat Cloud,
|
|
19
|
+
* never to a loopback/private/link-local/reserved address an attacker could
|
|
20
|
+
* coerce via a poisoned config.
|
|
21
|
+
* 驗證上傳端點安全(HTTPS + 非私有/保留位址),防止 SSRF。
|
|
22
|
+
*
|
|
23
|
+
* @throws Error when the scheme is not https or the host is a private/reserved IP.
|
|
24
|
+
*/
|
|
25
|
+
function assertSafeEndpoint(endpoint) {
|
|
26
|
+
let url;
|
|
27
|
+
try {
|
|
28
|
+
url = new URL(endpoint);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
throw new Error(`Invalid Threat Cloud endpoint: ${endpoint}`);
|
|
32
|
+
}
|
|
33
|
+
if (url.protocol !== 'https:') {
|
|
34
|
+
throw new Error(`Threat Cloud endpoint must use https, got: ${url.protocol}`);
|
|
35
|
+
}
|
|
36
|
+
if (isPrivateOrReservedHost(url.hostname)) {
|
|
37
|
+
throw new Error(`Threat Cloud endpoint host is private or reserved: ${url.hostname}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* True when a hostname is a loopback, private, link-local, or otherwise
|
|
42
|
+
* reserved address that the uploader must never POST to.
|
|
43
|
+
*/
|
|
44
|
+
function isPrivateOrReservedHost(hostname) {
|
|
45
|
+
const host = hostname.replace(/^\[|\]$/g, '').toLowerCase();
|
|
46
|
+
if (host === 'localhost' || host.endsWith('.localhost'))
|
|
47
|
+
return true;
|
|
48
|
+
// IPv6 loopback / unspecified / unique-local (fc00::/7) / link-local (fe80::/10)
|
|
49
|
+
if (host.includes(':')) {
|
|
50
|
+
if (host === '::1' || host === '::')
|
|
51
|
+
return true;
|
|
52
|
+
if (host.startsWith('fc') || host.startsWith('fd'))
|
|
53
|
+
return true;
|
|
54
|
+
if (host.startsWith('fe8') || host.startsWith('fe9') || host.startsWith('fea') || host.startsWith('feb')) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
// IPv4 dotted-quad ranges
|
|
60
|
+
const m = host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
61
|
+
if (!m)
|
|
62
|
+
return false;
|
|
63
|
+
const a = Number(m[1]);
|
|
64
|
+
const b = Number(m[2]);
|
|
65
|
+
const c = Number(m[3]);
|
|
66
|
+
const d = Number(m[4]);
|
|
67
|
+
if ([a, b, c, d].some((o) => o > 255))
|
|
68
|
+
return true; // malformed -> reject
|
|
69
|
+
if (a === 0)
|
|
70
|
+
return true; // 0.0.0.0/8 "this network"
|
|
71
|
+
if (a === 10)
|
|
72
|
+
return true; // 10.0.0.0/8
|
|
73
|
+
if (a === 127)
|
|
74
|
+
return true; // 127.0.0.0/8 loopback
|
|
75
|
+
if (a === 169 && b === 254)
|
|
76
|
+
return true; // 169.254.0.0/16 link-local
|
|
77
|
+
if (a === 172 && b >= 16 && b <= 31)
|
|
78
|
+
return true; // 172.16.0.0/12
|
|
79
|
+
if (a === 192 && b === 168)
|
|
80
|
+
return true; // 192.168.0.0/16
|
|
81
|
+
if (a === 100 && b >= 64 && b <= 127)
|
|
82
|
+
return true; // 100.64.0.0/10 CGNAT
|
|
83
|
+
if (a >= 224)
|
|
84
|
+
return true; // 224.0.0.0/4 multicast + 240.0.0.0/4 reserved
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
16
87
|
/**
|
|
17
88
|
* Uploads TrapIntelligence to the Threat Cloud server in batches.
|
|
18
89
|
* 批次上傳蜜罐情報至 Threat Cloud。
|
|
@@ -28,7 +99,9 @@ export class ThreatCloudUploader {
|
|
|
28
99
|
/** Periodic flush interval (ms) / 定期上傳間隔 */
|
|
29
100
|
static FLUSH_INTERVAL = 30_000;
|
|
30
101
|
constructor(endpoint) {
|
|
31
|
-
|
|
102
|
+
const normalized = endpoint.replace(/\/+$/, '');
|
|
103
|
+
assertSafeEndpoint(normalized);
|
|
104
|
+
this.endpoint = normalized;
|
|
32
105
|
this.flushTimer = setInterval(() => {
|
|
33
106
|
void this.flush();
|
|
34
107
|
}, ThreatCloudUploader.FLUSH_INTERVAL);
|
|
@@ -68,6 +141,9 @@ export class ThreatCloudUploader {
|
|
|
68
141
|
method: 'POST',
|
|
69
142
|
headers: { 'Content-Type': 'application/json' },
|
|
70
143
|
body: payload,
|
|
144
|
+
// Refuse redirects: a redirect could re-point the upload at a
|
|
145
|
+
// private/internal host that bypassed the constructor's check.
|
|
146
|
+
redirect: 'error',
|
|
71
147
|
signal: AbortSignal.timeout(10_000),
|
|
72
148
|
});
|
|
73
149
|
if (!res.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threat-cloud-uploader.js","sourceRoot":"","sources":["../src/threat-cloud-uploader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,MAAM,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"threat-cloud-uploader.js","sourceRoot":"","sources":["../src/threat-cloud-uploader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panguard-ai/panguard-trap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,11 +33,12 @@
|
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
35
35
|
"package.json",
|
|
36
|
-
"README.md"
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE"
|
|
37
38
|
],
|
|
38
39
|
"dependencies": {
|
|
39
40
|
"ssh2": "^1.16.0",
|
|
40
|
-
"@panguard-ai/core": "1.
|
|
41
|
+
"@panguard-ai/core": "1.7.0"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
43
44
|
"@types/node": "^22.14.0",
|