UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

118 lines (117 loc) 2.73 kB
import { Kind } from "../Attack"; import { Source } from "../Source"; export type AgentInfo = { dryMode: boolean; hostname: string; version: string; library: string; packages: Record<string, string>; ipAddress: string; preventedPrototypePollution: boolean; incompatiblePackages: { prototypePollution: Record<string, string>; }; os: { name: string; version: string; }; platform: { version: string; arch: string; }; nodeEnv: string; serverless: boolean; stack: string[]; }; type Started = { type: "started"; agent: AgentInfo; time: number; }; export type User = { id: string; name?: string; }; export type DetectedAttack = { type: "detected_attack"; request: { method: string | undefined; ipAddress: string | undefined; userAgent: string | undefined; url: string | undefined; headers: Record<string, string | string[]>; body: string | undefined; source: string; route: string | undefined; }; attack: { kind: Kind; operation: string; module: string; blocked: boolean; source: Source; path: string; stack: string; payload: string; metadata: Record<string, string>; user: User | undefined; }; agent: AgentInfo; time: number; }; type MonitoredSinkStats = { attacksDetected: { total: number; blocked: number; }; interceptorThrewError: number; withoutContext: number; total: number; compressedTimings: { averageInMS: number; percentiles: Record<string, number>; compressedAt: number; }[]; }; type Heartbeat = { type: "heartbeat"; stats: { sinks: Record<string, MonitoredSinkStats>; startedAt: number; endedAt: number; requests: { total: number; aborted: number; attacksDetected: { total: number; blocked: number; }; }; }; hostnames: { hostname: string; port: number | undefined; hits: number; }[]; routes: { path: string; method: string; hits: number; graphql?: { type: "query" | "mutation"; name: string; }; }[]; users: { id: string; name: string | undefined; lastIpAddress: string | undefined; firstSeenAt: number; lastSeenAt: number; }[]; agent: AgentInfo; time: number; middlewareInstalled?: boolean; }; export type Event = Started | DetectedAttack | Heartbeat; export {};