Ciao Giovanni,

On January 27, 2022 5:52:25 PM UTC, "380°" <g...@biscuolo.net> wrote:
> > Insomma non temete: dopo 12 anni dalla sua introduzione, questa 
> > vulnerabilità
> > è stata corretta entro poche ore dalla propria diffusione pubblica.
> 
> ...mentre dopo 50 anni dall'introduzione del C sarà ancora possibile
> scrivere codice che esegue accesso alla memoria "out of bounds" senza
> che chi lo scrive e chi lo legge si renda conto di quel fatto? :-O

siamo sicuri che il problema sia il sempre bistrattato C?

O è piuttosto la complessità di Linux?

Leggi la discussione sul fix lato kernel (fix di due righe!):

```
The first argument to argv when used with execv family of calls is required to 
be the name of the program being executed, per POSIX. 

By validating this in do_execveat_common(), we can prevent execution of 
shellcode
which invokes execv(2) family syscalls with argc < 1, a scenario which is 
disallowed 
by POSIX, thus providing a mitigation against CVE-2021-4034 and similar bugs in 
the future. 

The use of -EFAULT for this case is similar to other systems, such 
as FreeBSD and OpenBSD. 

Interestingly, Michael Kerrisk opened an issue about this in 2008, 
but there was no consensus to support fixing this issue then. 
Hopefully now that CVE-2021-4034 shows practical exploitative use of 
this bug in a shellcode, we can reconsider. 
```
https://lore.kernel.org/lkml/20220126043947.10058-1-aria...@dereferenced.org/T/

Leggi le due righe del fix.
Si passa da 
```
if (retval < 0)
   goto out_free;
```
a

```
if (retval < 1) {
    retval = -EFAULT;
    goto out_free;
}
```

Pensi che se fosse stato scritto in Rust, o Haskell o qualsiasi altro linguaggio
avrebbe fatto qualsivoglia differenza?

Ipotizza un mondo dove C è stato sostituito dal tuo linguaggio di 
programmazione preferito.

In user space non avresti avuto l'out of bound.
Poco male: poche righe di assembly e bypassi i limiti del tuo linguaggio.

Il compilatore impedisce (coraggiosamente!) codice unsafe?
Ok, scriviamo l'elf con un editor esadecimale.


Il problema non è C.
(almeno, non in questo caso)


Piuttosto, vogliamo davvero fingere che la segnalazione di Michael Kerrisk sia 
stata ignorata da intelligence che hanno team dedicati e database degli zero 
day ignoti?

Su quanti server Linux queste intelligence hanno accesso amministrativo dal 
2008?

Quante distro Linux vengono distribuite da server Linux? Quanti cloud ci girano?


Non ho idea se nel 2008 abbiano lasciato la vulnerabilità perché non 
immaginavano
come sfruttarla, o se non si sia trovato un consenso perché qualcuno l'aveva 
subito capito.

Ma se vogliamo che fra 30 anni le cose vadano meglio, non accontentiamoci
di facili capri espiatori.


Giacomo

Full disclosure: programmo in moltissimi linguaggi e considero C99 il "meno 
peggio".
_______________________________________________
nexa mailing list
nexa@server-nexa.polito.it
https://server-nexa.polito.it/cgi-bin/mailman/listinfo/nexa

Reply via email to