-
Notifications
You must be signed in to change notification settings - Fork 0
security_plugins
makr-code edited this page Dec 21, 2025
·
1 revision
Version: 1.0
Status: Production
Last Updated: 20. November 2025
Sicherheitsstufe: KRITISCH
Hardware-Beschleunigungsplugins werden als optionale DLLs/Shared Libraries zur Laufzeit geladen. Diese Plugins haben Zugriff auf:
- GPU/Hardware-Ressourcen
- Systemspeicher (VRAM/RAM)
- Datenbank-interne Daten (Vektoren, Graphen, Geo-Daten)
- Potenziell sensitive Informationen
Sicherheitsrisiken:
⚠️ Malicious Code Injection⚠️ Man-in-the-Middle Attacks (DLL Hijacking)⚠️ Supply Chain Attacks⚠️ Data Exfiltration⚠️ Privilege Escalation
Lösung: Multi-Layer Security mit digitalen Signaturen, Hash-Verifikation, Zertifikats-Validierung und Audit-Logging.
┌─────────────────────────────────────────────┐
│ Layer 1: File Hash Verification (SHA-256) │
├─────────────────────────────────────────────┤
│ Layer 2: Digital Signature (RSA/ECDSA) │
├─────────────────────────────────────────────┤
│ Layer 3: Certificate Chain Validation │
├─────────────────────────────────────────────┤
│ Layer 4: Certificate Revocation (CRL/OCSP)│
├─────────────────────────────────────────────┤
│ Layer 5: Whitelist/Blacklist Check │
├─────────────────────────────────────────────┤
│ Layer 6: Trust Level Enforcement │
├─────────────────────────────────────────────┤
│ Layer 7: Audit Logging & Monitoring │
└─────────────────────────────────────────────┘
- PluginSecurityVerifier - Verifikation vor dem Laden
- PluginSecurityPolicy - Konfigurierbare Sicherheitsrichtlinien
- PluginSecurityAuditor - Audit-Trail aller Security-Events
- PluginMetadata - JSON-Sidecar mit Signatur-Informationen
PluginSecurityPolicy productionPolicy;
productionPolicy.requireSignature = true; // MANDATORY
productionPolicy.allowUnsigned = false; // BLOCKED
productionPolicy.verifyFileHash = true; // MANDATORY
productionPolicy.checkRevocation = true; // MANDATORY
productionPolicy.minTrustLevel = TRUSTED; // Only trusted issuers
productionPolicy.trustedIssuers = {
"CN=ThemisDB Official Plugins, O=ThemisDB, C=DE"
};PluginSecurityPolicy devPolicy;
devPolicy.requireSignature = false; // Optional for local dev
devPolicy.allowUnsigned = true; // Allow unsigned plugins
devPolicy.verifyFileHash = true; // Still verify hash
devPolicy.checkRevocation = false; // Skip revocation check# config/plugin_security.yaml
security:
require_signature: true
allow_unsigned: false
verify_file_hash: true
check_revocation: true
min_trust_level: TRUSTED
trusted_issuers:
- "CN=ThemisDB Official Plugins, O=ThemisDB, C=DE"
- "CN=NVIDIA CUDA Plugins, O=NVIDIA, C=US"
blacklist_hashes:
- "a1b2c3d4..." # Known malicious plugin
whitelist_hashes:
- "e5f6g7h8..." # Explicitly allowed (bypasses other checks)Jedes Plugin benötigt eine .json Metadata-Datei:
themis_accel_cuda.dll
themis_accel_cuda.dll.json ← Metadata + Signature
{
"plugin": {
"name": "CUDA Acceleration Plugin",
"version": "1.0.0",
"author": "ThemisDB Team",
"description": "NVIDIA CUDA GPU acceleration",
"license": "MIT",
"build_date": "2025-11-20T19:00:00Z",
"build_commit": "4bad6fd",
"signature": {
"sha256": "a1b2c3d4e5f6g7h8...",
"signature": "BASE64_ENCODED_SIGNATURE",
"certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"issuer": "CN=ThemisDB Official Plugins, O=ThemisDB, C=DE",
"subject": "CN=CUDA Plugin v1.0.0",
"timestamp": 1700507200,
"algorithm": "RSA-SHA256"
},
"permissions": [
"gpu_access",
"memory_access"
],
"requirements": {
"cuda_version": "11.0+",
"min_compute_capability": "7.0"
}
}
}# 1. Plugin erstellen
cmake --build build --target themis_accel_cuda
# 2. SHA-256 Hash berechnen
sha256sum themis_accel_cuda.dll > themis_accel_cuda.dll.hash
# 3. Signatur erstellen
openssl dgst -sha256 -sign private_key.pem \
-out themis_accel_cuda.dll.sig \
themis_accel_cuda.dll
# 4. Signatur Base64 kodieren
base64 themis_accel_cuda.dll.sig > themis_accel_cuda.dll.sig.b64
# 5. Metadata JSON erstellen
# (siehe Schema oben)#!/usr/bin/env python3
# tools/sign_plugin.py
import hashlib
import subprocess
import json
import base64
from datetime import datetime
def sign_plugin(plugin_path, private_key_path, cert_path):
# Calculate SHA-256
with open(plugin_path, 'rb') as f:
sha256_hash = hashlib.sha256(f.read()).hexdigest()
# Sign with OpenSSL
sig_file = plugin_path + '.sig'
subprocess.run([
'openssl', 'dgst', '-sha256',
'-sign', private_key_path,
'-out', sig_file,
plugin_path
])
# Read signature
with open(sig_file, 'rb') as f:
signature = base64.b64encode(f.read()).decode()
# Read certificate
with open(cert_path) as f:
certificate = f.read()
# Extract issuer/subject from certificate
# ... (use OpenSSL commands)
# Create metadata JSON
metadata = {
"plugin": {
"signature": {
"sha256": sha256_hash,
"signature": signature,
"certificate": certificate,
"timestamp": int(datetime.now().timestamp()),
"algorithm": "RSA-SHA256"
}
}
}
# Write metadata
with open(plugin_path + '.json', 'w') as f:
json.dump(metadata, f, indent=2)
print(f"Plugin signed: {plugin_path}")
print(f"Hash: {sha256_hash}")
if __name__ == '__main__':
import sys
sign_plugin(sys.argv[1], sys.argv[2], sys.argv[3])# Plugin signieren
python tools/sign_plugin.py \
plugins/themis_accel_cuda.dll \
certs/themis_plugin_key.pem \
certs/themis_plugin_cert.pem# 1. Private Key erstellen
openssl genrsa -out themis_plugin_key.pem 4096
# 2. Certificate Signing Request (CSR)
openssl req -new -key themis_plugin_key.pem \
-out themis_plugin.csr \
-subj "/CN=ThemisDB Official Plugins/O=ThemisDB/C=DE"
# 3. Self-signed Zertifikat (für Entwicklung)
openssl x509 -req -days 365 \
-in themis_plugin.csr \
-signkey themis_plugin_key.pem \
-out themis_plugin_cert.pem
# 4. Production: Von CA signieren lassen
# Sende themis_plugin.csr an vertrauenswürdige CAEmpfohlene Struktur:
Root CA (ThemisDB Root)
└── Intermediate CA (ThemisDB Plugin Authority)
└── Signing Certificate (Plugin Signer)
| Platform | Pfad |
|---|---|
| Windows | C:/Program Files/ThemisDB/certs/ |
| Linux | /etc/themis/certs/ |
| macOS | /Library/Application Support/ThemisDB/certs/ |
# config/plugin_security.yaml
security:
crl:
enabled: true
url: "https://themisdb.org/certs/plugin_crl.pem"
cache_ttl: 3600 # 1 hour
ocsp:
enabled: true
responder_url: "http://ocsp.themisdb.org"
timeout: 5 # seconds-----BEGIN X509 CRL-----
MIIBsDCCAVYCAQEwDQYJKoZIhvcNAQELBQAwgZExCzAJBgNVBAYTAkRFMRAwDgYD
VQQIDAdCYXZhcmlhMQ8wDQYDVQQHDAZNdW5pY2gxEjAQBgNVBAoMCVRoZW1pc0RC
...
-----END X509 CRL-----
{
"whitelist": [
{
"hash": "a1b2c3d4e5f6...",
"name": "CUDA Plugin v1.0.0",
"added_by": "admin@example.org",
"added_date": "2025-11-20",
"reason": "Official ThemisDB release"
}
]
}{
"blacklist": [
{
"hash": "x9y8z7w6v5u4...",
"name": "Malicious Plugin",
"blocked_by": "security@example.org",
"blocked_date": "2025-11-15",
"reason": "CVE-2025-12345: Remote Code Execution",
"severity": "CRITICAL"
}
]
}# Update Blacklist von zentralem Server
curl -o /etc/themis/plugin_blacklist.json \
https://security.themisdb.org/plugin_blacklist.json
# Verify signature of blacklist itself
openssl dgst -sha256 -verify themisdb_public.pem \
-signature plugin_blacklist.json.sig \
plugin_blacklist.json| Event Type | Severity | Beschreibung |
|---|---|---|
| PLUGIN_LOADED | INFO | Plugin erfolgreich geladen |
| PLUGIN_LOAD_FAILED | ERROR | Plugin-Laden fehlgeschlagen |
| SIGNATURE_VERIFIED | INFO | Signatur erfolgreich verifiziert |
| SIGNATURE_VERIFICATION_FAILED | ERROR | Signatur-Verifikation fehlgeschlagen |
| HASH_MISMATCH | CRITICAL | File-Hash stimmt nicht überein |
| BLACKLISTED | CRITICAL | Plugin ist auf Blacklist |
| UNTRUSTED_ISSUER | WARNING | Unbekannter Zertifikats-Aussteller |
| CERTIFICATE_EXPIRED | ERROR | Zertifikat abgelaufen |
| CERTIFICATE_REVOKED | CRITICAL | Zertifikat widerrufen |
| POLICY_VIOLATION | WARNING | Security-Policy verletzt |
{
"timestamp": "2025-11-20T19:00:00Z",
"event_type": "SIGNATURE_VERIFICATION_FAILED",
"severity": "ERROR",
"plugin_path": "./plugins/themis_accel_cuda.dll",
"plugin_hash": "a1b2c3d4...",
"message": "Certificate expired",
"user": "system",
"ip_address": "127.0.0.1"
}# Export Audit-Logs
curl http://localhost:8765/admin/plugin-security/audit-log > audit.json
# Integration mit Splunk/ELK
curl -X POST https://splunk.company.com/services/collector \
-H "Authorization: Splunk TOKEN" \
-d @audit.json- Immer signieren - Auch interne Plugins sollten signiert werden
- Minimale Permissions - Nur notwendige Berechtigungen anfordern
- Versionierung - Semantic Versioning verwenden
- Dependencies dokumentieren - Alle externen Abhängigkeiten auflisten
- Security Audit - Regelmäßige Code-Reviews und Penetration-Tests
-
Production Policy erzwingen -
requireSignature = true - Regelmäßige Updates - Blacklist täglich aktualisieren
- Monitoring - Audit-Logs überwachen (SIEM-Integration)
- Certificate Rotation - Zertifikate alle 12 Monate erneuern
- Incident Response - Plan für kompromittierte Plugins
- Nur offizielle Plugins - Von vertrauenswürdigen Quellen
- Hash verifizieren - Mit offiziellen Release-Notes abgleichen
- Updates zeitnah - Sicherheitsupdates sofort installieren
- Suspicious Activity melden - An service@themisdb.org
- Sofort Blacklist - Hash auf Blacklist setzen
- CRL aktualisieren - Zertifikat widerrufen
- Notification - Alle Nutzer informieren
- Forensics - Incident analysieren
- Patch Release - Sicheres Update bereitstellen
# Emergency: Plugin sofort global sperren
curl -X POST https://security.themisdb.org/api/emergency-block \
-H "Authorization: Bearer ADMIN_TOKEN" \
-d '{
"plugin_hash": "a1b2c3d4...",
"reason": "CVE-2025-12345",
"severity": "CRITICAL"
}'- ✅ Audit-Trail aller Plugin-Ladevorgänge
- ✅ Zugriffskontrolle auf Plugins
- ✅ Datenminimierung (nur notwendige Permissions)
- ✅ Access Control (A.9)
- ✅ Cryptography (A.10)
- ✅ System Acquisition (A.14.2)
- ✅ Identify: Asset Management (ID.AM)
- ✅ Protect: Data Security (PR.DS)
- ✅ Detect: Security Monitoring (DE.CM)
- ✅ Respond: Incident Response (RS.RP)
Security Contact: service@themisdb.org
Version: 1.0
Last Review: 20. November 2025
Next Review: 20. Februar 2026
- Übersicht
- Home
- 📋 Dokumentations-Index
- 📋 Quick Reference
- 📊 Sachstandsbericht 2025
- 🚀 Features
- 🗺️ Roadmap
- Ecosystem Overview
- Strategische Übersicht
- Architektur
- Basismodell
- Storage & MVCC
- Indexe & Statistiken
- Query & AQL
- Caching
- Content Pipeline
- Suche
- Performance & Benchmarks
- Enterprise Features
- Qualitätssicherung
- Vektor & GNN
- Geo Features
- Sicherheit & Governance
- Überblick
- RBAC & Authorization
- RBAC
- Policies (MVP)
- Authentication
- Schlüsselverwaltung
- Verschlüsselung
- TLS & Certificates
- PKI & Signatures
- PII Detection
- Vault & HSM
- Audit & Compliance
- Security Audits & Hardening
- Competitive Gap Analysis
- Deployment & Betrieb
- Deployment
- Docker
- Tracing & Observability
- Observability
- Change Data Capture
- Operations Runbook
- Infrastructure Roadmap
- Horizontal Scaling Implementation Strategy
- Entwicklung
- Übersicht
- Code Quality Pipeline
- Developers Guide
- Cost Models
- Todo Liste
- Tool Todo
- Core Feature Todo
- Priorities
- Implementation Status
- Roadmap
- Future Work
- Next Steps Analysis
- AQL LET Implementation Guide
- Development Audit
- Sprint Summary (2025-11-17)
- WAL Archiving
- Search Gap Analysis
- Source Documentation Plan
- API Implementations
- Changefeed
- Security Development
- Development Overviews
- Publikation & Ablage
- Admin-Tools
- APIs
- Client SDKs
- Implementierungs-Zusammenfassungen
- Planung & Reports
- Dokumentation
- Release Notes
- Styleguide & Glossar
- Roadmap
- Changelog
- Source Code Documentation
- Übersicht
- Source Documentation
- Main
- Main (Detailed)
- Main Server
- Main Server (Detailed)
- Demo Encryption
- Demo Encryption (Detailed)
- API
- Authentication
- Cache
- CDC
- Content
- Geo
- Governance
- Index
- LLM
- Query
- Security
- Server
- Server README
- [VCCDB Design](src/server/VCCDB Design.md.md)
- Audit API Handler
- Auth Middleware
- Classification API Handler
- HTTP Server
- Keys API Handler
- PII API Handler
- Policy Engine
- Ranger Adapter
- Reports API Handler
- Retention API Handler
- SAGA API Handler
- SSE Connection Manager
- Storage
- Time Series
- Transaction
- Utils
- Archive