¿Existe algún riesgo al hacer coincidir las expresiones regulares proporcionadas por el usuario con las entradas proporcionadas por el usuario?

3

Tengo un bot IRC escrito en python3 que analiza las solicitudes de los usuarios para buscar y reemplazar. ¿Existe algún riesgo de DoS u otro ataque al hacer esto?

    
pregunta Shelvacu 29.01.2016 - 03:29
fuente

1 respuesta

8

Regex puede convertirse en un operación increíblemente lenta en Python 3 debido a la re el módulo no crea un DFA en segundo plano y en su lugar utiliza el retroceso recursivo. Esto significa que la expresión regular tomará tiempo exponencial en lugar de tiempo lineal cuando se aplique a una cadena. Un atacante podría construir una expresión regular que tome la cantidad de tiempo máxima para completar al abusar del retroceso recursivo que puede resultar en un ataque DoS si el tiempo para procesar estas expresiones regulares es mucho más lento que la posible frecuencia de solicitudes.

Para mitigar este problema, sugiero utilizar la compilación de NFA en DFA de la implementación de expresiones regulares que puede tener que crear usted mismo. O encuentra como un módulo en alguna parte. Hice algunas búsquedas preliminares y no encontré mucho que informar.

    
respondido por el Seth M. Larson 29.01.2016 - 03:54
fuente

Lea otras preguntas en las etiquetas