¿Por que deben estar securizadas as aplicaciones?

Unha aplicación insegura é un "caramelo" para calquera que queira conseguir información confidencial dalgún tipo (contrasinais, contas bancarias, etc...), suplantar a identidade de alguén para chegar a outra persoa, realizar calquera acto delituoso, realizar compras/retirar diñeiro, etc.

As aplicacións deben estar securizadas para tratar de previr toda posibilidade de intento de intrusión e, en caso de que suceda, poder ter constancia diso o antes posible e que sexa illado e erradicado canto antes.


¿Deben estar cifradas a información e as comunicacións que empregan as aplicacións?

Existen multitude de ataques coñecidos tanto para escoitar as comunicacións de rede e as comunicacións inalámbricas coma para aproveitar vulnerabilidades das aplicacións e acceder a información destas.

Tendo en conta isto, ao final a necesidade de cifrado da información ou das comunicacións en realidade depende dacriticidad ou nivel de confidencialidade que poida ter a información en si:

  • Cando se trate información que poida ser considera confidencial ou delicada dalgún xeito, debe pensarse sempre en utilizar canles de comunicación seguras que cifren polo menos todo dato intercambiado.
  • E cando se trate de información que poida ser considerada moi confidencial, secreta ou extremadamente delicada, ademais de protexer a comunicación, tamén se debería pensar en almacenala de xeito cifrado.


¿Que debemos ter en conta á hora de desaenvolver unha aplicación?

A continuación imos nomear algúns puntos a ter en conta para o desenvolvemento seguro de aplicacións:
  1. Controlar e filtrar tanto a entrada coma a saída de datos (validalas, reducir ao mínimo a información que se lle presenta ao usuario ante fallos|sentenzas, etc...).
  2. Xestionar os accesos a memoria (previr desbordamento de buffers).
  3. Empregar control de acceso multi-nivel (separación de privilexios e tratar de traballar sempre cos mínimos posibles).
  4. Considerar as necesidades de cifrado e protección da información e das súas conexións.


¿Por que se debe previr un desbordamento de buffer (Buffer Overflow)?

Un desbordamento de buffer prodúcese cando os datos que se escriben nun buffer corrompen aqueles datos en direcciónss de memoria adxacentes ós destinados para o buffer. É dicir, se se envía unha cantidade superior á capacidade pre-asignada, os bytes sobrantes almacénanse en zonas de memoria adxacentes, sobreescribindo o seu contido orixinal, que probablemente pertencían a datos ou código almacenados en memoria.

Estes fallos son utilizados para lograr executar código arbitrario nun equipo, de maneira que en moitos casos logran tomar control do equipo da vítima ou executar un ataque de Denegación de Servizos (DoS).​


¿Que é a inxección de código? ¿Que tipos hai? ¿Como previla?

Inxectar código é enviar datos inesperados a un intérprete de comandos. Con el inténtase forzar á aplicación a conseguir unha serie de situacións: que devolva información dos servizos que a compoñen, que devolva información da propia base de datos que manexa e contra a que realiza as consultas, conseguir accesos con privilexios descoñecendo as credenciais necesarias para iso, etc...

Dentro das inxeccións de código temos varios tipos, entre os máis destacados e os que máis frecuentemente se empregan para explotar vulnerabilidades son: SQL injection, LDAP injection e OS injection onde se empregan as linguaxes SQL e LDAP para realizar as consultas a través do intérprete, e os comandos para executalos dentro da propia aplicación.

O mellor xeito para tratar de previr este tipo de ataques é filtrar todas as entradas que o usuario poida enviar á aplicación, filtrando os símbolos máis comúns neste tipo de consultas, capturando estes malintencionados envíos e anulando todo o efecto que podería causar nas nosas aplicacións.


¿Por que se produce a rotura de autenticación e os fallos na xestión de sesión?

As vulnerabilidades relacionadas coa perda de autenticación e xestión de sesións son críticas na seguridade das aplicacións e en especial das aplicacións WEB.

Unha mala xestión dos contrasinais, a expiración de sesións ou o proceso de peche de sesión, son algunhas das causas que permiten a un atacante suplantar a información dun usuario, podendo chegar a obter unha conta con privilexios que lle permita sabotar os controis de autorización e rexistro da aplicación. Esta situación podería causar un acceso non autorizado a calquera tipo de información que se encontre almacenada no servidor ou os servizos que foron comprometidos.​

 

