Vulnerabilitate Full Path Disclosure pentru Unyson WordPress

unyson
Postat pe 2018-07-22

Despre Unyson


Unyson este un cadru drag & drop gratuit care vine cu o serie de extensii încorporate, care vă vor ajuta să dezvoltați, rapid și ușor, teme de calitate pentru WordPress. Începând cu jumătatea anului 2018, plugin-ul se mândrește cu peste 100.000 de instalări active.

Vulnerabilitatea


Ca majoritatea plugin-urilor, modulelor și a altor tipuri de software care includ un sistem mai mare, Unyson s-a asigurat că terțele părți nu vor putea să acceseze direct componentele sale individuale (și anume fișierele). Aceasta este o practică obișnuită, deoarece facilitează procesul de securizare a unei aplicații.

Cu toate acestea, în plug-in se află o vulnerabilitate FPD (Full Path Disclosure) și este destul de directă. Cadrul Unyson permite descărcarea celor mai recente fonturi prin fișierul load-latest-fonts.php localizat în framework/bin/. Acest fișier nu utilizează o verificare pentru a afla dacă este apelat din afara sistemului sau din interiorul acestuia, și anume:

<?php if ( ! defined( 'FW' ) ) { die( 'Forbidden' ); }


Astfel, permițând unei terțe părți să acceseze direct de la distanță fișierul, la o instalare WordPress de pe: ../wp-content/plugins/unyson/framework/bin/load-latest-fonts.php

Acest lucru este realizat folosind funcția download_file() care, de asemenea, se întâmplă să afișeze și variabila $destination (care este calea completă a contului):

function download_file($url, $destination) { echo 'downloading ' . $destination . "\n"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt( $ch, CURLOPT_ENCODING, "UTF-8" ); $data = curl_exec ($ch); $error = curl_error($ch); curl_close ($ch); $file = fopen($destination, "w+"); fputs($file, $data); fclose($file); }

Ceea ce are ca rezultat ceva similar cu ce urmează, retrimis la atacatorul de la distanță:

#!/usr/bin/env php downloading /var/www/html/site/wp-content/plugins/unyson/framework/bin/../static/libs/entypo/css/entypo.css downloading /var/www/html/site/wp-content/plugins/unyson/framework/bin/../static/libs/entypo/fonts/entypo.eot

Dezvăluind calea completă a contului.

Vulnerabilitatea afectează versiunile Unyson de la 2.5.7 la 2.7.18 (inclusiv).

Soluția


Pentru utilizatorii care folosesc deja Unyson, avem vești bune. Dezvoltatorii au publicat deja un patch și este disponibil începând cu versiunea 2.7.19, care este cea mai recentă și care poate fi ușor actualizată.

Din punct de vedere tehnic, vulnerabilitatea a fost rezolvată prin adăugarea unei condiții care să verifice dacă fișierul este apelat dintr-un mediu CLI:

if ( php_sapi_name() != 'cli' ) { die(); }

Acest lucru poate fi verificat și în ultima versiune de fișier din repertoriul oficial ThemeFuse de pe GitHub.

Se recomandă utilizatorilor să-și actualizeze versiunea de sistem Unyson la 2.7.19, pentru a se asigura că nu sunt afectați de această vulnerabilitate.

Comentarii

Nu există încă comentarii publicate.

Adaugă comentariu