# Improper Output Neutralization for Logs (CWE-117) The product does not neutralize or incorrectly neutralizes output that is written to logs. **Stack:** Go - Prevalence: Moyenne 3 langages couverts - Impact: Moyen Revue recommandée - Prevention: Documentée 4 exemples de correctifs **OWASP:** Injection (A03:2021-Injection) - #3 ## Description Log injection attacks occur when user input is written to log files without proper sanitization. This can allow attackers to forge log entries, inject malicious content, or exploit log analysis tools. ## Prevention Stratégies de prévention pour Log Injection basées sur 1 règles de détection Shoulder. ### Go Strip newlines and control characters from user input before logging ## Warning Signs - [MEDIUM] unsanitized user input flowing into log statements, enabling log forging attacks ## Consequences - Modification des données de l'application - Dissimuler des activités - Exécuter du code non autorisé ## Mitigations - Validez et assainissez toute entrée avant de l'écrire dans les journaux - Utilisez des formats de log structurés qui séparent les données de la syntaxe du journal - Encodez les caractères spéciaux lors de l'écriture de données contrôlées par l'utilisateur dans les journaux ## Detection - Total rules: 4 - Languages: go, javascript, typescript, python ## Rules by Language ### Go (1 rules) - **Log Injection / Log Forging** [MEDIUM]: Detects unsanitized user input flowing into log statements, enabling log forging attacks. - Remediation: Remove newlines and control characters from user input before logging. ```go sanitized := strings.ReplaceAll(userInput, "\n", "") sanitized = strings.ReplaceAll(sanitized, "\r", "") log.Printf("User action: %s", sanitized) ``` Learn more: https://shoulder.dev/learn/go/cwe-117/log-injection