ToolStabil
Velisch Security Scanner
Analysiert Code auf Security-Vulnerabilities wie SQL Injection, XSS und hardcoded Secrets.
Installation
cd tools/security-scanner
cargo build --releaseVerwendung
Code scannen
velin-security scanJSON-Report
velin-security scan --format json > security-report.jsonHTML-Report
velin-security scan --format htmlDependencies auditieren
velin-security auditErkannte Vulnerabilities
Critical
SQL InjectionUngeprüfte SQL-Queries
Command InjectionUngeprüfte System-Commands
Path TraversalUngeprüfte Dateipfade
Hardcoded SecretsPasswörter, API-Keys im Code
High
XSSCross-Site Scripting - Ungeprüfter User-Input
CSRFCross-Site Request Forgery - Fehlende Token
Insecure RandomUnsichere Zufallszahlen-Generierung
Unsafe DeserializationUnsichere Deserialisierung
Beispiel-Output
🔍 Velisch Security Scanner
===============================
[CRITICAL] SQL Injection
Location: src/api/users.velin:42
Message: Ungeprüfte SQL-Query mit User-Input
Recommendation: Verwende Prepared Statements oder ORM
[HIGH] XSS Vulnerability
Location: src/templates/render.velin:15
Message: User-Input wird ohne Escaping ausgegeben
Recommendation: Verwende html::escape() oder Auto-Escaping
[MEDIUM] Hardcoded Secret
Location: src/config.velin:8
Message: API-Key ist im Code hardcodiert
Recommendation: Verwende Environment-Variablen
⚠ 3 Vulnerabilities gefundenSecurity Rules
SQL Injection Detection
// ❌ VULNERABLE
fn getUser(id: string): User {
let query = "SELECT * FROM users WHERE id = " + id;
return db.query(query);
}
// ✅ SAFE
fn getUser(id: string): User {
return db.find(User, id);
}Hardcoded Secrets Detection
// ❌ VULNERABLE
let api_key = "sk-1234567890abcdef";
// ✅ SAFE
let api_key = config::get_env("API_KEY");Konfiguration
.velinsecurityrc.jsonjson
{
"rules": {
"sql-injection": "error",
"xss": "error",
"hardcoded-secret": "warning",
"weak-cryptography": "warning"
},
"ignore": [
"test/**",
"examples/**"
],
"severity-threshold": "medium"
}CI/CD Integration
.github/workflows/security.ymlyaml
- name: Security Scan
run: |
cd tools/security-scanner
cargo build --release
./target/release/velin-security scan --format json > security.json
if [ -s security.json ]; then
echo "Security Vulnerabilities gefunden!"
cat security.json
exit 1
fiFalse Positives
// velin-security-disable-next-line sql-injection
let query = "SELECT * FROM users WHERE id = " + sanitized_id;
// velin-security-disable-file (für ganze Dateien)