- Project Name: VulnAI - AI-Powered Static Application Security Testing (SAST) Engine
- Project Type: Machine Learning / Cybersecurity Product
- Core Functionality: Train ML model to classify and detect vulnerabilities in source code, store vulnerability intelligence, and identify issues in new code snippets
- Target Users: Security engineers, developers, DevSecOps teams
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AI-Powered SAST Engine Architecture β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER INTERFACE LAYER β
β βββββββββββββββββββ βββββββββββββββββββββββββββββββββββ
β β REST API β β CLI Detection Tool ββ
β β (FastAPI) β β (Python-based Scanner) ββ
β ββββββββββ¬βββββββββ βββββββββββββββββ¬ββββββββββββββββββ
βββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββ
β β
βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DETECTION ENGINE LAYER β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββββββββββββββββββ
β β Code Parser β β AST Generator β β Rule-Based Filter ββ
β β (Multi-lang) β β (Tree-sitter) β β (False Positive Reduction) ββ
β ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ βββββββββββββββββ¬ββββββββββββββββββ
β β β β β
β ββββββββββββ¬ββββββββββ β β
β βΌ β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββ
β β MODEL INFERENCE ENGINE ββ
β β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββββββββββββ
β β β CodeBERT β β Similarity β β Output Formatter βββ
β β β Embedding β β Search β β (JSON Results) βββ
β β ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββββββββ¬βββββββββββββ
β βββββββββββββΌβββββββββββββββββββββΌββββββββββββββββββββββββββΌββββββββββββββ
ββββββββββββββββΌβββββββββββββββββββββΌββββββββββββββββββββββββββΌββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β VULNERABILITY INTELLIGENCE LAYER β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β PostgreSQL + pgvector Database ββ
β β ββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ
β β β vulnerabilities β β detected_issues βββ
β β β - id β β - id βββ
β β β - cwe_id β β - file_name βββ
β β β - name β β - line_number βββ
β β β - description β β - detected_cwe βββ
β β β - severity β β - confidence βββ
β β β - remediation β β - timestamp βββ
β β β - embedding_vector β β - fixed_code βββ
β β ββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββββββββββ
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β²
β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β MODEL TRAINING PIPELINE β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β DATA COLLECTION LAYER β β
β β ββββββββββββββ ββββββββββββββ ββββββββββββββ ββββββββββββββββββββββ β β
β β βOWASP Top10 β β MITRE CWE β β NVD CVE β β CodeQL/SAST Data β β β
β β βββββββ¬βββββββ βββββββ¬βββββββ βββββββ¬βββββββ βββββββββββ¬βββββββββββ β β
β β ββββββββββββββββ΄ββββββββββββββββ΄βββββββββββββββββββ β β
β β βΌ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β PREPROCESSING PIPELINE ββ β
β β β βββββββββββββββ βββββββββββββββ βββββββββββββββ ββββββββββββββ ββ β
β β β βCode Cleaner β β Tokenizer β β AST Parserβ β Embeddings β ββ β
β β β β(Comments, β β (BERT Tok) β β (Tree-sitterβ β(CodeBERT) β ββ β
β β β β Normalize) β β β β /AST) β β β ββ β
β β β βββββββββββββββ βββββββββββββββ βββββββββββββββ ββββββββββββββ ββ β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β βΌ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β MODEL TRAINING ββ β
β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β
β β β β Transformer Classifier (CodeBERT) β ββ β
β β β β Input: Code Snippet β Tokenize β CodeBERT β Classifier β CWE β ββ β
β β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββ β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β βΌ β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β EVALUATION & EXPORT ββ β
β β β Precision/Recall/F1 | Confusion Matrix | Export .pt/.onnx ββ β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Programming Language: Python 3.10+
- ML Framework: PyTorch 2.0+
- Transformer Model: CodeBERT, GraphCodeBERT
- Web Framework: FastAPI
- Database: PostgreSQL 15+ with pgvector
- CLI: Click framework
- Code Parsing: Tree-sitter, python-ast
- Data Processing: pandas, numpy
- Model Training: transformers (HuggingFace)
- Vector Search: pgvector, FAISS
- API Documentation: OpenAPI/Swagger
- Testing: pytest
Features:
- Fetch vulnerability data from NVD API
- Parse CWE database for vulnerability types
- Collect OWASP Top 10 samples
- Aggregate vulnerable and fixed code pairs
Data Sources:
- NIST National Vulnerability Database (NVD)
- MITRE Common Weakness Enumeration (CWE)
- OWASP Foundation
- GitHub Security Advisory Database
Code Cleaning:
- Remove comments (single-line, multi-line)
- Normalize identifiers (replace variable names)
- Handle whitespace and formatting
- Extract code tokens
AST-Based Parsing:
- Generate Abstract Syntax Trees
- Extract code structure features
- Identify function calls, variables, data flows
Embedding Generation:
- Use CodeBERT tokenizer
- Generate contextual embeddings
- Store vectors for similarity search
Input: Source Code Snippet
β
CodeBERT Tokenizer
β
CodeBERT Encoder (12 layers)
β
[CLS] Token Representation
β
Dense Layer (768 β 256) + ReLU + Dropout
β
Output Layer (256 β num_cwe_classes)
β
Output: {is_vulnerable, cwe_id, confidence_score}
- CWE-89: SQL Injection
- CWE-79: Cross-Site Scripting (XSS)
- CWE-94: Code Injection
- CWE-78: OS Command Injection
- CWE-287: Insecure Authentication
- CWE-862: Insecure Authorization
- CWE-434: Unrestricted File Upload
- CWE-502: Deserialization of Untrusted Data
- CWE-119: Buffer Overflow
- CWE-200: Information Exposure
-- Vulnerabilities table
CREATE TABLE vulnerabilities (
id SERIAL PRIMARY KEY,
cwe_id VARCHAR(10) NOT NULL,
name VARCHAR(255) NOT NULL,
description TEXT,
severity VARCHAR(20), -- CRITICAL, HIGH, MEDIUM, LOW
remediation TEXT,
vulnerable_code TEXT,
fixed_code TEXT,
embedding_vector VECTOR(768),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Detected issues table
CREATE TABLE detected_issues (
id SERIAL PRIMARY KEY,
file_name VARCHAR(500),
line_number INTEGER,
detected_cwe VARCHAR(10),
confidence FLOAT,
vulnerable_code TEXT,
suggested_fix TEXT,
scan_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Index for vector similarity search
CREATE INDEX ON vulnerabilities USING ivfflat (embedding_vector vector_cosine_ops);Input: Source code snippet or file path
Processing Flow:
- Parse input code (auto-detect language)
- Generate AST for structural analysis
- Generate CodeBERT embeddings
- Run model inference
- Perform similarity search in vector DB
- Apply rule-based filters
- Generate results with explanations
Output Format:
{
"is_vulnerable": true,
"vulnerability_type": "CWE-89",
"confidence_score": 0.92,
"line_number": 42,
"description": "SQL injection vulnerability detected",
"remediation": "Use parameterized queries",
"cwe_reference": "https://cwe.mitre.org/data/definitions/89.html"
}| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/detect | Detect vulnerabilities in code |
| GET | /api/v1/vulnerabilities | List stored vulnerabilities |
| GET | /api/v1/vulnerabilities/{cwe_id} | Get specific vulnerability |
| POST | /api/v1/feedback | Submit feedback for incremental learning |
| GET | /api/v1/stats | Get detection statistics |
| GET | /api/v1/health | Health check |
# Scan a single file
vulnai scan --file path/to/code.py
# Scan directory
vulnai scan --directory ./src
# Scan with specific language
vulnai scan --file app.js --language javascript
# Output JSON
vulnai scan --file main.py --output json
# Verbose mode
vulnai scan -f test.java -v- Precision: Proportion of true positives among all positive predictions
- Recall: Proportion of actual vulnerabilities detected
- F1-Score: Harmonic mean of precision and recall
- False Positive Rate: Proportion of false alarms
- Track accuracy for each vulnerability class
- Generate confusion matrix
- Identify model weaknesses
ML_model_Vulnerability_Detection/
βββ SPEC.md
βββ TODO.md
βββ requirements.txt
βββ setup.py
βββ vulnai/
β βββ __init__.py
β βββ cli/
β β βββ __init__.py
β β βββ main.py
β βββ api/
β β βββ __init__.py
β β βββ main.py
β β βββ routes/
β β β βββ __init__.py
β β β βββ detect.py
β β β βββ vulnerabilities.py
β β β βββ feedback.py
β β βββ models/
β β βββ __init__.py
β β βββ schemas.py
β βββ core/
β β βββ __init__.py
β β βββ config.py
β β βββ logger.py
β βββ detection/
β β βββ __init__.py
β β βββ engine.py
β β βββ parser.py
β β βββ filter.py
β βββ models/
β β βββ __init__.py
β β βββ classifier.py
β β βββ trainer.py
β β βββ evaluator.py
β βββ preprocessing/
β β βββ __init__.py
β β βββ cleaner.py
β β βββ tokenizer.py
β β βββ embedder.py
β βββ storage/
β β βββ __init__.py
β β βββ database.py
β β βββ vector_store.py
β βββ data/
β βββ __init__.py
β βββ collector.py
β βββ loader.py
βββ models/
β βββ checkpoints/
β βββ trained/
β βββ vulnai_classifier.pt
βββ data/
β βββ raw/
β βββ processed/
β βββ samples/
βββ tests/
β βββ __init__.py
β βββ test_detection.py
β βββ test_preprocessing.py
β βββ test_api.py
βββ notebooks/
β βββ data_exploration.ipynb
β βββ model_training.ipynb
β βββ evaluation.ipynb
βββ docs/
β βββ architecture.md
β βββ api_docs.md
β βββ usage.md
βββ README.md
- Initialize project structure
- Set up development environment
- Configure dependencies
- Build data collection module
- Implement preprocessing pipeline
- Create embedding generation
- Design model architecture
- Train classifier
- Evaluate and optimize
- Set up database
- Build REST API
- Implement CLI tool
- Multi-language support
- False positive reduction
- Explainability features
- Comprehensive testing
- Documentation
- Demo and evaluation report
- Model Performance: F1-score > 0.85 on test set
- False Positive Rate: < 10% on validation set
- Supported Languages: Python, Java, JavaScript
- Detection Coverage: Top 10 OWASP vulnerabilities
- API Response Time: < 2 seconds per scan
- Model Export: .pt and .onnx formats
- All vulnerability data stored securely
- API authentication for production use
- Rate limiting on public endpoints
- Input sanitization for code processing
- Audit logging for all detections