Tietoturvatutkija Alex Birsan on löytänyt mielenkiintoisen tietoturvaongelman, joka koskee useita avoimen lähdekoodin pakettivarastoja (repository, repo) sekä niihin luottavia sovelluksia. Birsan murtautui sen avulla yli 35 suuren teknologiayrityksen verkkoon tutkimustarkoituksessa.
Birsan huomasi aiempaa tutkimusta tehdessään erään PayPalin sisäisesti käyttämän npm-paketin manifestin viittaavan paketteihin, jotka eivät olleet saatavilla julkisesti npm:n pakettivarastosta, vaan vain PayPalin sisäisistä pakettivarastoista. Uteliaana tutkijana Birsan testasi, miten sovellus käyttäytyisi, mikäli saman niminen paketti löytyisikin yksityisen pakettivaraston lisäksi julkisesta jaosta.
Birsan testasi asiaa käytännössä selvittämällä mahdollisimman monien sisäisten pakettien, joita ei olisi jaossa julkisissa pakettivarastoissa, nimiä ja loi omat pakettinsa identtisin nimin asianmukaisiin julkisiin pakettivarastoihin kuten npm:ään, PyPI:hin ja RubyGemsiin. Käytännön testit osoittivat, että useimmissa tapauksissa julkisista varastoista löytyvät tiedostot saivat ohjelmilta prioriteetin sisäisten yli ja esimerkiksi PyPI-paketeissa korkeamman versionumeron sisältävä sai prioriteetin riippumatta siitä, missä paketti sijaitsi.
Birsan sai syötettyä omat tiedostonsa pakettivarastojen kautta ainakin Applelle, Microsoftille, Netflixille, PayPalille, Shopifylle, Teslalle, Uberille ja Yelpille. Hän kutsuu metodiaan ”dependency confusioniksi” eli riippuvaisuushämmennykseksi ja pitää sitä haavoittuvuutena tai suunnitteluvirheenä automaattisissa kääntö- ja asennustyökaluissa. Birsan on tienannut haavoittuvuudella jo yli 130 000 dollaria eri yritysten Bug Bounty -ohjelmien kautta. Voit lukea yritysten kommentteja asiasta Bleeping Computerin artikkelista.
Lähde: Bleeping Computer
Denossa oikeudet ovat sovelluskohtaisia, eli oikeuksia ei voi antaa pakettikohtaisesti. Ajatus on kyllä hieno, mutta lopulta hieman turha, koska kaikki asennetut paketit saavat samat oikeudet.
" loi omat pakettinsa identtisin nimin asianmukaisiin julkisiin pakettivarastoihin kuten npm:ään, PyPI:hin ja RubyGemsiin."
Eli eikö pakettivarastoissa ole minkään näköistä sensuuria vaan kuka vaan voi lisätä sinne pakettejaan?
Niissä on vissiin saman verran "sensuuria" kuin domainnimissä – kuka vaan voi rekisteröidä itselleen domainin joka ei vielä ole käytössä.
Ideahan on kummassakin (pakettivarastot ja internet) aika lailla samanlainen. Kumpaankin voi julkaista tuottamaansa sisältöä ja jos joku kokee siitä olevan iloa itselleen, voi käyttää sitä.
Kyseessä oli vaan NPM:n espressohuuruinen pakettivarasto. Ei liity mitenkään Linuxiin. Ei tartte kummaa sisäpiirin tietoa kaivaa jostain paketista sen riippuvuudet. Mutta nää on ainakin jollain tasalla korjattu ja organisaatiossa olisi syytä katsoa peiliin, jos julkisesti pääsee sisäverkosta latailemaan ihan mitä vaan.
Nämä ovat siis olleet mm. githubissa julkisissa repoissa nähtävillä:
Pakettiautomaattien kautta Postin sisäiseen pakettivarastoon tunkeutuminen onnistunee ns. "Man in the
MiddleBox" -hyökkäyksen avulla fyysistä vektoria hyväksykäyttäen, soveltuvin kääntö- ja asennustyökaluin varustautuneena.Kyllä, ja niin tässäkin tapauksessa uutista kirjoittaessa oli saanut jo $130k noista bug bounty -ohjelmista tämän löytämisestä
Noissa kehitysympäristöjen pakettivarastoissa on nähty monta kertaa vaikka millaista ketkua, jotka luottavat siihen että joku kuitenkin kirjoittaa paketin nimen pikkuisen väärin ja lopputuloksena koneelle voi valua vaikka millaista schaissea. Oletuksena noissa ei ole mitään tarkistuksia välissä.
Tässä joku satunnainen uutinen muutaman vuoden takaa:
Malicious code in the Node.js npm registry shakes open source trust model
http://www.csoonline.com
Tämän ketjun aloituksen tapauksessa oli tavallaan kyse saman asian kääntöpuolesta, eli paketin nimi oli oikein, mutta latauspaikka ja siten sisältökään ei.