Add the exit status code to the analysis output for commands executed by scripts.

Abierto
#249 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 6 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
go
Área
tooling

Línea de trabajo

Empieza localizando el código que analiza la salida de GVisor strace y genera la salida del análisis para los comandos ejecutados por scripts; el issue identifica los registros execve, exit y exit_group, además de los corchetes PID/TID, como las entradas relevantes. Confirma que el estado de salida se asocia con el binario ejecutado, incluidos los ejemplos mostrados 0x0 y 0x7f, y verifica la salida del análisis resultante.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

dynamic analysis enhancement go

This ability can help find places where the sandbox can be improved, or be used to identify when a command being executed succeeded for failed.

The strace output generated by GVisor includes can be parsed to pair execve syscalls with exit or exit_group syscalls to extract the exit status of the executed binary.

For example, below shows a sample of strace output from GVisor of syscall exits. Note the PID == 3, with TID 4 and 7 exiting explicitly using (exit), with the entire group being exited as well (exit_group)

I0303 03:30:37.681359     206 strace.go:629] [   3:   3] analyze.js X execve(0x7f782e606b40 /usr/local/bin/node ...
...
I0303 03:32:19.471116     206 strace.go:623] [   3:   4] node X exit(0x0) = 0 (0x0) (1.336µs)
I0303 03:32:19.471135     206 strace.go:623] [   3:   7] node X exit(0x0) = 0 (0x0) (1.413µs)
...
I0303 03:32:19.476033     206 strace.go:623] [   3:   3] node X exit_group(0x0) = 0 (0x0) (15.45µs)

The exit code is included as the strace arg to the syscall. For example, below the exit code is 0x7f or 127:

I0303 03:32:04.019615     206 strace.go:623] [  83:  83] ld-linux-x86-64 X exit_group(0x7f) = 0 (0x0) (1.823µs)

It is worth remembering in Linux that a process will first clone or fork itself and then call execve to hand execution over to the new binary. This means the PID and TID can be parsed from the square brackets before the name (e.g. [ 3: 7] corresponds to a PID of 3 and a TID of 7).

Lenguaje dominante
Go
Estrellas
925
Forks
75
Merge medio
4 d 2 h
PR fusionados (30 d)
3

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ossf/package-analysis

Todos los issues de ossf/package-analysis

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.