hackmyagent 0.10.0 → 0.11.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.
- package/README.md +111 -257
- package/dist/arp/index.d.ts +5 -1
- package/dist/arp/index.d.ts.map +1 -1
- package/dist/arp/index.js +38 -1
- package/dist/arp/index.js.map +1 -1
- package/dist/arp/monitors/skill-capability-monitor.d.ts +119 -0
- package/dist/arp/monitors/skill-capability-monitor.d.ts.map +1 -0
- package/dist/arp/monitors/skill-capability-monitor.js +258 -0
- package/dist/arp/monitors/skill-capability-monitor.js.map +1 -0
- package/dist/arp/telemetry/forwarder.d.ts +62 -0
- package/dist/arp/telemetry/forwarder.d.ts.map +1 -0
- package/dist/arp/telemetry/forwarder.js +106 -0
- package/dist/arp/telemetry/forwarder.js.map +1 -0
- package/dist/arp/telemetry/gtin.d.ts +87 -0
- package/dist/arp/telemetry/gtin.d.ts.map +1 -0
- package/dist/arp/telemetry/gtin.js +239 -0
- package/dist/arp/telemetry/gtin.js.map +1 -0
- package/dist/arp/telemetry/index.d.ts +6 -0
- package/dist/arp/telemetry/index.d.ts.map +1 -0
- package/dist/arp/telemetry/index.js +17 -0
- package/dist/arp/telemetry/index.js.map +1 -0
- package/dist/arp/types.d.ts +10 -0
- package/dist/arp/types.d.ts.map +1 -1
- package/dist/attack/index.d.ts +1 -1
- package/dist/attack/index.d.ts.map +1 -1
- package/dist/attack/index.js +5 -1
- package/dist/attack/index.js.map +1 -1
- package/dist/attack/payloads/context-window.d.ts +7 -0
- package/dist/attack/payloads/context-window.d.ts.map +1 -0
- package/dist/attack/payloads/context-window.js +110 -0
- package/dist/attack/payloads/context-window.js.map +1 -0
- package/dist/attack/payloads/index.d.ts +5 -1
- package/dist/attack/payloads/index.d.ts.map +1 -1
- package/dist/attack/payloads/index.js +17 -1
- package/dist/attack/payloads/index.js.map +1 -1
- package/dist/attack/payloads/memory-weaponization.d.ts +7 -0
- package/dist/attack/payloads/memory-weaponization.d.ts.map +1 -0
- package/dist/attack/payloads/memory-weaponization.js +110 -0
- package/dist/attack/payloads/memory-weaponization.js.map +1 -0
- package/dist/attack/payloads/supply-chain.d.ts +7 -0
- package/dist/attack/payloads/supply-chain.d.ts.map +1 -0
- package/dist/attack/payloads/supply-chain.js +110 -0
- package/dist/attack/payloads/supply-chain.js.map +1 -0
- package/dist/attack/payloads/tool-shadow.d.ts +8 -0
- package/dist/attack/payloads/tool-shadow.d.ts.map +1 -0
- package/dist/attack/payloads/tool-shadow.js +209 -0
- package/dist/attack/payloads/tool-shadow.js.map +1 -0
- package/dist/attack/scanner.d.ts.map +1 -1
- package/dist/attack/scanner.js +4 -0
- package/dist/attack/scanner.js.map +1 -1
- package/dist/attack/types.d.ts +1 -1
- package/dist/attack/types.d.ts.map +1 -1
- package/dist/attack/types.js +20 -0
- package/dist/attack/types.js.map +1 -1
- package/dist/checker/index.d.ts +2 -0
- package/dist/checker/index.d.ts.map +1 -1
- package/dist/checker/index.js +8 -1
- package/dist/checker/index.js.map +1 -1
- package/dist/checker/skill-dependency-graph.d.ts +55 -0
- package/dist/checker/skill-dependency-graph.d.ts.map +1 -0
- package/dist/checker/skill-dependency-graph.js +288 -0
- package/dist/checker/skill-dependency-graph.js.map +1 -0
- package/dist/cli.js +481 -66
- package/dist/cli.js.map +1 -1
- package/dist/hardening/index.d.ts +5 -0
- package/dist/hardening/index.d.ts.map +1 -1
- package/dist/hardening/index.js +11 -1
- package/dist/hardening/index.js.map +1 -1
- package/dist/hardening/scanner.d.ts +40 -0
- package/dist/hardening/scanner.d.ts.map +1 -1
- package/dist/hardening/scanner.js +988 -11
- package/dist/hardening/scanner.js.map +1 -1
- package/dist/hardening/security-check.d.ts +2 -0
- package/dist/hardening/security-check.d.ts.map +1 -1
- package/dist/hardening/skill-capability-validator.d.ts +31 -0
- package/dist/hardening/skill-capability-validator.d.ts.map +1 -0
- package/dist/hardening/skill-capability-validator.js +237 -0
- package/dist/hardening/skill-capability-validator.js.map +1 -0
- package/dist/hardening/skill-context.d.ts +22 -0
- package/dist/hardening/skill-context.d.ts.map +1 -0
- package/dist/hardening/skill-context.js +127 -0
- package/dist/hardening/skill-context.js.map +1 -0
- package/dist/hardening/taxonomy.d.ts +17 -0
- package/dist/hardening/taxonomy.d.ts.map +1 -0
- package/dist/hardening/taxonomy.js +152 -0
- package/dist/hardening/taxonomy.js.map +1 -0
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -3
- package/dist/index.js.map +1 -1
- package/dist/plugins/credvault.js +2 -2
- package/dist/plugins/credvault.js.map +1 -1
- package/dist/plugins/secretless.d.ts +15 -0
- package/dist/plugins/secretless.d.ts.map +1 -0
- package/dist/plugins/secretless.js +199 -0
- package/dist/plugins/secretless.js.map +1 -0
- package/dist/plugins/signcrypt.js +2 -2
- package/dist/plugins/signcrypt.js.map +1 -1
- package/dist/plugins/skillguard.js +2 -2
- package/dist/plugins/skillguard.js.map +1 -1
- package/dist/registry/client.d.ts +1 -1
- package/dist/registry/client.d.ts.map +1 -1
- package/dist/registry/client.js +4 -1
- package/dist/registry/client.js.map +1 -1
- package/dist/registry/publish.d.ts.map +1 -1
- package/dist/registry/publish.js +7 -1
- package/dist/registry/publish.js.map +1 -1
- package/dist/resolve-mcp.d.ts +21 -0
- package/dist/resolve-mcp.d.ts.map +1 -0
- package/dist/resolve-mcp.js +42 -0
- package/dist/resolve-mcp.js.map +1 -0
- package/dist/scanner/external-scanner.d.ts.map +1 -1
- package/dist/scanner/external-scanner.js +48 -14
- package/dist/scanner/external-scanner.js.map +1 -1
- package/dist/scanner/types.d.ts +1 -0
- package/dist/scanner/types.d.ts.map +1 -1
- package/dist/soul/scanner.d.ts.map +1 -1
- package/dist/soul/scanner.js +2 -1
- package/dist/soul/scanner.js.map +1 -1
- package/dist/telemetry/contribute.d.ts +60 -0
- package/dist/telemetry/contribute.d.ts.map +1 -0
- package/dist/telemetry/contribute.js +169 -0
- package/dist/telemetry/contribute.js.map +1 -0
- package/dist/telemetry/index.d.ts +6 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +18 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/opt-in.d.ts +46 -0
- package/dist/telemetry/opt-in.d.ts.map +1 -0
- package/dist/telemetry/opt-in.js +220 -0
- package/dist/telemetry/opt-in.js.map +1 -0
- package/package.json +9 -3
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GTIN Event Forwarder
|
|
4
|
+
*
|
|
5
|
+
* Subscribes to ARP events and forwards anomalous ones to the
|
|
6
|
+
* OpenA2A Registry for community threat intelligence. Events are
|
|
7
|
+
* batched internally and submitted individually (the API accepts
|
|
8
|
+
* one event at a time).
|
|
9
|
+
*
|
|
10
|
+
* Non-blocking: network failures are logged as warnings and never
|
|
11
|
+
* affect ARP monitoring.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.GTINForwarder = void 0;
|
|
15
|
+
const gtin_1 = require("./gtin");
|
|
16
|
+
/**
|
|
17
|
+
* GTIN Event Forwarder
|
|
18
|
+
*
|
|
19
|
+
* Accumulates anomalous events and flushes them to the registry
|
|
20
|
+
* every 30 seconds (or on explicit flush/shutdown).
|
|
21
|
+
*/
|
|
22
|
+
class GTINForwarder {
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.queue = [];
|
|
25
|
+
this.flushTimer = null;
|
|
26
|
+
this.stopped = false;
|
|
27
|
+
/** Batch interval in milliseconds (30 seconds) */
|
|
28
|
+
this.batchIntervalMs = 30000;
|
|
29
|
+
this.config = config;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Start the forwarder's batch flush timer.
|
|
33
|
+
* Called automatically when the first event is queued, or can be called explicitly.
|
|
34
|
+
*/
|
|
35
|
+
start() {
|
|
36
|
+
if (this.flushTimer || this.stopped)
|
|
37
|
+
return;
|
|
38
|
+
this.flushTimer = setInterval(() => {
|
|
39
|
+
this.flush().catch(() => {
|
|
40
|
+
// Non-blocking: swallow flush errors
|
|
41
|
+
});
|
|
42
|
+
}, this.batchIntervalMs);
|
|
43
|
+
// Allow the timer to not prevent process exit
|
|
44
|
+
if (this.flushTimer && typeof this.flushTimer === 'object' && 'unref' in this.flushTimer) {
|
|
45
|
+
this.flushTimer.unref();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Handle an incoming ARP event.
|
|
50
|
+
*
|
|
51
|
+
* If GTIN is enabled and the event is anomalous, it is queued for
|
|
52
|
+
* submission. Normal events are silently ignored.
|
|
53
|
+
*/
|
|
54
|
+
onEvent(event) {
|
|
55
|
+
if (!this.config.enabled || this.stopped)
|
|
56
|
+
return;
|
|
57
|
+
if (!(0, gtin_1.isAnomalousEvent)(event))
|
|
58
|
+
return;
|
|
59
|
+
const payload = (0, gtin_1.buildGTINPayload)(event, this.config.packageName, this.config.packageVersion);
|
|
60
|
+
this.queue.push(payload);
|
|
61
|
+
// Auto-start the flush timer on first queued event
|
|
62
|
+
if (!this.flushTimer) {
|
|
63
|
+
this.start();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Force-send all queued events immediately.
|
|
68
|
+
* Each event is submitted individually (the API takes one event at a time).
|
|
69
|
+
*/
|
|
70
|
+
async flush() {
|
|
71
|
+
if (this.queue.length === 0)
|
|
72
|
+
return;
|
|
73
|
+
// Drain the queue atomically
|
|
74
|
+
const batch = this.queue.splice(0);
|
|
75
|
+
const submissions = batch.map((payload) => (0, gtin_1.submitGTINEvent)(payload, this.config.registryUrl).catch((err) => {
|
|
76
|
+
// Log warning but never crash
|
|
77
|
+
if (process.env.ARP_DEBUG) {
|
|
78
|
+
console.warn(`[ARP] GTIN submission failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
79
|
+
}
|
|
80
|
+
return { success: false, error: String(err) };
|
|
81
|
+
}));
|
|
82
|
+
await Promise.allSettled(submissions);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Flush all queued events and stop the forwarder.
|
|
86
|
+
* After shutdown, no new events are accepted.
|
|
87
|
+
*/
|
|
88
|
+
async shutdown() {
|
|
89
|
+
this.stopped = true;
|
|
90
|
+
if (this.flushTimer) {
|
|
91
|
+
clearInterval(this.flushTimer);
|
|
92
|
+
this.flushTimer = null;
|
|
93
|
+
}
|
|
94
|
+
await this.flush();
|
|
95
|
+
}
|
|
96
|
+
/** Get the current queue length (for diagnostics) */
|
|
97
|
+
getQueueLength() {
|
|
98
|
+
return this.queue.length;
|
|
99
|
+
}
|
|
100
|
+
/** Check if the forwarder is running */
|
|
101
|
+
isRunning() {
|
|
102
|
+
return !this.stopped && this.config.enabled;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.GTINForwarder = GTINForwarder;
|
|
106
|
+
//# sourceMappingURL=forwarder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forwarder.js","sourceRoot":"","sources":["../../../src/arp/telemetry/forwarder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GTIN (Global Threat Intelligence Network) Telemetry Module
|
|
3
|
+
*
|
|
4
|
+
* When opted in, anonymized anomalous ARP events are shared with the
|
|
5
|
+
* OpenA2A Registry to build community threat intelligence.
|
|
6
|
+
*
|
|
7
|
+
* PRIVACY: Only event type, package name, runtime environment, and timing
|
|
8
|
+
* are transmitted. No PII, file paths, credentials, command arguments,
|
|
9
|
+
* payloads, or conversation content are ever included.
|
|
10
|
+
*/
|
|
11
|
+
import { ARPEvent } from '../types';
|
|
12
|
+
/** GTIN event types accepted by the registry API */
|
|
13
|
+
export type GTINEventType = 'unexpected_dns' | 'unexpected_network' | 'eval_detected' | 'capability_escalation' | 'suspicious_sequence' | 'idle_activation' | 'env_probe';
|
|
14
|
+
/** Runtime environment identifier */
|
|
15
|
+
export type GTINRuntimeEnv = 'node' | 'python' | 'deno';
|
|
16
|
+
/** Payload submitted to the GTIN telemetry endpoint */
|
|
17
|
+
export interface GTINPayload {
|
|
18
|
+
sensorToken: string;
|
|
19
|
+
eventType: GTINEventType;
|
|
20
|
+
packageName: string;
|
|
21
|
+
packageVersion: string;
|
|
22
|
+
daySinceInstall: number;
|
|
23
|
+
runtimeEnv: GTINRuntimeEnv;
|
|
24
|
+
triggeredAt: string;
|
|
25
|
+
}
|
|
26
|
+
/** Result of submitting a GTIN event */
|
|
27
|
+
export interface GTINSubmitResult {
|
|
28
|
+
success: boolean;
|
|
29
|
+
eventId?: string;
|
|
30
|
+
error?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate a stable per-device sensor token.
|
|
34
|
+
*
|
|
35
|
+
* SHA256(hostname + username + random salt stored at ~/.opena2a/gtin-sensor-salt).
|
|
36
|
+
* The salt is generated once on first call and persisted locally.
|
|
37
|
+
*/
|
|
38
|
+
export declare function generateSensorToken(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Map an ARP event to a GTIN event type based on source, category, and data fields.
|
|
41
|
+
*
|
|
42
|
+
* Mapping logic:
|
|
43
|
+
* - network source + dns hint in data -> unexpected_dns
|
|
44
|
+
* - network source + anomaly/violation -> unexpected_network
|
|
45
|
+
* - process source + eval pattern in data -> eval_detected
|
|
46
|
+
* - mcp-protocol/a2a-protocol + violation -> capability_escalation
|
|
47
|
+
* - Any sequence detection (data.sequence) -> suspicious_sequence
|
|
48
|
+
* - Idle activation (data.idle) -> idle_activation
|
|
49
|
+
* - filesystem + env variable probe -> env_probe
|
|
50
|
+
* - Fallback for anomaly/violation/threat -> unexpected_network
|
|
51
|
+
*/
|
|
52
|
+
export declare function mapEventType(event: ARPEvent): GTINEventType;
|
|
53
|
+
/** Detect the current runtime environment */
|
|
54
|
+
export declare function detectRuntimeEnv(): GTINRuntimeEnv;
|
|
55
|
+
/**
|
|
56
|
+
* Calculate the number of days since ARP was first installed.
|
|
57
|
+
* Uses a marker file at ~/.opena2a/gtin-install-date.
|
|
58
|
+
*/
|
|
59
|
+
export declare function getDaySinceInstall(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Build a GTIN telemetry payload from an ARP event.
|
|
62
|
+
*
|
|
63
|
+
* PRIVACY: This function intentionally includes ONLY:
|
|
64
|
+
* - sensorToken (anonymized device ID)
|
|
65
|
+
* - eventType (mapped category)
|
|
66
|
+
* - packageName / packageVersion (what was being monitored)
|
|
67
|
+
* - daySinceInstall (relative timing)
|
|
68
|
+
* - runtimeEnv (node/python/deno)
|
|
69
|
+
* - triggeredAt (ISO timestamp)
|
|
70
|
+
*
|
|
71
|
+
* NEVER included: credentials, payloads, user data, conversation content,
|
|
72
|
+
* file paths, command arguments, IP addresses, hostnames.
|
|
73
|
+
*/
|
|
74
|
+
export declare function buildGTINPayload(event: ARPEvent, packageName: string, packageVersion?: string): GTINPayload;
|
|
75
|
+
/**
|
|
76
|
+
* Determine if an event is anomalous and eligible for GTIN transmission.
|
|
77
|
+
* Only anomalous events are transmitted -- normal events are NEVER sent.
|
|
78
|
+
*/
|
|
79
|
+
export declare function isAnomalousEvent(event: ARPEvent): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Submit a single GTIN event to the OpenA2A Registry.
|
|
82
|
+
*
|
|
83
|
+
* POST to https://api.oa2a.org/api/v1/telemetry/runtime
|
|
84
|
+
* Timeout: 10 seconds. Non-blocking: failures are logged as warnings, never crash.
|
|
85
|
+
*/
|
|
86
|
+
export declare function submitGTINEvent(payload: GTINPayload, registryUrl?: string): Promise<GTINSubmitResult>;
|
|
87
|
+
//# sourceMappingURL=gtin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gtin.d.ts","sourceRoot":"","sources":["../../../src/arp/telemetry/gtin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAE,QAAQ,EAA8B,MAAM,UAAU,CAAC;AAKhE,oDAAoD;AACpD,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,oBAAoB,GACpB,eAAe,GACf,uBAAuB,GACvB,qBAAqB,GACrB,iBAAiB,GACjB,WAAW,CAAC;AAEhB,qCAAqC;AACrC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,aAAa,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAe5C;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,GAAG,aAAa,CAyD3D;AAID,6CAA6C;AAC7C,wBAAgB,gBAAgB,IAAI,cAAc,CAUjD;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAqB3C;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,WAAW,CAUb;AAWD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAID;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,WAAW,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC,CAwC3B"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GTIN (Global Threat Intelligence Network) Telemetry Module
|
|
4
|
+
*
|
|
5
|
+
* When opted in, anonymized anomalous ARP events are shared with the
|
|
6
|
+
* OpenA2A Registry to build community threat intelligence.
|
|
7
|
+
*
|
|
8
|
+
* PRIVACY: Only event type, package name, runtime environment, and timing
|
|
9
|
+
* are transmitted. No PII, file paths, credentials, command arguments,
|
|
10
|
+
* payloads, or conversation content are ever included.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.generateSensorToken = generateSensorToken;
|
|
14
|
+
exports.mapEventType = mapEventType;
|
|
15
|
+
exports.detectRuntimeEnv = detectRuntimeEnv;
|
|
16
|
+
exports.getDaySinceInstall = getDaySinceInstall;
|
|
17
|
+
exports.buildGTINPayload = buildGTINPayload;
|
|
18
|
+
exports.isAnomalousEvent = isAnomalousEvent;
|
|
19
|
+
exports.submitGTINEvent = submitGTINEvent;
|
|
20
|
+
const crypto_1 = require("crypto");
|
|
21
|
+
const fs_1 = require("fs");
|
|
22
|
+
const os_1 = require("os");
|
|
23
|
+
const path_1 = require("path");
|
|
24
|
+
const index_1 = require("../index");
|
|
25
|
+
// --- Sensor Token ---
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the path to the OpenA2A home directory.
|
|
28
|
+
* Respects the OPENA2A_HOME env var, defaults to ~/.opena2a.
|
|
29
|
+
*/
|
|
30
|
+
function getOpena2aHome() {
|
|
31
|
+
return process.env.OPENA2A_HOME || (0, path_1.join)(require('os').homedir(), '.opena2a');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Generate a stable per-device sensor token.
|
|
35
|
+
*
|
|
36
|
+
* SHA256(hostname + username + random salt stored at ~/.opena2a/gtin-sensor-salt).
|
|
37
|
+
* The salt is generated once on first call and persisted locally.
|
|
38
|
+
*/
|
|
39
|
+
function generateSensorToken() {
|
|
40
|
+
const home = getOpena2aHome();
|
|
41
|
+
const saltPath = (0, path_1.join)(home, 'gtin-sensor-salt');
|
|
42
|
+
let salt;
|
|
43
|
+
if ((0, fs_1.existsSync)(saltPath)) {
|
|
44
|
+
salt = (0, fs_1.readFileSync)(saltPath, 'utf-8').trim();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
salt = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
48
|
+
(0, fs_1.mkdirSync)(home, { recursive: true });
|
|
49
|
+
(0, fs_1.writeFileSync)(saltPath, salt, { mode: 0o600 });
|
|
50
|
+
}
|
|
51
|
+
const input = `${(0, os_1.hostname)()}|${(0, os_1.userInfo)().username}|${salt}`;
|
|
52
|
+
return (0, crypto_1.createHash)('sha256').update(input).digest('hex');
|
|
53
|
+
}
|
|
54
|
+
// --- Event Type Mapping ---
|
|
55
|
+
/**
|
|
56
|
+
* Map an ARP event to a GTIN event type based on source, category, and data fields.
|
|
57
|
+
*
|
|
58
|
+
* Mapping logic:
|
|
59
|
+
* - network source + dns hint in data -> unexpected_dns
|
|
60
|
+
* - network source + anomaly/violation -> unexpected_network
|
|
61
|
+
* - process source + eval pattern in data -> eval_detected
|
|
62
|
+
* - mcp-protocol/a2a-protocol + violation -> capability_escalation
|
|
63
|
+
* - Any sequence detection (data.sequence) -> suspicious_sequence
|
|
64
|
+
* - Idle activation (data.idle) -> idle_activation
|
|
65
|
+
* - filesystem + env variable probe -> env_probe
|
|
66
|
+
* - Fallback for anomaly/violation/threat -> unexpected_network
|
|
67
|
+
*/
|
|
68
|
+
function mapEventType(event) {
|
|
69
|
+
const { source, data } = event;
|
|
70
|
+
// Check for sequence detection first (can come from any source)
|
|
71
|
+
if (data.sequence || data.sequenceDetected || data.patternType === 'sequence') {
|
|
72
|
+
return 'suspicious_sequence';
|
|
73
|
+
}
|
|
74
|
+
// Check for idle activation
|
|
75
|
+
if (data.idle || data.idleActivation || data.patternType === 'idle') {
|
|
76
|
+
return 'idle_activation';
|
|
77
|
+
}
|
|
78
|
+
// Source-specific mappings
|
|
79
|
+
switch (source) {
|
|
80
|
+
case 'network': {
|
|
81
|
+
// DNS-specific detection
|
|
82
|
+
if (data.dns || data.dnsLookup || data.type === 'dns' || data.protocol === 'dns') {
|
|
83
|
+
return 'unexpected_dns';
|
|
84
|
+
}
|
|
85
|
+
return 'unexpected_network';
|
|
86
|
+
}
|
|
87
|
+
case 'process': {
|
|
88
|
+
// Eval pattern detection
|
|
89
|
+
const desc = String(data.command || data.description || '').toLowerCase();
|
|
90
|
+
if (data.eval || data.evalDetected || desc.includes('eval')) {
|
|
91
|
+
return 'eval_detected';
|
|
92
|
+
}
|
|
93
|
+
return 'unexpected_network'; // process doing unexpected network-like activity
|
|
94
|
+
}
|
|
95
|
+
case 'mcp-protocol':
|
|
96
|
+
case 'a2a-protocol':
|
|
97
|
+
return 'capability_escalation';
|
|
98
|
+
case 'filesystem': {
|
|
99
|
+
// Environment variable probing
|
|
100
|
+
const filePath = String(data.path || data.file || '').toLowerCase();
|
|
101
|
+
if (data.envProbe ||
|
|
102
|
+
filePath.includes('.env') ||
|
|
103
|
+
filePath.includes('environment') ||
|
|
104
|
+
filePath.includes('/etc/passwd') ||
|
|
105
|
+
filePath.includes('credentials')) {
|
|
106
|
+
return 'env_probe';
|
|
107
|
+
}
|
|
108
|
+
return 'env_probe'; // filesystem anomalies default to env_probe
|
|
109
|
+
}
|
|
110
|
+
case 'prompt':
|
|
111
|
+
return 'capability_escalation';
|
|
112
|
+
default:
|
|
113
|
+
return 'unexpected_network';
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// --- Runtime Detection ---
|
|
117
|
+
/** Detect the current runtime environment */
|
|
118
|
+
function detectRuntimeEnv() {
|
|
119
|
+
// Check for Deno
|
|
120
|
+
if (typeof globalThis.Deno !== 'undefined') {
|
|
121
|
+
return 'deno';
|
|
122
|
+
}
|
|
123
|
+
// Check for Python (unlikely in this context, but included for completeness)
|
|
124
|
+
if (process.env.PYTHON_VERSION || process.env.VIRTUAL_ENV) {
|
|
125
|
+
return 'python';
|
|
126
|
+
}
|
|
127
|
+
return 'node';
|
|
128
|
+
}
|
|
129
|
+
// --- Day Since Install ---
|
|
130
|
+
/**
|
|
131
|
+
* Calculate the number of days since ARP was first installed.
|
|
132
|
+
* Uses a marker file at ~/.opena2a/gtin-install-date.
|
|
133
|
+
*/
|
|
134
|
+
function getDaySinceInstall() {
|
|
135
|
+
const home = getOpena2aHome();
|
|
136
|
+
const markerPath = (0, path_1.join)(home, 'gtin-install-date');
|
|
137
|
+
let installDate;
|
|
138
|
+
if ((0, fs_1.existsSync)(markerPath)) {
|
|
139
|
+
const stored = (0, fs_1.readFileSync)(markerPath, 'utf-8').trim();
|
|
140
|
+
installDate = new Date(stored);
|
|
141
|
+
if (isNaN(installDate.getTime())) {
|
|
142
|
+
installDate = new Date();
|
|
143
|
+
(0, fs_1.writeFileSync)(markerPath, installDate.toISOString(), { mode: 0o600 });
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
installDate = new Date();
|
|
148
|
+
(0, fs_1.mkdirSync)(home, { recursive: true });
|
|
149
|
+
(0, fs_1.writeFileSync)(markerPath, installDate.toISOString(), { mode: 0o600 });
|
|
150
|
+
}
|
|
151
|
+
const now = new Date();
|
|
152
|
+
const diffMs = now.getTime() - installDate.getTime();
|
|
153
|
+
return Math.max(0, Math.floor(diffMs / (24 * 60 * 60 * 1000)));
|
|
154
|
+
}
|
|
155
|
+
// --- Payload Builder ---
|
|
156
|
+
/**
|
|
157
|
+
* Build a GTIN telemetry payload from an ARP event.
|
|
158
|
+
*
|
|
159
|
+
* PRIVACY: This function intentionally includes ONLY:
|
|
160
|
+
* - sensorToken (anonymized device ID)
|
|
161
|
+
* - eventType (mapped category)
|
|
162
|
+
* - packageName / packageVersion (what was being monitored)
|
|
163
|
+
* - daySinceInstall (relative timing)
|
|
164
|
+
* - runtimeEnv (node/python/deno)
|
|
165
|
+
* - triggeredAt (ISO timestamp)
|
|
166
|
+
*
|
|
167
|
+
* NEVER included: credentials, payloads, user data, conversation content,
|
|
168
|
+
* file paths, command arguments, IP addresses, hostnames.
|
|
169
|
+
*/
|
|
170
|
+
function buildGTINPayload(event, packageName, packageVersion) {
|
|
171
|
+
return {
|
|
172
|
+
sensorToken: generateSensorToken(),
|
|
173
|
+
eventType: mapEventType(event),
|
|
174
|
+
packageName,
|
|
175
|
+
packageVersion: packageVersion || '',
|
|
176
|
+
daySinceInstall: getDaySinceInstall(),
|
|
177
|
+
runtimeEnv: detectRuntimeEnv(),
|
|
178
|
+
triggeredAt: event.timestamp,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
// --- Anomaly Filter ---
|
|
182
|
+
/** Categories that qualify as anomalous (eligible for GTIN transmission) */
|
|
183
|
+
const ANOMALOUS_CATEGORIES = new Set([
|
|
184
|
+
'anomaly',
|
|
185
|
+
'violation',
|
|
186
|
+
'threat',
|
|
187
|
+
]);
|
|
188
|
+
/**
|
|
189
|
+
* Determine if an event is anomalous and eligible for GTIN transmission.
|
|
190
|
+
* Only anomalous events are transmitted -- normal events are NEVER sent.
|
|
191
|
+
*/
|
|
192
|
+
function isAnomalousEvent(event) {
|
|
193
|
+
return ANOMALOUS_CATEGORIES.has(event.category);
|
|
194
|
+
}
|
|
195
|
+
// --- Submission ---
|
|
196
|
+
/**
|
|
197
|
+
* Submit a single GTIN event to the OpenA2A Registry.
|
|
198
|
+
*
|
|
199
|
+
* POST to https://api.oa2a.org/api/v1/telemetry/runtime
|
|
200
|
+
* Timeout: 10 seconds. Non-blocking: failures are logged as warnings, never crash.
|
|
201
|
+
*/
|
|
202
|
+
async function submitGTINEvent(payload, registryUrl) {
|
|
203
|
+
const baseUrl = registryUrl || 'https://api.oa2a.org';
|
|
204
|
+
const url = `${baseUrl}/api/v1/telemetry/runtime`;
|
|
205
|
+
try {
|
|
206
|
+
const controller = new AbortController();
|
|
207
|
+
const timeout = setTimeout(() => controller.abort(), 10000);
|
|
208
|
+
const response = await fetch(url, {
|
|
209
|
+
method: 'POST',
|
|
210
|
+
headers: {
|
|
211
|
+
'Content-Type': 'application/json',
|
|
212
|
+
'User-Agent': `OpenA2A-ARP/${index_1.VERSION}`,
|
|
213
|
+
},
|
|
214
|
+
body: JSON.stringify(payload),
|
|
215
|
+
signal: controller.signal,
|
|
216
|
+
});
|
|
217
|
+
clearTimeout(timeout);
|
|
218
|
+
if (!response.ok) {
|
|
219
|
+
const body = await response.text().catch(() => '');
|
|
220
|
+
return {
|
|
221
|
+
success: false,
|
|
222
|
+
error: `HTTP ${response.status}: ${body}`.substring(0, 200),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
const result = (await response.json());
|
|
226
|
+
return {
|
|
227
|
+
success: true,
|
|
228
|
+
eventId: result.eventId || undefined,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
233
|
+
if (message.includes('abort') || message.includes('Abort')) {
|
|
234
|
+
return { success: false, error: 'Request timed out (10s)' };
|
|
235
|
+
}
|
|
236
|
+
return { success: false, error: message };
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=gtin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gtin.js","sourceRoot":"","sources":["../../../src/arp/telemetry/gtin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GTIN Telemetry — public API barrel exports
|
|
3
|
+
*/
|
|
4
|
+
export { generateSensorToken, buildGTINPayload, submitGTINEvent, isAnomalousEvent, mapEventType, detectRuntimeEnv, getDaySinceInstall, GTINEventType, GTINRuntimeEnv, GTINPayload, GTINSubmitResult, } from './gtin';
|
|
5
|
+
export { GTINForwarder, GTINForwarderConfig, } from './forwarder';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/arp/telemetry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,aAAa,EACb,mBAAmB,GACpB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GTIN Telemetry — public API barrel exports
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.GTINForwarder = exports.getDaySinceInstall = exports.detectRuntimeEnv = exports.mapEventType = exports.isAnomalousEvent = exports.submitGTINEvent = exports.buildGTINPayload = exports.generateSensorToken = void 0;
|
|
7
|
+
var gtin_1 = require("./gtin");
|
|
8
|
+
Object.defineProperty(exports, "generateSensorToken", { enumerable: true, get: function () { return gtin_1.generateSensorToken; } });
|
|
9
|
+
Object.defineProperty(exports, "buildGTINPayload", { enumerable: true, get: function () { return gtin_1.buildGTINPayload; } });
|
|
10
|
+
Object.defineProperty(exports, "submitGTINEvent", { enumerable: true, get: function () { return gtin_1.submitGTINEvent; } });
|
|
11
|
+
Object.defineProperty(exports, "isAnomalousEvent", { enumerable: true, get: function () { return gtin_1.isAnomalousEvent; } });
|
|
12
|
+
Object.defineProperty(exports, "mapEventType", { enumerable: true, get: function () { return gtin_1.mapEventType; } });
|
|
13
|
+
Object.defineProperty(exports, "detectRuntimeEnv", { enumerable: true, get: function () { return gtin_1.detectRuntimeEnv; } });
|
|
14
|
+
Object.defineProperty(exports, "getDaySinceInstall", { enumerable: true, get: function () { return gtin_1.getDaySinceInstall; } });
|
|
15
|
+
var forwarder_1 = require("./forwarder");
|
|
16
|
+
Object.defineProperty(exports, "GTINForwarder", { enumerable: true, get: function () { return forwarder_1.GTINForwarder; } });
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/arp/telemetry/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+BAYgB;AAXd,2GAAA,mBAAmB,OAAA;AACnB,wGAAA,gBAAgB,OAAA;AAChB,uGAAA,eAAe,OAAA;AACf,wGAAA,gBAAgB,OAAA;AAChB,oGAAA,YAAY,OAAA;AACZ,wGAAA,gBAAgB,OAAA;AAChB,0GAAA,kBAAkB,OAAA;AAOpB,yCAGqB;AAFnB,0GAAA,aAAa,OAAA"}
|
package/dist/arp/types.d.ts
CHANGED
|
@@ -58,6 +58,16 @@ export interface ARPConfig {
|
|
|
58
58
|
aiLayer?: AILayerConfig;
|
|
59
59
|
/** HTTP reverse proxy configuration */
|
|
60
60
|
proxy?: ProxyConfig;
|
|
61
|
+
/** GTIN (Global Threat Intelligence Network) opt-in configuration */
|
|
62
|
+
gtin?: GTINConfig;
|
|
63
|
+
}
|
|
64
|
+
export interface GTINConfig {
|
|
65
|
+
/** Whether GTIN telemetry is enabled (default: false, opt-in only) */
|
|
66
|
+
enabled: boolean;
|
|
67
|
+
/** Sensor token override (auto-generated if not provided) */
|
|
68
|
+
sensorToken?: string;
|
|
69
|
+
/** Registry URL override (default: https://api.oa2a.org) */
|
|
70
|
+
registryUrl?: string;
|
|
61
71
|
}
|
|
62
72
|
export interface MonitorConfig {
|
|
63
73
|
process?: {
|
package/dist/arp/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/arp/types.ts"],"names":[],"mappings":"AAEA,oCAAoC;AACpC,MAAM,WAAW,QAAQ;IACvB,sBAAsB;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,MAAM,EAAE,WAAW,CAAC;IACpB,qBAAqB;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,sCAAsC;IACtC,QAAQ,EAAE,aAAa,CAAC;IACxB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,qDAAqD;IACrD,YAAY,EAAE,UAAU,GAAG,gBAAgB,GAAG,QAAQ,CAAC;IACvD,gDAAgD;IAChD,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,CAAC;AACpI,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5E,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,UAAU,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,cAAc,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACrD,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,uCAAuC;IACvC,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,mEAAmE;IACnE,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,sDAAsD;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,uCAAuC;IACvC,KAAK,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/arp/types.ts"],"names":[],"mappings":"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"}
|
package/dist/attack/index.d.ts
CHANGED
|
@@ -8,5 +8,5 @@ export { shouldFail } from './fail-policy';
|
|
|
8
8
|
export type { FailPolicy } from './fail-policy';
|
|
9
9
|
export { AttackCategory, AttackIntensity, AttackSeverity, AttackPayload, AttackResult, AttackReport, AttackTarget, AttackOptions, ATTACK_CATEGORIES, } from './types';
|
|
10
10
|
export type { CustomPayloadInput, CustomPayloadFile } from './types';
|
|
11
|
-
export { ALL_PAYLOADS, PAYLOAD_STATS, getPayloads, getPayloadById, getPayloadsByCategory, getPayloadsByIntensity, PROMPT_INJECTION_PAYLOADS, JAILBREAK_PAYLOADS, DATA_EXFILTRATION_PAYLOADS, CAPABILITY_ABUSE_PAYLOADS, CONTEXT_MANIPULATION_PAYLOADS, MCP_EXPLOITATION_PAYLOADS, A2A_ATTACK_PAYLOADS, } from './payloads';
|
|
11
|
+
export { ALL_PAYLOADS, PAYLOAD_STATS, getPayloads, getPayloadById, getPayloadsByCategory, getPayloadsByIntensity, PROMPT_INJECTION_PAYLOADS, JAILBREAK_PAYLOADS, DATA_EXFILTRATION_PAYLOADS, CAPABILITY_ABUSE_PAYLOADS, CONTEXT_MANIPULATION_PAYLOADS, MCP_EXPLOITATION_PAYLOADS, A2A_ATTACK_PAYLOADS, MEMORY_WEAPONIZATION_PAYLOADS, CONTEXT_WINDOW_PAYLOADS, SUPPLY_CHAIN_PAYLOADS, TOOL_SHADOW_PAYLOADS, } from './payloads';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attack/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAErE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attack/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAErE,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
package/dist/attack/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Adversarial security testing for AI agents
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.A2A_ATTACK_PAYLOADS = exports.MCP_EXPLOITATION_PAYLOADS = exports.CONTEXT_MANIPULATION_PAYLOADS = exports.CAPABILITY_ABUSE_PAYLOADS = exports.DATA_EXFILTRATION_PAYLOADS = exports.JAILBREAK_PAYLOADS = exports.PROMPT_INJECTION_PAYLOADS = exports.getPayloadsByIntensity = exports.getPayloadsByCategory = exports.getPayloadById = exports.getPayloads = exports.PAYLOAD_STATS = exports.ALL_PAYLOADS = exports.ATTACK_CATEGORIES = exports.shouldFail = exports.parseCustomPayloads = exports.AttackScanner = void 0;
|
|
7
|
+
exports.TOOL_SHADOW_PAYLOADS = exports.SUPPLY_CHAIN_PAYLOADS = exports.CONTEXT_WINDOW_PAYLOADS = exports.MEMORY_WEAPONIZATION_PAYLOADS = exports.A2A_ATTACK_PAYLOADS = exports.MCP_EXPLOITATION_PAYLOADS = exports.CONTEXT_MANIPULATION_PAYLOADS = exports.CAPABILITY_ABUSE_PAYLOADS = exports.DATA_EXFILTRATION_PAYLOADS = exports.JAILBREAK_PAYLOADS = exports.PROMPT_INJECTION_PAYLOADS = exports.getPayloadsByIntensity = exports.getPayloadsByCategory = exports.getPayloadById = exports.getPayloads = exports.PAYLOAD_STATS = exports.ALL_PAYLOADS = exports.ATTACK_CATEGORIES = exports.shouldFail = exports.parseCustomPayloads = exports.AttackScanner = void 0;
|
|
8
8
|
var scanner_1 = require("./scanner");
|
|
9
9
|
Object.defineProperty(exports, "AttackScanner", { enumerable: true, get: function () { return scanner_1.AttackScanner; } });
|
|
10
10
|
var custom_payloads_1 = require("./custom-payloads");
|
|
@@ -27,4 +27,8 @@ Object.defineProperty(exports, "CAPABILITY_ABUSE_PAYLOADS", { enumerable: true,
|
|
|
27
27
|
Object.defineProperty(exports, "CONTEXT_MANIPULATION_PAYLOADS", { enumerable: true, get: function () { return payloads_1.CONTEXT_MANIPULATION_PAYLOADS; } });
|
|
28
28
|
Object.defineProperty(exports, "MCP_EXPLOITATION_PAYLOADS", { enumerable: true, get: function () { return payloads_1.MCP_EXPLOITATION_PAYLOADS; } });
|
|
29
29
|
Object.defineProperty(exports, "A2A_ATTACK_PAYLOADS", { enumerable: true, get: function () { return payloads_1.A2A_ATTACK_PAYLOADS; } });
|
|
30
|
+
Object.defineProperty(exports, "MEMORY_WEAPONIZATION_PAYLOADS", { enumerable: true, get: function () { return payloads_1.MEMORY_WEAPONIZATION_PAYLOADS; } });
|
|
31
|
+
Object.defineProperty(exports, "CONTEXT_WINDOW_PAYLOADS", { enumerable: true, get: function () { return payloads_1.CONTEXT_WINDOW_PAYLOADS; } });
|
|
32
|
+
Object.defineProperty(exports, "SUPPLY_CHAIN_PAYLOADS", { enumerable: true, get: function () { return payloads_1.SUPPLY_CHAIN_PAYLOADS; } });
|
|
33
|
+
Object.defineProperty(exports, "TOOL_SHADOW_PAYLOADS", { enumerable: true, get: function () { return payloads_1.TOOL_SHADOW_PAYLOADS; } });
|
|
30
34
|
//# sourceMappingURL=index.js.map
|
package/dist/attack/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attack/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AACtB,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAGnB,iCAUiB;AADf,0GAAA,iBAAiB,OAAA;AAKnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attack/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AACtB,qDAAwD;AAA/C,sHAAA,mBAAmB,OAAA;AAC5B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAGnB,iCAUiB;AADf,0GAAA,iBAAiB,OAAA;AAKnB,uCAkBoB;AAjBlB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,uGAAA,WAAW,OAAA;AACX,0GAAA,cAAc,OAAA;AACd,iHAAA,qBAAqB,OAAA;AACrB,kHAAA,sBAAsB,OAAA;AACtB,qHAAA,yBAAyB,OAAA;AACzB,8GAAA,kBAAkB,OAAA;AAClB,sHAAA,0BAA0B,OAAA;AAC1B,qHAAA,yBAAyB,OAAA;AACzB,yHAAA,6BAA6B,OAAA;AAC7B,qHAAA,yBAAyB,OAAA;AACzB,+GAAA,mBAAmB,OAAA;AACnB,yHAAA,6BAA6B,OAAA;AAC7B,mHAAA,uBAAuB,OAAA;AACvB,iHAAA,qBAAqB,OAAA;AACrB,gHAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-window.d.ts","sourceRoot":"","sources":["../../../src/attack/payloads/context-window.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,uBAAuB,EAAE,aAAa,EAqGlD,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|