This document outlines the security measures implemented in the ai_provider_llmd module following an OWASP Top 10 2021 security review.
Note: This module follows Drupal security best practices by leveraging Drupal's built-in security systems rather than implementing custom solutions. This ensures compatibility, maintainability, and adherence to established security patterns.
Location: src/LlmdClient/LlmdClient.php
- URL Validation: All URLs are validated using
filter_var()
withFILTER_VALIDATE_URL
- Protocol Restrictions: Only HTTP and HTTPS protocols are allowed
- Internal IP Blocking: Requests to private/internal IP ranges are blocked
- Development Whitelist: Allows
localhost
,127.0.0.1
, andhost.docker.internal
for development - Endpoint Validation: Only specific API endpoints are allowed
Location: src/Plugin/AiProvider/LlmdAiProvider.php
, src/LlmdClient/LlmdClient.php
- Drupal Native Validation: Uses
Html::decodeEntities()
,Html::escape()
, andUnicode::truncate()
for text processing - Model ID Validation: Restricts model IDs to alphanumeric characters, hyphens, underscores, and dots
- Length Limits: Uses Drupal's
Unicode::truncate()
for safe content length enforcement (100KB) - Role Validation: Restricts message roles to allowed values (
system
,user
,assistant
,function
) - URL Validation: Uses Drupal's
Url::fromUri()
for proper URL validation in forms
Location: src/Form/LlmdConfigForm.php
, src/LlmdClient/LlmdClient.php
- API Key Validation: Validates API key existence, format, and minimum length
- Permission Checks: Additional permission verification for connection testing
- Secure Key Handling: Improved API key retrieval and validation from Drupal's Key module
Location: Multiple files
- Security Event Logging: Logs all connection attempts, API requests, and security events
- Audit Trail: Tracks user actions and system events for security monitoring
- Safe Debug Logging: Removes sensitive data from debug logs while maintaining functionality
- Failed Authentication Logging: Logs failed connection attempts and errors
Location: src/LlmdClient/LlmdClient.php
- SSL Certificate Verification: Enforces SSL certificate validation (
verify: TRUE
) - Security Headers: Adds security headers to API requests
- Timeout Validation: Restricts timeout values to reasonable ranges (1-300 seconds)
Location: Multiple files
- Generic Error Messages: User-facing error messages don't reveal system details
- Detailed Security Logging: Internal logs contain details for debugging without exposing to users
- Exception Handling: Proper exception handling prevents information leakage
- Use HTTPS Only: Configure the orchestrator to use HTTPS endpoints
- API Key Security: Use strong, unique API keys stored securely in Drupal's Key module
- Network Isolation: Deploy the orchestrator in a separate network segment
- Regular Updates: Keep dependencies and the module updated
- Log Monitoring: Monitor
ai_provider_llmd
logs for security events - Failed Connection Alerts: Set up alerts for repeated connection failures
- Unusual Activity: Monitor for unusual API usage patterns
administer ai providers
: Required for configuration and connection testing- Limit this permission to trusted administrative users only
- ✅ Blocks requests to
192.168.1.1
,10.0.0.1
,172.16.0.1
- ✅ Allows development hosts:
localhost
,host.docker.internal
- ✅ Validates URL format and protocols
- ✅ Uses Drupal's native text processing (
Html
,Unicode
utilities) - ✅ Validates model IDs with regex patterns
- ✅ Enforces length limits using
Unicode::truncate()
- ✅ Validates URLs using
Url::fromUri()
- ✅ Validates API key existence and format
- ✅ Verifies user permissions for sensitive operations
- ✅ Logs authentication events
- ✅ Enforces SSL certificate verification
- ✅ Adds security headers to requests
- ✅ Validates timeout parameters
For security-related issues or questions about this module, please follow Drupal's security reporting procedures.
- Monthly Reviews: Review security logs for anomalies
- Dependency Updates: Keep all dependencies current
- Configuration Audits: Regularly audit API keys and permissions
- Security Testing: Perform periodic security testing
Last Updated: 2025-01-06
Security Review Version: 1.0
Module Version: 1.0.0-dev