En el mundo acelerado de hoy, los desarrolladores de software a menudo deben trabajar bajo presión, sobre todo cuando se trata de proyectos con plazos muy estrictos (o de pedidos hechos sin la antelación necesaria).
Sin embargo, estos "trabajitos rápidos" a veces se pagan caro, ya que pueden filtrarse fallas o vulnerabilidades no deseadas en el código. Pero hay maneras de mitigar estos riesgos, como tener procedimientos adecuados de control de calidad, utilizar procesos y herramientas de prueba bien definidos, y educar a los programadores para que apliquen el enfoque llamado "seguro por diseño".
Incluso hoy en día, un gran número de desarrolladores de software no se están fijando en la seguridad como deberían. Algunos nunca recibieron una capacitación adecuada sobre prácticas de desarrollo seguro por parte de sus empleadores, mientras que otros tratan de acelerar el trabajo utilizando código de terceros (lo que no está mal, pero podría contener errores no detectados).
Todo esto, sumado al hecho de que los clientes prefieren una entrega rápida por sobre la seguridad, hace que la creación de software seguro sea más difícil de lograr.
Esto también afecta a los usuarios. Algunas fallas son tan graves que le permiten a un atacante robar datos confidenciales, secuestrar una sesión, e incluso hacerse pasar por la víctima. Sin embargo, existen ciertas recomendaciones para los desarrolladores que podrían ayudar a evitar algunos de estos problemas, para ser más específicos, mediante la aplicación de las prácticas "seguro por diseño".
Para empezar, el enfoque "seguro por diseño" anima a los desarrolladores a crear sus aplicaciones pensando en la seguridad. Se basa en tres principios que forman la base de la seguridad de la información:
- Los usuarios solo pueden tener acceso a los datos para los que tienen permiso.
- Los sistemas deben garantizar que los usuarios no autorizados no puedan manipular ni alterar datos.
- Los sistemas deben otorgarles a los usuarios autorizados acceso a los datos cuando lo necesiten.
La Fundación OWASP (Proyecto Abierto de Seguridad de Aplicaciones Web), partidaria del enfoque “seguro por diseño”, tiene como propósito ayudar a los desarrolladores y a las empresas a crear y manejar aplicaciones confiables para los usuarios. Para ello, publica las vulnerabilidades más comunes de modo que cualquier persona pueda identificarlas cuando las encuentra online. Éstas son las primeras tres:
- Las Fallas de inyección, que afectan consultas SQL, comandos del sistema operativo, entre otros, es la número uno.
Ejemplo: En un sistema vulnerable, el atacante inserta un script en el formulario de inicio de sesión como reemplazo de una cuenta de datos legítima (como el nombre de usuario y la contraseña). El intérprete (un programa que el usuario no puede ver, pero que está llevando a cabo las instrucciones dadas) ejecuta el comando no deseado y le permite al atacante acceder a los datos en el sistema host, robarlos, alterarlos, denegar el acceso o, en el peor de los casos, tomar el control absoluto.
- La Pérdida de autenticación y gestión de sesiones es otra falla muy extendida y comúnmente aprovechada por los atacantes, mediante la cual una aplicación Web no logra proteger los datos confidenciales.
Ejemplo: El usuario se identifica (por lo general) proporcionando un nombre de usuario y una contraseña, y recibe un ID de sesión de la aplicación vinculado a sus credenciales. Sin embargo, si la conexión no está cifrada, un atacante podría utilizar un ataque de interceptación de tipo man-in-the-middle para capturar los datos confidenciales transferidos. Los usuarios malintencionados también pueden secuestrar la sesión o, peor aún, hacerse pasar por la víctima mediante el uso no autorizado del ID de sesión que aparece en la URL.
- La Secuencia de comandos en sitios cruzados (también conocida como XSS), es otra vulnerabilidad muy común. Le permite al atacante comprometer la cuenta de un usuario o tomar control de ella para extraer sus datos. El atacante también puede redirigir a la víctima a una página maliciosa o instalar malware en su sistema.
Ejemplo: El usuario recibe un correo electrónico o un mensaje en los medios sociales, que contiene un vínculo malicioso. Cuando la víctima hace clic en él y es redirigida al sitio, se ejecuta un script incrustado por el atacante que le permite secuestrar la sesión del usuario o extraer datos desde el sitio.