viernes, 24 de enero de 2025

Existe un y Para todo en Seguridad

Dos de las expresiones más utilizadas en las demostraciones matemáticas son: Existe un (there is) "" y para todo (for all) "". Estas expresiones también tienen su equivalente en la seguridad informática.

Primero algunas definiciones:

Programa vulnerable: Aquel que puede hacer algo para lo que no fue diseñado en algún contexto y conjunto de datos de entrada. (por ejemplo, casi todos los programas de cierta corporación).

Programa invulnerable: Aquel que no puede hacer algo para lo que no fue diseñado, en ningún contexto ni con ningún conjunto de datos de entrada. (por ejemplo: los programas hola mundo).

Ahora las reglas que hay que utilizar para no dejarse engañar por la publicidad:

  • Los análisis estáticos de código (SAST) y los dinámicos (DAST), tanto automáticos como manuales, solo pueden decir si (∃) existe algún problema en lo que analizan, pero no pueden garantizar que no exista (∄) ningún problema más. Pero si los SAST se realizan en el entorno de desarrollo, antes de pasar el código al gestor de versiones, la cantidad de problemas posteriores disminuyen.
  • ∄  No existe ningún programa que garantice que otro programa deje de ser un programa vulnerable.
    • Existen (∃) muchísimos programas que evitan casi todos los ataques conocidos hasta el momento, ya sea mediante reglas o actualizaciones diarias (como los antivirus o ese programa (...strike) que hizo casi tanto como un virus).
  • Existe () una forma sencilla de evitar el 99,9999999% de todos los ataques: Validar concienzudamente todos los datos de entrada y dejar pasar solo los deseados. No basta con comprobar que no es vacío, también hay que comprobar su longitud y que tiene la forma que se desea, y eso también incluye, en el caso de las frases, que no contiene caracteres Unicode de control, y que están correctamente decodificados y codificados para el medio donde se vayan a mostrar. Y para que eso sea posible, no hay que mezclar datos. Todo el mundo debería saber ya que en informática es mucho más fácil juntar que separar.



Copyleft Ender. El presente artículo no tiene finalidad informativa, de creación de opinión pública o de entretenimiento. Tiene como finalidad principal, la enseñanza y la divulgación de experiencias, proyectos, pensamientos y conocimientos del autor. Se permite la copia textual, la traducción y la distribución de este artículo entero en cualquier medio, a condición de que este aviso sea conservado. Se permite la cita. El autor no reclamará ninguna cantidad por el ejercicio de las dos autorizaciones anteriores. No autorizo a ninguna Entidad de Derechos de Autor a reclamar cantidad alguna en mi nombre por el ejercicio de los dos derechos anteriores.

viernes, 3 de enero de 2025

Lo que no hacen los SAST automáticos

Un Análisis Estático Automático de Código Fuente (SAST automático) consigue sólo lo siguiente:

* Detectar las construcciones incorrectas o inseguras que el programa ha sido programado para encontrar.

Algunas cosas que no detecta son:

* Fallos de diseño.

* Puertas traseras con código correcto.

* Escritura de datos confidenciales en trazas.

* Construcciones muy incorrectas como: generar una sentencia SQL concatenando, guardarla siempre en el mismo fichero, leer el fichero y realizar la sentencia leída.

* Inconsistencias, como múltiples funciones para conseguir lo mismo (o algo muy parecido).

* El uso de datos no cifrados o firmados correctamente, o que permitan su fácil actualización.

* Y un largo etcétera.

Resumiendo, un SAST automático limpio es lo mínimo que se puede exigir a un programador, pero de eso a pensar que ese código ya es bueno, hay todo un océano que navegar.


Copyleft Ender. El presente artículo no tiene finalidad informativa, de creación de opinión pública o de entretenimiento. Tiene como finalidad principal, la enseñanza y la divulgación de experiencias, proyectos, pensamientos y conocimientos del autor. Se permite la copia textual, la traducción y la distribución de este artículo entero en cualquier medio, a condición de que este aviso sea conservado. Se permite la cita. El autor no reclamará ninguna cantidad por el ejercicio de las dos autorizaciones anteriores. No autorizo a ninguna Entidad de Derechos de Autor a reclamar cantidad alguna en mi nombre por el ejercicio de los dos derechos anteriores.