¿Qué busca en el código de código abierto para asegurarse de que no haya código malicioso?

3

Me doy cuenta de que las respuestas serán específicas para cada idioma, pero tengo curiosidad por saber qué términos buscarías al revisar algo en Github. Estaba buscando una herramienta de administración remota que podía usar con los clientes y encontré algunas increíbles, que son "virus".

Tome enlace (asociado con metasploit), o el proyecto QuasarRAT por ejemplo: enlace

Ahora he visto herramientas empresariales de alto precio como SolarWinds MSP Connect, Dameware, etc. que hacen la mayoría de esas mismas cosas, pero QuasarRAT aparece como un virus cuando intento compilarlo.

Estaba jugando con la idea de desarmar el programa QuasarRAT, segmentar cada función en complementos, eliminar cualquiera que pueda ser solo malicioso, pero no estoy seguro de que todavía no aparezca como un virus.

En PHP buscaría un código ofuscado que usaba base64_decode (), exec (), etc., pero tengo curiosidad por saber qué términos debo buscar con C #, C ++ C, Bash, específicamente aquellos que pueden ¿Implica el registro de teclas, la transmisión de datos a un host remoto o la descarga de cosas adicionales en la computadora?

Las cosas que se me ocurren son TcpListener, AcceptTcpClient, stream, bind, sockets, http, wget, curl, ftp, ssh, rsync. Como no domino C ++, C, y sé que tengo más que aprender en Bash y C #, me encantarían las sugerencias para esos divertidos huevos de Pascua que la gente ha escondido y que ha encontrado.

Aunque me doy cuenta de que solo porque se usan estos términos, no significa que sea malicioso, pero al menos puedo concentrarme en esa función y decidir qué está haciendo, qué más lo está llamando y si está aprobado.

Si podemos obtener una buena lista juntos, intentaré crear un script que buscará automáticamente y devolverá las coincidencias para su revisión.

    
pregunta Alan 29.08.2018 - 06:01
fuente

1 respuesta

5

Si desea estar 100% seguro de que algún repositorio de git no contiene código malicioso, escríbalo usted mismo; Cualquier otra cosa será una batalla cuesta arriba.

Si alguien está realmente tratando de ocultar un código malicioso a simple vista, entonces es probable que no lo note. Tomemos, por ejemplo, el infame 2003 casi una puerta trasera en el kernel de Linux donde se encuentra este código inocuo:

if ((options == (__WCLONE|__WALL)) && (current->uid == 0))
    retval = -EINVAL;

se convirtió en una puerta trasera así:

if ((options == (__WCLONE|__WALL)) && (current->uid = 0))
    retval = -EINVAL;

(sugerencia: en lugar de comprobar si eres root uid == 0 , te convierte en root uid = 0 . Por lo tanto, pasa las marcas _WCLONE|_WALL a cualquier llamada del sistema y BAM! Ahora eres root. )

Este ejemplo no es directamente relevante, pero muestra que el código malicioso en C / C ++ puede ser realmente sutil. Entonces, si crees que existe la posibilidad de que alguien esté jugando juegos de escondite en el código, sigue adelante y encuentra un proyecto diferente.

A menudo trato con una versión más suave de su pregunta, "¿Es esta biblioteca / herramienta de código abierto bien para usar?". Mi enfoque es ver si tiene una buena reputación; ¿Se mantiene activamente? ¿Sus boletos de github dan la impresión de que siguen un proceso de desarrollo adecuado? ¿Publican los registros de cambios regulares, incluidas las correcciones de seguridad? ¿Tiene CVEs sin resolver en su contra? Si hay archivos binarios, ¿están correctamente firmados con un código?

No es infalible, pero elimina los proyectos más importantes. (si alguien tiene una mejor forma de verificar proyectos de código abierto, me encantarán las sugerencias)

    
respondido por el Mike Ounsworth 29.08.2018 - 06:34
fuente

Lea otras preguntas en las etiquetas