## Istruzioni ### Intro Questo script consiste nell'ultimo step della challenge. Questo script viene eseguito con `sudo` dall'interfaccia nella pagina di aggiornamento firmware. Da inserire in `/etc/sudoers`: ``` www-data ALL=(root) NOPASSWD: /bin/bash /root/update.sh ``` Per generare la chiave per firmware le immagini: ``` openssl genrsa -out key.pem 2048 openssl rsa -in key.pem -outform PEM -pubout -out pub.pem ``` Per firmare un file: ``` openssl dgst -sha256 -sign private.pem -out update.tgz.sig update.tgz cat update.tgz.sig > update.tgz.cc cat update.tgz >> update.tgz.cc ``` ### Vulnerabilita' La vulnerabilita' presente e' una race condition di tipo time-of-check to time-of-use, ovvero la firma del pacchetto di update viene controllata in un punto del codice e poi estratto successivamente.. C'e' quindi una brevissima finestra di tempo in cui un attaccante puo' sostituire il pacchetto con uno non firmato. Il bug si potrebbe prevenire ad esempio garantendo che una volta iniziata la procedura il file non possa essere modificato da utenti non privilegiati modificandone i permessi. ### Exploit