web-dev-qa-db-fra.com

Comment réparer Veracode CWE 117 (neutralisation de sortie incorrecte pour les journaux)

Il existe une méthode Spring globale @ExceptionHandler(Exception.class) qui enregistre une exception comme celle-ci:

@ExceptionHandler(Exception.class)
void handleException(Exception ex) {
    logger.error("Simple error message", ex);
...

L'analyse de Veracode indique que cette journalisation a Improper Output Neutralization for Logs et suggérer d'utiliser l'enregistreur ESAPI. Existe-t-il un moyen de corriger cette vulnérabilité sans changer l'enregistreur en ESAPI? C'est le seul endroit dans le code où j'ai rencontré ce problème et j'essaie de comprendre comment le résoudre avec des modifications minimales. Peut-être que ESAPI a des méthodes que je n'ai pas remarquées?

P.S. L'enregistreur actuel est Log4j sur slf4j

PD: Au final, j'ai utilisé l'enregistreur ESAPI. Je pensais qu'il n'utiliserait pas mon service de journalisation par défaut, mais je me trompais et il a simplement utilisé mon interface de journalisation slf4j avec une configuration appropriée.

private static final Logger logger = ESAPI.getLogger(MyClass.class);
...
logger.error(null, "Simple error message", ex);

ESAPI a l'extension de l'enregistreur log4j et de l'usine d'enregistreurs. Il peut être configuré ce qu'il faut utiliser dans ESAPI.properties. Par exemple:

ESAPI.Logger=org.owasp.esapi.reference.Log4JLogFactory
9
Vitaliy Borisok

Bien que je sois un peu en retard, mais je pense que cela aiderait ceux qui ne veulent pas utiliser la bibliothèque ESAPI et qui rencontrent des problèmes uniquement pour la classe de gestionnaire d'exceptions

Utiliser la bibliothèque Apache commons

import org.Apache.commons.lang3.exception.ExceptionUtils;
LOG.error(ExceptionUtils.getStackTrace(ex));
0
Arpit Pandey