¿Que son os Cross-Site-Scripting (XSS)? ¿Que tipos hai? ¿Como previlos?


Os XSS son ataques baseados en inxección de código script en calquera dos campos dunha aplicación.

Dentro dos XSS podemos encontrar os XSS-persistentes e os XSS-non persistentes, onde a principal diferenza que se pode apreciar é que a inxección no XSS persistente queda almacenada na propia aplicación e calquera que acceda a esa parte onde está almacenada pode "contaxiarse" e no XSS non persistente debe facerse chegar dita parte da aplicación (un link á parte citada) por medio de enxeñaría social.

Para previr este tipo de ataques, o principal é filtrar as entradas aos diferentes campos da aplicación (limitando o número de carácteres de entrada, controlando os carácteres especiais deste tipo de linguaxes, etc...) e tratar de concienciar ós usuarios para que estean máis previdos e non confíen en calquera cousa que lles poida chegar.


¿Por que se producen  as referencias directas a obxectos de maneira insegura? ¿Como podemos previlo?

Nas aplicacións, débese comprobar os accesos ós recursos ós que os usuarios poden acceder a través dela, e tamén, se realmente ten os privilexios necesarios para acceder a ese recurso en concreto. Se non previmos isto nas nosas aplicacións, estase a dar a posibilidade ó atacante de acceder a calquera tipo de recurso simplemente cambiando a ruta ou o nome do recurso na petición.​


¿Unha mala configuración das aplicacións implica un maior risco?

Unha boa seguridade require ter definida e implementar unha configuración segura para a aplicación. Todas estas configuracións deben ser definidas, implementadas e mantidas, dado que polo xeral, non son seguras por defecto.

Debemos manter todo o software actualizado, xa que se xa foron detectados defectos de seguridade se terán implementar parches e, polo tanto, teremos un menor risco de acceso ás aplicacións.

 


¿Deberíamos expoñer datos sensibles nas aplicacións?

Moitas aplicacións web mostran máis información da debida e non protexen axeitadamente os datos sensibles. Por esta causa, os atacantes poden roubar ou modificar tales datos para levar a cabo fraudes, roubos de identidade, etc...

Un xeito de previr isto é empregar métodos de protección adicionais como o cifrado de datos, non almacenar información innecesaria, etc... e tamén ter precaución especial nos intercambios de datos co navegador.

 


¿Que implica a ausencia de control de acceso a funcións?

A ausencia de control nas funcións cando realizas solicitudes ó servidor pode provocar que un atacante modifique o nome de acceso a dita función e acceda a calquera outra para realizar peticións sen a autorización apropiada, e mesmo, chegar a conseguir privilexios de administrador.

 


​¿Que é o Cross-Site Request Forgery (CSRF)?

Un ataque CSRF forza ao navegador web dunha vítima a enviar unha petición a unha aplicación web vulnerable (incluíndo a sesión do usuario e calquera outra información de autenticación incluída automaticamente) e esta realiza a acción elixida a través da vítima, é dicir, o atacante realiza calquera petición á aplicación vulnerable a través da vítima, que é quen queda reflectido como solicitante.


 

¿Que implica ter algunha vulnerabilidade nos compoñentes que se empregan?

Se contamos na nosa estrutura con compoñentes (librarías,frameworks e outros módulos de software) con vulnerabilidades, se se lle ataca directamente poderíase facilitar a intrusión no servidor ou unha pérdida seria de datos. Se se empregan este tipo de compoñentes con vulnerabilidades xa coñecidas, veremos reducida en boa medida a defensa da nosa aplicación.

¿Como afecta ó usuario a falta de control nas redirecciones e reenvíos non validados?

As aplicacións web frecuentemente redirixen e reenvían os usuarios cara a outros sitios web. Sen unha validación apropiada, as vítimas poden estar a ser redirixidas cara a sitios onde os atacantes poidan obter información persoal destes e poder realizar un phising, ou simplemente infectalos cun malware.
Ministerio de Economía y Competitividad - Fondo Europeo de Desenvolvemento Rexional