4thwall-waf-v2.1b / README.md
viitheone's picture
Upload 12 files
6fe21b1 verified
|
Raw History Blame Contribute Delete
7.3 kB
---
language:
- en
license: apache-2.0
tags:
- security
- cybersecurity
- waf
- web-application-firewall
- multi-label-classification
- injection-detection
- capec
- owasp
- distilbert
pipeline_tag: text-classification
widget:
- text: "[METHOD] GET [PATH] /?id=1%27%20OR%201=1-- [UA] Mozilla/5.0"
- text: "[METHOD] POST [PATH] /submit [UA] Mozilla/5.0 [CT] application/x-www-form-urlencoded [BODY] id=%3Cscript%3Ealert(1)%3C/script%3E"
- text: "[METHOD] GET [PATH] /../../../../etc/passwd [UA] Mozilla/5.0"
- text: "[METHOD] GET [PATH] /blog/index.php/2020/04/04/hello-world [UA] Mozilla/5.0"
---
# 4thwall-WAF-v2.1b: Hardened Multi-Label Neural Web Application Firewall
**4thwall-WAF-v2.1b** is an enterprise-grade multi-label transformer model designed for real-time inspection, classification, and blocking of malicious web traffic. Fine-tuned on `distilbert-base-uncased` across 363,000+ real-world and honeypot HTTP requests using strict template-disjoint grouping, it eliminates structural URI leakage and achieves state-of-the-art semantic injection detection without relying on brittle regex patterns.
- **Developer**: 4thwall Security Team
- **Base Architecture**: `distilbert-base-uncased` (6 layers, 768 hidden dimension, 12 attention heads)
- **Output Classes**: 13 multi-label CAPEC categories (Normal + 12 attack vectors)
- **Primary Metrics (Test Unique-Template, 29,996 novel URIs)**:
- **Macro-F1 (Excl. 272)**: **0.9923**
- **Macro-F1 (All 13)**: **0.9830**
- **Micro-F1**: **0.9912**
- **Exploit Catch Rate**: **99.41%** (22,448 / 22,582 attack rows)
- **Clean Benign False Positive Rate**: **0.782%** (58 / 7,414)
---
## Quickstart: Running Inference
```bash
pip install torch transformers safetensors
```
```python
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
MODEL_ID = "your-username/4thwall-waf-v2.1b"
# 1. Load tokenizer and model
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_ID, trust_remote_code=True)
model.eval()
# 2. Serialize an incoming HTTP request
raw_text = model.serialize_request(
method="GET",
path="/?id=1' OR '1'='1",
ua="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
)
# 3. Predict probabilities
inputs = tokenizer(raw_text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
probs = torch.sigmoid(outputs.logits)[0]
# 4. Apply calibrated decision thresholds
thresholds = model.config.thresholds
id2label = model.config.id2label
print(f"Input: {raw_text}\n")
for idx, p in enumerate(probs):
label = id2label[idx]
thresh = thresholds.get(label, 0.5)
if p.item() >= thresh:
print(f" [ALERT] {label:<38}: Score = {p.item():.4f} >= {thresh:.2f}")
```
---
## Two-Tier Operational Enforcement Policy
In production, do not treat all classes as automated block targets. The model is designed to operate under a two-tier policy:
```
+-------------------------------------------------------------------------------+
| INCOMING REQUEST -> [METHOD] [PATH] [UA] [CT] [BODY] -> DISTILBERT INFERENCE |
+-------------------------------------------------------------------------------+
| |
v (Score >= Threshold) v (Score >= Threshold)
+------------------------------------+ +------------------------------------+
| BLOCK TIER (10 Classes) | | ALERT TIER (2 Classes) |
| SQLi (66), Code Injection (242), | | Protocol Manipulation (272) |
| OS Command Injection (88), LFI(126)| | Vulnerability Scanning (310) |
| Verb Tampering (274), SSRF (194), | | |
| Response Splitting (34), etc. | | |
+------------------------------------+ +------------------------------------+
| |
v v
[HTTP 403 FORBIDDEN] [SIEM LOG / RATE LIMIT]
(0.737% Benign Block Rate, (Zero drops on crawler bursts;
97.30%–98.82% Catch Rate) mitigates scanner reconnaissance)
```
---
## Calibrated Decision Thresholds
| Index | Class Name | Calibrated Threshold ($T_j$) | Enforcement Tier | Operational Rationale |
|:---:|---|:---:|:---:|---|
| 0 | `000 - Normal` | **0.55** | Baseline | Neutral benign traffic gate |
| 1 | `272 - Protocol Manipulation` | **0.99** | **ALERT** | Tuned to eliminate 36,109 crawler false alarms on headerless traffic |
| 2 | `242 - Code Injection` | **0.65** | **BLOCK** | Captures XSS and PHP execution exploits |
| 3 | `88 - OS Command Injection` | **0.90** | **BLOCK** | Shell command execution (includes merged CAPEC-248) |
| 4 | `126 - Path Traversal` | **0.90** | **BLOCK** | Directory traversal and `/etc/passwd` local file inclusion |
| 5 | `66 - SQL Injection` | **0.70** | **BLOCK** | High recall (99.2%) with strict precision (0.996) |
| 6 | `16 - Dictionary-based Password Attack` | **0.60** | **BLOCK** | Brute-force credential stuffing signatures |
| 7 | `310 - Scanning for Vulnerable Software` | **0.55** | **ALERT** | Scanner reconnaissance (`sqlmap`, `nikto`, `nuclei`) |
| 8 | `153 - Input Data Manipulation` | **0.65** | **BLOCK** | Parameter tampering and data sanitization bypass |
| 9 | `274 - HTTP Verb Tampering` | **0.90** | **BLOCK** | Unauthorized HTTP verbs (`TRACK`, `PROPFIND`, `PUT`) |
| 10 | `194 - Fake the Source of Data` | **0.90** | **BLOCK** | Header spoofing and SSRF proxy injection |
| 11 | `34 - HTTP Response Splitting` | **0.60** | **BLOCK** | CRLF header injection and response splitting |
| 12 | `33 - HTTP Request Smuggling` | **0.95** | **BLOCK** | TE/CL desynchronization attacks |
---
## Request Serialization Specification
The model consumes raw HTTP transactions serialized using structured markup tokens:
```
[METHOD] {method} [PATH] {path} [UA] {user_agent} [CT] {content_type} [BODY] {body}
```
- **Max Body Truncation**: Body text is truncated to 500 characters to prevent token starvation of URI components.
- **User-Agent Fallback**: Unspecified/empty User-Agents default to standard browser strings (`Mozilla/5.0...`) to prevent false alarms on scanning heuristics.
---
## Dual-WAF Defense with OWASP CRS
In benchmark evaluations across 29,996 novel templates and 200 canonical textbook payloads:
- **Neural Model Strength**: Deep semantic understanding of evasion (whitespace-to-comment, SQL comments, inline encoding) in query parameters, paths, and POST bodies without rigid regex brittleness.
- **OWASP CRS Strength**: Rigorous protocol enforcement on HTTP headers and cookies (which the model serializer omits).
- **Union Benchmark**: Combining Model v2.1b with OWASP CRS v4 achieved a **99.57% Exploit Catch Rate** on 22,582 attack rows, and **93.8% catch rate** across textbook test vectors.
---
## Citation & License
- **License**: Apache 2.0
- **Model Checkpoint**: Frozen Epoch 2 Checkpoint `v2_1b_best.pt`