Kwesbaarheid in cdnj's wat die uitvoering van kode op Cloudflare-bedieners toegelaat het

'n Kritieke kwesbaarheid is geïdentifiseer in Cloudflare se cdnjs-inhoudafleweringsnetwerk, wat ontwerp is om die aflewering van JavaScript-biblioteke te bespoedig, wat arbitrêre kode-uitvoering op CDN-bedieners moontlik maak. Die gevaar van die probleem word vererger deur die feit dat ongeveer 12.7% van alle webwerwe op die internet die diens gebruik om JavaScript-biblioteke af te laai, en die kompromie van die infrastruktuur maak dit moontlik om die biblioteke wat deur enige van hierdie webwerwe verskaf word, te vervang.

Die cdnjs-diens laai pakkette af vanaf Git of 'n NPM-bewaarplek, waarna dit enige webwerf toelaat om die Cloudflare-inhoudafleweringsnetwerk gratis te gebruik om die laai van JavaScript-biblioteke te bespoedig. By die bestudering van die kode van die cdnjs-komponente wat op GitHub gepubliseer is, is dit aan die lig gebring dat om NPM-pakkette in tgz-argiewe uit te pak, die standaard argief/tar-module in die Go-taal gebruik word, wat 'n lys lêers soos dit produseer sonder om die paaie te normaliseer . In die geval wanneer die skrif die inhoud op grond van die gegewe lys uitpak, kan die teenwoordigheid in die argief van lêers soos "../../../../../../../tmp/test" lei tot die oorskryf van arbitrêre lêers in stelsel, sover toegangsregte dit toelaat.

Daar is voorgestel dat 'n aanvaller kan aansoek doen om sy biblioteek by cdnjs te voeg en 'n spesiaal ontwerpte argief oplaai wat lêers bevat met "../" karakters in die pad na die NPM-bewaarplek. Op cdnjs-bedieners word 'n "outo-opdatering"-bewerking periodiek uitgevoer, waartydens die hanteerder nuwe weergawes van die voorgestelde biblioteek aflaai en die inhoud uitpak. Deur lêers met paaie "../" te gebruik, kan 'n aanvaller lêers met diensskrifte oorskryf en hul kode uitvoer op die bediener waarop die uitpak uitgevoer is.

In die geval van die aflaai van opdaterings vanaf Git, is ontdek dat die hanteerder wat die opdaterings aflaai nie simboliese skakels in ag geneem het wanneer lêers vanaf Git gekopieer is nie. Hierdie kenmerk het dit moontlik gemaak om die lees van enige lêers vanaf die bediener te organiseer deur simboliese skakels by Git te voeg.

Daar is besluit om eksperimente te begin met 'n demonstrasie van hacking cdnjs om 'n prys by HackerOne te ontvang deur die hipotese rakende lêerlees te toets. 'n Simboliese skakel test.js is bygevoeg by die Git-bewaarplek van die JavaScript-biblioteek wat via CDN bedien word, wat na die /proc/self/maps-lêer wys. Nadat 'n nuwe weergawe van die biblioteek gepubliseer is, het die opdateringshanteerder hierdie bewaarplek verwerk en die gespesifiseerde lêer in cdnjs gepubliseer (test.js is geskep as 'n simboliese skakel en toe hierdie lêer aangevra is, is die inhoud van /proc/self/maps teruggestuur ).

Deur 'n simboliese skakel na die lêer /proc/self/environ te vervang, het die skrywer van die studie opgemerk dat die gegewe data die waardes van die omgewingsveranderlikes GITHUB_REPO_API_KEY en WORKERS_KV_API_TOKEN bevat. Die eerste veranderlike het die API-sleutel gestoor vir skryftoegang tot die robocdnjs-bewaarplek op GitHub. Die tweede veranderlike het die token in die KV-berging in cdnjs gestoor. Deur die inligting wat ontvang is, te gebruik, kan die aanvaller veranderinge aan cdnjs maak en die infrastruktuur heeltemal kompromitteer.

Bron: opennet.ru

Voeg 'n opmerking