Skip to main content
Glama
generator.py5.36 kB
"""Generate secure code fixes for vulnerabilities.""" import logging from typing import Optional from ..asvs.mapper import get_asvs_mapper from ..models import FixSuggestion from .templates import get_fix_template logger = logging.getLogger(__name__) class FixGenerator: """Generate secure code alternatives for vulnerabilities.""" def __init__(self) -> None: """Initialize fix generator.""" self.mapper = get_asvs_mapper() async def generate_fix( self, vulnerable_code: str, vulnerability_type: str, language: str, context: Optional[str] = None, ) -> FixSuggestion: """ Generate a secure code alternative for a vulnerability. Args: vulnerable_code: Code with security issue vulnerability_type: Type of vulnerability language: Programming language context: Optional additional context Returns: Fix suggestion with secure code alternative """ logger.info(f"Generating fix for {vulnerability_type} in {language}") # Get fix template template = get_fix_template(vulnerability_type, language) if template: # Use template secure_code = template["secure"] explanation = template["explanation"] asvs_requirements = template.get("asvs_requirements", []) # Build security benefits list security_benefits = [] if "sql_injection" in vulnerability_type.lower(): security_benefits.append("Prevents SQL injection attacks") security_benefits.append("Separates code from data") elif "xss" in vulnerability_type.lower(): security_benefits.append("Prevents cross-site scripting (XSS) attacks") security_benefits.append("Protects users from malicious scripts") elif "weak_password" in vulnerability_type.lower(): security_benefits.append("Resists brute force attacks") security_benefits.append("Protects against credential stuffing") elif "weak_crypto" in vulnerability_type.lower(): security_benefits.append("Uses modern, secure cryptographic algorithms") security_benefits.append("Provides confidentiality and integrity") elif "session" in vulnerability_type.lower(): security_benefits.append("Prevents session hijacking") security_benefits.append("Mitigates CSRF attacks") # Additional considerations additional_considerations = None if "sql_injection" in vulnerability_type.lower(): additional_considerations = ( "- Also validate and sanitize input\n" "- Use principle of least privilege for database users\n" "- Consider using an ORM for additional safety" ) elif "xss" in vulnerability_type.lower(): additional_considerations = ( "- Implement Content Security Policy (CSP) header\n" "- Validate input on the server side\n" "- Use auto-escaping templates when possible" ) elif "weak_password" in vulnerability_type.lower(): additional_considerations = ( "- Implement rate limiting on login attempts\n" "- Consider multi-factor authentication (MFA)\n" "- Use breach detection services (HaveIBeenPwned)" ) else: # Generate generic fix logger.warning(f"No template found for {vulnerability_type} in {language}") # Map to ASVS requirements asvs_requirements = self.mapper.map_vulnerability_to_asvs(vulnerability_type) secure_code = self._generate_generic_fix(vulnerability_type, language) explanation = f"Replace vulnerable code with secure alternative that addresses {vulnerability_type}." security_benefits = ["Addresses security vulnerability"] additional_considerations = "Consult ASVS requirements and security best practices for your language." return FixSuggestion( vulnerable_code=vulnerable_code, secure_code=secure_code, explanation=explanation, asvs_requirements=asvs_requirements, security_benefits=security_benefits, additional_considerations=additional_considerations, ) def _generate_generic_fix(self, vulnerability_type: str, language: str) -> str: """Generate a generic fix message when no template is available.""" return f"""# Secure implementation needed for {vulnerability_type} # Please refer to OWASP ASVS requirements and implement: # 1. Input validation and sanitization # 2. Secure defaults and configurations # 3. Defense-in-depth security controls # For specific guidance, use: check_security_requirements tool # with code_type related to {vulnerability_type} # Example resources: # - OWASP ASVS: https://owasp.org/www-project-application-security-verification-standard/ # - OWASP Cheat Sheets: https://cheatsheetseries.owasp.org/ # - Language-specific security guides for {language} """

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/harn1shmodi/vsguard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server