aimless-sdk
Version:
Enhanced Runtime Application Self-Protection (RASP) and API Fuzzing Engine with advanced threat detection, behavioral analysis, and intelligent response scoring for Node.js applications
155 lines • 4.05 kB
TypeScript
export interface AimlessConfig {
rasp?: RASPConfig;
fuzzing?: FuzzingConfig;
logging?: LoggingConfig;
}
export interface EndpointRule {
path: string | RegExp;
methods?: string[];
requireAuth?: boolean;
maxThreatLevel?: 'low' | 'medium' | 'high' | 'critical';
rateLimit?: {
maxRequests: number;
windowMs: number;
};
}
export interface AccessControlConfig {
mode: 'allowlist' | 'blocklist' | 'monitor';
allowedEndpoints?: EndpointRule[];
protectedEndpoints?: EndpointRule[];
blockedEndpoints?: (string | RegExp)[];
defaultAction?: 'allow' | 'block';
requireAuthHeader?: string;
}
export interface RASPConfig {
enabled?: boolean;
injectionProtection?: boolean;
xssProtection?: boolean;
csrfProtection?: boolean;
anomalyDetection?: boolean;
blockMode?: boolean;
accessControl?: AccessControlConfig;
trustedOrigins?: string[];
maxRequestSize?: number;
rateLimiting?: {
enabled: boolean;
maxRequests: number;
windowMs: number;
dynamicThrottling?: boolean;
suspiciousIPMultiplier?: number;
};
customBlockMessage?: string;
loadingScreen?: {
enabled: boolean;
message?: string;
minDuration?: number;
};
webhooks?: {
enabled: boolean;
url: string;
events?: ('block' | 'threat' | 'rateLimit' | 'all')[];
includePayload?: boolean;
customHeaders?: Record<string, string>;
};
requestFingerprinting?: {
enabled: boolean;
blockAutomatedTraffic?: boolean;
trustBrowserFingerprints?: boolean;
};
analytics?: {
enabled: boolean;
retention?: number;
};
}
export interface FuzzingConfig {
enabled?: boolean;
maxPayloads?: number;
timeout?: number;
authBypassTests?: boolean;
rateLimitTests?: boolean;
graphqlIntrospection?: boolean;
customPayloads?: string[];
}
export interface LoggingConfig {
enabled?: boolean;
level?: 'debug' | 'info' | 'warn' | 'error';
logFile?: string;
}
export interface SecurityThreat {
type: ThreatType;
severity: 'low' | 'medium' | 'high' | 'critical';
description: string;
payload?: string;
timestamp: Date;
blocked: boolean;
confidence?: number;
metadata?: Record<string, any>;
}
export declare enum ThreatType {
SQL_INJECTION = "sql_injection",
NOSQL_INJECTION = "nosql_injection",
COMMAND_INJECTION = "command_injection",
XSS = "xss",
CSRF = "csrf",
PATH_TRAVERSAL = "path_traversal",
XXE = "xxe",
SSRF = "ssrf",
ANOMALOUS_BEHAVIOR = "anomalous_behavior",
RATE_LIMIT_EXCEEDED = "rate_limit_exceeded",
AUTH_BYPASS_ATTEMPT = "auth_bypass_attempt"
}
export interface FuzzingResult {
endpoint: string;
method: string;
vulnerabilities: SecurityThreat[];
testedPayloads: number;
duration: number;
timestamp: Date;
}
export interface WebhookPayload {
event: 'block' | 'threat' | 'rateLimit';
timestamp: Date;
ip: string;
path: string;
method: string;
threats?: SecurityThreat[];
payload?: any;
userAgent?: string;
reputation?: number;
}
export interface RequestFingerprint {
userAgent: string;
acceptLanguage?: string;
acceptEncoding?: string;
connection?: string;
isBot: boolean;
botScore: number;
browserFingerprint?: string;
}
export interface SecurityAnalytics {
totalRequests: number;
threatsDetected: number;
threatsBlocked: number;
topAttackTypes: Array<{
type: string;
count: number;
}>;
topAttackIPs: Array<{
ip: string;
count: number;
reputation: number;
}>;
requestsByHour: Array<{
hour: number;
count: number;
threats: number;
}>;
geographicData?: Array<{
country: string;
requests: number;
threats: number;
}>;
averageResponseTime: number;
uptime: number;
}
//# sourceMappingURL=types.d.ts.map