¿Cree que todas las vulnerabilidades le dan a un atacante acceso completo a su aplicación?
¡Demonios, no!
Entonces, ¿cómo se explotan las aplicaciones? La inyección SQL es muy común , y si tiene una inyección SQL en una aplicación, debe tener acceso completo de lectura a la base de datos. Eso significa que puedes leer valores encriptados. Entonces, ¿qué pasa con la clave? Bueno, un atacante podría obtener acceso a la clave utilizando un MySQL load_file()
, pero no si la aplicación se creó correctamente. MySQL no debería estar en el mismo sistema, y si su DBA tiene algún sentido de seguridad, la aplicación web no tendrá file_priv
.
Pero incluso más al punto, los secretos se pueden almacenar en lugares que no están en archivos accesibles, por ejemplo: variables de entorno . Los privilegios del sistema de archivos se pueden usar para hacer que los archivos sean ejecutables, pero no legibles ni grabables desde un atacante. El cifrado se trata de planificar un error y usar la debilidad de un atacante en su contra.