[Translated by {Iikka}{Yli-Kuivila} (ITKST56 course assignment at JYU.FI)]
*33C3 preroll-musiikkia*
Herald: Tervetuloa takaisin festivaali- lavalle, yhä kakkospäivänä minun kelloni
mukaan vaikka olenkin kadottanut ajanta- juni jo nyt. En tiedä, tuntuu olevan kii-
reinen vuosi niin monen hyvän esityksen kanssa ja seuraavana meillä on super-mah-
tava estiys Jiskalta, Gerberiltä ja Matt- hiakselta. Nämä kolme ihanaa ihmistä näyt-
tävät meille jotain VPN:stä, niin kutsu- tuista Very Pwnable Networkeista, ja
miksi sinun VPN:si ei ole välttämättä yhtä turvallinen kuin sinulle on sanottu.
Ja tämä ei ole pelkästään tärkeää ihmi- sille jotka istuvat 7:n proxyn takana aja-
tellen: ettepä nappaa minua. Mutta myös vaikka jos työantajasi sanoo, että käytä
tätä VPN-asiakasohjelmistoa: sinua voi odottaa yllätys tai pari. Ja tämä on
ennalta nauhoitettu esitys, jonka jälkeen voin jo nähdäkin heidät täällä työkaluis-
samme mutta esityksen jälkeen on Q&A- sessio. Jos teillä on kysymyksiä,laittakaa
niitä IRCissä, Twitterissä tai Mastodon:sa hashtaillä #rc3cwtv ja meidän ihana
Signaalienkeli kerää ne ja näemme toisemme tallenteen jälkeen.
Jiska: Kaikki ja tervetuloa esitykseen
Very Pwnable Network Gerbertin, Matthiak: sen ja minun toimesta. Mistä tämä alkoi?
No, minusta tuli vähän vainoharhainen vii- me vuonna ja ajattelin että olisi hyvä
idea salata paljon koska Wi-Fi, LTE, TLS voidaan kaikki kaapata, ne voidaan purkaa.
Joten meidän tulisi salata kuten kaikki katselisivat ja sen vuoksi minun pitäisi
käyttää VPN:ää. Ja seuraava luottamusolet- tamus oli että yhdistän yliopistoni verk-
koon joka päivä, joten minun pitäisi luot- taa tähän joka tapauksessa. Ja jos minä
luotan tähän verkkoon, voisin käyttää tätä verkkoa ja heidän ammattilais-VPN-palvelua
Kuulen teidän nauravan, kuulen naurua, mutta tämä oli minun ideani, koska sitten
minun ei tarvitse asentaa enää mitään lisää verkkoselaukseni aikana. Ja myös,
tämä AnyConnect mitä he käyttivät niin se oli hieno ja toimi jokaisella käyttöjär-
jestelmällä. Ja se kuulostaa hyvältä, tur- valliselta tuotteelta: AnyConnect.
Jep. Ja sitten rupesin käyttämään mobiili- laitteitani ja yhtäkkiä minulle tulee
kaatumislokeja, jotka näyttivät tältä. eli kun olet vainoharhainen, katsot kuitenkin
kaatumislokisi lävitse joka toinen päivä, ja yksi niistä näytti tällaiselta.
Tämä ei näyttänyt oikein mukavalta osoit- teelta, se näytti vähän omituiselta, ja
tässä näkyy vähän kaatuneesta säikeestä. Jos tämän pistää IDA:an ja tekee vähän
takaisinmallinnusta voi myös liittää Any- Connectin ekstension funktioiden nimiä,
AC-ekstensio ja kaatuminen tapahtuu jos- sain kun se pistää VPN-konfiguraatiota
pystyyn, jossakin tunnelipuskurissa. En tiedä. Joten, ja sitten ajattelin myös,
että tuo osotie näyttää omituiselta koska se on IPv4 väärin päin, ja pari päivää
myöhemmin se kaatui uudestaan ja tässä luki 68k Uusi Rivi. Se näytti todellakin
joltain konfiguraatiostringeiltä, jotka kaatuilivat tietyissä osoitteissa,
ja se ei todellakaan näyttänyt hyvältäaikaa.. Mutta minulla ei myöskään ollut iakaa.
Joten kirjoitin Ciscolle ja sanoin, että oletteko tosissanne, teidän ohjelmisto
kaatuu näin usein? Koska aina kun teen pyykkiäni minulla on huono Internet-yhteys
joten minun AnyConnect-ohjelmisto alkaa kaatuielmaan omituisissa osoitteissa.
Ja vaikka tämä on koodin ajamisen ongelma, toinen ongelma olisi että jos pistetään
pari pakettia menemään ilmasta, hyökkääjä voi onnistua uhrin VPN-yhteyden katkaise-
misessa. Se on myös onelma. Joten koska AnyConnect-ohjelmisto ei ole kunnolla osa
käyttöjärjestelmää, iOS:ää, se tarkoittaa että se vain uudelleenyhidstää sinut ja
sitten kaikki viestisi lähetetään selvä- kielisenä verkon yli ja käyttäjä ei saa
tästä mitään ilmoitusta. Se on vain VPN- symboli, joka on kadonnut, ja kaikki lähe-
tetään selväkielisenä. Ja halusin analy- soida tätä pidemmälle ja siellä on debug-
valinta siinä ohjelmistossa. Mutta koska Ohjelmisto itse katuu, lokit myöskin
katoavat sen sileän tien. Jos se kaatuu ja sinulla on debuggaus-valinta päällä, niin
myös käyttöjärjestelmän kaatumislokit iOS:ssä ovat menneet, niitä ei ole.
He vastasivat: "Emme saa tätä toistettua". No, siis tietenkään he eivät
ole auttaneet minua pyykinpesussa tai missään muussakaan niin tietnkään he eivät
saa sitä toistettua. Ja mikä vielä pahem- paa, he jättivät tiketin istumaan pitkäksi
aikaa kunnes sanoimme, että esittelemme tämän tänä vuonna CCC-kongressissa. Ja
sitten 10 päivää ennen puhetta he väittä- vät että he ovat korjanneet kaksi kolmesta
kaatumisesta, ja he kysyivät että saammeko kaatumista enää aikaan vai ei. Mutta vain
päivää ennemmin he sanoivat etteivät olleetkaan varmoja ja niin edelleen. Se
oli hyvin omituinen tiketti, ja minulla ei ollut tietoa että oliko se korjattu vai ei
koska tietenkin toistaakseni sen, minulla pitäisi olla tinapaperia, pari AnyConnect:
lla varustettua älypuhelinta ja sitten minun pitäisi odotella että Internet-
yhteyteni menee rikki tavalla, joka saa sen kaatumaan. Joten tämä oli ihan liian
satunnaista. Kerroin myös Applelle, mutta he vain sanoivat että vika on ohjelmassa,
eikä silloin kuulu heille, vaikka se on verkkoekstensio, mikä kaatuu. Joten se
ei ole heidän tehtävänsä ilmoittaa käyttä- jälle siitä, koska se on vain VPN mikä on
poissa. Ja sitten data lähteekin selväkie- lisenä ja se on ihan ok. Se oli odotettua
käytöstä. Rupesin ärsyyntymään tästä ja lopetin VPN:n käyttämisen, mutta minulla
oli myös idea etsiä opiskelijoita, jotka tutkisivat tätä. Ja tiedättekin mitä
tapahtuu kun löytää erittäin motivoitunei- ta opiskelijoita: he löytävät haavoittu-
vuuksia. Ja tämä esitys on siitä.
Gerbert: Niin me tutkimme Cisco:n AnyCon- nect-ohjelmistoa Linuxille ja löysimme
pari mielenkiintoista asiaa. Vähän sen jälkeen kun julkaisimme löydöksemme, usei-
ta lehtiartikkeleita ilmaantui. Mutta mitä tapahtui Jiskan kaatumisten ja näiden ar-
tikkeledein välillä? VPN on mielenkiintoi- nen sillä se on niin vanha tutkimuskohde.
Kuitenkin, tuon teknologian merkitys ko- rostui myöhemmin korona-pandemian myötä.
Monet yritykset joutuivat uudelleensijoit- tumaan kotitoimistoille turvallisuustoi-
mien vuoksi. VPN mahdollistaa käyttäjille pääsyn ulkopuolelta firman tai yliopiston
sisäisiin resursseihin. Yleensä tarvitaan VPN-asiakasohjelmistoa, jotta VPN-palveli-
meen saadaan yhteys. Avoimen lähdekoodin ohjelmistojen kuten OpenVPN:n lisäksi saa-
tavilla on monia suljetun lähdekoodin tuot -teita, erityisesti yrityssektorilla.
Käyttäjät joutuvat luottamaan tähän ohjel- mistoon, asentamaan tämän mustan laatikon
koneilleen päästäkseen verkkoon. AnyCon- nect secure liikkuvuus-ohjelmisto Ciscolta
on yrityskäyttöön tarkoitettu. Se voidaan luokitella etäpääsyohjelmistoksi, joka
mahdollistaa loppukäyttäjille pääsyn verk- koon, joka tukee SSL VPNää tai IPsec:iä.
Käytettäessä SSL VPN:ää autentikaatio ja tunnelin muodostaminen tapahtuu SSL/TLS-
tunnelin lävitse. Ohjelmisto toimii paksu- na clientina joka kommunikoi VPN-serverin
kanssa HTTPS:n yli. Kuten jo mainittiin, AnyConnectin lähdekoodi ei ole julkisesti
saatavilla. Sovellus jaellaan käännettyjen binäärien ja kirjastojen kanssa.
Vaikka sovellus on dokumentoitu, se ei kata sisäistä toiminnallisuutta. Edes haa-
voittuvuustiedotteissa, jotka jaellaan julkisina, ei mennä kovin syvälle tekni-
siin yksityiskohtiin. Sen vuoksi tiedämme vain rajoitetusti sovelluksesta, ja sen
sisäisestä käyttäytymisestä. Olemme aset- taneet itsellemme tavoitteksi tutkia Any-
Connectin äskettäisiä Linux ja iOS-sovel- luksia. AnyConnectin päätoiminnallisuus
tulee VPN-yhteyksien muodostamisesta, mutta se on vain jäävuoren huippu.
AnyConnect:ssa on myös muita ominaisuuksia joista nimetään pari: skriptien jakelu
ja suorittaminen kohdelaitteilla, auto- maattinen ohjelmiston päivittäminen kysy-
mättä käyttäjän lupaa siihen, ja yksi omi- naisuuksista on laiteskannaus: se ei
integroidu AnyConnectiin, vaan sitä pide- tään erillisenä ohjelmana. Se toimii Any-
Connect-infran kanssa yhdessä ja mahdol- listaa laajan asiakaslaitteiden järjestel-
mätiedon lukemisen ja välittämisen VPN- palvelimelle. AnyConnectiin liittyvät
työt perustuvat Cisco:n julkisiin tiedot- teihin ja blogimerkintöihin tietyiltä tur-
vallisuustutkijoilta. Sen vuoksi päätimme listata ja kategorisoida kaikki
haavoittuvuudet vuodesta 2011 lähtien. Tässä kuvassa näemme listan haavoittuvuuk-
sista per vuosi, pistettynä järjestykseen vakavuuden perusteella. Eniten raportoi-
tiin keskitason haavoittuvuuksia, mutta myös kriittisiä haavoittuvuuksia julkais-
tiin vuosina 2011 ja 2012. 2015 ja 2016 vuosien korostuminen määrissä johtuu kir-
jastoissa kuten OpenSSL, olleista haavoit- tuvuuksista. Haavoittuvuudet jaoteltiin
vielä edelleen kategorioihin, jotka näky- vät tässä kuvassa. Kryptografiset haa-
voittuvuudet ovat yleisimpiä, sillä Any- Connect käyttää OpenSSL:ää, ja OpenSSL:n
haavoittuvuudet ovat AnyConnectin haavoit- tuvuuksia. Kun kolmansien osapuoletan haa-
voittuvuudet suljetaan pois, eniten Any- Connectilla on käyttöoikeuksien laajennuk-
sen haavoittuvuuksia. Sitä seuraa lähellä palvelunestohyökkäykset, jotka on usein
kohdistettu päällä olevaan ohjelmaan, jot- ta voidaan häiritä VPN-yhteyttä. Ylivuoto-
ja versioiden alentamishaavoittuvuuksia.
Nämä tulokset antavat meille vähän tietoa menneisiin vikoihin.
Matthias: Ennen kuin mennään takaisinmal- linnukseen, haluamme antaa teille pienen
katsauksen Cisco:n lisensointitukeen. Cisco ASA on tyypillinen palvelinpääte
Cisco:n AnyConnect:ille, ja sitä on saata- villa rautalaitteistona sekä myös virtuaa-
lisena versiona esim. VMwaren päällä ajet- tavaksi. Tutkimuksemme alussa yritimme
saada virallista arviointilisenssiä Ciscolta ASAv:tä varten, ilman että pii-
lotimme tarkoituksenamme olleen käyttää sitä turvallisuustutkimukseen.
Sen vuoksi naiivi lähestymistapamme oli vain lähestyä Ciscon lisensointitukea. Se
oli enemmän tai vähemmän: Hei, teemme turvallisuustutkimusta Ciscon AnyConnect-
asiakasohjelmistoon. Voitteko antaa meille ilmaisia arviointilisenssejä ASAv:lle?
Cisco vastasi: okei. Montako tarvitsette? Tässä kohdassa olimme hieman yllättyneitä
kuinka kivuttomasti kaikki tuntui menevän. Mutta sitten saimme kolme 60-päivän li-
senssiä tilillemme. Mutta heti kun kokei- limme ladata Cisco ASAv-imagea Virtual-
Box:lle, saimme tämän virheen. Ehkä jon- kinlainen ongelma lisenssin aktivoinnissa,
sillä jos sinulla on lisenssi tuotteisiin tietenkin voit ladata sen, eikös joo?
Mutta joo, se todellakin vaikutti siltä että lähestymistapamme oli hivenen naiivi
ja olimme aliarvioineet yrityssovelluksien lisenssoinnnin monimutkaisuutta.
Se oli vähän epätyydyttävää. Mutta meillä oli idea. Pyytäisimme yliopistomme data-
keskuksen apua koska hekin käyttivät Ciscon AnyConnectia. Mutta me emme
ikinä saaneet vastausta. Meillä oli vielä joitakin vaihtoehtoja jäljellä, mutta jos-
sakin kohtaa annoimme vain periksi. G: Koska saatavilla ei ole kunnollista
dokumentaatiota, oli tarpeen ihan alkuun ymmärtää sovellusta ja selvittää sen kes-
keiset komponentit. Sen vuoksi meillä ei ollut muuta mahdollisuutta, kuin takaisin-
mallintaa sovellus. Analysoimme sovellus- tiedostoja ja verkkoliikennettä. Jotta
saisimme paremman ymmärryksen ohjelmasta, käytimme perustyökaluja kuten Ghidraa
staattiseen koodianalyysiin. Ghidra kyke- nee takaisinkääntämään lähdekoodin kään-
netystä binääristä tai kirjastosta. Dynaa- mista sovellustestausta varten käytimme
työkaluja kuten Fridaa, Burppia ja Wire- sharkkia. Frida voidaan liittää ajossa
oleviin prosesseihin, jotta ymmärretään ohjelman virtausta. Burpia käytettiin pro-
xynä HTTPS-viestien muuttamiseen, ja Wire- sharkkia käytettiin verkkoliikenteen kuun-
teluun ja purkamiseen. Otetaan lähempi katsaus tiedostojen binääreihin. AnyCon-
nectin mukana tulee iso joukko binäärejä. Takaisinmallintaessamme tunnistimme kolme
keskeistä sovelluksen osaa: vpnui on binääri, jonka kanssa käyttäjä on vuoro-
vaikutuksessa. Se tarjoaa GUI:n, jossa käyttäjä tekee yksinkertaisia asetuksia ja
käynnistää VPN-yhteyden. Toinen binääri on vpnagentd. Se ajaa daemonia taustalla
kaikkina aikoina, jopa silloin kun VPN- yhteys ei ole auki. Erikoista vpnagentd:sä
on se, että sitä ajetaan root-prosessina ja se kuuntelee aina staattisella portilla
Sen tarkoituksena on pystyttää VPN-tunneli ja verkkokonfiguraatio asiakaslaitteessa.
Se sisältää asetuksia kuten reitit tai DNS -palvelimet. Kolmas ja viimeinen binääri
on vpndownloader. Kuten nimi vihjaa, sen tarkoitus on ladata lisätiedostoja, joita
tarvitaan VPN-yhteyden muodostamiseen. Se sisältää sellaisia kuten VPN-profiilit,
aputiedostot ja skriptit. Binäärit vaihta- vat dataa keskenään prosessienvälisen kom-
munikaation (IPC:n) keinoin. IPC tapahtuu TCP socket:ien välityksellä. Binääridata-
formaatti, jonka Cisco on IPC:lle määri- tellyt, käytetään viestien vaihtoon TCP-
socketien akutta. Binäärien lisäksi Any- Connect sisältää paljon kirjastoja.
Monet niistä ovat porttauksia olemassa- olevista avoimen lähdekoodin kirjastoista
kuten OpenSSL:stä. Tärkein seikka niistä on tällä dialla: libvpnapi.so sisältää
interfacet ja funktiot käyttäjäkäyttöliit- tymien taustalogiikalle. Kirjaston tavoit-
teena on että yritykset voivat rakentaa omat VPN-sovelluksensa AnyConnect:n infran
päälle. Se on ainoa krijasto, jolle doku- mentaatio on saatavilla Ciscon
toimittamana. Libvpncommoncrypt on wrapper OpenSSL ja NSS-kirjastoille. NSS on saman-
kaltainen OpenSSL:n kanssa ja sitä käy- tetään selainten, kuten Mozilla Firefox:n
toimesta SSL/TLS-yhteyksien kytkemiseen. Se myös tarjoaa oman sertifikaattivaras-
tonsa. Libvpncommon on toinen keskeinen kirjasto, jota kaikki binäärit käyttävät.
Se tarjoaa luokkia ja funktioita IPC- logiikalle. Sillä voidaan luoda, lähettää
ja validoida IPC-viestejä. Seuraava kir- jasto, libvpnagentutilities, sisältää
luokkia ja funktioita, jotka käsittelevät kriittisiä operaatioita, kuten verkkoase-
tuksia. Sitä käyttää ainoastaan vpnagentd. Binäärien ja kirjastojen lisäksi on monia
muita tiedostoja, joilla on merkitystä ja joita tutkimme tarkemmin. AnyConnect
tarjoaa AnyConnect local policy XML-tie- doston. Tämä tiedosto sääntelee useita
turvallisuusasetuksia. Esimerkiksi sitä voidaan käyttää määrittämään, että muita
tiedostoja ei enää ladata, tai että VPN- palvelin voi suorittaa versiopäivityksiä.
Oletusasetuksillaan se on hyvin salliva ja lähes mikä tahansa on sallittua. Tiedostoa
ei ylikirjoiteta päivitysten toimesta eikä sitä voida muuttaa VPN-palvelimen toimesta
VPN-profiili on myös XML-formaatissa: se sisältää lisäasetuksia. Vihreällä on ko-
rostettu EnableScripting-tagirivi, jossa on boolean-arvo epätosi. Se indikoi, että
skriptejä ei tule suorittaa laitteella.
VPN-palvelin jakelee profiilitiedostoja, ja ne ylikirjoitetan seuraavan kerran kun
käyttäjä yhdistää ja muuttaa niitä. Vii- meinen tiedosto on VPNManifet.dat mikä on
binääridatamuodossa sisältäen AnyConnect:n versiotiedoton. Tätä tiedostoa käytetään
kun tarkistetaan mikä on AnyConnectin versio ennen päivitystä. Näiden tiedosto-
jen lisäksi viestinvälitys näyttelee kes- keistä roolia. VPN-yhteyden muodostus
rakentuu kolmeen vaiheeseen. Ensimmäinen vaihe on autentikointi.
Käyttäjä syöttää VPN-palvelimen IP/Domain- tiedot vpnui:ssä. Kohdepalvelin lähete-
tetään sitten IPC-viestinä vpnagentd:lle. Vastauksena vpnui saa erinäisiä järjestel-
mätietoja takaisin. Se sisältää käyttöjär- jestelmätietoja tai kokonaisen tietovaran-
non. Myöhemmin tämä tieto ja tunnukset lähetetään VPN-palvelimelle HTTPS:n väli-
tyksellä. ASA palauttaa palvelinparametrit HTTPS-vastauksessa. Otetaan lähempi kat-
saus pyyntöön ja vastaukseen. Vasemmalla puolen näette tämän pyynnön. Se on nor-
maali post-pyyntö, jossa on XML jossa tunnustiedot välitetään. Tunnustiedot
on merkitty vihreällä.
Vasemmalla näemme vastauksen. Vastaus si- sältää sessio-tokenin, mikä on myös mer-
kitty vihreällä. Lisäksi vastaus sisältää URLt kaikkiin ladattaviin tiedostoihin ja
niiden hash-arvot. Oranssilla korostettu string on yksi ladattavista tiedostoista.
Lataus-vaihe on toinen vaihe VPN-yhteyden muodostamisessa. Ensiksi vpnui suorittaa
vpndownloader-binäärin. Sitten palvelin- paramterit edellisestä HTTPS-vastauksesta
siirretään vpndownloaderille IPC:n väli- tyksellä. URLt poimitaan IPC-viesteistä
ja kun tiedostot ladataan ne ladataan väliaikaiseen kansioon HTTPS:n välityk-
sellä. Lataajaprosessi tiedottaa vpnagentd :lle IPC:n välityksellä että sen tulee
siirtää tiedostot varsinaiseen sovellus- kansioon. Kolmannessa ja viimeisessä
vaiheessa VPN-yhteyden muodostamista vpnui lähettää IPC-viestin vpnagentd:lle, jossa
on pyyntö muodostaa VPN-tunneli. Sen jälkeen tunneliparamterit vaihdetaan käyt-
täen HTTPS:ää. Kun vpnagentd on asettanut parametrit, VPN-sessio jatkuu.
Otetaan tarkempi katsaus tunneliparamet- reihin.
Vasemmalla puolella näemme pyynnön. Ensimmäisellä rivillä näette HTTP-connect
-metodin. Normaalisti proxyt käyttävät tätä metodia edelleenvälittääkseen pyynnöt
kohdepalvelimelle. Pyynnön sisällä näemme, että sessio-token annetaan cookie:n
header:issä. Tämä on se sama sessio-token, joka saatiin autentikaatiovaiheessa.
Eri tunneliparamterit välitetään eri HTTP- headereissä. Osio, joka on merkitty
punaisella edustaa paikallisen laitteen IP-osoitetta. Oikealla puolella näette
vastauksen tään pyyntöön. Esimerkiksi X- CSTP-Address-header sisältää IP-osoitteen,
jonka laitteen tulee antaa tunneli-inter- facelleen.
Punaisella merkatussa osiossa näemme nyt myös DNS-palvelimen VPN-yhteydelle.
Lisäksi osoiteavaruudet, jotka pitää rei- tittää VPN-palvelimen kautta on määritelty
X-CSTP-Split-Include-headerissä. Nyt kun meillä on yleispätevä ymmärrys
ohjelmistosta, mennään haavoittuvuustutki- mukseen. Me suoritimme design-analyysiä
AnyConnectille, jossa tarkastelimme IPC- viestejä paljon yksityiskohtaisemmin.
Meidän täytyy määritellä tiettyjä oletuk- sia turvallisuudesta ja hyökkääjästä,
ennne kuin etsimme haavoittuvuuksia. Tämä dia näyttää useita oletuksistamme.
Kryptografiset algoritmit sovelluksen sisällä ovat turvallisia, eikä niitä voida
murtaa eksponentiaalisessa ajassa. Hyök- kääjä ei voi lukea tai muokata viestejä
huolimatta heidän sijainnistaan, ja me oletamme että VPN-palvelin ei ole pahan-
tahtoinen, ja viestii vain valideja vies- tejä, jotka noudattavat protokollaa.
Oletamme, että hyökkääjällä on paikalli- nen pääsy ja hän voi suorittaa komentoja
laitteella, ja hänen tavoitteena on vaa- rantaa järjestelmän tai sovelluksen
luottamuksellisuus, eheys tai saatavuus. Käyttöoikeuksien laajennushaavoittuvuudet
käsitellään, sillä ne mahdollistavat hyök- kääjälle tavoitteisiin pääsyn.
Cisco päätti sisällyttää sovellukseensa automaattisten päivitysten ominaisuuden.
AnyConnect pystyy saamaan AnyConnect-päi- vityksiä VPN-palvelimelta ilman mitään
käyttäjävuorovaikutusta. Oletusasetuksil- laan AnyConnectia voi päivittää VPN-pal-
velin, joka tarjoaa uudempaa versiota. Turvallisuustutkijan näkövinkkelistä täl-
lainen automaattinen päivittäminen kuulos- taa lupaavalta, eikös vain? Katsotaan sitä
ominaisuutta tarkemmin. Ensiksi vpndown- loader lataa suoritettavan asennustiedos-
ton ja shell-skriptin nimeltä vpndownloa- der.sh. Sitten vpndownloader.sh suorite-
taan. Shell-skripti sisältää arkiston, joka puretaan jotta saadaan uusi versio
vpndownloaderista ulos. Sitten IPC-viesti lähetetään vpnagentd:lle, jossa sitä
pyydetään suorittamaan tämä asennustie- dosto. Vpnagentd ei suorita sitä suoraan,
vaan se kutsuu vpnagentdownloader:ia root- oikeuksin, joka puolestaan kutsuu tuota
asennustiedostoa. Ennen asennustiedoston suorittamista vpndownloader verifioi ja
validoi tiedoston. Me saimme idean: onko mahdollista asentaa vanhentunut versio
väärennetyn IPC-viestin avulla? Kuten kuvassa näkyy, hyökkääjä tarvitsee vanhan
allekirjoitetun asennustiedoston ja se lähettää IPC-viestin vpnagentd:lle pyytäen
sitä suorittamaan vanhentuneen asentajan. Vpnagentd kutsuu vpndownloaderia kuten
normaalistikin, joka puolestaan kutsuu hyökkääjän asennustiedostoa. Ei ole mitään
tarkistusta sille, onko asennustiedosto uudempi kuin jo asennettu versio. Tämä
mahdollistaa versionalennushyökkäyksen. Version alentamisen tavoitteena hyökkää-
jällä on pakottaa vanhentuneen version asennus, version joka sisältää haavoittu-
vuuksia , joita hyökkääjä voisi hyö- dyntää.
Raportoimme tämän haavoittuvuuden Ciscon tuoteturvallisuustiimille ja se
korjattiin syyskuun lopussa. Haavoittuvuus sai vain CVSS-pisteytyksen 3.1, ja oli
siten luokiteltu matalan vakavuuden haavoittuvuudeksi. Haavoittuvuus oli
hyödynnettävissä vain Linux-versiossa. Windows- ja Mac-versiot oli jo turvattu
tuollaiselta hyökkäykseltä. Toinen toimin- nollisuus, jota tarkastelimme oli
skriptien jakelu ja suoritus. He kutsuvat sitä "Bring your own Script":ksi.
Toiminnon tarkoituksena on helpottaa skriptien jakelua tietokoneille. Jotta
skripti suoritetaan, sen pitää täyttää kaksi vaatimusta.
Ensikin, sen pitää sijaita skriptit-kan- siossa ja tiedostonimen tulee alkaa sa-
noilla OnConnect tai OnDisconnect. Toisek- si, VPN-palvelimen lähettämässä profiilis-
ssa EnableScripting-tagin tulee olla ase- tettuna tosi-arvoon.Riippuen tiedosto-
nimestä skriptit ajetaan VPN-yhteyden muodostamisen ja terminoinnin jälkeen.
VPN-palvelin kun voi jaella profiileja, joissa skriptien jakelu on päällä ja se
voi myös jaella skriptit: nämä kaksi yh- dessä amhdollistvat VPN-palvelimelle etä-
ajettavan koodin siihen yhdistävillä lait- teilla. Tämä toiminnollisuus muodostaa
suuren ongelman, sillä ihmiset joutuvat usein luottamaan yliopsiton VPN-palveli-
miin ja heillä ei ole muuta vaihtoehtoa. Mutta katsotaan tarkemmin skriptien jake-
lua. Tässä näemme klassisen skriptijakelun esimerkin. Latausvaiheessa vpndownloader
lataa OnConnect- tai OnDisconnect- skriptit. Vpndownloader sitten kysyy IPC-
viestillä ladatun skriptin siirtoa skrip- tit-kansioon.
Vpnagentd-prosessi kutsuu vpndownloaderia, joka sitten siirtää tiedoston.
Tarkastelimme järjestelmällisesti IPC- viestejä ja löysimme pystysuuntaisen käyt-
töoikeuksien laajennuksen. Hyökkääjä voi lähettää saman viestin vpnagentd-proses-
sille. Mikä tahansa hyökkääjän skrip- teistä voidaan siirtää skriptit-kansioon.
Jos seillä on jo skripti, niin se ylikir- joitetaan. Jos hyökkääjä siirtää On-, tai
OnDisconnect-skriptin kun käyttäjällä on VPN-yhteys avoinna, skripti jaetaan käyt-
täjän oikeuksilla. Kun VPN-yhteys sulje- taan, ensimmäinen valtuuttamaton käyttäjä
voi saavuttaa toisen käyttäjän kontekstin koodiajoa.
Mikä häiritsi metiä tässä hyökkäyksessämme oli se että se oli sidottu esiehtoihin.
Yksi ehdoista oli, että EnableScripting- tagissa oli arvo "Tosi". Harkitsimme muita
hyökkäysskenaarioita ja saimme idean jael- la profiileja itse. Eli, tsekkaamme tagin
uudestaan, mutta emme luo vain skriptiä vaan myös VPN-profiilin joka sallii
skriptien ajamisen. Hyökkäys toimii näin: kun paikallsiella käyttäjällä on VPN-
sessio aktiivisena, toinen käyttäjä jär- jestelmässä luo pahantahtoisen skriptin ja
uuden profiilin. Uudessa profiilissa Ena- bleScripting-tagiin on asetettu arvoksi
"Tosi". Hyökkääjä sitten lähettää IPC- viestin vpnagentd:lle pyytäen skriptin ko-
pioimista skriptit-kansioon. Vpndownloader käynnistetään sitten root-oikeuksin suo-
rittamaan kopiointi. Hyökkääjä voi myös lähettää lisäksi IPC-viestin vpnaentd:lle
pyytäen olemassaolevan profiilin yli- kirjoittamista pahantahtoisella profii-
lilla. Vaikka profiili ylikirjoitettaan, uuden profiilin asetuksia kytketä vielä
päälle koska vanha profiili on yhä aktii- visena.
Kuitenkin, me pystyimme määrittämään että uusi profiili ladataan kun VPN-sessiossa
tapahtuu uudelleenyhdistäminen. Neovat itse asiassa aika yleisiä AnyConnectissa.
Jos uudelleenyhdistys tapahtuu, uusi pro- fiili ladataan ja kytketään päälle. Meidän
tapauksessamme se mahdollistaa skripti- toiminnon. VPN-yhteyden alasajon jälkeen,
pahantahtoinen OnDisconnect-skripti aje- taan VPN-sovellusta ajavan käyttäjän
oikeuksin. Kummatkin ongelmat raportoitiin Ciscolle, mutta niitä ei voitu korjata
julkistamispäivään mennessä, vaikka an- noimme lisäaikaa deadlinelle. Vielä
tänäänkin haavoittuvuus on yhä läsnä Any- Connectin oletusasetuksissa.
Cisco julkisti tämän haavoittuvuuden CVSS- pisteytyksellä 7.1, mitä pidetään
korkeana vakavuutena. Koska se julkaistiin 4. marraskuuta 2020 ilman korjausta, haa-
voittuvuus sai paljon huomiota monilla uutissivustoilla.
Eri sivustot raportoivat haavoittuvuudesta Raportoinnin laatu vaihteli.
Joissakin artikkeleissa oli väärää tietoa, kuten että hyväksikäyttömenetelmä olisi
julkisesti saatavilla. Tämä ei ollut yhtään tarkkaa, koska me olimme ainoat,
joilla oli toimiva haavoittuvuus emmekä julkistaneet sitä vielä. Emme löytäneet
mitään muuta hyväksikäyttömenetelmää Interntistäkään. Luulen että tällainen
raportointi - tämä tapa raportoida pitää harkita uudelleen koska se aiheutti niin
paljon väärää tilannekuvaa haavoittuvuu- desta. Meitä jopa kontaktoitiin huolestu-
neiden poikkeamavastetiimien toimesta, sillä he olivat huolissaan infrastaan.
Kaikki löydetyt ja raportoidut haavoittu- vuudet on listattu tässä taulukossa. Nämä
kolme haavoittuvuutta löydettiin design- analyysin keinoin. Vain yksi haavoittu-
vuuksista on korjattu Ciscon mukaan. Eri toten Bring Your Own Script-haavoittu-
vuudet on jo julkistettu. Vaikka korjausta niihin ei vielä ole, kiertävä meaknismi
on jo julkaistu näitä haavoittuvuuksia vastaan. Muokkaamalla paikallista poli-
tiikka-tiedostoa latausvaihe voidaan ohit- taa kokonaan. Viimeisimmän päivityksen
myötä on myös mahdollista estää lataus- ja jakelutoimintoja modulaarisesti.
M: Ja entäs sitten mobiilialustat? Vai- kuttavatko löytämämme haavoittuvuudet
niissä? Pidetään tämä lyhyenä: ei. Mobiili -alustoista puuttuu monia ominaisuuksia
verrattuna Linux, Windows ja macOS-ver- sioihin. On tietenkin mahdollista muodos-
taa TLS ja IPsec-yhteyksiä, kuten kaikilla muillakin versioilla. Mutta koska ominai-
suudet kuten skriptien jakelu tai auto- maattinen päivitys puuttuvat, ei ole
mitään keinoa käyttää näitä hyväksikäyttö- menetelmiä mobiilialustoilla. Meillä on
meineillään tarkastelu AnyConnect:n iOS- versioon, ja sen vuoksi haluamme antaa
teille nopean ja korkean tason yleiskat- sauksen arkkitehtuuriin. Koska olemme
Applen aknssa tekemisissä tässä, vakavat asiat kuten VPN:n implementointi on vähän
erilaista verrattuna esimerkiksi Linux- versioon. Jos haluaa leikkiä notifikaa-
tioilla, lisätä jakamisnappeja tai tehdä widgetin aloitusnäytölle, pitää käyttää
sovellusekstensiota. Myös VPN-toiminnolli- suuksia varten pitää käyttää verkkoeksten-
siokehystä. Verkkoekstensiot sisältävät providereita ja ominaisuuksia kaikenlai-
siin verkkoon liittyviin toimintoihin, kuten sisällönsuodatukseen, DNS:ään, Wi-
Fiin ja muuhun. Jos haluaa rakentaa oman VPN-sovelluksen, pitää valita Personal
VPN:n, Packet Tunnel Provider:n ja App Proxy Provider:n välillä. Meidän tapauk-
sessamme AnyConnect iOS:lle käyttää Packet Tunnel Provideria, koska he käyttävät omaa
pakettiorientoitunutta protokollaansa. Tässä näemme AnyConnect-sovelluspaketin
sisällön, mikä on periaatteessa .zip-tie- dosto, joka sisältää kaikki suoritettavat
tiedostot ja assetit kuten kuvat jne. Pää- tiedosto on nimeltään eplkkä AnyConnect.
Verkkoekstensio on implementoitu ACExten- sion-binäärissä. Näiden lisäksi on monia
muita sovellusekstensioita, joilla imp- lemenntoidaan iOS:n jakamis- ja Siri-toi-
minnollisuuksia. Joten mitä tapahtuu kun painetaan connect-slideria? Kun painaa
slideriä, network-ekstensio suoritetaan, ja VPN-session neuvottelu alkaa. Sen
jälkeen kun verkkotietoja kuten IP-osoit- tieta, aliverkkomaski, reitit, DNS, MTU ja
muuta on saatu, ne annettaan iOS-järjes- telmälle, joka suorittaa neuvottelun lop-
puun. Lopussa yhteys on muodostunut, ja toivottavasti sinulla on toimiva tunneli-
interface nimeltä utun. Joten, uusi lii- kenne sovelluksilta menee network-pinon
läpi kunnes se saapuu tunneli-interfacel- le. Sitten network-ekstension Packet
Tunnel Provider voi käsitellä sitä. Joka kerta kun paketti saapuu tunneli-inter-
facelle se luetaan network-ekstension toi- mesta ja kapseloidaan tunnelointiproto-
kollalla. Joka kerta kun paketti saapuu tunneliin, network-ekstensio lukee sen ja
kapseloi sen tunnelointiprotokollalla. Kun se saapuu VPN-palvelimelle, paketin
kapselointi puretaan, ja se lähetetään kohdeosoitteseensa. Samalla tavalla client
:lle lähetettävät vastaukset kapseloidaan, jossa niiden kapselointi vasta poistetaan
ja se syötetään takaisin verkkopinoon. Tässä iOS-clienteista, ihan vain että
annetaan teille nopea yleiskatsaus ja korostetaan tiettyjä avaineroja eri
arkkitehtuurien välillä. Tutkimme yhä sekä Linux- että iOS-alustoja, mutta tähän men-
nessä löydöksemme voidaan yhteenvetää näin: AnyConnect yleisesti ottaen on laaja
sovellus jossa on paljon koodia ja myös käyttämätöntä kirjastokoodia. Olemme löy-
täneet kolme haavoittuvuutta design-ana- lyysillä. Vpnagentd:tä ajetaan root-
oikeuksin ja se vastaanottaa komentoja ja operaatioita vähempiarvoisilta prosesseil-
ta autentikoimattomien ICP-viestien väli- tyksellä, mikä on yleensä ottaen aika
riskialtista. Kaikkia turvamekanismeja ja -korjauksia ei ole kaikilla alustoilla.
Esimerkiksi versioalennushyökkäys oli mahdollinen vian Linuxilla, ja se oli jo
korjattu Windowsilla ja macOS-versioilla Ciscon mukaan. Mobiililla se ei ole mah-
dollinen johtuen siitä että automaattinen päivitystoiminto on rajoitettu Linux:lle,
Windows:lle ja macOS:lle. Samalla lailla, Bring Your Own Script ei päde mobiiliin,
koska OnConnect ja OnDisconnect-skriptien jakelu on myös rajoitettu vain ei-mobii-
leille alustoille. Liittyen local policy- tiedostoon Linuxilla, meidän näkemyksemme
on että siitä pitäisi tehdä niin rajoitet- tu kuin mahdollista, ehkä vaatia opt-in:iä
skriptaus-toiminnollisuudelle. Tämä vä- hentäisi monia hyökkäyksiä, mutta tieten-
kin vaikuttaisi myös käytettävyyteen. Vaikka sovellus on ollut saatavilla monia
vuosia, me näytämme että niissä on yhä bugeja löydettäväksi. Bug bounty-ohjelmien
käyttöönotto olisi mahtava tapa motivoida useampaa turvallisuustutkijaa tarkistamaan
sovellus haavoittuvuuksien varalta. VPN:n käyttö lupaa turvallisuutta ja yksityi-
syyttä käyttäjille, kuitenkin tutkimuksem- me AnyConnectiin näyttää että suljetun
lähdekoodin ohjelmistot mahdollistavat uusia hyökkäysvektoreita järjestelmiin.
Toivomme että tulevaisuudessa tehtäisiin tutkimusta asiakasohjelmistoihin, ja että
työmme tasoittaa matkaa sinne. Se oli sii- nä. Kiitoksia ja kysykää vain jos niitä on
H: No niin, tervetuloa takaisin. Siinä oli tallenne tästä supermielenkiintoisesta
esityksestä Very Pwnable Netwokrks. Olen varma, että olette nähneet kuinka pwnatta-
via ne ovatkaan, ja onneksi meillä on täällä tänään kanssamme Jiska, Matthias ja
Gerbert Internet-taikuuden avustuksella. Jos et ole vielä kirjoittanut kysyymystäsi
tee se nyt, jotta voimme vielä vastata siihen. Joko menemällä IRC-kanavalle rc3-
cwtv hackened-verkossa tai postaamalla tweetin tai tootin suosikki-SoMellasi,
joka sisältää hashtagin #rc3cwtv ilman väliviivaa, hyvin tärkeä huomio.
Signaalienkelimme on kerännyt joitakin kysymyksiä meille, joidenka avulla nyt
kidutan näitä kolmea ihmistä. Katsotaan mitä sanotte näihin.
Mutta aah, nämä ovat aika - aika vaisuja, vai? No, eka kysymys on: onko mitään sivua
tai wikiä, jossa tämä tieto on saatavilla?
G: Tällä hetkellä sitä ei ole vielä jul- kaistu. Luulen että julkaisemme sen lähi-
tulevaisuudessa GitHubissa tai vastaavalla alustalla.
H: Onko mitään tapaa, jolla ihmiset voivat löytää linkin tuohon kun sitten viimein
julkaisette sen? G: Luulen että Jiska voi sanoa tähän.
J: Joo, eli SEEMOO:lla on Github-sivu ja
myös Twitter-tili, joten se tullaan jul- kaisemaan. Mutta on vielä pari, pari seik-
kaa joista emme pitäneet, jotka eivät ole vielä julkisia. Joten kyllä, sitten jul-
kaisisimme vain yhden julkaisun sen sijaan että yksi CVE täällä, toinen tuolla.
H: Aivan, tekee enemmän vaikutusta ker- ralla ja myös parempaa julkaisua. Pidän
tuosta. Ja seuraava kysymys on: onko tämä VPN-tapahtuma vain Ciscosta? Joten joo,
olette vain katsoneet Ciscao, eikö vain? Tässä tapauksessa ehkä haluatte kertoa
meille jos te olette katsoneet muita VPN- toimittajia tai jos muilla VPN-toimitta-
jilla olisi myös ongelmia? Ehkä.
M: Joo, me olemme tehneet tätä tutkimusta osana maisterin työtä, ja sen vuoksi se on
vain Ciscon AnyConnectista, ja joo meillä ei ole ollut aikaa katsoa näitä muita VPN-
palveluita. Pelkästään AnyConnectia.
H: Aivan, tyypillinen maisterin näkymä - kirjoitetaan sitä kahvin voimin pari viik-
koa ennen määräaikaa. Joo, voin kuvitella että olette keskittyneet Ciscoon silloin.
Toinen erittäin hyvä kysymys: onko näitä haavoittuvuuksia muissa AnyConnectin kal-
taisissa sovelluksissa, kuten niissä jotka on integroitu Linuxin NetworkManager:iin?
Luulen että hän puhuu nimenomaan Open- Connectista. Juu, tuo tuli juuri sisään.
Hmm, me puhuimme tästä vähän aiemmin, niin ehkä teillä on jotain sanottavaa tästä.
G: Meidän tietääksemme siinä -
OpenConnectissa ei ole skripitoimintoja aktvoituna tai integroituna. Joten
sanoisimme että tällaiset hyökkäykset eivät ole vielä mahdollisia, mutta - hmm..
M: Olisi mahdollista että joku kykenevä tarkistaa tämän, ja katsoo siihen myös,
OpoenConnectiin myös, joo. H: Hmm, aivan, ei vielä tiedossa onko
mahdollista. Sanotaan se niin. Ikinä ei tiedä. Onko mitään muita kysymyksiä
chatista, Twitteristä tai Mastodonista? Nyt olisi aika antaa kysymyksenne. Muutoin
tämä olisi ollut hyvin lyhyt Q&A. joten menkää rc3-cwtv-kanavalla hackened-IRC-
verkossa tai postatkaa tweet tai toot hashtagilla #rc3cwtv mutta ilman välivii-
vaa. Tehkää se nyt ja toivottavasti saamme sen vielä Signaalienkelin taikuudella,
joka kerää tätä tietoa minulle.
Ja joo, ehkä voitte kertoa onko teillä vielä jotain lisättävää tai joitain uusia
aiheita joiden kanssa työskentelette, jot- ka ovat tuloillaan. Ehkä voimme saada
ennakkokatselmusta. Olen varma että yhä jatkatte tutkimustanne siihen ja -
J: Pahoittelut, minun piti ottaa mykistyk- seni pois. Ei vielä
spoilereita mutta joo, edes yhden suljetun koodin VPN-asiakasohjelmiston tutkinta on
hyvin, hyvin paljon työtä ja aikaavievää.
Voin kertoa teille tarinan kuinka katse- limme binäärejä kuukausia ja se ei oikein
skaalaudu esim. 10:een eri asiakasohjel- mistoon, ainakin jos haluaa saada merki-
tyksellisiä löydöksiä. H: Joo, mutta eikö teillä ole sellaisia
jotain muita suunnitelmia, esimerkiksi muiden ohjelmistojen katsomista tai jos
olette saaneet pyyntöjä katsella muita ohjelmia tai jotain mikä ohjaa teitä
jokin omituisen ääreeen? Ei? Okei. G: Ei vielä.
J: Jep. G: Mutta, mutta joo Matthias yhä työsken-
telee sen parissa. Luulen että hän löytää jotain tulevaisuudessa. M: Toivottavasti.
H: Juu, juu. No siiinä on aika pitkälti kaikki viimeiset kysymykset, paitsi vii-
meinen: Jsika, takanasi on kaksi varjoa, onko se varjokabinetti?
J: Ei ei ei, minulla on vain useita lamp- puja täällä, joten -
H: Joo joo, aivan se on aika hauskaa kaikki
J: Ainakin se näyttää vain varjoni kahtena eikä - eikä minua.
H: Joo, mutta olemme aika onnekkaita että ainakin tässä puhelussa yhteys näyttää
toimineen aivan hyvin. Meillä on ollut joitakin ongelmia täällä. Mutta joo, tämä
on mahtavaa. Jos teillä on muita kysymyk- siä niin luulen että lopettelemme tähän,
jotta emme pidä teitä kauempaa. Olen varma että haluatte hyppiä rc3-maailmassa, ja
jos teillä on mitään muuta, ehkä voitte liittyä kanssamme IRC:hen myöhemmin. Jos
on mitään muita kysymyksiä, ehkä he katso- vat tänne vähän ajan kuluttua tai minä vä-
litän heille ne kysymykset. Ok sitten. J: Kiitoksia.
H: Kiitoksia teille oikein paljon tästä super-mielenkiintoisesta puheesta. Minäkin
opin jotian uutta VPN-ohjelmasta, johon olen kans törmännyt työskennellessäni.
Joten tämä oli minullekin mielenkiintoista Ja lopetellaan tähän.
*postroll-musiikkia*
Tekstitykset luotu c3subtitles.de:llä vuonna 2022. Liity ja auta meitä!
[Translated by {Iikka}{Yli-Kuivila} (ITKST56 course assignment at JYU.FI)]