lenguaje de programación y amenazas de seguridad

2

Estoy trabajando principalmente en aplicaciones empresariales basadas en C / C ++. Ahora pocos módulos están migrando a Java. También en paralelo, se ha insistido en garantizar que la aplicación tenga el punto de referencia más alto con respecto a la seguridad.

Ahora, mi pregunta es -

Supongamos que la misma aplicación se desarrolla en los 3 idiomas (C / C ++ / Java). ¿Cuáles son las áreas posibles de las amenazas de seguridad específicas del idioma? (Al igual que, por ejemplo, const string se revelará en nombre mangaling, lo que puede ser una posible amenaza para la seguridad).

Cualquier enlace me ayudaría mucho.

    
pregunta kumar_m_kiran 08.03.2013 - 09:57
fuente

3 respuestas

8

El mayor riesgo en el lenguaje cualquier es que los desarrolladores no dominen dicho idioma . El desarrollo seguro requiere pensar en todos los "casos de esquina" y no funciona a menos que el desarrollador sepa lo que hace en todos los puntos. Un programador de C competente que no conoce Java hará un código más seguro en C que en Java (y viceversa).

Se puede argumentar que en los idiomas con "garantías sólidas", las consecuencias de algunos errores de programación son menos graves cuando se ven desde un punto de vista de seguridad. Por ejemplo, un desbordamiento de búfer en Java conduce a una excepción y (generalmente) terminación del subproceso ofensivo, mientras que en C puede llevar a un agujero explotable hasta un shell remoto para el atacante. Esto me hace un poco menos preocupado cuando tengo que confiar en los desarrolladores con el código Java que con el código C. Sin embargo, otros errores potenciales relacionados con la seguridad no se modifican entre Java y el código C (si el código crea sentencias de SQL de una manera susceptible a la inyección de SQL, entonces nada en Java protegerá contra eso, hasta cierto punto, fácil manejo de cadenas de caracteres en Java promueve errores de inyección de SQL).

Ofuscación es más sobre el mantenimiento de la propiedad intelectual que de la seguridad. No evitará que los atacantes realicen una ingeniería inversa de su código, pero ayuda a obtener una calificación legal (al usar la ofuscación, usted aclara, o al menos aclara, que no desea que el código tenga ingeniería inversa, por lo que " entrada ilegal más obvia a los ojos de un juez, pero los detalles varían bastante dependiendo de la jurisdicción). El código de bytes de Java es más fácil de aplicar ingeniería inversa que C o C ++ compilado, pero sería erróneo afirmar que la compilación de C o C ++ es inmune a la ingeniería inversa.

    
respondido por el Thomas Pornin 08.03.2013 - 13:49
fuente
3

Lo que he hecho en el pasado al portar algo entre idiomas o al trabajar en algo que tendrá que trabajar en estrecha colaboración con otro idioma es buscar problemas de idioma específicos en el sitio web de OWASP.

Esperemos que esto ayude como un punto de partida.

Editar

Debo agregar, y ha sido cubierto en otras respuestas, que hablar con un experto en el idioma podría ser su apuesta más segura, obviamente, esto no siempre es una opción (al menos en el corto plazo)

    
respondido por el Toby 08.03.2013 - 10:24
fuente
0

Usted solicitó el enlace y yo apostaría en la guía OWASP para la codificación segura prácticas.

Lo bueno de esta guía es que le proporciona ÁREAS DE RIESGO , por ejemplo, control de acceso, gestión de memoria, gestión de archivos y, dependiendo del uso de un idioma y su sintaxis, puede obtenerla casi escribiendo y terriblemente mal si no tiene en cuenta las instrucciones que se detallan en este material de referencia.

Necesitas programar teniendo en cuenta la seguridad principalmente su funcionalidad.

Si está interesado en hacer análisis de código fuente, hay muchas herramientas gratuitas que proporciona OWASP. Aquí está la lista

    
respondido por el Saladin 08.03.2013 - 11:18
fuente

Lea otras preguntas en las etiquetas