Seguridad del servicio web

1

Actualmente estamos diseñando un servicio web que devuelve mensajes JSON . Las siguientes son las implementaciones planificadas para la seguridad del servicio:

  • Una Certificación SSL al servicio para la seguridad de la comunicación a través de Internet.

      

    Seguridad de la capa de transporte (TLS) y su predecesor, Capa de sockets seguros (SSL), son protocolos criptográficos que proporcionan seguridad de comunicación a través de Internet. El servidor devuelve su identificación en forma de certificado digital. El certificado generalmente contiene el nombre del servidor, la autoridad de certificados de confianza (CA) y la clave de cifrado pública del servidor. - wikipedia.org

  • Cifrado de datos confidenciales mediante hashes y salt.

      

    El cifrado está en Clave simétrica (Rijndael) : Rijndael se puede especificar con Tamaños de bloque y clave en cualquier múltiplo de 32 bits, con un mínimo de 128 bits. El tamaño de bloque tiene un máximo de 256 bits, pero el tamaño de clave no tiene un máximo teórico. - wikipedia.org

  • Autenticación del cliente utilizando validador de nombre de usuario y contraseña personalizados

      

    WCF permite esquemas de autenticación de nombre de usuario y contraseña personalizados, también conocidos como validadores. - msdn.microsoft.com

El servicio será consumido por diferentes clientes y los datos deben estar protegidos. Los siguientes son los posibles riesgos [1] :

  • Autenticación rota y administración de sesión : las funciones de la aplicación relacionadas con la autenticación y la administración de sesión a menudo no se implementan correctamente, lo que permite a los atacantes comprometer contraseñas, claves, tokens de sesión o explotar otras fallas de implementación para asumir las identidades de otros usuarios.
  • Referencias de objetos directos inseguros : una referencia de objeto directo se produce cuando un desarrollador expone una referencia a un objeto de implementación interno, como un archivo, un directorio o una clave de base de datos. Sin una verificación de control de acceso u otra protección, los atacantes pueden manipular estas referencias para acceder a datos no autorizados.
  • Configuración errónea de la seguridad : la buena seguridad requiere tener una configuración segura definida e implementada para la aplicación, los marcos, el servidor de aplicaciones, el servidor web, el servidor de bases de datos y la plataforma. Todas estas configuraciones deben definirse, implementarse y mantenerse, ya que muchas no se envían con valores predeterminados seguros. Esto incluye mantener todo el software actualizado, incluidas todas las bibliotecas de códigos utilizadas por la aplicación.
  • Almacenamiento criptográfico inseguro : muchas aplicaciones web no protegen adecuadamente los datos confidenciales, como tarjetas de crédito, SSN y credenciales de autenticación, con el cifrado o hashing adecuado. Los atacantes pueden robar o modificar dichos datos protegidos de forma deficiente para realizar robos de identidad, fraudes con tarjetas de crédito u otros delitos.
  • Protección insuficiente de la capa de transporte : las aplicaciones con frecuencia no autentican, cifran y protegen la confidencialidad y la integridad del tráfico de red sensible. Cuando lo hacen, a veces admiten algoritmos débiles, utilizan certificados caducados o no válidos, o no los usan correctamente.

Si un ataque ha logrado penetrar en nuestro servicio, nuestra empresa sufrirá una gran pérdida. Los siguientes son los posibles resultados de un ataque exitoso:

  • Cualquier información manipulada de cualquier manera maliciosa podría causar una gran pérdida en las ganancias de nuestra empresa.
  • El acceso de clientes no autenticados les permite cambiar y agregar datos maliciosos y / o ralentizar o interrumpir el servicio, lo que hace que el servicio sea inaccesible.

¿Es nuestra implementación planificada para la seguridad del servicio suficiente para prevenir estos riesgos? ¿Qué otros problemas de seguridad debemos considerar?

[1] El nombre y la definición del riesgo se basan en Riesgos de seguridad de la aplicación OWASP .

    
pregunta John Isaiah Carmona 25.04.2012 - 08:51
fuente

1 respuesta

5

Le sugiero que elabore más sobre cuál es el modelo de amenaza que podría causar una gran pérdida. En general, me cuestionaría si la web es la tecnología adecuada para implementar esto: los fallos de la seguridad de la web son habituales, por lo que si cualquier fallo de seguridad pudiera causar una gran pérdida de beneficios, tal vez debería replantearse toda la iniciativa. Pero quizás pueda explicar más sobre los riesgos de mayor prioridad en su entorno. Me imagino que hay un servidor, y hay un cliente. Hay múltiples amenazas. Podríamos preocuparnos por un cliente malintencionado que logra cambiar la copia autorizada de los datos en el servidor. O podemos preocuparnos por un atacante (quizás un cliente malicioso) que pueda manipular los datos que otros clientes ven. O podemos preocuparnos por un cliente malintencionado que puede acceder a datos confidenciales sin autorización. O podríamos preocuparnos por los robos al servidor. ¿Cuáles son los riesgos de mayor gravedad en su entorno?

También diría que me cuesta mucho decir cuál es tu plan preciso. No estoy familiarizado con lo que es una "certificación SSL". ¿Quiere decir que utiliza SSL para todas las conexiones a los datos JSON? Tampoco dice cómo se realiza el cifrado (los detalles son importantes), o por qué necesita el cifrado en primer lugar. Tampoco dice si hay algún control de acceso y, en caso afirmativo, cómo se hace (cómo se realiza la autorización y la autenticación). Por lo tanto, no hay suficiente para revisar su sistema, ya que la pregunta actual es válida.

Permítame comenzar con algunos consejos generales: dado el potencial de grandes pérdidas de ganancias si hay un fallo de seguridad, debe contratar a un profesional de seguridad experimentado (tal vez como consultor). Déles acceso completo a su sistema y pídales que revisen la seguridad de su sistema. Solicite un análisis de riesgo arquitectónico (modelado de amenazas), un análisis de código fuente (por ejemplo, para vulnerabilidades de seguridad) y consejos sobre cómo protegerse mejor. Si hay grandes ganancias en juego, no debe confiar en este sitio web.

Sin ningún detalle, es difícil dar consejos específicos. Pero voy a hacer algunas sugerencias:

  • Implemente un servidor dedicado para proporcionar acceso a estos datos y utilícelo solo para ese propósito. Asegúrelo firmemente (hay muchas guías en este sitio sobre cómo fortalecer un servidor).

  • Use SSL en todo el sitio: es decir, use solo HTTPS, no HTTP. No uses HTTP para nada; utilice solo HTTPS. Habilitar HSTS. Establezca la marca de seguridad en todas las cookies.

  • Piense detenidamente acerca de cómo autenticar a los usuarios.

  • Adopte buenas prácticas de seguridad, como la integración de la seguridad en el ciclo de vida del desarrollo del software. Microsoft tiene algunos recursos excelentes. Busque en este sitio y encontrará más (Microsoft SDL, BSIMM, etc.).

Tenga en cuenta que es probable que esto no sea suficiente: sería necesario comprender con más detalle los objetivos y los requisitos de su servicio web para proporcionar una lista más completa. Esto es solo un punto de partida.

    
respondido por el D.W. 25.04.2012 - 09:17
fuente

Lea otras preguntas en las etiquetas