pompelmi 0.19.0 → 0.21.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 +283 -47
- package/dist/pompelmi.cjs +472 -7
- package/dist/pompelmi.cjs.map +1 -1
- package/dist/pompelmi.esm.js +445 -8
- package/dist/pompelmi.esm.js.map +1 -1
- package/dist/types/engines/dynamic-taint.d.ts +102 -0
- package/dist/types/engines/hybrid-orchestrator.d.ts +65 -0
- package/dist/types/engines/hybrid-taint-integration.d.ts +129 -0
- package/dist/types/engines/taint-policies.d.ts +84 -0
- package/dist/types/hipaa-compliance.d.ts +110 -0
- package/dist/types/presets.d.ts +15 -3
- package/dist/types/types/decompilation.d.ts +96 -0
- package/dist/types/types/taint-tracking.d.ts +495 -0
- package/dist/types/types.d.ts +2 -1
- package/package.json +5 -7
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Taint Tracking Types
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive type definitions for advanced taint analysis and hybrid orchestration
|
|
5
|
+
* supporting multi-engine malware analysis with data flow tracking capabilities.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Taint source types indicating where tainted data originates
|
|
9
|
+
*/
|
|
10
|
+
export type TaintSource = 'user_input' | 'file_read' | 'network_recv' | 'registry_read' | 'environment' | 'crypto_weak' | 'external_api' | 'memory_leak' | 'time_source' | 'custom';
|
|
11
|
+
/**
|
|
12
|
+
* Taint sink types indicating where tainted data should not flow
|
|
13
|
+
*/
|
|
14
|
+
export type TaintSink = 'exec_function' | 'file_write' | 'network_send' | 'registry_write' | 'sql_query' | 'format_string' | 'memory_alloc' | 'crypto_key' | 'auth_check' | 'log_output' | 'custom';
|
|
15
|
+
/**
|
|
16
|
+
* Taint propagation operations that affect taint flow
|
|
17
|
+
*/
|
|
18
|
+
export type TaintOperation = 'copy' | 'arithmetic' | 'bitwise' | 'comparison' | 'concatenation' | 'substring' | 'conversion' | 'encryption' | 'hash' | 'sanitization' | 'validation' | 'encoding' | 'custom';
|
|
19
|
+
/**
|
|
20
|
+
* Taint label with metadata for tracking
|
|
21
|
+
*/
|
|
22
|
+
export interface TaintLabel {
|
|
23
|
+
/** Unique identifier for this taint */
|
|
24
|
+
id: string;
|
|
25
|
+
/** Source of the taint */
|
|
26
|
+
source: TaintSource;
|
|
27
|
+
/** Original location where taint was introduced */
|
|
28
|
+
origin: {
|
|
29
|
+
address: string;
|
|
30
|
+
function?: string;
|
|
31
|
+
instruction?: string;
|
|
32
|
+
timestamp: number;
|
|
33
|
+
};
|
|
34
|
+
/** Confidence level of taint tracking (0.0 - 1.0) */
|
|
35
|
+
confidence: number;
|
|
36
|
+
/** Optional metadata for custom analysis */
|
|
37
|
+
metadata?: {
|
|
38
|
+
severity?: 'low' | 'medium' | 'high' | 'critical';
|
|
39
|
+
description?: string;
|
|
40
|
+
tags?: string[];
|
|
41
|
+
[key: string]: unknown;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Memory location with taint information
|
|
46
|
+
*/
|
|
47
|
+
export interface TaintedMemory {
|
|
48
|
+
/** Memory address or symbolic location */
|
|
49
|
+
address: string;
|
|
50
|
+
/** Size of tainted region in bytes */
|
|
51
|
+
size: number;
|
|
52
|
+
/** Set of taint labels affecting this memory */
|
|
53
|
+
taints: TaintLabel[];
|
|
54
|
+
/** Last operation that affected this memory */
|
|
55
|
+
lastOperation: {
|
|
56
|
+
operation: TaintOperation;
|
|
57
|
+
timestamp: number;
|
|
58
|
+
instruction?: string;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Register state with taint information
|
|
63
|
+
*/
|
|
64
|
+
export interface TaintedRegister {
|
|
65
|
+
/** Register name (e.g., 'eax', 'rdi', 'r0') */
|
|
66
|
+
name: string;
|
|
67
|
+
/** Set of taint labels affecting this register */
|
|
68
|
+
taints: TaintLabel[];
|
|
69
|
+
/** Bit-level taint mask for partial register tainting */
|
|
70
|
+
taintMask?: string;
|
|
71
|
+
/** Last operation that affected this register */
|
|
72
|
+
lastOperation: {
|
|
73
|
+
operation: TaintOperation;
|
|
74
|
+
timestamp: number;
|
|
75
|
+
instruction?: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Taint propagation rule for specific operations
|
|
80
|
+
*/
|
|
81
|
+
export interface TaintPropagationRule {
|
|
82
|
+
/** Unique rule identifier */
|
|
83
|
+
id: string;
|
|
84
|
+
/** Rule name for debugging */
|
|
85
|
+
name: string;
|
|
86
|
+
/** Pattern to match instructions/operations */
|
|
87
|
+
pattern: {
|
|
88
|
+
/** Instruction mnemonic pattern (regex) */
|
|
89
|
+
instruction?: string;
|
|
90
|
+
/** Function name pattern (regex) */
|
|
91
|
+
function?: string;
|
|
92
|
+
/** API call pattern (regex) */
|
|
93
|
+
api?: string;
|
|
94
|
+
};
|
|
95
|
+
/** How taint flows through this operation */
|
|
96
|
+
propagation: {
|
|
97
|
+
/** Source operands (0-based indices) */
|
|
98
|
+
sources: number[];
|
|
99
|
+
/** Destination operands (0-based indices) */
|
|
100
|
+
destinations: number[];
|
|
101
|
+
/** Operation type affecting taint */
|
|
102
|
+
operation: TaintOperation;
|
|
103
|
+
/** Whether operation removes taint */
|
|
104
|
+
sanitizes?: boolean;
|
|
105
|
+
/** Confidence adjustment factor */
|
|
106
|
+
confidenceMultiplier?: number;
|
|
107
|
+
};
|
|
108
|
+
/** Whether this rule creates a taint sink */
|
|
109
|
+
isSink?: boolean;
|
|
110
|
+
/** Priority for rule matching (higher = more priority) */
|
|
111
|
+
priority: number;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Taint analysis configuration
|
|
115
|
+
*/
|
|
116
|
+
export interface TaintConfig {
|
|
117
|
+
/** Maximum number of instructions to analyze */
|
|
118
|
+
maxInstructions?: number;
|
|
119
|
+
/** Maximum analysis time in milliseconds */
|
|
120
|
+
timeout?: number;
|
|
121
|
+
/** Minimum confidence threshold for reporting */
|
|
122
|
+
confidenceThreshold?: number;
|
|
123
|
+
/** Sources to track */
|
|
124
|
+
enabledSources: TaintSource[];
|
|
125
|
+
/** Sinks to detect */
|
|
126
|
+
enabledSinks: TaintSink[];
|
|
127
|
+
/** Custom propagation rules */
|
|
128
|
+
customRules?: TaintPropagationRule[];
|
|
129
|
+
/** Whether to track implicit flows (control flow taint) */
|
|
130
|
+
trackImplicitFlows?: boolean;
|
|
131
|
+
/** Whether to perform path-sensitive analysis */
|
|
132
|
+
pathSensitive?: boolean;
|
|
133
|
+
/** Maximum call depth for interprocedural analysis */
|
|
134
|
+
maxCallDepth?: number;
|
|
135
|
+
/** HIPAA compliance settings */
|
|
136
|
+
hipaaCompliance?: {
|
|
137
|
+
enabled: boolean;
|
|
138
|
+
sanitizeAddresses?: boolean;
|
|
139
|
+
auditLevel?: 'minimal' | 'standard' | 'comprehensive';
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Taint flow path representing data flow from source to sink
|
|
144
|
+
*/
|
|
145
|
+
export interface TaintFlow {
|
|
146
|
+
/** Unique flow identifier */
|
|
147
|
+
id: string;
|
|
148
|
+
/** Source where taint originated */
|
|
149
|
+
source: {
|
|
150
|
+
label: TaintLabel;
|
|
151
|
+
location: string;
|
|
152
|
+
instruction?: string;
|
|
153
|
+
};
|
|
154
|
+
/** Sink where taint reaches */
|
|
155
|
+
sink: {
|
|
156
|
+
type: TaintSink;
|
|
157
|
+
location: string;
|
|
158
|
+
instruction?: string;
|
|
159
|
+
function?: string;
|
|
160
|
+
};
|
|
161
|
+
/** Path through the program */
|
|
162
|
+
path: Array<{
|
|
163
|
+
address: string;
|
|
164
|
+
instruction?: string;
|
|
165
|
+
operation: TaintOperation;
|
|
166
|
+
confidence: number;
|
|
167
|
+
timestamp: number;
|
|
168
|
+
}>;
|
|
169
|
+
/** Overall confidence of this flow */
|
|
170
|
+
confidence: number;
|
|
171
|
+
/** Severity assessment */
|
|
172
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
173
|
+
/** Whether this represents a security vulnerability */
|
|
174
|
+
isVulnerability: boolean;
|
|
175
|
+
/** Additional metadata */
|
|
176
|
+
metadata?: {
|
|
177
|
+
cwe?: string;
|
|
178
|
+
description?: string;
|
|
179
|
+
mitigations?: string[];
|
|
180
|
+
[key: string]: unknown;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Taint analysis result
|
|
185
|
+
*/
|
|
186
|
+
export interface TaintAnalysisResult {
|
|
187
|
+
/** Analysis engine identifier */
|
|
188
|
+
engine: 'dynamic-taint' | 'hybrid-taint';
|
|
189
|
+
/** Analysis success status */
|
|
190
|
+
success: boolean;
|
|
191
|
+
/** Total analysis time in milliseconds */
|
|
192
|
+
analysisTime: number;
|
|
193
|
+
/** Number of instructions analyzed */
|
|
194
|
+
instructionsAnalyzed: number;
|
|
195
|
+
/** Detected taint flows */
|
|
196
|
+
flows: TaintFlow[];
|
|
197
|
+
/** Current memory taint state */
|
|
198
|
+
memoryState: TaintedMemory[];
|
|
199
|
+
/** Current register taint state */
|
|
200
|
+
registerState: TaintedRegister[];
|
|
201
|
+
/** Analysis statistics */
|
|
202
|
+
statistics: {
|
|
203
|
+
totalSources: number;
|
|
204
|
+
totalSinks: number;
|
|
205
|
+
vulnerableFlows: number;
|
|
206
|
+
sanitizedFlows: number;
|
|
207
|
+
highConfidenceFlows: number;
|
|
208
|
+
uniqueTaints: number;
|
|
209
|
+
};
|
|
210
|
+
/** Any analysis errors or warnings */
|
|
211
|
+
errors?: string[];
|
|
212
|
+
warnings?: string[];
|
|
213
|
+
/** Additional metadata */
|
|
214
|
+
meta?: {
|
|
215
|
+
configUsed?: TaintConfig;
|
|
216
|
+
analysisMode?: string;
|
|
217
|
+
[key: string]: unknown;
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Analysis engine types supported by the orchestrator
|
|
222
|
+
*/
|
|
223
|
+
export type AnalysisEngine = 'binaryninja-hlil' | 'ghidra-pcode' | 'dynamic-taint' | 'static-analysis' | 'symbolic-execution' | 'fuzzing' | 'custom';
|
|
224
|
+
/**
|
|
225
|
+
* Analysis phase in the hybrid orchestration pipeline
|
|
226
|
+
*/
|
|
227
|
+
export type AnalysisPhase = 'preprocessing' | 'static' | 'dynamic' | 'taint' | 'correlation' | 'postprocessing' | 'reporting';
|
|
228
|
+
/**
|
|
229
|
+
* Engine capability descriptor
|
|
230
|
+
*/
|
|
231
|
+
export interface EngineCapability {
|
|
232
|
+
/** Engine identifier */
|
|
233
|
+
engine: AnalysisEngine;
|
|
234
|
+
/** Supported analysis types */
|
|
235
|
+
capabilities: Array<'decompilation' | 'disassembly' | 'taint_tracking' | 'control_flow' | 'data_flow' | 'symbolic_execution' | 'vulnerability_detection' | 'obfuscation_analysis' | 'crypto_analysis' | 'api_analysis'>;
|
|
236
|
+
/** Supported file formats */
|
|
237
|
+
supportedFormats: string[];
|
|
238
|
+
/** Supported architectures */
|
|
239
|
+
supportedArchitectures: string[];
|
|
240
|
+
/** Performance characteristics */
|
|
241
|
+
performance: {
|
|
242
|
+
speed: 'fast' | 'medium' | 'slow';
|
|
243
|
+
accuracy: 'low' | 'medium' | 'high';
|
|
244
|
+
memoryUsage: 'low' | 'medium' | 'high';
|
|
245
|
+
};
|
|
246
|
+
/** Resource requirements */
|
|
247
|
+
requirements: {
|
|
248
|
+
minMemoryMB?: number;
|
|
249
|
+
maxTimeoutMS?: number;
|
|
250
|
+
externalDependencies?: string[];
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Analysis task for orchestration
|
|
255
|
+
*/
|
|
256
|
+
export interface AnalysisTask {
|
|
257
|
+
/** Unique task identifier */
|
|
258
|
+
id: string;
|
|
259
|
+
/** Target engine for this task */
|
|
260
|
+
engine: AnalysisEngine;
|
|
261
|
+
/** Analysis phase this task belongs to */
|
|
262
|
+
phase: AnalysisPhase;
|
|
263
|
+
/** Task priority (higher = more urgent) */
|
|
264
|
+
priority: number;
|
|
265
|
+
/** Dependencies on other tasks */
|
|
266
|
+
dependencies: string[];
|
|
267
|
+
/** Input data for the task */
|
|
268
|
+
input: {
|
|
269
|
+
/** Binary data to analyze */
|
|
270
|
+
data: Uint8Array;
|
|
271
|
+
/** Previous analysis results to build upon */
|
|
272
|
+
previousResults?: any[];
|
|
273
|
+
/** Task-specific configuration */
|
|
274
|
+
config?: any;
|
|
275
|
+
};
|
|
276
|
+
/** Task metadata */
|
|
277
|
+
metadata: {
|
|
278
|
+
description?: string;
|
|
279
|
+
estimatedDuration?: number;
|
|
280
|
+
maxRetries?: number;
|
|
281
|
+
timeout?: number;
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Task execution result
|
|
286
|
+
*/
|
|
287
|
+
export interface TaskResult {
|
|
288
|
+
/** Task identifier */
|
|
289
|
+
taskId: string;
|
|
290
|
+
/** Engine that executed the task */
|
|
291
|
+
engine: AnalysisEngine;
|
|
292
|
+
/** Execution status */
|
|
293
|
+
status: 'success' | 'failed' | 'timeout' | 'cancelled';
|
|
294
|
+
/** Result data */
|
|
295
|
+
result?: any;
|
|
296
|
+
/** Execution metrics */
|
|
297
|
+
metrics: {
|
|
298
|
+
startTime: number;
|
|
299
|
+
endTime: number;
|
|
300
|
+
memoryUsed?: number;
|
|
301
|
+
cpuTime?: number;
|
|
302
|
+
};
|
|
303
|
+
/** Any errors that occurred */
|
|
304
|
+
error?: string;
|
|
305
|
+
/** Confidence in the result */
|
|
306
|
+
confidence: number;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Orchestration strategy for coordinating multiple engines
|
|
310
|
+
*/
|
|
311
|
+
export interface OrchestrationStrategy {
|
|
312
|
+
/** Strategy name */
|
|
313
|
+
name: string;
|
|
314
|
+
/** Strategy description */
|
|
315
|
+
description: string;
|
|
316
|
+
/** Phase execution order */
|
|
317
|
+
phaseOrder: AnalysisPhase[];
|
|
318
|
+
/** Engine selection rules for each phase */
|
|
319
|
+
engineRules: {
|
|
320
|
+
[phase in AnalysisPhase]?: {
|
|
321
|
+
/** Preferred engines in order */
|
|
322
|
+
preferred: AnalysisEngine[];
|
|
323
|
+
/** Engines to avoid */
|
|
324
|
+
exclude?: AnalysisEngine[];
|
|
325
|
+
/** Conditional engine selection */
|
|
326
|
+
conditions?: Array<{
|
|
327
|
+
condition: string;
|
|
328
|
+
engine: AnalysisEngine;
|
|
329
|
+
priority: number;
|
|
330
|
+
}>;
|
|
331
|
+
};
|
|
332
|
+
};
|
|
333
|
+
/** Task scheduling configuration */
|
|
334
|
+
scheduling: {
|
|
335
|
+
/** Maximum concurrent tasks */
|
|
336
|
+
maxConcurrency: number;
|
|
337
|
+
/** Task timeout in milliseconds */
|
|
338
|
+
defaultTimeout: number;
|
|
339
|
+
/** Retry policy */
|
|
340
|
+
retryPolicy: {
|
|
341
|
+
maxRetries: number;
|
|
342
|
+
retryDelay: number;
|
|
343
|
+
backoffMultiplier: number;
|
|
344
|
+
};
|
|
345
|
+
};
|
|
346
|
+
/** Result correlation rules */
|
|
347
|
+
correlation: {
|
|
348
|
+
/** Enable cross-engine result correlation */
|
|
349
|
+
enabled: boolean;
|
|
350
|
+
/** Correlation algorithms to use */
|
|
351
|
+
algorithms: Array<'similarity' | 'overlap' | 'consensus' | 'weighted'>;
|
|
352
|
+
/** Confidence weighting by engine */
|
|
353
|
+
engineWeights: {
|
|
354
|
+
[engine in AnalysisEngine]?: number;
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Hybrid orchestration configuration
|
|
360
|
+
*/
|
|
361
|
+
export interface HybridConfig {
|
|
362
|
+
/** Selected orchestration strategy */
|
|
363
|
+
strategy: OrchestrationStrategy;
|
|
364
|
+
/** Available engines and their configurations */
|
|
365
|
+
engines: {
|
|
366
|
+
[engine in AnalysisEngine]?: {
|
|
367
|
+
enabled: boolean;
|
|
368
|
+
config?: any;
|
|
369
|
+
priority?: number;
|
|
370
|
+
};
|
|
371
|
+
};
|
|
372
|
+
/** Global analysis settings */
|
|
373
|
+
global: {
|
|
374
|
+
/** Maximum total analysis time */
|
|
375
|
+
maxAnalysisTime: number;
|
|
376
|
+
/** Resource limits */
|
|
377
|
+
resourceLimits: {
|
|
378
|
+
maxMemoryMB: number;
|
|
379
|
+
maxConcurrentEngines: number;
|
|
380
|
+
maxTotalTasks: number;
|
|
381
|
+
};
|
|
382
|
+
/** HIPAA compliance settings */
|
|
383
|
+
hipaaCompliance?: {
|
|
384
|
+
enabled: boolean;
|
|
385
|
+
auditAllTasks: boolean;
|
|
386
|
+
sanitizeResults: boolean;
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
/** Result aggregation settings */
|
|
390
|
+
aggregation: {
|
|
391
|
+
/** How to combine results from multiple engines */
|
|
392
|
+
method: 'union' | 'intersection' | 'weighted' | 'consensus';
|
|
393
|
+
/** Minimum confidence threshold for final results */
|
|
394
|
+
confidenceThreshold: number;
|
|
395
|
+
/** Whether to include intermediate results */
|
|
396
|
+
includeIntermediateResults: boolean;
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Hybrid analysis result aggregating multiple engines
|
|
401
|
+
*/
|
|
402
|
+
export interface HybridAnalysisResult {
|
|
403
|
+
/** Analysis session identifier */
|
|
404
|
+
sessionId: string;
|
|
405
|
+
/** Overall analysis success */
|
|
406
|
+
success: boolean;
|
|
407
|
+
/** Total analysis time */
|
|
408
|
+
totalTime: number;
|
|
409
|
+
/** Results from individual engines */
|
|
410
|
+
engineResults: {
|
|
411
|
+
[engine in AnalysisEngine]?: TaskResult[];
|
|
412
|
+
};
|
|
413
|
+
/** Aggregated findings */
|
|
414
|
+
findings: {
|
|
415
|
+
/** Static analysis results */
|
|
416
|
+
static?: {
|
|
417
|
+
functions: any[];
|
|
418
|
+
matches: any[];
|
|
419
|
+
metadata: any;
|
|
420
|
+
};
|
|
421
|
+
/** Dynamic taint analysis results */
|
|
422
|
+
taint?: TaintAnalysisResult;
|
|
423
|
+
/** Cross-engine correlations */
|
|
424
|
+
correlations?: Array<{
|
|
425
|
+
engines: AnalysisEngine[];
|
|
426
|
+
finding: any;
|
|
427
|
+
confidence: number;
|
|
428
|
+
consensus: number;
|
|
429
|
+
}>;
|
|
430
|
+
};
|
|
431
|
+
/** Analysis statistics */
|
|
432
|
+
statistics: {
|
|
433
|
+
enginesUsed: AnalysisEngine[];
|
|
434
|
+
tasksExecuted: number;
|
|
435
|
+
tasksSuccessful: number;
|
|
436
|
+
tasksFailed: number;
|
|
437
|
+
averageTaskTime: number;
|
|
438
|
+
memoryPeak: number;
|
|
439
|
+
};
|
|
440
|
+
/** Recommendations based on analysis */
|
|
441
|
+
recommendations?: Array<{
|
|
442
|
+
type: 'security' | 'performance' | 'analysis';
|
|
443
|
+
severity: 'info' | 'warning' | 'critical';
|
|
444
|
+
message: string;
|
|
445
|
+
evidence?: any;
|
|
446
|
+
}>;
|
|
447
|
+
/** Analysis metadata */
|
|
448
|
+
meta: {
|
|
449
|
+
configUsed: HybridConfig;
|
|
450
|
+
strategyUsed: string;
|
|
451
|
+
timestamp: number;
|
|
452
|
+
version: string;
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Interface for engines that support taint tracking
|
|
457
|
+
*/
|
|
458
|
+
export interface TaintCapableEngine {
|
|
459
|
+
/** Configure taint tracking */
|
|
460
|
+
configureTaint(config: TaintConfig): Promise<void>;
|
|
461
|
+
/** Perform taint analysis */
|
|
462
|
+
performTaintAnalysis(data: Uint8Array): Promise<TaintAnalysisResult>;
|
|
463
|
+
/** Get current taint state */
|
|
464
|
+
getTaintState(): Promise<{
|
|
465
|
+
memory: TaintedMemory[];
|
|
466
|
+
registers: TaintedRegister[];
|
|
467
|
+
}>;
|
|
468
|
+
/** Add custom taint source */
|
|
469
|
+
addTaintSource(address: string, source: TaintSource, label?: Partial<TaintLabel>): Promise<void>;
|
|
470
|
+
/** Check if location is tainted */
|
|
471
|
+
isTainted(address: string): Promise<boolean>;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Interface for the hybrid orchestrator
|
|
475
|
+
*/
|
|
476
|
+
export interface HybridOrchestrator {
|
|
477
|
+
/** Configure the orchestrator */
|
|
478
|
+
configure(config: HybridConfig): Promise<void>;
|
|
479
|
+
/** Register an analysis engine */
|
|
480
|
+
registerEngine(engine: AnalysisEngine, instance: any, capabilities: EngineCapability): Promise<void>;
|
|
481
|
+
/** Execute hybrid analysis */
|
|
482
|
+
analyze(data: Uint8Array): Promise<HybridAnalysisResult>;
|
|
483
|
+
/** Get available engines and their capabilities */
|
|
484
|
+
getAvailableEngines(): Promise<EngineCapability[]>;
|
|
485
|
+
/** Cancel ongoing analysis */
|
|
486
|
+
cancelAnalysis(sessionId: string): Promise<boolean>;
|
|
487
|
+
/** Get analysis progress */
|
|
488
|
+
getProgress(sessionId: string): Promise<{
|
|
489
|
+
phase: AnalysisPhase;
|
|
490
|
+
completedTasks: number;
|
|
491
|
+
totalTasks: number;
|
|
492
|
+
estimatedTimeRemaining: number;
|
|
493
|
+
}>;
|
|
494
|
+
}
|
|
495
|
+
export { type DecompilationMatch, type FunctionAnalysis, type DecompilationResult, type DecompilationScanner, type BinaryNinjaOptions, type GhidraOptions } from './decompilation';
|
package/dist/types/types.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface YaraMatch {
|
|
|
6
6
|
tags?: string[];
|
|
7
7
|
meta?: Record<string, unknown>;
|
|
8
8
|
}
|
|
9
|
+
export * from './types/decompilation';
|
|
10
|
+
export * from './hipaa-compliance';
|
|
9
11
|
export interface Match {
|
|
10
12
|
rule: string;
|
|
11
13
|
severity?: 'low' | 'medium' | 'high' | 'critical' | 'suspicious';
|
|
@@ -45,4 +47,3 @@ export interface StreamScanReport extends BaseReport {
|
|
|
45
47
|
}
|
|
46
48
|
export type ScanReport = NormalScanReport | StreamScanReport;
|
|
47
49
|
export type Uint8ArrayLike = Uint8Array | ArrayBufferView;
|
|
48
|
-
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pompelmi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "RFI-safe file uploads for Node.js — Express/Koa/Next.js middleware with deep ZIP inspection, MIME/size checks, and optional YARA scanning.",
|
|
5
5
|
"main": "./dist/pompelmi.cjs",
|
|
6
6
|
"module": "./dist/pompelmi.esm.js",
|
|
@@ -99,21 +99,19 @@
|
|
|
99
99
|
},
|
|
100
100
|
"exports": {
|
|
101
101
|
".": {
|
|
102
|
+
"types": "./dist/types/index.d.ts",
|
|
102
103
|
"import": "./dist/pompelmi.esm.js",
|
|
103
104
|
"require": "./dist/pompelmi.cjs",
|
|
104
|
-
"default": "./dist/pompelmi.esm.js"
|
|
105
|
-
"types": "./dist/types/index.d.ts"
|
|
105
|
+
"default": "./dist/pompelmi.esm.js"
|
|
106
106
|
},
|
|
107
107
|
"./package.json": "./package.json"
|
|
108
108
|
},
|
|
109
109
|
"files": [
|
|
110
110
|
"dist/",
|
|
111
|
-
"dist",
|
|
112
111
|
"README.md",
|
|
113
|
-
"LICENSE
|
|
112
|
+
"LICENSE",
|
|
114
113
|
"package.json",
|
|
115
|
-
"CHANGELOG*"
|
|
116
|
-
"LICENSE"
|
|
114
|
+
"CHANGELOG*"
|
|
117
115
|
],
|
|
118
116
|
"keywords": [
|
|
119
117
|
"security",
|