¿Es OpenSSL lo suficientemente seguro?

2

Planeamos distribuir servidores web Node.JS, para su ventaja de E / S asíncronas. Los servidores https de Node.JS utilizan bibliotecas OpenSSL.

Parece que OpenSSL tiene vulnerabilidades resueltas regularmente . Esto me hace preguntarme si debo mover la capa SSL a un proceso Java separado / algo más probado, que no tendrá un desbordamiento de búfer y otras vulnerabilidades.

El repositorio de paquetes de Oracle Solaris publica solo fuera de fecha versión , por lo que la compilación de la fuente sería necesaria para una instalación rápida.

Por supuesto, habrá un retraso entre la distribución de descubrimiento > release- > compilation- > a los servidores que se ejecutan. Y costo / retraso de administración adicional en caso de que haya un problema con la compilación.

  • ¿Qué tan efectivas serán las solicitudes de actualización contra los atacantes? ¿Qué tipo de trabajo sería necesario para el atacante, una vez que se identifica una vulnerabilidad?
  • ¿Recomienda un enfoque alternativo y más seguro para instalar la capa https?
  • ¿Existe una versión más antigua y estable de OpenSSL que aún se mantiene y que tiene un tiempo más largo para demostrar que es seguro?

Se agradecería cualquier entrada, incluida la ayuda para resolver correctamente esta pregunta.

Editar: Un par de aclaraciones sobre cómo se introduciría una biblioteca separada, si eso sucediera: La biblioteca separada solo sería una implementación de un servidor proxy https, en un proceso separado. Esta es una implementación completamente nueva, por lo que no estaríamos cambiando, en lugar de eso, simplemente 'no usaríamos' la biblioteca de servidores Node.JS https .

    
pregunta George Bailey 04.06.2012 - 17:27
fuente

3 respuestas

7

El hecho de que estén haciendo cambios constantemente para mejorar la seguridad es algo bueno. Significa que están al día con las vulnerabilidades y parches en consecuencia. Este es el tipo de cosas que desea ver en una biblioteca de seguridad. El hecho de que una biblioteca no se actualice con frecuencia no significa que no tengan ningún problema. Podría significar que no los están arreglando lo suficientemente rápido o con suficiente frecuencia.

En cuanto a la biblioteca en sí, parece ser bastante utilizada, por lo que creo que estarás a salvo con la versión más reciente. Parece que usar diferentes bibliotecas presentará muchas complicaciones en el proceso de creación y actualización (lo que a su vez puede causar problemas de seguridad), y es probable que no vaya a ganar mucha seguridad al cambiar.

    
respondido por el Oleksi 04.06.2012 - 17:33
fuente
1

Otra opción es descargar el cálculo de SSL a un proxy inverso como Pound . He usado Pound en el pasado y lo encontré muy fácil de usar. Solo lo he usado para sitios web tradicionales, así que no sé si funcionará para usted.

Lo bueno de Pound es que puede cargar aproximadamente el balance de la carga configurando múltiples back-ends.

    
respondido por el rox0r 04.06.2012 - 20:35
fuente
0

Conceptualmente, es factible tener una implementación SSL que esté libre de desbordamientos de búfer: es suficiente usar un lenguaje de programación que impida forzosamente los desbordamientos de búfer. Por ejemplo, una implementación SSL completamente en Java. La máquina virtual Java comprueba sistemáticamente los límites de la matriz antes de realizar un acceso a la matriz; por lo tanto, ningún búfer realmente se desbordará. En su lugar, se lanza una excepción, interrumpiendo el hilo ofensivo. El efecto neto es que, en el caso de un error en el que se hubiera desbordado un búfer, el atacante no obtiene un shell remoto (pero el subproceso del servidor todavía se bloquea).

Existe una biblioteca criptográfica Java pura llamada bouncycastle . Otras respuestas de Stackexchange se refieren a él, incluyendo, quizás de manera útil, una en las conexiones TLS .

Google también encuentra esto , pero, desafortunadamente, parece ser un proyecto antiguo y estancado que se basa en algunas bibliotecas externas. para el manejo de certificados, y estas bibliotecas externas no están en Java puro; y los errores de OpenSSL tienden a estar en esa parte de todos modos.

    
respondido por el Thomas Pornin 05.01.2013 - 23:53
fuente

Lea otras preguntas en las etiquetas