Schwachstelle bei cdnjs déi Code Ausféierung op Cloudflare Server erlaabt huet

Eng kritesch Schwachstelle gouf am Cloudflare's cdnjs Inhalt Liwwerungsnetz identifizéiert, wat entwéckelt ass fir d'Liwwerung vu JavaScript Bibliothéiken ze beschleunegen, wat arbiträr Code Ausféierung op CDN Server erlaabt. D'Gefor vum Problem gëtt verschäerft duerch d'Tatsaach datt ongeféier 12.7% vun alle Site um Internet de Service benotze fir JavaScript Bibliothéiken erofzelueden, a Kompromëss vun der Infrastruktur mécht et méiglech d'Bibliothéiken ze ersetzen, déi vun enger vun dëse Siten zur Verfügung gestallt ginn.

De cdnjs Service luet Pakete vu Git oder engem NPM Repository erof, duerno erlaabt et all Site de Cloudflare Inhalt Liwwerungsnetz gratis ze benotzen fir d'Luede vu JavaScript Bibliothéiken ze beschleunegen. Wann Dir de Code vun den cdnjs Komponenten studéiert, déi op GitHub publizéiert goufen, gouf opgedeckt datt fir NPM Packagen an tgz Archiven auszepaken, de Standard Archiv / Tar Modul an der Go Sprooch benotzt gëtt, wat eng Lëscht vu Dateien produzéiert wéi ass, ouni d'Weeër ze normaliséieren . Am Fall wou de Skript den Inhalt op Basis vun der gegebener Lëscht auspackt, kann d'Präsenz am Archiv vu Dateien wéi "../../../../../../../tmp/test" Féierung fir arbiträr Dateien am System ze iwwerschreiwe, souwäit Zougangsrechter et erlaben.

Et gouf virgeschloen datt en Ugräifer kéint ufroen fir seng Bibliothéik op cdnjs ze addéieren an e speziell entworf Archiv eropzelueden mat Dateien mat "../" Zeechen am Wee zum NPM Repository. Op cdnjs Server gëtt periodesch eng "Autoupdate" Operatioun gemaach, während där den Handler nei Versioune vun der proposéierter Bibliothéik erofluet an den Inhalt auspackt. Mat Dateie mat Weeër "../" kann en Ugräifer Dateie mat Service-Skripte iwwerschreiwe an hire Code um Server ausféieren, op deem d'Auspackung gemaach gouf.

Am Fall vun Updates vum Git erofzelueden, gouf entdeckt datt den Handler, deen d'Aktualiséierungen erofluet, symbolesch Linken net berücksichtegt huet wann Dir Dateien aus Git kopéiert. Dës Fonktioun huet et méiglech gemaach d'Liesen vun all Dateie vum Server ze organiséieren andeems symbolesch Linken op Git bäigefüügt ginn.

Et gouf decidéiert Experimenter mat enger Demonstratioun vum Hacking cdnjs unzefänken fir e Präis bei HackerOne ze kréien andeems d'Hypothese iwwer d'Dateiliesen testen. E symbolesche Link test.js gouf an de Git-Repository vun der JavaScript-Bibliothéik servéiert iwwer CDN bäigefüügt, a weist op d'/proc/self/maps Datei. No der Verëffentlechung vun enger neier Versioun vun der Bibliothéik huet den Update-Handler dëse Repository veraarbecht an déi spezifizéiert Datei an cdnjs publizéiert (test.js gouf als symbolesche Link erstallt a wann dës Datei gefrot gouf, gouf den Inhalt vun /proc/self/maps zréckginn. ).

Ersetzen e symbolesche Link op d'Datei /proc/self/environ, huet den Auteur vun der Studie gemierkt datt déi gegebene Donnéeën d'Wäerter vun den Ëmfeldvariablen GITHUB_REPO_API_KEY an WORKERS_KV_API_TOKEN enthalen. Déi éischt Variabel huet den API Schlëssel gespäichert fir Schreifzougang zum robocdnjs Repository op GitHub. Déi zweet Variabel huet den Token an der KV-Speicherung an cdnjs gespäichert. Mat Hëllef vun der kritt Informatioun, konnt den Ugräifer Ännerungen op cdnjs maachen an d'Infrastruktur komplett kompromittéieren.

Source: opennet.ru

Setzt e Commentaire