Los solicitantes de empleo envían un código, ¿cómo lo prueban las empresas de forma segura?

1

Los solicitantes para trabajos de ingeniería de software a veces pasan por desafíos de codificación como parte del proceso de entrevista. La compañía puede enviar el código de los solicitantes y una tarea de desarrollo con una fecha límite, y los solicitantes devuelven el código con modificaciones basadas en la tarea de desarrollo.

¿Cómo las empresas que presentan estos desafíos de codificación prueban de manera segura el código que reciben de los solicitantes? Por supuesto, los solicitantes pueden tener la misma pregunta, ¿cómo trabajan de manera segura en el código que se les envía, pero dado que el solicitante se comunica con una compañía establecida, me imagino que las compañías son más confiables en esta situación? ¿Qué precauciones deben tomarse para abrir, explorar y ejecutar de manera segura el código que alguien que apenas conoce envía?

Un buen ejemplo del código en cuestión es una solución completa de Visual Studio de ~ 100,000 líneas de código C ++, con la tarea dev que requiere modificación o adición dentro de las 100 líneas a través de esa solución.

Tal vez la respuesta sea simplemente una cuestión de confianza, pero me pregunto si hay precauciones técnicas que tomen las empresas para asegurarse de que ningún solicitante pueda ejecutar códigos maliciosos en las computadoras de la compañía. Etiqueté virtualización y sandbox porque las máquinas virtuales parecen una forma razonable de sandbox el código en cuestión, pero si probar el código requiere que la computadora que realiza las pruebas tenga instalado un software extenso y costoso, ¿sigue siendo este el método adecuado o el único? ¿Hay algún tipo de análisis antimalware confiable en este caso?

    
pregunta cr0 19.07.2017 - 18:51
fuente

1 respuesta

4

En gran medida, este es un problema que se resuelve solo. Para entender por qué, primero debemos entender los objetivos de una prueba como esta. Más específicamente, ejecutar el código es no alto en la lista de prioridades. Comprenderlo, sin embargo, es.

Los entrevistadores entenderán bien los problemas que abordará el desarrollador, y los entrevistadores tendrán alguna expectativa de cómo se resolverá el problema, técnicamente. Si es un problema dentro de una base de código existente, lo primero que voy a hacer es diferenciar la base de código inicial y la solución de los desarrolladores para ver todos los cambios que han realizado, y los cambios que no espero que se produzcan Para destacar, y obtener atención extra. Incluso los cambios que estoy esperando obtendrán un nivel de escrutinio significativo al asegurarme de que he entendido lo que el desarrollador ha hecho y evaluar la calidad del trabajo.

Entonces, aparte del hecho de que si quisieras hacer algo malicioso, debes ocultarlo a simple vista en un conjunto de cambios que será revisado exhaustivamente por personas que son muy buenas en eso, y que ya saben exactamente qué Esperan ver, pero está el desafío de la oportunidad. Como atacante, tendría que obtener una entrevista en una empresa a la que desea atacar, para una posición que le permita realizar una prueba de codificación, y la prueba de codificación debe ser lo suficientemente compleja como para permitirle un margen suficiente para insertar y esconde tu ataque Y luego los revisores tienen que elegir realmente compilar y ejecutar para ejecutar el ataque. Y el entorno en el que se ejecuta, tiene que permitir que se cumpla el objetivo final de su carga útil. En última instancia, esto requiere un lote de estrellas para estar perfectamente alineados, y es casi seguro que existe una forma más fácil y menos arriesgada. Simplemente no tiene mucho sentido como un vector de ataque.

    
respondido por el Xander 19.07.2017 - 19:16
fuente

Lea otras preguntas en las etiquetas