Allarme di sicurezza
| Gravità: | Alto |
| Categoria: | Esecuzione arbitraria del codice da parte di utenti privilegiati |
| Progetti interessati: | piattaforma edx |
| Reporter: | Revisore della sicurezza di terze parti |
| URL permanente: | https://openedx.org/CVE-2015-5601 |
Durante un controllo di sicurezza pianificato di terze parti del codice della piattaforma edx è stato scoperto che un bug consentiva a determinate categorie di utenti privilegiati di eseguire codice arbitrario come utente del processo in esecuzione.
Le vulnerabilità e le esposizioni comuni (CVE) il progetto ha assegnato a questo numero il nome CVE-2015-5601. Questa è una voce sul CVE elenco (http://CVE.mitre.org), che standardizza i nomi per problemi di sicurezza.
Maggiori informazioni
Il problema è nell'endpoint di importazione del corso, che accetta un caricamento di file .tar.gz. È possibile creare un file tar che estrae i file nella directory edx-platform, anziché nella directory temporanea che l'app intende utilizzare (vedi sotto per i dettagli). Poiché ci sono sottodirectory di edx-platform nel percorso della libreria python, le istruzioni "import foo" cercheranno "foo.py" in queste directory. Un utente malintenzionato può caricare un file Python con il nome appropriato in una di queste directory e al successivo riavvio dell'applicazione, verrà importata ed eseguita.
Il problema di fondo è nell'elaborazione del file tar. L'applicazione è attenta a non consentire file e collegamenti simbolici che utilizzano percorsi di attraversamento verso l'alto o assoluti per puntare all'esterno della directory di estrazione. Tuttavia, questi controlli, in "extract_tar.py", presuppongono erroneamente che la directory di estrazione sia ".", che si risolve in "/edx/app/edxapp/edx-platform"; dovrebbero invece usare la directory di estrazione effettiva.
L'estrazione vera e propria avviene in una sottodirectory specifica del corso di "/edx/var/edxapp/data", ma è possibile creare collegamenti simbolici che puntano a sottodirectory di "edx-platform" e in esse possono essere estratti file successivi.
Il bug è stato corretto in questo commettere.
![]()