nehonix-uri-processor
Version:
A powerful URI processor for encoding, decoding, and analyzing URI data securely.
224 lines • 7.05 kB
TypeScript
import { MaliciousComponentType } from "../types/v2.2.0";
/**
* Interface defining detection result with detailed information
*/
export interface MaliciousPatternResult {
url?: string;
isMalicious: boolean;
detectedPatterns: DetectedPattern[];
score: number;
confidence: "low" | "medium" | "high";
recommendation: string;
contextAnalysis?: ContextAnalysisResult;
}
/**
* New interface for contextual analysis results
*/
export interface ContextAnalysisResult {
relatedPatterns: RelatedPatternGroup[];
entropyScore: number;
anomalyScore: number;
encodingLayers: number;
}
/**
* Interface for related pattern groups
*/
export interface RelatedPatternGroup {
patterns: MaliciousPatternType[];
description: string;
riskMultiplier: number;
}
/**
* Interface defining a detected malicious pattern
*/
export interface DetectedPattern {
type: MaliciousPatternType;
pattern: string;
location: string;
severity: "low" | "medium" | "high";
confidence: "low" | "medium" | "high";
description: string;
matchedValue?: string;
contextScore?: number;
}
/**
* Enum defining various malicious pattern types
*/
export declare enum MaliciousPatternType {
SQL_INJECTION = "sql_injection",
XSS = "cross_site_scripting",
COMMAND_INJECTION = "command_injection",
PATH_TRAVERSAL = "path_traversal",
OPEN_REDIRECT = "open_redirect",
SSRF = "server_side_request_forgery",
CRLF_INJECTION = "crlf_injection",
ENCODED_PAYLOAD = "encoded_payload",
SERIALIZATION = "serialization_payload",
TEMPLATE_INJECTION = "template_injection",
SUSPICIOUS_PARAMETER = "suspicious_parameter",
DATA_URI = "data_uri",
SUSPICIOUS_IP = "suspicious_ip",
SUSPICIOUS_TLD = "suspicious_tld",
SUSPICIOUS_DOMAIN = "suspicious_domain",
PROTOCOL_CONFUSION = "protocol_confusion",
HOMOGRAPH_ATTACK = "homograph_attack",// NEW: Domain spoofing using similar-looking chars
MULTI_ENCODING = "multi_encoding",// NEW: Multiple encoding layers
UNICODE_EVASION = "unicode_evasion",// NEW: Unicode character abuse
FRAGMENT_PAYLOAD = "fragment_payload",// NEW: Payload split across parameters
HEADER_INJECTION = "header_injection",// NEW: HTTP header injection
NOSQL_INJECTION = "nosql_injection",// NEW: NoSQL injection patterns
GRAPHQL_INJECTION = "graphql_injection",// NEW: GraphQL injection
DOM_BASED_ATTACK = "dom_based_attack",// NEW: DOM-based attacks
FILE_INCLUSION = "file_inclusion",// NEW: Remote/Local file inclusion
RFI = "remote_file_inclusion",
PHISHING = "phishing",//new
PROTOTYPE_POLLUTION = "prototype_pollution",
JWT_MANIPULATION = "jwt_manipulation",
CSS_INJECTION = "css_injection",
HOST_HEADER_INJECTION = "host_header_injection",
DESERIALIZATION = "deserialization",
DOM_CLOBBERING = "dom_clobbering",
CLICKJACKING = "clickjacking",
CORS_MISCONFIGURATION = "cors_misconfiguration",
SUBDOMAIN_TAKEOVER = "subdomain_takeover",
HTTP_PARAMETER_POLLUTION = "http_parameter_pollution",
WEB_CACHE_POISONING = "web_cache_poisoning",
ANOMALY = "anomaly",
ZERO_DAY = "zero_day",
RANSOMWARE = "ransomware",
SUSPICIOUS_BEHAVIOR = "suspicious_behavior",
PARAMETER_TAMPERING = "parameter_tampering",
HIGH_ENTROPY = "high_entropy",
KNOWN_THREAT = "known_threat",
RCE = "rce",
ANOMALY_DETECTED = "anomaly_detected",
SUSPICIOUS_EXTENSION = "SUSPICIOUS_EXTENSION",
KNOWN_MALICIOUS_URL = "known_malicious_url"
}
/**
* Interface for malicious pattern detection options
*/
export interface MaliciousPatternOptions {
/**
* Minimum score required to mark input as malicious (default: 50)
*/
minScore?: number;
/**
* Enable verbose logging for debugging
*/
debug?: boolean;
/**
* List of pattern types to ignore
*/
ignorePatterns?: MaliciousPatternType[];
/**
* Adjust sensitivity for detections (0.1-2.0)
* Lower values mean less sensitive, higher values mean more sensitive
*/
sensitivity?: number;
/**
* Custom patterns to include in detection
*/
customPatterns?: Array<{
pattern: RegExp;
type: MaliciousPatternType;
severity: "low" | "medium" | "high";
description: string;
}>;
/**
* Enable contextual analysis for improved detection
*/
enableContextualAnalysis?: boolean;
/**
* Enable entropy analysis for obfuscated payloads
*/
enableEntropyAnalysis?: boolean;
/**
* Enable statistical analysis
*/
enableStatisticalAnalysis?: boolean;
/**
* Component-specific sensitivity multipliers
*/
componentSensitivity?: Record<MaliciousComponentType, number>;
/**
* Character set to focus on for pattern matching (default: latin)
*/
characterSet?: "latin" | "unicode" | "all";
}
/**
* Enhanced service for detecting various malicious patterns in URLs and general input
* NehonixNMPS => NMPS
*
*/
export interface ThreatSignature {
id: string;
name: string;
description: string;
patternType: MaliciousPatternType;
severity: "low" | "medium" | "high";
confidence: "low" | "medium" | "high";
matches: (url: string, features: URLFeatures) => boolean;
}
export interface ZeroKnowledgePatterns {
anomalyThresholds: Map<string, number>;
patternClusters: PatternCluster[];
}
export interface PerformanceStats {
totalRequests: number;
avgProcessingTime: number;
peakMemoryUsage: number;
totalProcessingTime: number;
requestsWithCache: number;
requestsWithoutCache: number;
}
export interface DistributedThreatEntry {
key?: string;
firstSeen: number;
lastSeen: number;
reportCount: number;
maliciousCount: number;
maliciousScore: number;
patterns: Set<MaliciousPatternType>;
severity: "low" | "medium" | "high";
confidence: "low" | "medium" | "high";
source?: "analysis" | "emergency" | "feedback" | "external" | "local";
}
export interface PendingRequest {
url: string;
basicResult: MaliciousPatternResult;
options: MaliciousPatternOptions;
urlHash: string;
startTime: number;
resolve: (result: MaliciousPatternResult) => void;
}
export interface TrainingDataPoint {
url: string;
features: URLFeatures;
isMalicious: boolean;
detectedPatternTypes: MaliciousPatternType[];
score: number;
timestamp: number;
}
export interface URLFeatures {
length: number;
entropy: number;
specialCharCount: number;
digitCount: number;
encodedCharCount: number;
subdomainLevels: number;
parameterCount: number;
pathDepth: number;
hasUnusualPort: boolean;
containsIPAddress: boolean;
hexEncodingRatio: number;
domainLength: number;
tld: string;
hasBase64: boolean;
}
export interface PatternCluster {
patterns: RegExp[];
tokens: string[];
created: number;
}
//# sourceMappingURL=MaliciousPatterns.service.d.ts.map