@panguard-ai/threat-cloud 0.2.1 → 0.2.2
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/admin-dashboard.d.ts +11 -0
- package/dist/admin-dashboard.d.ts.map +1 -0
- package/dist/admin-dashboard.js +482 -0
- package/dist/admin-dashboard.js.map +1 -0
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/database.d.ts +22 -3
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +380 -65
- package/dist/database.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/llm-reviewer.d.ts.map +1 -1
- package/dist/llm-reviewer.js +1 -3
- package/dist/llm-reviewer.js.map +1 -1
- package/dist/server.d.ts +15 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +239 -18
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +35 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/database.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { ThreatCloudDB } from './database.js';
|
|
|
3
3
|
export { LLMReviewer } from './llm-reviewer.js';
|
|
4
4
|
export { BackupManager } from './backup.js';
|
|
5
5
|
export type { BackupResult } from './backup.js';
|
|
6
|
-
export type { AnonymizedThreatData, ThreatCloudRule, ThreatStats, ServerConfig, ApiResponse, ATRProposal, SkillThreatSubmission, } from './types.js';
|
|
6
|
+
export type { AnonymizedThreatData, ThreatCloudRule, ThreatStats, ServerConfig, ApiResponse, ATRProposal, SkillThreatSubmission, SkillBlacklistEntry, } from './types.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-reviewer.d.ts","sourceRoot":"","sources":["../src/llm-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM;IAM7D,sEAAsE;IACtE,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAmClD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"llm-reviewer.d.ts","sourceRoot":"","sources":["../src/llm-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAgBnD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,EAAE,MAAM;IAM7D,sEAAsE;IACtE,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAmClD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyExB;;;OAGG;IACH,OAAO,CAAC,YAAY;CA0CrB"}
|
package/dist/llm-reviewer.js
CHANGED
|
@@ -111,9 +111,7 @@ Output ONLY valid JSON (no markdown, no explanation outside the JSON):
|
|
|
111
111
|
const requestBody = JSON.stringify({
|
|
112
112
|
model: this.model,
|
|
113
113
|
max_tokens: 1024,
|
|
114
|
-
messages: [
|
|
115
|
-
{ role: 'user', content: prompt },
|
|
116
|
-
],
|
|
114
|
+
messages: [{ role: 'user', content: prompt }],
|
|
117
115
|
});
|
|
118
116
|
const options = {
|
|
119
117
|
hostname: 'api.anthropic.com',
|
package/dist/llm-reviewer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-reviewer.js","sourceRoot":"","sources":["../src/llm-reviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAWpC,gDAAgD;AAChD,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,+BAA+B;AAC/B,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD;;;GAGG;AACH,MAAM,OAAO,WAAW;IACL,MAAM,CAAS;IACf,EAAE,CAAgB;IAClB,KAAK,CAAS;IAE/B,YAAY,MAAc,EAAE,EAAiB,EAAE,KAAc;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,aAAa,CAAC;IACtC,CAAC;IAED,sEAAsE;IACtE,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,WAAmB;QAEnB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAEnD,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACH,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,yBAAyB,WAAW,KAAK,GAAG,EAAE,CAAC,CAAC;YAC9D,wBAAwB;YACxB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,QAAQ,EAAE,KAAK;gBACf,iBAAiB,EAAE,MAAM;gBACzB,aAAa,EAAE,CAAC;gBAChB,SAAS,EAAE,sBAAsB,GAAG,EAAE;aACvC,CAAC,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5C,4BAA4B;QAC5B,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAE7D,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;YAC9D,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,WAAmB;QAC3C,OAAO;;;;;EAKT,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;gJA0BmI,CAAC;IAC/I,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,MAAc;QACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;gBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE
|
|
1
|
+
{"version":3,"file":"llm-reviewer.js","sourceRoot":"","sources":["../src/llm-reviewer.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* - GET /api/yara-rules Fetch YARA rules (?since= filter)
|
|
15
15
|
* - GET /api/feeds/ip-blocklist IP blocklist feed (text/plain, ?minReputation=)
|
|
16
16
|
* - GET /api/feeds/domain-blocklist Domain blocklist feed (text/plain, ?minReputation=)
|
|
17
|
+
* - GET /api/skill-blacklist Community skill blacklist (aggregated threats)
|
|
17
18
|
* - GET /health Health check
|
|
18
19
|
*
|
|
19
20
|
* @module @panguard-ai/threat-cloud/server
|
|
@@ -40,7 +41,7 @@ export declare class ThreatCloudServer {
|
|
|
40
41
|
private handleRequest;
|
|
41
42
|
/** POST /api/threats - Upload anonymized threat data (single or batch) */
|
|
42
43
|
private handlePostThreat;
|
|
43
|
-
/** GET /api/rules?since=<ISO
|
|
44
|
+
/** GET /api/rules?since=<ISO>&category=<cat>&severity=<sev>&source=<src> */
|
|
44
45
|
private handleGetRules;
|
|
45
46
|
/** POST /api/rules - Publish rules (single or batch) */
|
|
46
47
|
private handlePostRule;
|
|
@@ -64,8 +65,16 @@ export declare class ThreatCloudServer {
|
|
|
64
65
|
private handlePostSkillWhitelist;
|
|
65
66
|
/** GET /api/skill-whitelist - Fetch community-confirmed safe skills */
|
|
66
67
|
private handleGetSkillWhitelist;
|
|
68
|
+
/**
|
|
69
|
+
* GET /api/skill-blacklist?minReports=3&minAvgRisk=70
|
|
70
|
+
* Fetch community skill blacklist (aggregated from skill threat reports)
|
|
71
|
+
* 取得社群技能黑名單(從技能威脅回報聚合)
|
|
72
|
+
*/
|
|
73
|
+
private handleGetSkillBlacklist;
|
|
67
74
|
/** Anonymize IP by zeroing last octet / 匿名化 IP */
|
|
68
75
|
private anonymizeIP;
|
|
76
|
+
/** Serve admin dashboard HTML (requires admin key or returns login page) */
|
|
77
|
+
private serveAdminDashboard;
|
|
69
78
|
/** Check admin API key for write-protected endpoints / 檢查管理員 API 金鑰 */
|
|
70
79
|
private checkAdminAuth;
|
|
71
80
|
/** Rate limit check / 速率限制檢查 */
|
|
@@ -74,5 +83,10 @@ export declare class ThreatCloudServer {
|
|
|
74
83
|
private readBody;
|
|
75
84
|
/** Send JSON response / 發送 JSON 回應 */
|
|
76
85
|
private sendJson;
|
|
86
|
+
/**
|
|
87
|
+
* Seed rules from bundled config/ directory on first startup.
|
|
88
|
+
* Looks for config/ in cwd, relative to this file, or common Docker paths.
|
|
89
|
+
*/
|
|
90
|
+
private seedFromBundled;
|
|
77
91
|
}
|
|
78
92
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,YAAY,CAAC;AAoBpB;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,UAAU,CAA0C;IAE5D,kDAAkD;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAkB;gBAEnD,MAAM,EAAE,YAAY;IAQhC,+BAA+B;IACzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmD5B,8BAA8B;IACxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAeb,aAAa;IA8K3B,0EAA0E;YAC5D,gBAAgB;IAuC9B,4EAA4E;IAC5E,OAAO,CAAC,cAAc;IAkBtB,wDAAwD;YAC1C,cAAc;IAoB5B,qBAAqB;IACrB,OAAO,CAAC,cAAc;IAMtB,uEAAuE;YACzD,qBAAqB;IA4CnC,8DAA8D;YAChD,qBAAqB;IAiBnC,+DAA+D;YACjD,qBAAqB;IA+BnC,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB;IAQzB,yDAAyD;IACzD,OAAO,CAAC,kBAAkB;IAQ1B,oFAAoF;IACpF,OAAO,CAAC,oBAAoB;IAW5B,4FAA4F;IAC5F,OAAO,CAAC,wBAAwB;IAWhC,qEAAqE;YACvD,wBAAwB;IAqBtC,uEAAuE;IACvE,OAAO,CAAC,uBAAuB;IAK/B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAU/B,kDAAkD;IAClD,OAAO,CAAC,WAAW;IAiBnB,4EAA4E;IAC5E,OAAO,CAAC,mBAAmB;IAQ3B,uEAAuE;IACvE,OAAO,CAAC,cAAc;IAOtB,gCAAgC;IAChC,OAAO,CAAC,cAAc;IAWtB,wDAAwD;IACxD,OAAO,CAAC,QAAQ;IAoBhB,sCAAsC;IACtC,OAAO,CAAC,QAAQ;IAKhB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAgHxB"}
|
package/dist/server.js
CHANGED
|
@@ -14,17 +14,26 @@
|
|
|
14
14
|
* - GET /api/yara-rules Fetch YARA rules (?since= filter)
|
|
15
15
|
* - GET /api/feeds/ip-blocklist IP blocklist feed (text/plain, ?minReputation=)
|
|
16
16
|
* - GET /api/feeds/domain-blocklist Domain blocklist feed (text/plain, ?minReputation=)
|
|
17
|
+
* - GET /api/skill-blacklist Community skill blacklist (aggregated threats)
|
|
17
18
|
* - GET /health Health check
|
|
18
19
|
*
|
|
19
20
|
* @module @panguard-ai/threat-cloud/server
|
|
20
21
|
*/
|
|
21
22
|
import { createServer } from 'node:http';
|
|
23
|
+
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
24
|
+
import { join, basename, relative, dirname } from 'node:path';
|
|
25
|
+
import { fileURLToPath } from 'node:url';
|
|
22
26
|
import { ThreatCloudDB } from './database.js';
|
|
23
27
|
import { LLMReviewer } from './llm-reviewer.js';
|
|
28
|
+
import { getAdminHTML } from './admin-dashboard.js';
|
|
24
29
|
/** Simple structured logger for threat-cloud (no core dependency) */
|
|
25
30
|
const log = {
|
|
26
|
-
info: (msg) => {
|
|
27
|
-
|
|
31
|
+
info: (msg) => {
|
|
32
|
+
process.stdout.write(`[threat-cloud] ${msg}\n`);
|
|
33
|
+
},
|
|
34
|
+
error: (msg, err) => {
|
|
35
|
+
process.stderr.write(`[threat-cloud] ERROR ${msg}${err ? `: ${err instanceof Error ? err.message : String(err)}` : ''}\n`);
|
|
36
|
+
},
|
|
28
37
|
};
|
|
29
38
|
/**
|
|
30
39
|
* Threat Cloud API Server
|
|
@@ -57,6 +66,31 @@ export class ThreatCloudServer {
|
|
|
57
66
|
if (this.llmReviewer) {
|
|
58
67
|
log.info('LLM reviewer enabled for ATR proposal review');
|
|
59
68
|
}
|
|
69
|
+
// Auto-seed rules from bundled config/ if DB is empty (first startup)
|
|
70
|
+
const stats = this.db.getStats();
|
|
71
|
+
if (stats.totalRules === 0) {
|
|
72
|
+
log.info('First startup detected — seeding bundled rules...');
|
|
73
|
+
try {
|
|
74
|
+
const seeded = this.seedFromBundled();
|
|
75
|
+
log.info(`Seeded ${seeded} rules into database`);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
log.error('Rule seeding failed', err);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
log.info(`Database: ${stats.totalRules} rules, ${stats.totalThreats} threats`);
|
|
83
|
+
}
|
|
84
|
+
// Backfill classification for existing unclassified rules (one-time on startup)
|
|
85
|
+
try {
|
|
86
|
+
const backfilled = this.db.backfillClassification();
|
|
87
|
+
if (backfilled > 0) {
|
|
88
|
+
log.info(`Backfilled classification for ${backfilled} rules`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
log.error('Classification backfill failed', err);
|
|
93
|
+
}
|
|
60
94
|
// Start promotion cron (every 15 minutes)
|
|
61
95
|
this.promotionTimer = setInterval(() => {
|
|
62
96
|
try {
|
|
@@ -112,7 +146,8 @@ export class ThreatCloudServer {
|
|
|
112
146
|
}
|
|
113
147
|
}
|
|
114
148
|
// CORS — restrict to known origins
|
|
115
|
-
const allowedOrigins = (process.env['CORS_ALLOWED_ORIGINS'] ??
|
|
149
|
+
const allowedOrigins = (process.env['CORS_ALLOWED_ORIGINS'] ??
|
|
150
|
+
'https://panguard.ai,https://www.panguard.ai,https://tc.panguard.ai,https://get.panguard.ai,https://docs.panguard.ai').split(',');
|
|
116
151
|
const origin = req.headers.origin ?? '';
|
|
117
152
|
if (allowedOrigins.includes(origin)) {
|
|
118
153
|
res.setHeader('Access-Control-Allow-Origin', origin);
|
|
@@ -127,7 +162,13 @@ export class ThreatCloudServer {
|
|
|
127
162
|
try {
|
|
128
163
|
switch (pathname) {
|
|
129
164
|
case '/health':
|
|
130
|
-
this.sendJson(res, 200, {
|
|
165
|
+
this.sendJson(res, 200, {
|
|
166
|
+
ok: true,
|
|
167
|
+
data: { status: 'healthy', uptime: process.uptime() },
|
|
168
|
+
});
|
|
169
|
+
break;
|
|
170
|
+
case '/admin':
|
|
171
|
+
this.serveAdminDashboard(req, res);
|
|
131
172
|
break;
|
|
132
173
|
case '/api/threats':
|
|
133
174
|
if (req.method === 'POST') {
|
|
@@ -143,7 +184,10 @@ export class ThreatCloudServer {
|
|
|
143
184
|
}
|
|
144
185
|
else if (req.method === 'POST') {
|
|
145
186
|
if (!this.checkAdminAuth(req)) {
|
|
146
|
-
this.sendJson(res, 403, {
|
|
187
|
+
this.sendJson(res, 403, {
|
|
188
|
+
ok: false,
|
|
189
|
+
error: 'Admin API key required for rule publishing',
|
|
190
|
+
});
|
|
147
191
|
break;
|
|
148
192
|
}
|
|
149
193
|
await this.handlePostRule(req, res);
|
|
@@ -227,6 +271,14 @@ export class ThreatCloudServer {
|
|
|
227
271
|
this.sendJson(res, 405, { ok: false, error: 'Method not allowed' });
|
|
228
272
|
}
|
|
229
273
|
break;
|
|
274
|
+
case '/api/skill-blacklist':
|
|
275
|
+
if (req.method === 'GET') {
|
|
276
|
+
this.handleGetSkillBlacklist(url, res);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
this.sendJson(res, 405, { ok: false, error: 'Method not allowed' });
|
|
280
|
+
}
|
|
281
|
+
break;
|
|
230
282
|
default:
|
|
231
283
|
this.sendJson(res, 404, { ok: false, error: 'Not found' });
|
|
232
284
|
}
|
|
@@ -246,23 +298,41 @@ export class ThreatCloudServer {
|
|
|
246
298
|
: [parsed];
|
|
247
299
|
for (const data of events) {
|
|
248
300
|
// Validate required fields
|
|
249
|
-
if (!data.attackSourceIP ||
|
|
250
|
-
|
|
301
|
+
if (!data.attackSourceIP ||
|
|
302
|
+
!data.attackType ||
|
|
303
|
+
!data.mitreTechnique ||
|
|
304
|
+
!data.sigmaRuleMatched ||
|
|
305
|
+
!data.timestamp ||
|
|
306
|
+
!data.region) {
|
|
307
|
+
this.sendJson(res, 400, {
|
|
308
|
+
ok: false,
|
|
309
|
+
error: 'Missing required fields: attackSourceIP, attackType, mitreTechnique, sigmaRuleMatched, timestamp, region',
|
|
310
|
+
});
|
|
251
311
|
return;
|
|
252
312
|
}
|
|
253
313
|
// Anonymize IP further (zero last octet if not already)
|
|
254
314
|
data.attackSourceIP = this.anonymizeIP(data.attackSourceIP);
|
|
255
315
|
this.db.insertThreat(data);
|
|
256
316
|
}
|
|
257
|
-
this.sendJson(res, 201, {
|
|
317
|
+
this.sendJson(res, 201, {
|
|
318
|
+
ok: true,
|
|
319
|
+
data: { message: 'Threat data received', count: events.length },
|
|
320
|
+
});
|
|
258
321
|
}
|
|
259
|
-
/** GET /api/rules?since=<ISO
|
|
322
|
+
/** GET /api/rules?since=<ISO>&category=<cat>&severity=<sev>&source=<src> */
|
|
260
323
|
handleGetRules(url, res) {
|
|
261
324
|
const params = new URL(url, `http://localhost:${this.config.port}`).searchParams;
|
|
262
325
|
const since = params.get('since');
|
|
326
|
+
const filters = {
|
|
327
|
+
category: params.get('category') ?? undefined,
|
|
328
|
+
severity: params.get('severity') ?? undefined,
|
|
329
|
+
source: params.get('source') ?? undefined,
|
|
330
|
+
};
|
|
263
331
|
// Cache for 1 hour — rules rarely change, let CDN absorb traffic
|
|
264
332
|
res.setHeader('Cache-Control', 'public, max-age=3600, s-maxage=3600');
|
|
265
|
-
const rules = since
|
|
333
|
+
const rules = since
|
|
334
|
+
? this.db.getRulesSince(since, filters)
|
|
335
|
+
: this.db.getAllRules(5000, filters);
|
|
266
336
|
this.sendJson(res, 200, rules);
|
|
267
337
|
}
|
|
268
338
|
/** POST /api/rules - Publish rules (single or batch) */
|
|
@@ -270,9 +340,7 @@ export class ThreatCloudServer {
|
|
|
270
340
|
const body = await this.readBody(req);
|
|
271
341
|
const parsed = JSON.parse(body);
|
|
272
342
|
// Support both single object and batch { rules: [...] } format
|
|
273
|
-
const rules = 'rules' in parsed && Array.isArray(parsed.rules)
|
|
274
|
-
? parsed.rules
|
|
275
|
-
: [parsed];
|
|
343
|
+
const rules = 'rules' in parsed && Array.isArray(parsed.rules) ? parsed.rules : [parsed];
|
|
276
344
|
const now = new Date().toISOString();
|
|
277
345
|
let count = 0;
|
|
278
346
|
for (const rule of rules) {
|
|
@@ -296,7 +364,10 @@ export class ThreatCloudServer {
|
|
|
296
364
|
const data = JSON.parse(body);
|
|
297
365
|
const clientId = req.headers['x-panguard-client-id'] ?? undefined;
|
|
298
366
|
if (!data.patternHash || !data.ruleContent) {
|
|
299
|
-
this.sendJson(res, 400, {
|
|
367
|
+
this.sendJson(res, 400, {
|
|
368
|
+
ok: false,
|
|
369
|
+
error: 'Missing required fields: patternHash, ruleContent',
|
|
370
|
+
});
|
|
300
371
|
return;
|
|
301
372
|
}
|
|
302
373
|
// Check if a proposal with the same patternHash already exists
|
|
@@ -304,7 +375,10 @@ export class ThreatCloudServer {
|
|
|
304
375
|
const existing = proposals.find((p) => p['pattern_hash'] === data.patternHash);
|
|
305
376
|
if (existing) {
|
|
306
377
|
this.db.confirmATRProposal(data.patternHash);
|
|
307
|
-
this.sendJson(res, 200, {
|
|
378
|
+
this.sendJson(res, 200, {
|
|
379
|
+
ok: true,
|
|
380
|
+
data: { message: 'Proposal confirmed', patternHash: data.patternHash },
|
|
381
|
+
});
|
|
308
382
|
}
|
|
309
383
|
else {
|
|
310
384
|
const proposal = {
|
|
@@ -318,7 +392,10 @@ export class ThreatCloudServer {
|
|
|
318
392
|
log.error(`LLM review failed for ${data.patternHash}`, err);
|
|
319
393
|
});
|
|
320
394
|
}
|
|
321
|
-
this.sendJson(res, 201, {
|
|
395
|
+
this.sendJson(res, 201, {
|
|
396
|
+
ok: true,
|
|
397
|
+
data: { message: 'Proposal submitted', patternHash: data.patternHash },
|
|
398
|
+
});
|
|
322
399
|
}
|
|
323
400
|
}
|
|
324
401
|
/** POST /api/atr-feedback - Submit feedback on an ATR rule */
|
|
@@ -327,7 +404,10 @@ export class ThreatCloudServer {
|
|
|
327
404
|
const data = JSON.parse(body);
|
|
328
405
|
const clientId = req.headers['x-panguard-client-id'] ?? undefined;
|
|
329
406
|
if (!data.ruleId || typeof data.isTruePositive !== 'boolean') {
|
|
330
|
-
this.sendJson(res, 400, {
|
|
407
|
+
this.sendJson(res, 400, {
|
|
408
|
+
ok: false,
|
|
409
|
+
error: 'Missing required fields: ruleId (string), isTruePositive (boolean)',
|
|
410
|
+
});
|
|
331
411
|
return;
|
|
332
412
|
}
|
|
333
413
|
this.db.insertATRFeedback(data.ruleId, data.isTruePositive, clientId);
|
|
@@ -339,7 +419,10 @@ export class ThreatCloudServer {
|
|
|
339
419
|
const data = JSON.parse(body);
|
|
340
420
|
const clientId = req.headers['x-panguard-client-id'] ?? undefined;
|
|
341
421
|
if (!data.skillHash || !data.skillName) {
|
|
342
|
-
this.sendJson(res, 400, {
|
|
422
|
+
this.sendJson(res, 400, {
|
|
423
|
+
ok: false,
|
|
424
|
+
error: 'Missing required fields: skillHash, skillName',
|
|
425
|
+
});
|
|
343
426
|
return;
|
|
344
427
|
}
|
|
345
428
|
if (typeof data.riskScore !== 'number' || data.riskScore < 0 || data.riskScore > 100) {
|
|
@@ -414,6 +497,19 @@ export class ThreatCloudServer {
|
|
|
414
497
|
const whitelist = this.db.getSkillWhitelist();
|
|
415
498
|
this.sendJson(res, 200, { ok: true, data: whitelist });
|
|
416
499
|
}
|
|
500
|
+
/**
|
|
501
|
+
* GET /api/skill-blacklist?minReports=3&minAvgRisk=70
|
|
502
|
+
* Fetch community skill blacklist (aggregated from skill threat reports)
|
|
503
|
+
* 取得社群技能黑名單(從技能威脅回報聚合)
|
|
504
|
+
*/
|
|
505
|
+
handleGetSkillBlacklist(url, res) {
|
|
506
|
+
const params = new URL(url, `http://localhost:${this.config.port}`).searchParams;
|
|
507
|
+
const minReports = Number(params.get('minReports') ?? '3');
|
|
508
|
+
const minAvgRisk = Number(params.get('minAvgRisk') ?? '70');
|
|
509
|
+
res.setHeader('Cache-Control', 'public, max-age=1800, s-maxage=1800');
|
|
510
|
+
const blacklist = this.db.getSkillBlacklist(minReports, minAvgRisk);
|
|
511
|
+
this.sendJson(res, 200, { ok: true, data: blacklist });
|
|
512
|
+
}
|
|
417
513
|
/** Anonymize IP by zeroing last octet / 匿名化 IP */
|
|
418
514
|
anonymizeIP(ip) {
|
|
419
515
|
if (ip.includes('.')) {
|
|
@@ -431,6 +527,14 @@ export class ThreatCloudServer {
|
|
|
431
527
|
}
|
|
432
528
|
return ip;
|
|
433
529
|
}
|
|
530
|
+
/** Serve admin dashboard HTML (requires admin key or returns login page) */
|
|
531
|
+
serveAdminDashboard(_req, res) {
|
|
532
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
|
533
|
+
res.setHeader('Cache-Control', 'no-store');
|
|
534
|
+
res.setHeader('X-Robots-Tag', 'noindex, nofollow');
|
|
535
|
+
res.writeHead(200);
|
|
536
|
+
res.end(getAdminHTML());
|
|
537
|
+
}
|
|
434
538
|
/** Check admin API key for write-protected endpoints / 檢查管理員 API 金鑰 */
|
|
435
539
|
checkAdminAuth(req) {
|
|
436
540
|
if (!this.config.adminApiKey)
|
|
@@ -474,5 +578,122 @@ export class ThreatCloudServer {
|
|
|
474
578
|
res.writeHead(status);
|
|
475
579
|
res.end(JSON.stringify(data));
|
|
476
580
|
}
|
|
581
|
+
/**
|
|
582
|
+
* Seed rules from bundled config/ directory on first startup.
|
|
583
|
+
* Looks for config/ in cwd, relative to this file, or common Docker paths.
|
|
584
|
+
*/
|
|
585
|
+
seedFromBundled() {
|
|
586
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
587
|
+
const candidates = [
|
|
588
|
+
join(process.cwd(), 'config'),
|
|
589
|
+
join(__dirname, '..', '..', '..', 'config'), // monorepo: packages/threat-cloud/dist -> config
|
|
590
|
+
join(__dirname, '..', '..', '..', '..', 'config'), // deeper nesting
|
|
591
|
+
'/app/config', // Docker standard
|
|
592
|
+
];
|
|
593
|
+
const configDir = candidates.find((d) => {
|
|
594
|
+
try {
|
|
595
|
+
return statSync(d).isDirectory();
|
|
596
|
+
}
|
|
597
|
+
catch {
|
|
598
|
+
return false;
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
if (!configDir) {
|
|
602
|
+
log.info(`No config/ directory found (searched: ${candidates.join(', ')})`);
|
|
603
|
+
return 0;
|
|
604
|
+
}
|
|
605
|
+
log.info(`Using config directory: ${configDir}`);
|
|
606
|
+
const now = new Date().toISOString();
|
|
607
|
+
let seeded = 0;
|
|
608
|
+
const collectFiles = (dir, extensions) => {
|
|
609
|
+
const results = [];
|
|
610
|
+
try {
|
|
611
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
612
|
+
const fullPath = join(dir, entry.name);
|
|
613
|
+
if (entry.isDirectory()) {
|
|
614
|
+
results.push(...collectFiles(fullPath, extensions));
|
|
615
|
+
}
|
|
616
|
+
else if (extensions.some((ext) => entry.name.endsWith(ext))) {
|
|
617
|
+
results.push(fullPath);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
catch (err) {
|
|
622
|
+
log.error(`Cannot read directory ${dir}`, err);
|
|
623
|
+
}
|
|
624
|
+
return results;
|
|
625
|
+
};
|
|
626
|
+
// Sigma rules
|
|
627
|
+
const sigmaDir = join(configDir, 'sigma-rules');
|
|
628
|
+
try {
|
|
629
|
+
const files = collectFiles(sigmaDir, ['.yml', '.yaml']);
|
|
630
|
+
for (const file of files) {
|
|
631
|
+
const content = readFileSync(file, 'utf-8');
|
|
632
|
+
const ruleId = `sigma:${relative(sigmaDir, file).replace(/\//g, ':')}`;
|
|
633
|
+
this.db.upsertRule({ ruleId, ruleContent: content, publishedAt: now, source: 'sigma' });
|
|
634
|
+
seeded++;
|
|
635
|
+
}
|
|
636
|
+
log.info(` Sigma: ${files.length} files`);
|
|
637
|
+
}
|
|
638
|
+
catch (err) {
|
|
639
|
+
log.error('Sigma seeding failed', err);
|
|
640
|
+
}
|
|
641
|
+
// YARA rules (split multi-rule files)
|
|
642
|
+
const yaraDir = join(configDir, 'yara-rules');
|
|
643
|
+
try {
|
|
644
|
+
const files = collectFiles(yaraDir, ['.yar', '.yara']);
|
|
645
|
+
for (const file of files) {
|
|
646
|
+
const content = readFileSync(file, 'utf-8');
|
|
647
|
+
const ruleMatches = content.match(/rule\s+\w+/g);
|
|
648
|
+
if (ruleMatches && ruleMatches.length > 1) {
|
|
649
|
+
for (const match of ruleMatches) {
|
|
650
|
+
const ruleName = match.replace('rule ', '');
|
|
651
|
+
const ruleId = `yara:${basename(file, '.yar').replace('.yara', '')}:${ruleName}`;
|
|
652
|
+
this.db.upsertRule({ ruleId, ruleContent: content, publishedAt: now, source: 'yara' });
|
|
653
|
+
seeded++;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
const ruleId = `yara:${relative(yaraDir, file).replace(/\//g, ':')}`;
|
|
658
|
+
this.db.upsertRule({ ruleId, ruleContent: content, publishedAt: now, source: 'yara' });
|
|
659
|
+
seeded++;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
log.info(` YARA: ${files.length} files`);
|
|
663
|
+
}
|
|
664
|
+
catch (err) {
|
|
665
|
+
log.error('YARA seeding failed', err);
|
|
666
|
+
}
|
|
667
|
+
// ATR rules
|
|
668
|
+
const atrCandidates = [
|
|
669
|
+
join(process.cwd(), 'node_modules', 'agent-threat-rules', 'rules'),
|
|
670
|
+
join(__dirname, '..', '..', 'atr', 'rules'),
|
|
671
|
+
join(__dirname, '..', '..', '..', 'packages', 'atr', 'rules'),
|
|
672
|
+
];
|
|
673
|
+
const atrDir = atrCandidates.find((d) => {
|
|
674
|
+
try {
|
|
675
|
+
return statSync(d).isDirectory();
|
|
676
|
+
}
|
|
677
|
+
catch {
|
|
678
|
+
return false;
|
|
679
|
+
}
|
|
680
|
+
});
|
|
681
|
+
if (atrDir) {
|
|
682
|
+
try {
|
|
683
|
+
const files = collectFiles(atrDir, ['.yaml', '.yml']);
|
|
684
|
+
for (const file of files) {
|
|
685
|
+
const content = readFileSync(file, 'utf-8');
|
|
686
|
+
const ruleId = `atr:${relative(atrDir, file).replace(/\//g, ':')}`;
|
|
687
|
+
this.db.upsertRule({ ruleId, ruleContent: content, publishedAt: now, source: 'atr' });
|
|
688
|
+
seeded++;
|
|
689
|
+
}
|
|
690
|
+
log.info(` ATR: ${files.length} files`);
|
|
691
|
+
}
|
|
692
|
+
catch (err) {
|
|
693
|
+
log.error('ATR seeding failed', err);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
return seeded;
|
|
697
|
+
}
|
|
477
698
|
}
|
|
478
699
|
//# sourceMappingURL=server.js.map
|