¿Los lenguajes de programación administrados son inmunes a las vulnerabilidades de ejecución de código arbitrario?

2

El ejemplo clásico de ejecución de código arbitrario es cuando un búfer basado en la pila se desborda, sobrescribe la dirección de retorno para que el control pueda saltar a los datos configurados cuidadosamente por el atacante para ejecutar un código de shell para ingresar al sistema.

Si desarrollas en C y escribes un montón de código, eventualmente lo arruinas en algún lugar y tu código se vuelve explotable.

En lenguajes administrados como C #, Java, etc. los arreglos tienen límites comprobados, no tienen punteros que pueden colgarse (se recolectan basura), etc. Parece que la memoria está dañada, se desborda el búfer y otras cosas desagradables que pueden permitir un atacante que se haga cargo de la computadora no es posible desde el código administrado, ¿es cierto?

Lo pregunto porque planeo abandonar C y C ++, y usar C # o Java solo por razones de seguridad para partes donde el rendimiento no es crítico.

    
pregunta Calmarius 01.08.2018 - 18:48
fuente

2 respuestas

3

Asumir que la implementación de esos lenguajes es impecable, entonces seguro. Sin embargo, ese casi nunca es el caso. Por ejemplo, se han encontrado explotaciones de ejecución de código arbitrario para motores de JavaScript .
Además, incluso con un lenguaje perfectamente "seguro" aún puede ser explotado. Una fuente común de ejecución de código arbitrario es de deserialización de comentarios de usuarios no autorizados .

    
respondido por el Mr. Llama 01.08.2018 - 18:55
fuente
0

Java sufre de una vulnerabilidad de desbordamiento porque los rangos de los tipos de Java no son simétricos.

  

Debido a que los rangos de los tipos de Java no son simétricos (la negación de cada valor mínimo es uno más que cada valor máximo), incluso las operaciones como la negación unaria pueden desbordarse si se aplican a un valor mínimo. Debido a que el método java.lang.math.abs () devuelve el valor absoluto de cualquier número, también puede desbordarse si se le da el mínimo int o largo como argumento.

Puede leer más sobre eso en el Wiki de codificación segura de SEI aquí: enlace

    
respondido por el Joe M 01.08.2018 - 18:58
fuente

Lea otras preguntas en las etiquetas