-
Notifications
You must be signed in to change notification settings - Fork 1
security_plugins
GitHub Actions edited this page Jan 2, 2026
·
1 revision
Version: v1.3.0
Status: Production
Last Updated: 20. November 2025
Sicherheitsstufe: KRITISCH
Kategorie: 🔒 Security
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
- Architecture-ACCESS-MODEL-IMPLEMENTATION-SUMMARY
- Architecture-ADR-003-pg-dump-sql-parser
- Architecture-BASEENTITY-PRINCIPLE
- Architecture-CACHE-STORAGE-INTEGRATION
- Architecture-CMAKE-ARCHITECTURE
- Architecture-CMAKE-FLAGS-REFERENCE
- Architecture-CMAKE-MODULAR-ARCHITECTURE
- Architecture-CONCERNS-ARCHITECTURE-DIAGRAM
- Architecture-CONCERNS-IMPLEMENTATION-SUMMARY
- Architecture-CONTENT-MODEL
- Architecture-COPILOT-THEMISDB-GRAPH-RAG-BACKEND-ARCHITECTURE
- Architecture-CRYPTO-AND-KEYS
- Architecture-FEATURE-FLAGS-REFERENCE
- Architecture-GPU-ARCHITECTURE-REVIEW-TEMPLATE
- Architecture-HTTP-SHUTDOWN-HARDENING
- Architecture-MIGRATION-GUIDE-CONCERNS
- Architecture-MIGRATION-GUIDE-v13-v14
- Architecture-MODULARIZATION-GUIDE
- Architecture-MODULAR-ARCHITECTURE-ROADMAP
- Architecture-MODULE-ARCHITECTURE-INDEX
- Architecture-P1D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D08-MAMBA-GOVERNANCE-CONTRACT
- Architecture-P1-P2-IMPLEMENTATION-COMPLETION-INDEX
- Architecture-PHASE0-COMPLETION-ASSESSMENT
- Architecture-PHASE3-QUERYENGINE-DI-ARCHITECTURE
- Architecture-PHASE4-INDEX-MANAGER-DI
- Architecture-POSTGRESQL-WIRE-PROTOCOL
- Architecture-QUERYENGINE-IMPLEMENTATION-GUIDE
- Architecture-QUERY-SCHEDULING
- Architecture-RAFT-CONSENSUS-DESIGN
- Architecture-README
- Architecture-README-SSM-HYBRID-IMPLEMENTATION
- Architecture-REFACTORING-SUMMARY
- Architecture-RESOURCE-POOLING
- Architecture-SOURCE-DIRECTORY-GUIDE
- Architecture-THEMIS-CORE-GUIDE
- Architecture-UNIFIED-ACCESS-MODEL
- Architecture-WAL-GRPC-MTLS-CONFIGURATION
- Architecture-WIRE-PROTOCOL-RETRY
- Architecture-boltzmann-observability-draft
- Architecture-experimental-logarithmic-vector-storage
- Architecture-llm-wiki-mvp-adr
- Architecture-rewrite-engine-architecture
- Architecture-rope-api-architecture
- Architecture-ssm-gguf-mamba-status
- Architecture-ssm-hybrid-analysis
- Architecture-ssm-hybrid-rollout-plan
- Architecture-ssm-plugin-interface-design-review
- Architecture-transaction-coordinators
- Architecture-wiki-secondary-index
- Architecture-wire-protocol
- Governance-DISABLED-STUB-POLICY
- Governance-DOCS-PR-POLICY
- Governance-GA-PROMOTION-SIGN-OFF
- Governance-GITHUB-MILESTONES-SETUP
- Governance-MATURITY-CLAIM-VERIFICATION-CHECKLIST
- Governance-MATURITY-EVIDENCE-REGISTRY
- Governance-MERGE-GATE-BOT-CONFIG
- Governance-MERGE-GATE-STATUS-LIVE
- Governance-PHASE3-ENFORCEMENT-RUNBOOK
- Governance-PHASE-1-CLOSURE-REPORT
- Governance-PHASE-CLOSURE-POLICY
- Governance-PHASE-DEPENDENCY-GRAPH
- Governance-PLUGIN-SUBMODULE-ROLLBACK
- Governance-PRODUCTION-READY-2026-DELIVERY-PLAN
- Governance-PR-VERSION-TARGETING
- Governance-PR-VERSION-TARGETING-BACKFILL
- Governance-QUERY-MODULE-STATUS
- Governance-README
- Governance-RELEASE-PROMOTION-GATE-POLICY
- Governance-RELEASE-VALIDATION-CHECKLIST
- Governance-SECURITY-MODULE-5671-EVIDENCE-SUMMARY
- Governance-SHARDING-P6-RESIDUAL-RISK-ACCEPTANCE
- Governance-SOURCECODE-COMPLIANCE-GOVERNANCE
- Governance-UPDATES-DEVELOPMENT-STATUS-SIGN-OFF
- Governance-WAVE-C-IMPLEMENTATION-COMPLETE
- Module-acceleration-Roadmap
- Module-access-model-Roadmap
- Module-ai-Roadmap
- Module-analytics-Roadmap
- Module-api-Roadmap
- Module-aql-Roadmap
- Module-auth-Roadmap
- Module-base-Roadmap
- Module-cache-Roadmap
- Module-cdc-Roadmap
- Module-chaos-Roadmap
- Module-chimera-Roadmap
- Module-config-Roadmap
- Module-content-Roadmap
- Module-core-Roadmap
- Module-distributed-knowledge-Roadmap
- Module-distributed-tensor-Roadmap
- Module-document-Roadmap
- Module-ethics-ai-Roadmap
- Module-evaluation-Roadmap
- Module-execution-Roadmap
- Module-exporters-Roadmap
- Module-failover-Roadmap
- Module-geo-Roadmap
- Module-governance-Roadmap
- Module-gpu-Roadmap
- Module-graph-Roadmap
- Module-image-analysis-Roadmap
- Module-importers-Roadmap
- Module-index-Roadmap
- Module-ingestion-Roadmap
- Module-llama-cpp-Roadmap
- Module-llm-Roadmap
- Module-llm-streaming-Roadmap
- Module-llm-wiki-Roadmap
- Module-maintenance-Roadmap
- Module-metadata-Roadmap
- Module-network-Roadmap
- Module-observability-Roadmap
- Module-onnx-clip-Roadmap
- Module-performance-Roadmap
- Module-plugins-Roadmap
- Module-process-Roadmap
- Module-projects-Roadmap
- Module-prompt-engineering-Roadmap
- Module-query-Roadmap
- Module-rag-Roadmap
- Module-replication-Roadmap
- Module-retrieval-Roadmap
- Module-rpc-grpc-Roadmap
- Module-scheduler-Roadmap
- Module-scraper-Roadmap
- Module-search-Roadmap
- Module-security-Roadmap
- Module-server-Roadmap
- Module-sharding-Roadmap
- Module-stable-diffusion-Roadmap
- Module-storage-Roadmap
- Module-temporal-Roadmap
- Module-tensor-Roadmap
- Module-themis-Roadmap
- Module-timeseries-Roadmap
- Module-toolbox-Roadmap
- Module-training-Roadmap
- Module-transaction-Roadmap
- Module-updates-Roadmap
- Module-user-storage-encrypted-Roadmap
- Module-utils-Roadmap
- Module-vector-search-Roadmap
- Module-voice-Roadmap
- Module-whisper-Roadmap