Security Auditing
Systematic evaluation of software systems to identify security vulnerabilities, particularly critical during project handovers and before production deployment. Security auditing combines automated scanning with manual code review to identify both technical vulnerabilities and design flaws.
Common Vulnerability Categories
Authentication and Authorization Flaws
URL Parameter Manipulation: Systems that trust URL parameters for access control without proper validation create direct bypass opportunities:
# Vulnerable pattern
def determine_user_role():
url_group = query_params.get("group", "").lower()
if url_group:
return url_group, True # Direct privilege escalation
Weak Default Credentials: Hardcoded fallback passwords in production code create security backdoors:
# High-risk pattern
ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD", "sprint2025") # Trivial default
Data Exposure Vulnerabilities
Sensitive Data Logging: Comprehensive logging systems can inadvertently capture sensitive information in plain text:
- Full conversation transcripts in unencrypted files
- System prompts containing business logic
- User queries revealing private information
- API keys and tokens in debug logs
Audit Methodology
Pre-Handover Security Review
- Authentication Flow Analysis: Map all authentication and authorization paths
- Data Flow Tracing: Identify all points where sensitive data is processed or stored
- Configuration Security: Review environment variables, secrets management, and defaults
- Logging Security: Audit what information is captured and how it's protected
Risk Assessment Framework
Critical: Direct system compromise, data breach potential, authentication bypass
High: Sensitive data exposure, privilege escalation, configuration vulnerabilities
Medium: Information disclosure, denial of service potential, audit trail gaps
Low: Security best practice violations, hardening opportunities
Handover Security Checklist
Essential Security Items
- No hardcoded credentials or API keys
- Secure session management and authentication flows
- Sensitive data encrypted at rest and in transit
- Comprehensive audit logging without data leakage
- Environment-specific configuration management
- Input validation and sanitization
- Error handling that doesn't reveal system information
Documentation Requirements
- Security architecture overview
- Threat model and risk assessment
- Incident response procedures
- Security configuration guide
- Vulnerability disclosure process
AI System Specific Considerations
LLM Security Patterns
- Prompt Injection Prevention: Input sanitization and context isolation
- Output Filtering: Preventing sensitive information leakage in responses
- Model Access Controls: Securing API endpoints and usage quotas
- Training Data Protection: Ensuring no sensitive data in model training
RAG System Vulnerabilities
- Document Access Controls: Ensuring proper authorization for retrieval
- Vector Database Security: Protecting embeddings and similarity search
- Context Contamination: Preventing unauthorized information mixing
- Search Result Filtering: Access control at the document level
Automated Security Tools
Static Analysis Integration
- Code scanning for common vulnerability patterns
- Dependency vulnerability scanning
- Secret detection in source code
- Configuration security analysis
Dynamic Testing Approaches
- Authentication bypass testing
- Input validation fuzzing
- Authorization boundary testing
- Session management validation
See also
- code-handover-practices
- authentication-patterns
- sensitive-data-protection
- ai-system-security