Hace poco leí un artículo titulado "Todo lo que siempre quisiste saber sobre el análisis dinámico de la corrupción y la ejecución simbólica directa (pero es posible que tenga miedo de preguntar)" por el Dr. EJ Schwartz. En el documento, habló principalmente sobre sus aplicaciones en el contexto de seguridad de nivel binario.
Para explicar qué son, el autor define un lenguaje específico, con su semántica operativa, etc. Como puedo ver, este es un lenguaje imperativo. Me preguntaba si tal análisis podría aplicarse (y podría tener sentido hacerlo) también a un pequeño subconjunto de un lenguaje funcional. Quiero decir, uno con algunas operaciones aritméticas y booleanas básicas, si son expresiones, definición de función, aplicaciones y algunos tipos de funciones de entrada.
En un lenguaje funcional puro, no hay efectos secundarios y los valores son inmutables. En tal contexto, el posible impacto de un valor contaminado es, en mi opinión, altamente reducido porque simplemente podemos usar las expresiones if para verificar el valor. Una vez que lo hayamos hecho, ¿podemos suponer que cada evaluación de la rama "then" y "else" será segura? Quiero decir, en un contexto como este, en el que no tenemos declaraciones de goto, punteros, etc., se mejora la seguridad general y el análisis de contaminación es más simple que en un lenguaje imperativo y, dado que el flujo de control es más claro, La aplicación de análisis tanto estáticos como dinámicos sería más simple.
Sin embargo, no soy un experto en este campo, por lo que estoy bastante confundido acerca de las posibles aplicaciones e implicaciones. ¿Mis suposiciones y pensamientos son correctos?
Gracias a todos.