1
00:00:00,000 --> 00:00:03,730
[Translated by {Iikka}{Yli-Kuivila}
(ITKST56 course assignment at JYU.FI)]
2
00:00:03,730 --> 00:00:31,339
33C3 preroll-musiikkia
3
00:00:31,339 --> 00:00:35,200
Herald: Tervetuloa takaisin festivaali-
lavalle, yhä kakkospäivänä minun kelloni
4
00:00:35,200 --> 00:00:40,970
mukaan vaikka olenkin kadottanut ajanta-
juni jo nyt. En tiedä, tuntuu olevan kii-
5
00:00:40,970 --> 00:00:45,440
reinen vuosi niin monen hyvän esityksen
kanssa ja seuraavana meillä on super-mah-
6
00:00:45,440 --> 00:00:52,640
tava estiys Jiskalta, Gerberiltä ja Matt-
hiakselta. Nämä kolme ihanaa ihmistä näyt-
7
00:00:52,640 --> 00:00:59,780
tävät meille jotain VPN:stä, niin kutsu-
tuista Very Pwnable Networkeista, ja
8
00:00:59,780 --> 00:01:05,989
miksi sinun VPN:si ei ole välttämättä
yhtä turvallinen kuin sinulle on sanottu.
9
00:01:05,989 --> 00:01:10,909
Ja tämä ei ole pelkästään tärkeää ihmi-
sille jotka istuvat 7:n proxyn takana aja-
10
00:01:10,909 --> 00:01:15,829
tellen: ettepä nappaa minua. Mutta myös
vaikka jos työantajasi sanoo, että käytä
11
00:01:15,829 --> 00:01:21,179
tätä VPN-asiakasohjelmistoa: sinua voi
odottaa yllätys tai pari. Ja tämä on
12
00:01:21,179 --> 00:01:26,350
ennalta nauhoitettu esitys, jonka jälkeen
voin jo nähdäkin heidät täällä työkaluis-
13
00:01:26,350 --> 00:01:32,490
samme mutta esityksen jälkeen on Q&A-
sessio. Jos teillä on kysymyksiä,laittakaa
14
00:01:32,490 --> 00:01:40,859
niitä IRCissä, Twitterissä tai Mastodon:sa
hashtaillä #rc3cwtv ja meidän ihana
15
00:01:40,859 --> 00:01:46,366
Signaalienkeli kerää ne ja näemme
toisemme tallenteen jälkeen.
16
00:01:46,366 --> 00:01:48,459
Jiska: Kaikki ja tervetuloa esitykseen
17
00:01:48,459 --> 00:01:56,170
Very Pwnable Network Gerbertin, Matthiak:
sen ja minun toimesta. Mistä tämä alkoi?
18
00:01:56,170 --> 00:02:02,369
No, minusta tuli vähän vainoharhainen vii-
me vuonna ja ajattelin että olisi hyvä
19
00:02:02,369 --> 00:02:08,510
idea salata paljon koska Wi-Fi, LTE, TLS
voidaan kaikki kaapata, ne voidaan purkaa.
20
00:02:08,510 --> 00:02:14,420
Joten meidän tulisi salata kuten kaikki
katselisivat ja sen vuoksi minun pitäisi
21
00:02:14,420 --> 00:02:20,110
käyttää VPN:ää. Ja seuraava luottamusolet-
tamus oli että yhdistän yliopistoni verk-
22
00:02:20,110 --> 00:02:26,740
koon joka päivä, joten minun pitäisi luot-
taa tähän joka tapauksessa. Ja jos minä
23
00:02:26,740 --> 00:02:30,710
luotan tähän verkkoon, voisin käyttää tätä
verkkoa ja heidän ammattilais-VPN-palvelua
24
00:02:30,710 --> 00:02:36,060
Kuulen teidän nauravan, kuulen naurua,
mutta tämä oli minun ideani, koska sitten
25
00:02:36,060 --> 00:02:42,570
minun ei tarvitse asentaa enää mitään
lisää verkkoselaukseni aikana. Ja myös,
26
00:02:42,570 --> 00:02:47,610
tämä AnyConnect mitä he käyttivät niin se
oli hieno ja toimi jokaisella käyttöjär-
27
00:02:47,610 --> 00:02:53,250
jestelmällä. Ja se kuulostaa hyvältä, tur-
valliselta tuotteelta: AnyConnect.
28
00:02:53,250 --> 00:03:00,180
Jep. Ja sitten rupesin käyttämään mobiili-
laitteitani ja yhtäkkiä minulle tulee
29
00:03:00,180 --> 00:03:06,440
kaatumislokeja, jotka näyttivät tältä. eli
kun olet vainoharhainen, katsot kuitenkin
30
00:03:06,440 --> 00:03:11,840
kaatumislokisi lävitse joka toinen päivä,
ja yksi niistä näytti tällaiselta.
31
00:03:11,840 --> 00:03:17,170
Tämä ei näyttänyt oikein mukavalta osoit-
teelta, se näytti vähän omituiselta, ja
32
00:03:17,170 --> 00:03:21,850
tässä näkyy vähän kaatuneesta säikeestä.
Jos tämän pistää IDA:an ja tekee vähän
33
00:03:21,850 --> 00:03:25,540
takaisinmallinnusta voi myös liittää Any-
Connectin ekstension funktioiden nimiä,
34
00:03:25,540 --> 00:03:31,540
AC-ekstensio ja kaatuminen tapahtuu jos-
sain kun se pistää VPN-konfiguraatiota
35
00:03:31,540 --> 00:03:37,160
pystyyn, jossakin tunnelipuskurissa. En
tiedä. Joten, ja sitten ajattelin myös,
36
00:03:37,160 --> 00:03:44,220
että tuo osotie näyttää omituiselta koska
se on IPv4 väärin päin, ja pari päivää
37
00:03:44,220 --> 00:03:52,020
myöhemmin se kaatui uudestaan ja tässä
luki 68k Uusi Rivi. Se näytti todellakin
38
00:03:52,020 --> 00:03:56,670
joltain konfiguraatiostringeiltä, jotka
kaatuilivat tietyissä osoitteissa,
39
00:03:56,670 --> 00:04:02,110
ja se ei todellakaan näyttänyt hyvältäaikaa..
Mutta minulla ei myöskään ollut iakaa.
40
00:04:02,110 --> 00:04:06,940
Joten kirjoitin Ciscolle ja sanoin, että
oletteko tosissanne, teidän ohjelmisto
41
00:04:06,940 --> 00:04:13,180
kaatuu näin usein? Koska aina kun teen
pyykkiäni minulla on huono Internet-yhteys
42
00:04:13,180 --> 00:04:20,370
joten minun AnyConnect-ohjelmisto alkaa
kaatuielmaan omituisissa osoitteissa.
43
00:04:20,370 --> 00:04:26,889
Ja vaikka tämä on koodin ajamisen ongelma,
toinen ongelma olisi että jos pistetään
44
00:04:26,889 --> 00:04:30,950
pari pakettia menemään ilmasta, hyökkääjä
voi onnistua uhrin VPN-yhteyden katkaise-
45
00:04:30,950 --> 00:04:38,360
misessa. Se on myös onelma. Joten koska
AnyConnect-ohjelmisto ei ole kunnolla osa
46
00:04:38,360 --> 00:04:44,010
käyttöjärjestelmää, iOS:ää, se tarkoittaa
että se vain uudelleenyhidstää sinut ja
47
00:04:44,010 --> 00:04:48,130
sitten kaikki viestisi lähetetään selvä-
kielisenä verkon yli ja käyttäjä ei saa
48
00:04:48,130 --> 00:04:52,440
tästä mitään ilmoitusta. Se on vain VPN-
symboli, joka on kadonnut, ja kaikki lähe-
49
00:04:52,440 --> 00:04:58,030
tetään selväkielisenä. Ja halusin analy-
soida tätä pidemmälle ja siellä on debug-
50
00:04:58,030 --> 00:05:01,590
valinta siinä ohjelmistossa. Mutta koska
Ohjelmisto itse katuu, lokit myöskin
51
00:05:01,590 --> 00:05:07,480
katoavat sen sileän tien. Jos se kaatuu ja
sinulla on debuggaus-valinta päällä, niin
52
00:05:07,480 --> 00:05:12,340
myös käyttöjärjestelmän kaatumislokit
iOS:ssä ovat menneet, niitä ei ole.
53
00:05:12,340 --> 00:05:19,180
He vastasivat: "Emme saa tätä toistettua".
No, siis tietenkään he eivät
54
00:05:19,180 --> 00:05:23,520
ole auttaneet minua pyykinpesussa tai
missään muussakaan niin tietnkään he eivät
55
00:05:23,520 --> 00:05:30,230
saa sitä toistettua. Ja mikä vielä pahem-
paa, he jättivät tiketin istumaan pitkäksi
56
00:05:30,230 --> 00:05:37,100
aikaa kunnes sanoimme, että esittelemme
tämän tänä vuonna CCC-kongressissa. Ja
57
00:05:37,100 --> 00:05:40,520
sitten 10 päivää ennen puhetta he väittä-
vät että he ovat korjanneet kaksi kolmesta
58
00:05:40,520 --> 00:05:44,400
kaatumisesta, ja he kysyivät että saammeko
kaatumista enää aikaan vai ei. Mutta vain
59
00:05:44,400 --> 00:05:51,510
päivää ennemmin he sanoivat etteivät
olleetkaan varmoja ja niin edelleen. Se
60
00:05:51,510 --> 00:05:55,040
oli hyvin omituinen tiketti, ja minulla ei
ollut tietoa että oliko se korjattu vai ei
61
00:05:55,040 --> 00:05:59,949
koska tietenkin toistaakseni sen, minulla
pitäisi olla tinapaperia, pari AnyConnect:
62
00:05:59,949 --> 00:06:04,250
lla varustettua älypuhelinta ja sitten
minun pitäisi odotella että Internet-
63
00:06:04,250 --> 00:06:08,060
yhteyteni menee rikki tavalla, joka saa
sen kaatumaan. Joten tämä oli ihan liian
64
00:06:08,060 --> 00:06:17,030
satunnaista. Kerroin myös Applelle, mutta
he vain sanoivat että vika on ohjelmassa,
65
00:06:17,030 --> 00:06:21,590
eikä silloin kuulu heille, vaikka se on
verkkoekstensio, mikä kaatuu. Joten se
66
00:06:21,590 --> 00:06:28,840
ei ole heidän tehtävänsä ilmoittaa käyttä-
jälle siitä, koska se on vain VPN mikä on
67
00:06:28,840 --> 00:06:33,300
poissa. Ja sitten data lähteekin selväkie-
lisenä ja se on ihan ok. Se oli odotettua
68
00:06:33,300 --> 00:06:41,170
käytöstä. Rupesin ärsyyntymään tästä ja
lopetin VPN:n käyttämisen, mutta minulla
69
00:06:41,170 --> 00:06:47,240
oli myös idea etsiä opiskelijoita, jotka
tutkisivat tätä. Ja tiedättekin mitä
70
00:06:47,240 --> 00:06:52,369
tapahtuu kun löytää erittäin motivoitunei-
ta opiskelijoita: he löytävät haavoittu-
71
00:06:52,369 --> 00:06:54,590
vuuksia. Ja tämä esitys on siitä.
72
00:06:54,590 --> 00:06:59,930
Gerbert: Niin me tutkimme Cisco:n AnyCon-
nect-ohjelmistoa Linuxille ja löysimme
73
00:06:59,930 --> 00:07:04,460
pari mielenkiintoista asiaa. Vähän sen
jälkeen kun julkaisimme löydöksemme, usei-
74
00:07:04,460 --> 00:07:09,929
ta lehtiartikkeleita ilmaantui. Mutta mitä
tapahtui Jiskan kaatumisten ja näiden ar-
75
00:07:09,929 --> 00:07:17,810
tikkeledein välillä? VPN on mielenkiintoi-
nen sillä se on niin vanha tutkimuskohde.
76
00:07:17,810 --> 00:07:23,110
Kuitenkin, tuon teknologian merkitys ko-
rostui myöhemmin korona-pandemian myötä.
77
00:07:23,110 --> 00:07:29,639
Monet yritykset joutuivat uudelleensijoit-
tumaan kotitoimistoille turvallisuustoi-
78
00:07:29,639 --> 00:07:36,240
mien vuoksi. VPN mahdollistaa käyttäjille
pääsyn ulkopuolelta firman tai yliopiston
79
00:07:36,240 --> 00:07:42,690
sisäisiin resursseihin. Yleensä tarvitaan
VPN-asiakasohjelmistoa, jotta VPN-palveli-
80
00:07:42,690 --> 00:07:49,020
meen saadaan yhteys. Avoimen lähdekoodin
ohjelmistojen kuten OpenVPN:n lisäksi saa-
81
00:07:49,020 --> 00:07:55,400
tavilla on monia suljetun lähdekoodin tuot
-teita, erityisesti yrityssektorilla.
82
00:07:55,400 --> 00:08:01,930
Käyttäjät joutuvat luottamaan tähän ohjel-
mistoon, asentamaan tämän mustan laatikon
83
00:08:01,930 --> 00:08:09,009
koneilleen päästäkseen verkkoon. AnyCon-
nect secure liikkuvuus-ohjelmisto Ciscolta
84
00:08:09,009 --> 00:08:13,650
on yrityskäyttöön tarkoitettu. Se voidaan
luokitella etäpääsyohjelmistoksi, joka
85
00:08:13,650 --> 00:08:21,550
mahdollistaa loppukäyttäjille pääsyn verk-
koon, joka tukee SSL VPNää tai IPsec:iä.
86
00:08:21,550 --> 00:08:29,510
Käytettäessä SSL VPN:ää autentikaatio ja
tunnelin muodostaminen tapahtuu SSL/TLS-
87
00:08:29,510 --> 00:08:35,650
tunnelin lävitse. Ohjelmisto toimii paksu-
na clientina joka kommunikoi VPN-serverin
88
00:08:35,650 --> 00:08:42,329
kanssa HTTPS:n yli. Kuten jo mainittiin,
AnyConnectin lähdekoodi ei ole julkisesti
89
00:08:42,329 --> 00:08:48,500
saatavilla. Sovellus jaellaan käännettyjen
binäärien ja kirjastojen kanssa.
90
00:08:48,500 --> 00:08:54,210
Vaikka sovellus on dokumentoitu, se ei
kata sisäistä toiminnallisuutta. Edes haa-
91
00:08:54,210 --> 00:08:59,160
voittuvuustiedotteissa, jotka jaellaan
julkisina, ei mennä kovin syvälle tekni-
92
00:08:59,160 --> 00:09:04,630
siin yksityiskohtiin. Sen vuoksi tiedämme
vain rajoitetusti sovelluksesta, ja sen
93
00:09:04,630 --> 00:09:10,890
sisäisestä käyttäytymisestä. Olemme aset-
taneet itsellemme tavoitteksi tutkia Any-
94
00:09:10,890 --> 00:09:19,649
Connectin äskettäisiä Linux ja iOS-sovel-
luksia. AnyConnectin päätoiminnallisuus
95
00:09:19,649 --> 00:09:25,380
tulee VPN-yhteyksien muodostamisesta,
mutta se on vain jäävuoren huippu.
96
00:09:25,380 --> 00:09:31,680
AnyConnect:ssa on myös muita ominaisuuksia
joista nimetään pari: skriptien jakelu
97
00:09:31,680 --> 00:09:37,230
ja suorittaminen kohdelaitteilla, auto-
maattinen ohjelmiston päivittäminen kysy-
98
00:09:37,230 --> 00:09:43,470
mättä käyttäjän lupaa siihen, ja yksi omi-
naisuuksista on laiteskannaus: se ei
99
00:09:43,470 --> 00:09:49,310
integroidu AnyConnectiin, vaan sitä pide-
tään erillisenä ohjelmana. Se toimii Any-
100
00:09:49,310 --> 00:09:54,180
Connect-infran kanssa yhdessä ja mahdol-
listaa laajan asiakaslaitteiden järjestel-
101
00:09:54,180 --> 00:10:00,550
mätiedon lukemisen ja välittämisen VPN-
palvelimelle. AnyConnectiin liittyvät
102
00:10:00,550 --> 00:10:08,870
työt perustuvat Cisco:n julkisiin tiedot-
teihin ja blogimerkintöihin tietyiltä tur-
103
00:10:08,870 --> 00:10:14,660
vallisuustutkijoilta. Sen vuoksi päätimme
listata ja kategorisoida kaikki
104
00:10:14,660 --> 00:10:21,470
haavoittuvuudet vuodesta 2011 lähtien.
Tässä kuvassa näemme listan haavoittuvuuk-
105
00:10:21,470 --> 00:10:27,430
sista per vuosi, pistettynä järjestykseen
vakavuuden perusteella. Eniten raportoi-
106
00:10:27,430 --> 00:10:33,290
tiin keskitason haavoittuvuuksia, mutta
myös kriittisiä haavoittuvuuksia julkais-
107
00:10:33,290 --> 00:10:44,010
tiin vuosina 2011 ja 2012. 2015 ja 2016
vuosien korostuminen määrissä johtuu kir-
108
00:10:44,010 --> 00:10:51,380
jastoissa kuten OpenSSL, olleista haavoit-
tuvuuksista. Haavoittuvuudet jaoteltiin
109
00:10:51,380 --> 00:10:57,420
vielä edelleen kategorioihin, jotka näky-
vät tässä kuvassa. Kryptografiset haa-
110
00:10:57,420 --> 00:11:04,370
voittuvuudet ovat yleisimpiä, sillä Any-
Connect käyttää OpenSSL:ää, ja OpenSSL:n
111
00:11:04,370 --> 00:11:10,050
haavoittuvuudet ovat AnyConnectin haavoit-
tuvuuksia. Kun kolmansien osapuoletan haa-
112
00:11:10,050 --> 00:11:15,770
voittuvuudet suljetaan pois, eniten Any-
Connectilla on käyttöoikeuksien laajennuk-
113
00:11:15,770 --> 00:11:21,510
sen haavoittuvuuksia. Sitä seuraa lähellä
palvelunestohyökkäykset, jotka on usein
114
00:11:21,510 --> 00:11:26,110
kohdistettu päällä olevaan ohjelmaan, jot-
ta voidaan häiritä VPN-yhteyttä. Ylivuoto-
115
00:11:26,110 --> 00:11:33,110
ja versioiden alentamishaavoittuvuuksia.
116
00:11:33,110 --> 00:11:37,920
Nämä tulokset antavat meille vähän tietoa
menneisiin vikoihin.
117
00:11:37,920 --> 00:11:43,279
Matthias: Ennen kuin mennään takaisinmal-
linnukseen, haluamme antaa teille pienen
118
00:11:43,279 --> 00:11:50,540
katsauksen Cisco:n lisensointitukeen.
Cisco ASA on tyypillinen palvelinpääte
119
00:11:50,540 --> 00:11:55,589
Cisco:n AnyConnect:ille, ja sitä on saata-
villa rautalaitteistona sekä myös virtuaa-
120
00:11:55,589 --> 00:12:03,430
lisena versiona esim. VMwaren päällä ajet-
tavaksi. Tutkimuksemme alussa yritimme
121
00:12:03,430 --> 00:12:08,089
saada virallista arviointilisenssiä
Ciscolta ASAv:tä varten, ilman että pii-
122
00:12:08,089 --> 00:12:14,270
lotimme tarkoituksenamme olleen
käyttää sitä turvallisuustutkimukseen.
123
00:12:14,270 --> 00:12:21,290
Sen vuoksi naiivi lähestymistapamme oli
vain lähestyä Ciscon lisensointitukea. Se
124
00:12:21,290 --> 00:12:25,880
oli enemmän tai vähemmän: Hei, teemme
turvallisuustutkimusta Ciscon AnyConnect-
125
00:12:25,880 --> 00:12:32,130
asiakasohjelmistoon. Voitteko antaa meille
ilmaisia arviointilisenssejä ASAv:lle?
126
00:12:32,130 --> 00:12:38,220
Cisco vastasi: okei. Montako tarvitsette?
Tässä kohdassa olimme hieman yllättyneitä
127
00:12:38,220 --> 00:12:43,290
kuinka kivuttomasti kaikki tuntui menevän.
Mutta sitten saimme kolme 60-päivän li-
128
00:12:43,290 --> 00:12:50,170
senssiä tilillemme. Mutta heti kun kokei-
limme ladata Cisco ASAv-imagea Virtual-
129
00:12:50,170 --> 00:12:55,940
Box:lle, saimme tämän virheen. Ehkä jon-
kinlainen ongelma lisenssin aktivoinnissa,
130
00:12:55,940 --> 00:13:00,930
sillä jos sinulla on lisenssi tuotteisiin
tietenkin voit ladata sen, eikös joo?
131
00:13:00,930 --> 00:13:06,209
Mutta joo, se todellakin vaikutti siltä
että lähestymistapamme oli hivenen naiivi
132
00:13:06,209 --> 00:13:11,090
ja olimme aliarvioineet yrityssovelluksien
lisenssoinnnin monimutkaisuutta.
133
00:13:11,090 --> 00:13:20,939
Se oli vähän epätyydyttävää. Mutta meillä
oli idea. Pyytäisimme yliopistomme data-
134
00:13:20,939 --> 00:13:26,120
keskuksen apua koska hekin käyttivät
Ciscon AnyConnectia. Mutta me emme
135
00:13:26,120 --> 00:13:32,829
ikinä saaneet vastausta. Meillä oli vielä
joitakin vaihtoehtoja jäljellä, mutta jos-
136
00:13:32,829 --> 00:13:38,540
sakin kohtaa annoimme vain periksi.
G: Koska saatavilla ei ole kunnollista
137
00:13:38,540 --> 00:13:44,230
dokumentaatiota, oli tarpeen ihan alkuun
ymmärtää sovellusta ja selvittää sen kes-
138
00:13:44,230 --> 00:13:49,690
keiset komponentit. Sen vuoksi meillä ei
ollut muuta mahdollisuutta, kuin takaisin-
139
00:13:49,690 --> 00:13:58,649
mallintaa sovellus. Analysoimme sovellus-
tiedostoja ja verkkoliikennettä. Jotta
140
00:13:58,649 --> 00:14:03,980
saisimme paremman ymmärryksen ohjelmasta,
käytimme perustyökaluja kuten Ghidraa
141
00:14:03,980 --> 00:14:09,560
staattiseen koodianalyysiin. Ghidra kyke-
nee takaisinkääntämään lähdekoodin kään-
142
00:14:09,560 --> 00:14:15,899
netystä binääristä tai kirjastosta. Dynaa-
mista sovellustestausta varten käytimme
143
00:14:15,899 --> 00:14:22,740
työkaluja kuten Fridaa, Burppia ja Wire-
sharkkia. Frida voidaan liittää ajossa
144
00:14:22,740 --> 00:14:28,470
oleviin prosesseihin, jotta ymmärretään
ohjelman virtausta. Burpia käytettiin pro-
145
00:14:28,470 --> 00:14:35,899
xynä HTTPS-viestien muuttamiseen, ja Wire-
sharkkia käytettiin verkkoliikenteen kuun-
146
00:14:35,899 --> 00:14:41,390
teluun ja purkamiseen. Otetaan lähempi
katsaus tiedostojen binääreihin. AnyCon-
147
00:14:41,390 --> 00:14:45,890
nectin mukana tulee iso joukko binäärejä.
Takaisinmallintaessamme tunnistimme kolme
148
00:14:45,890 --> 00:14:52,160
keskeistä sovelluksen osaa: vpnui on
binääri, jonka kanssa käyttäjä on vuoro-
149
00:14:52,160 --> 00:14:58,570
vaikutuksessa. Se tarjoaa GUI:n, jossa
käyttäjä tekee yksinkertaisia asetuksia ja
150
00:14:58,570 --> 00:15:05,339
käynnistää VPN-yhteyden. Toinen binääri on
vpnagentd. Se ajaa daemonia taustalla
151
00:15:05,339 --> 00:15:11,670
kaikkina aikoina, jopa silloin kun VPN-
yhteys ei ole auki. Erikoista vpnagentd:sä
152
00:15:11,670 --> 00:15:17,680
on se, että sitä ajetaan root-prosessina
ja se kuuntelee aina staattisella portilla
153
00:15:17,680 --> 00:15:25,130
Sen tarkoituksena on pystyttää VPN-tunneli
ja verkkokonfiguraatio asiakaslaitteessa.
154
00:15:25,130 --> 00:15:32,899
Se sisältää asetuksia kuten reitit tai DNS
-palvelimet. Kolmas ja viimeinen binääri
155
00:15:32,899 --> 00:15:38,040
on vpndownloader. Kuten nimi vihjaa, sen
tarkoitus on ladata lisätiedostoja, joita
156
00:15:38,040 --> 00:15:43,570
tarvitaan VPN-yhteyden muodostamiseen.
Se sisältää sellaisia kuten VPN-profiilit,
157
00:15:43,570 --> 00:15:51,020
aputiedostot ja skriptit. Binäärit vaihta-
vat dataa keskenään prosessienvälisen kom-
158
00:15:51,020 --> 00:15:59,819
munikaation (IPC:n) keinoin. IPC tapahtuu
TCP socket:ien välityksellä. Binääridata-
159
00:15:59,819 --> 00:16:05,840
formaatti, jonka Cisco on IPC:lle määri-
tellyt, käytetään viestien vaihtoon TCP-
160
00:16:05,840 --> 00:16:15,670
socketien akutta. Binäärien lisäksi Any-
Connect sisältää paljon kirjastoja.
161
00:16:15,670 --> 00:16:20,960
Monet niistä ovat porttauksia olemassa-
olevista avoimen lähdekoodin kirjastoista
162
00:16:20,960 --> 00:16:29,620
kuten OpenSSL:stä. Tärkein seikka niistä
on tällä dialla: libvpnapi.so sisältää
163
00:16:29,620 --> 00:16:35,670
interfacet ja funktiot käyttäjäkäyttöliit-
tymien taustalogiikalle. Kirjaston tavoit-
164
00:16:35,670 --> 00:16:41,089
teena on että yritykset voivat rakentaa
omat VPN-sovelluksensa AnyConnect:n infran
165
00:16:41,089 --> 00:16:47,240
päälle. Se on ainoa krijasto, jolle doku-
mentaatio on saatavilla Ciscon
166
00:16:47,240 --> 00:16:54,420
toimittamana. Libvpncommoncrypt on wrapper
OpenSSL ja NSS-kirjastoille. NSS on saman-
167
00:16:54,420 --> 00:17:01,430
kaltainen OpenSSL:n kanssa ja sitä käy-
tetään selainten, kuten Mozilla Firefox:n
168
00:17:01,430 --> 00:17:07,860
toimesta SSL/TLS-yhteyksien kytkemiseen.
Se myös tarjoaa oman sertifikaattivaras-
169
00:17:07,860 --> 00:17:16,709
tonsa. Libvpncommon on toinen keskeinen
kirjasto, jota kaikki binäärit käyttävät.
170
00:17:16,709 --> 00:17:23,189
Se tarjoaa luokkia ja funktioita IPC-
logiikalle. Sillä voidaan luoda, lähettää
171
00:17:23,189 --> 00:17:30,290
ja validoida IPC-viestejä. Seuraava kir-
jasto, libvpnagentutilities, sisältää
172
00:17:30,290 --> 00:17:36,700
luokkia ja funktioita, jotka käsittelevät
kriittisiä operaatioita, kuten verkkoase-
173
00:17:36,700 --> 00:17:45,150
tuksia. Sitä käyttää ainoastaan vpnagentd.
Binäärien ja kirjastojen lisäksi on monia
174
00:17:45,150 --> 00:17:51,720
muita tiedostoja, joilla on merkitystä
ja joita tutkimme tarkemmin. AnyConnect
175
00:17:51,720 --> 00:17:59,420
tarjoaa AnyConnect local policy XML-tie-
doston. Tämä tiedosto sääntelee useita
176
00:17:59,420 --> 00:18:04,420
turvallisuusasetuksia. Esimerkiksi sitä
voidaan käyttää määrittämään, että muita
177
00:18:04,420 --> 00:18:11,740
tiedostoja ei enää ladata, tai että VPN-
palvelin voi suorittaa versiopäivityksiä.
178
00:18:11,740 --> 00:18:15,840
Oletusasetuksillaan se on hyvin salliva ja
lähes mikä tahansa on sallittua. Tiedostoa
179
00:18:15,840 --> 00:18:20,911
ei ylikirjoiteta päivitysten toimesta eikä
sitä voida muuttaa VPN-palvelimen toimesta
180
00:18:20,911 --> 00:18:30,830
VPN-profiili on myös XML-formaatissa: se
sisältää lisäasetuksia. Vihreällä on ko-
181
00:18:30,830 --> 00:18:36,960
rostettu EnableScripting-tagirivi, jossa
on boolean-arvo epätosi. Se indikoi, että
182
00:18:36,960 --> 00:18:43,820
skriptejä ei tule suorittaa laitteella.
183
00:18:43,820 --> 00:18:50,200
VPN-palvelin jakelee profiilitiedostoja,
ja ne ylikirjoitetan seuraavan kerran kun
184
00:18:50,200 --> 00:19:00,450
käyttäjä yhdistää ja muuttaa niitä. Vii-
meinen tiedosto on VPNManifet.dat mikä on
185
00:19:00,450 --> 00:19:05,940
binääridatamuodossa sisältäen AnyConnect:n
versiotiedoton. Tätä tiedostoa käytetään
186
00:19:05,940 --> 00:19:11,800
kun tarkistetaan mikä on AnyConnectin
versio ennen päivitystä. Näiden tiedosto-
187
00:19:11,800 --> 00:19:19,290
jen lisäksi viestinvälitys näyttelee kes-
keistä roolia. VPN-yhteyden muodostus
188
00:19:19,290 --> 00:19:24,870
rakentuu kolmeen vaiheeseen. Ensimmäinen
vaihe on autentikointi.
189
00:19:24,870 --> 00:19:33,750
Käyttäjä syöttää VPN-palvelimen IP/Domain-
tiedot vpnui:ssä. Kohdepalvelin lähete-
190
00:19:33,750 --> 00:19:41,490
tetään sitten IPC-viestinä vpnagentd:lle.
Vastauksena vpnui saa erinäisiä järjestel-
191
00:19:41,490 --> 00:19:48,679
mätietoja takaisin. Se sisältää käyttöjär-
jestelmätietoja tai kokonaisen tietovaran-
192
00:19:48,679 --> 00:19:53,790
non. Myöhemmin tämä tieto ja tunnukset
lähetetään VPN-palvelimelle HTTPS:n väli-
193
00:19:53,790 --> 00:20:04,160
tyksellä. ASA palauttaa palvelinparametrit
HTTPS-vastauksessa. Otetaan lähempi kat-
194
00:20:04,160 --> 00:20:10,150
saus pyyntöön ja vastaukseen. Vasemmalla
puolen näette tämän pyynnön. Se on nor-
195
00:20:10,150 --> 00:20:15,840
maali post-pyyntö, jossa on XML jossa
tunnustiedot välitetään. Tunnustiedot
196
00:20:15,840 --> 00:20:22,220
on merkitty vihreällä.
197
00:20:22,220 --> 00:20:28,130
Vasemmalla näemme vastauksen. Vastaus si-
sältää sessio-tokenin, mikä on myös mer-
198
00:20:28,130 --> 00:20:33,420
kitty vihreällä. Lisäksi vastaus sisältää
URLt kaikkiin ladattaviin tiedostoihin ja
199
00:20:33,420 --> 00:20:40,210
niiden hash-arvot. Oranssilla korostettu
string on yksi ladattavista tiedostoista.
200
00:20:40,210 --> 00:20:47,580
Lataus-vaihe on toinen vaihe VPN-yhteyden
muodostamisessa. Ensiksi vpnui suorittaa
201
00:20:47,580 --> 00:20:55,620
vpndownloader-binäärin. Sitten palvelin-
paramterit edellisestä HTTPS-vastauksesta
202
00:20:55,620 --> 00:21:03,144
siirretään vpndownloaderille IPC:n väli-
tyksellä. URLt poimitaan IPC-viesteistä
203
00:21:03,144 --> 00:21:09,620
ja kun tiedostot ladataan ne ladataan
väliaikaiseen kansioon HTTPS:n välityk-
204
00:21:09,620 --> 00:21:18,310
sellä. Lataajaprosessi tiedottaa vpnagentd
:lle IPC:n välityksellä että sen tulee
205
00:21:18,310 --> 00:21:24,320
siirtää tiedostot varsinaiseen sovellus-
kansioon. Kolmannessa ja viimeisessä
206
00:21:24,320 --> 00:21:31,010
vaiheessa VPN-yhteyden muodostamista vpnui
lähettää IPC-viestin vpnagentd:lle, jossa
207
00:21:31,010 --> 00:21:36,850
on pyyntö muodostaa VPN-tunneli. Sen
jälkeen tunneliparamterit vaihdetaan käyt-
208
00:21:36,850 --> 00:21:44,145
täen HTTPS:ää. Kun vpnagentd on asettanut
parametrit, VPN-sessio jatkuu.
209
00:21:44,145 --> 00:21:50,640
Otetaan tarkempi katsaus tunneliparamet-
reihin.
210
00:21:50,640 --> 00:21:57,970
Vasemmalla puolella näemme pyynnön.
Ensimmäisellä rivillä näette HTTP-connect
211
00:21:57,970 --> 00:22:03,990
-metodin. Normaalisti proxyt käyttävät
tätä metodia edelleenvälittääkseen pyynnöt
212
00:22:03,990 --> 00:22:10,080
kohdepalvelimelle. Pyynnön sisällä näemme,
että sessio-token annetaan cookie:n
213
00:22:10,080 --> 00:22:15,530
header:issä. Tämä on se sama sessio-token,
joka saatiin autentikaatiovaiheessa.
214
00:22:15,530 --> 00:22:22,330
Eri tunneliparamterit välitetään eri HTTP-
headereissä. Osio, joka on merkitty
215
00:22:22,330 --> 00:22:30,160
punaisella edustaa paikallisen laitteen
IP-osoitetta. Oikealla puolella näette
216
00:22:30,160 --> 00:22:35,660
vastauksen tään pyyntöön. Esimerkiksi X-
CSTP-Address-header sisältää IP-osoitteen,
217
00:22:35,660 --> 00:22:43,470
jonka laitteen tulee antaa tunneli-inter-
facelleen.
218
00:22:43,470 --> 00:22:50,060
Punaisella merkatussa osiossa näemme nyt
myös DNS-palvelimen VPN-yhteydelle.
219
00:22:50,060 --> 00:22:56,090
Lisäksi osoiteavaruudet, jotka pitää rei-
tittää VPN-palvelimen kautta on määritelty
220
00:22:56,090 --> 00:23:04,402
X-CSTP-Split-Include-headerissä. Nyt kun
meillä on yleispätevä ymmärrys
221
00:23:04,402 --> 00:23:09,569
ohjelmistosta, mennään haavoittuvuustutki-
mukseen. Me suoritimme design-analyysiä
222
00:23:09,569 --> 00:23:15,919
AnyConnectille, jossa tarkastelimme IPC-
viestejä paljon yksityiskohtaisemmin.
223
00:23:15,919 --> 00:23:21,729
Meidän täytyy määritellä tiettyjä oletuk-
sia turvallisuudesta ja hyökkääjästä,
224
00:23:21,729 --> 00:23:26,400
ennne kuin etsimme haavoittuvuuksia. Tämä
dia näyttää useita oletuksistamme.
225
00:23:26,400 --> 00:23:33,020
Kryptografiset algoritmit sovelluksen
sisällä ovat turvallisia, eikä niitä voida
226
00:23:33,020 --> 00:23:39,460
murtaa eksponentiaalisessa ajassa. Hyök-
kääjä ei voi lukea tai muokata viestejä
227
00:23:39,460 --> 00:23:44,679
huolimatta heidän sijainnistaan, ja me
oletamme että VPN-palvelin ei ole pahan-
228
00:23:44,679 --> 00:23:51,170
tahtoinen, ja viestii vain valideja vies-
tejä, jotka noudattavat protokollaa.
229
00:23:51,170 --> 00:23:56,780
Oletamme, että hyökkääjällä on paikalli-
nen pääsy ja hän voi suorittaa komentoja
230
00:23:56,780 --> 00:24:01,460
laitteella, ja hänen tavoitteena on vaa-
rantaa järjestelmän tai sovelluksen
231
00:24:01,460 --> 00:24:08,340
luottamuksellisuus, eheys tai saatavuus.
Käyttöoikeuksien laajennushaavoittuvuudet
232
00:24:08,340 --> 00:24:13,830
käsitellään, sillä ne mahdollistavat hyök-
kääjälle tavoitteisiin pääsyn.
233
00:24:13,830 --> 00:24:20,550
Cisco päätti sisällyttää sovellukseensa
automaattisten päivitysten ominaisuuden.
234
00:24:20,550 --> 00:24:27,929
AnyConnect pystyy saamaan AnyConnect-päi-
vityksiä VPN-palvelimelta ilman mitään
235
00:24:27,929 --> 00:24:32,470
käyttäjävuorovaikutusta. Oletusasetuksil-
laan AnyConnectia voi päivittää VPN-pal-
236
00:24:32,470 --> 00:24:38,740
velin, joka tarjoaa uudempaa versiota.
Turvallisuustutkijan näkövinkkelistä täl-
237
00:24:38,740 --> 00:24:44,950
lainen automaattinen päivittäminen kuulos-
taa lupaavalta, eikös vain? Katsotaan sitä
238
00:24:44,950 --> 00:24:49,510
ominaisuutta tarkemmin. Ensiksi vpndown-
loader lataa suoritettavan asennustiedos-
239
00:24:49,510 --> 00:24:57,010
ton ja shell-skriptin nimeltä vpndownloa-
der.sh. Sitten vpndownloader.sh suorite-
240
00:24:57,010 --> 00:25:03,630
taan. Shell-skripti sisältää arkiston,
joka puretaan jotta saadaan uusi versio
241
00:25:03,630 --> 00:25:09,380
vpndownloaderista ulos. Sitten IPC-viesti
lähetetään vpnagentd:lle, jossa sitä
242
00:25:09,380 --> 00:25:15,740
pyydetään suorittamaan tämä asennustie-
dosto. Vpnagentd ei suorita sitä suoraan,
243
00:25:15,740 --> 00:25:21,429
vaan se kutsuu vpnagentdownloader:ia root-
oikeuksin, joka puolestaan kutsuu tuota
244
00:25:21,429 --> 00:25:28,059
asennustiedostoa. Ennen asennustiedoston
suorittamista vpndownloader verifioi ja
245
00:25:28,059 --> 00:25:35,100
validoi tiedoston. Me saimme idean: onko
mahdollista asentaa vanhentunut versio
246
00:25:35,100 --> 00:25:40,909
väärennetyn IPC-viestin avulla? Kuten
kuvassa näkyy, hyökkääjä tarvitsee vanhan
247
00:25:40,909 --> 00:25:47,780
allekirjoitetun asennustiedoston ja se
lähettää IPC-viestin vpnagentd:lle pyytäen
248
00:25:47,780 --> 00:25:53,679
sitä suorittamaan vanhentuneen asentajan.
Vpnagentd kutsuu vpndownloaderia kuten
249
00:25:53,679 --> 00:25:58,710
normaalistikin, joka puolestaan kutsuu
hyökkääjän asennustiedostoa. Ei ole mitään
250
00:25:58,710 --> 00:26:05,289
tarkistusta sille, onko asennustiedosto
uudempi kuin jo asennettu versio. Tämä
251
00:26:05,289 --> 00:26:10,720
mahdollistaa versionalennushyökkäyksen.
Version alentamisen tavoitteena hyökkää-
252
00:26:10,720 --> 00:26:15,650
jällä on pakottaa vanhentuneen version
asennus, version joka sisältää haavoittu-
253
00:26:15,650 --> 00:26:21,179
vuuksia , joita hyökkääjä voisi hyö-
dyntää.
254
00:26:21,179 --> 00:26:28,520
Raportoimme tämän haavoittuvuuden
Ciscon tuoteturvallisuustiimille ja se
255
00:26:28,520 --> 00:26:34,020
korjattiin syyskuun lopussa. Haavoittuvuus
sai vain CVSS-pisteytyksen 3.1, ja oli
256
00:26:34,020 --> 00:26:42,390
siten luokiteltu matalan vakavuuden
haavoittuvuudeksi. Haavoittuvuus oli
257
00:26:42,390 --> 00:26:47,959
hyödynnettävissä vain Linux-versiossa.
Windows- ja Mac-versiot oli jo turvattu
258
00:26:47,959 --> 00:26:54,600
tuollaiselta hyökkäykseltä. Toinen toimin-
nollisuus, jota tarkastelimme oli
259
00:26:54,600 --> 00:26:59,720
skriptien jakelu ja suoritus. He kutsuvat
sitä "Bring your own Script":ksi.
260
00:26:59,720 --> 00:27:05,730
Toiminnon tarkoituksena on helpottaa
skriptien jakelua tietokoneille. Jotta
261
00:27:05,730 --> 00:27:11,350
skripti suoritetaan, sen pitää täyttää
kaksi vaatimusta.
262
00:27:11,350 --> 00:27:16,880
Ensikin, sen pitää sijaita skriptit-kan-
siossa ja tiedostonimen tulee alkaa sa-
263
00:27:16,880 --> 00:27:24,150
noilla OnConnect tai OnDisconnect. Toisek-
si, VPN-palvelimen lähettämässä profiilis-
264
00:27:24,150 --> 00:27:31,760
ssa EnableScripting-tagin tulee olla ase-
tettuna tosi-arvoon.Riippuen tiedosto-
265
00:27:31,760 --> 00:27:37,002
nimestä skriptit ajetaan VPN-yhteyden
muodostamisen ja terminoinnin jälkeen.
266
00:27:37,002 --> 00:27:42,980
VPN-palvelin kun voi jaella profiileja,
joissa skriptien jakelu on päällä ja se
267
00:27:42,980 --> 00:27:48,289
voi myös jaella skriptit: nämä kaksi yh-
dessä amhdollistvat VPN-palvelimelle etä-
268
00:27:48,289 --> 00:27:54,410
ajettavan koodin siihen yhdistävillä lait-
teilla. Tämä toiminnollisuus muodostaa
269
00:27:54,410 --> 00:27:59,299
suuren ongelman, sillä ihmiset joutuvat
usein luottamaan yliopsiton VPN-palveli-
270
00:27:59,299 --> 00:28:05,539
miin ja heillä ei ole muuta vaihtoehtoa.
Mutta katsotaan tarkemmin skriptien jake-
271
00:28:05,539 --> 00:28:11,850
lua. Tässä näemme klassisen skriptijakelun
esimerkin. Latausvaiheessa vpndownloader
272
00:28:11,850 --> 00:28:19,171
lataa OnConnect- tai OnDisconnect-
skriptit. Vpndownloader sitten kysyy IPC-
273
00:28:19,171 --> 00:28:25,419
viestillä ladatun skriptin siirtoa skrip-
tit-kansioon.
274
00:28:25,419 --> 00:28:32,570
Vpnagentd-prosessi kutsuu vpndownloaderia,
joka sitten siirtää tiedoston.
275
00:28:32,570 --> 00:28:36,670
Tarkastelimme järjestelmällisesti IPC-
viestejä ja löysimme pystysuuntaisen käyt-
276
00:28:36,670 --> 00:28:43,100
töoikeuksien laajennuksen. Hyökkääjä voi
lähettää saman viestin vpnagentd-proses-
277
00:28:43,100 --> 00:28:48,350
sille. Mikä tahansa hyökkääjän skrip-
teistä voidaan siirtää skriptit-kansioon.
278
00:28:48,350 --> 00:28:52,970
Jos seillä on jo skripti, niin se ylikir-
joitetaan. Jos hyökkääjä siirtää On-, tai
279
00:28:52,970 --> 00:28:58,620
OnDisconnect-skriptin kun käyttäjällä on
VPN-yhteys avoinna, skripti jaetaan käyt-
280
00:28:58,620 --> 00:29:04,610
täjän oikeuksilla. Kun VPN-yhteys sulje-
taan, ensimmäinen valtuuttamaton käyttäjä
281
00:29:04,610 --> 00:29:13,220
voi saavuttaa toisen käyttäjän kontekstin
koodiajoa.
282
00:29:13,220 --> 00:29:18,450
Mikä häiritsi metiä tässä hyökkäyksessämme
oli se että se oli sidottu esiehtoihin.
283
00:29:18,450 --> 00:29:24,040
Yksi ehdoista oli, että EnableScripting-
tagissa oli arvo "Tosi". Harkitsimme muita
284
00:29:24,040 --> 00:29:29,020
hyökkäysskenaarioita ja saimme idean jael-
la profiileja itse. Eli, tsekkaamme tagin
285
00:29:29,020 --> 00:29:34,620
uudestaan, mutta emme luo vain skriptiä
vaan myös VPN-profiilin joka sallii
286
00:29:34,620 --> 00:29:41,210
skriptien ajamisen. Hyökkäys toimii näin:
kun paikallsiella käyttäjällä on VPN-
287
00:29:41,210 --> 00:29:45,580
sessio aktiivisena, toinen käyttäjä jär-
jestelmässä luo pahantahtoisen skriptin ja
288
00:29:45,580 --> 00:29:50,539
uuden profiilin. Uudessa profiilissa Ena-
bleScripting-tagiin on asetettu arvoksi
289
00:29:50,539 --> 00:29:57,059
"Tosi". Hyökkääjä sitten lähettää IPC-
viestin vpnagentd:lle pyytäen skriptin ko-
290
00:29:57,059 --> 00:30:03,029
pioimista skriptit-kansioon. Vpndownloader
käynnistetään sitten root-oikeuksin suo-
291
00:30:03,029 --> 00:30:10,990
rittamaan kopiointi. Hyökkääjä voi myös
lähettää lisäksi IPC-viestin vpnaentd:lle
292
00:30:10,990 --> 00:30:17,039
pyytäen olemassaolevan profiilin yli-
kirjoittamista pahantahtoisella profii-
293
00:30:17,039 --> 00:30:24,809
lilla. Vaikka profiili ylikirjoitettaan,
uuden profiilin asetuksia kytketä vielä
294
00:30:24,809 --> 00:30:29,109
päälle koska vanha profiili on yhä aktii-
visena.
295
00:30:29,109 --> 00:30:34,950
Kuitenkin, me pystyimme määrittämään että
uusi profiili ladataan kun VPN-sessiossa
296
00:30:34,950 --> 00:30:41,503
tapahtuu uudelleenyhdistäminen. Neovat
itse asiassa aika yleisiä AnyConnectissa.
297
00:30:41,503 --> 00:30:46,329
Jos uudelleenyhdistys tapahtuu, uusi pro-
fiili ladataan ja kytketään päälle. Meidän
298
00:30:46,329 --> 00:30:51,230
tapauksessamme se mahdollistaa skripti-
toiminnon. VPN-yhteyden alasajon jälkeen,
299
00:30:51,230 --> 00:30:56,490
pahantahtoinen OnDisconnect-skripti aje-
taan VPN-sovellusta ajavan käyttäjän
300
00:30:56,490 --> 00:31:03,010
oikeuksin. Kummatkin ongelmat raportoitiin
Ciscolle, mutta niitä ei voitu korjata
301
00:31:03,010 --> 00:31:07,580
julkistamispäivään mennessä, vaikka an-
noimme lisäaikaa deadlinelle. Vielä
302
00:31:07,580 --> 00:31:12,020
tänäänkin haavoittuvuus on yhä läsnä Any-
Connectin oletusasetuksissa.
303
00:31:12,020 --> 00:31:18,029
Cisco julkisti tämän haavoittuvuuden CVSS-
pisteytyksellä 7.1, mitä pidetään
304
00:31:18,029 --> 00:31:25,910
korkeana vakavuutena. Koska se julkaistiin
4. marraskuuta 2020 ilman korjausta, haa-
305
00:31:25,910 --> 00:31:32,340
voittuvuus sai paljon huomiota monilla
uutissivustoilla.
306
00:31:32,340 --> 00:31:42,410
Eri sivustot raportoivat haavoittuvuudesta
Raportoinnin laatu vaihteli.
307
00:31:42,410 --> 00:31:47,410
Joissakin artikkeleissa oli väärää tietoa,
kuten että hyväksikäyttömenetelmä olisi
308
00:31:47,410 --> 00:31:52,820
julkisesti saatavilla. Tämä ei ollut
yhtään tarkkaa, koska me olimme ainoat,
309
00:31:52,820 --> 00:31:57,990
joilla oli toimiva haavoittuvuus emmekä
julkistaneet sitä vielä. Emme löytäneet
310
00:31:57,990 --> 00:32:03,190
mitään muuta hyväksikäyttömenetelmää
Interntistäkään. Luulen että tällainen
311
00:32:03,190 --> 00:32:09,539
raportointi - tämä tapa raportoida pitää
harkita uudelleen koska se aiheutti niin
312
00:32:09,539 --> 00:32:15,450
paljon väärää tilannekuvaa haavoittuvuu-
desta. Meitä jopa kontaktoitiin huolestu-
313
00:32:15,450 --> 00:32:21,370
neiden poikkeamavastetiimien toimesta,
sillä he olivat huolissaan infrastaan.
314
00:32:21,370 --> 00:32:25,130
Kaikki löydetyt ja raportoidut haavoittu-
vuudet on listattu tässä taulukossa. Nämä
315
00:32:25,130 --> 00:32:30,350
kolme haavoittuvuutta löydettiin design-
analyysin keinoin. Vain yksi haavoittu-
316
00:32:30,350 --> 00:32:37,980
vuuksista on korjattu Ciscon mukaan. Eri
toten Bring Your Own Script-haavoittu-
317
00:32:37,980 --> 00:32:42,760
vuudet on jo julkistettu. Vaikka korjausta
niihin ei vielä ole, kiertävä meaknismi
318
00:32:42,760 --> 00:32:49,860
on jo julkaistu näitä haavoittuvuuksia
vastaan. Muokkaamalla paikallista poli-
319
00:32:49,860 --> 00:32:54,450
tiikka-tiedostoa latausvaihe voidaan ohit-
taa kokonaan. Viimeisimmän päivityksen
320
00:32:54,450 --> 00:32:59,679
myötä on myös mahdollista estää lataus- ja
jakelutoimintoja modulaarisesti.
321
00:32:59,679 --> 00:33:05,309
M: Ja entäs sitten mobiilialustat? Vai-
kuttavatko löytämämme haavoittuvuudet
322
00:33:05,309 --> 00:33:11,720
niissä? Pidetään tämä lyhyenä: ei. Mobiili
-alustoista puuttuu monia ominaisuuksia
323
00:33:11,720 --> 00:33:15,740
verrattuna Linux, Windows ja macOS-ver-
sioihin. On tietenkin mahdollista muodos-
324
00:33:15,740 --> 00:33:20,730
taa TLS ja IPsec-yhteyksiä, kuten kaikilla
muillakin versioilla. Mutta koska ominai-
325
00:33:20,730 --> 00:33:24,649
suudet kuten skriptien jakelu tai auto-
maattinen päivitys puuttuvat, ei ole
326
00:33:24,649 --> 00:33:30,010
mitään keinoa käyttää näitä hyväksikäyttö-
menetelmiä mobiilialustoilla. Meillä on
327
00:33:30,010 --> 00:33:35,000
meineillään tarkastelu AnyConnect:n iOS-
versioon, ja sen vuoksi haluamme antaa
328
00:33:35,000 --> 00:33:41,430
teille nopean ja korkean tason yleiskat-
sauksen arkkitehtuuriin. Koska olemme
329
00:33:41,430 --> 00:33:45,570
Applen aknssa tekemisissä tässä, vakavat
asiat kuten VPN:n implementointi on vähän
330
00:33:45,570 --> 00:33:51,929
erilaista verrattuna esimerkiksi Linux-
versioon. Jos haluaa leikkiä notifikaa-
331
00:33:51,929 --> 00:33:56,399
tioilla, lisätä jakamisnappeja tai tehdä
widgetin aloitusnäytölle, pitää käyttää
332
00:33:56,399 --> 00:34:01,740
sovellusekstensiota. Myös VPN-toiminnolli-
suuksia varten pitää käyttää verkkoeksten-
333
00:34:01,740 --> 00:34:08,429
siokehystä. Verkkoekstensiot sisältävät
providereita ja ominaisuuksia kaikenlai-
334
00:34:08,429 --> 00:34:14,099
siin verkkoon liittyviin toimintoihin,
kuten sisällönsuodatukseen, DNS:ään, Wi-
335
00:34:14,099 --> 00:34:18,940
Fiin ja muuhun. Jos haluaa rakentaa oman
VPN-sovelluksen, pitää valita Personal
336
00:34:18,940 --> 00:34:25,839
VPN:n, Packet Tunnel Provider:n ja App
Proxy Provider:n välillä. Meidän tapauk-
337
00:34:25,839 --> 00:34:30,079
sessamme AnyConnect iOS:lle käyttää Packet
Tunnel Provideria, koska he käyttävät omaa
338
00:34:30,079 --> 00:34:38,279
pakettiorientoitunutta protokollaansa.
Tässä näemme AnyConnect-sovelluspaketin
339
00:34:38,279 --> 00:34:43,469
sisällön, mikä on periaatteessa .zip-tie-
dosto, joka sisältää kaikki suoritettavat
340
00:34:43,469 --> 00:34:49,819
tiedostot ja assetit kuten kuvat jne. Pää-
tiedosto on nimeltään eplkkä AnyConnect.
341
00:34:49,819 --> 00:34:56,209
Verkkoekstensio on implementoitu ACExten-
sion-binäärissä. Näiden lisäksi on monia
342
00:34:56,209 --> 00:35:01,799
muita sovellusekstensioita, joilla imp-
lemenntoidaan iOS:n jakamis- ja Siri-toi-
343
00:35:01,799 --> 00:35:08,910
minnollisuuksia. Joten mitä tapahtuu kun
painetaan connect-slideria? Kun painaa
344
00:35:08,910 --> 00:35:13,329
slideriä, network-ekstensio suoritetaan,
ja VPN-session neuvottelu alkaa. Sen
345
00:35:13,329 --> 00:35:19,059
jälkeen kun verkkotietoja kuten IP-osoit-
tieta, aliverkkomaski, reitit, DNS, MTU ja
346
00:35:19,059 --> 00:35:23,130
muuta on saatu, ne annettaan iOS-järjes-
telmälle, joka suorittaa neuvottelun lop-
347
00:35:23,130 --> 00:35:29,390
puun. Lopussa yhteys on muodostunut, ja
toivottavasti sinulla on toimiva tunneli-
348
00:35:29,390 --> 00:35:36,930
interface nimeltä utun. Joten, uusi lii-
kenne sovelluksilta menee network-pinon
349
00:35:36,930 --> 00:35:41,619
läpi kunnes se saapuu tunneli-interfacel-
le. Sitten network-ekstension Packet
350
00:35:41,619 --> 00:35:48,269
Tunnel Provider voi käsitellä sitä. Joka
kerta kun paketti saapuu tunneli-inter-
351
00:35:48,269 --> 00:35:54,191
facelle se luetaan network-ekstension toi-
mesta ja kapseloidaan tunnelointiproto-
352
00:35:54,191 --> 00:35:59,020
kollalla. Joka kerta kun paketti saapuu
tunneliin, network-ekstensio lukee sen ja
353
00:35:59,020 --> 00:36:04,660
kapseloi sen tunnelointiprotokollalla.
Kun se saapuu VPN-palvelimelle, paketin
354
00:36:04,660 --> 00:36:10,150
kapselointi puretaan, ja se lähetetään
kohdeosoitteseensa. Samalla tavalla client
355
00:36:10,150 --> 00:36:14,690
:lle lähetettävät vastaukset kapseloidaan,
jossa niiden kapselointi vasta poistetaan
356
00:36:14,690 --> 00:36:20,499
ja se syötetään takaisin verkkopinoon.
Tässä iOS-clienteista, ihan vain että
357
00:36:20,499 --> 00:36:23,829
annetaan teille nopea yleiskatsaus ja
korostetaan tiettyjä avaineroja eri
358
00:36:23,829 --> 00:36:30,930
arkkitehtuurien välillä. Tutkimme yhä sekä
Linux- että iOS-alustoja, mutta tähän men-
359
00:36:30,930 --> 00:36:35,700
nessä löydöksemme voidaan yhteenvetää
näin: AnyConnect yleisesti ottaen on laaja
360
00:36:35,700 --> 00:36:42,530
sovellus jossa on paljon koodia ja myös
käyttämätöntä kirjastokoodia. Olemme löy-
361
00:36:42,530 --> 00:36:48,510
täneet kolme haavoittuvuutta design-ana-
lyysillä. Vpnagentd:tä ajetaan root-
362
00:36:48,510 --> 00:36:53,529
oikeuksin ja se vastaanottaa komentoja ja
operaatioita vähempiarvoisilta prosesseil-
363
00:36:53,529 --> 00:36:59,549
ta autentikoimattomien ICP-viestien väli-
tyksellä, mikä on yleensä ottaen aika
364
00:36:59,549 --> 00:37:03,999
riskialtista. Kaikkia turvamekanismeja ja
-korjauksia ei ole kaikilla alustoilla.
365
00:37:03,999 --> 00:37:08,619
Esimerkiksi versioalennushyökkäys oli
mahdollinen vian Linuxilla, ja se oli jo
366
00:37:08,619 --> 00:37:14,369
korjattu Windowsilla ja macOS-versioilla
Ciscon mukaan. Mobiililla se ei ole mah-
367
00:37:14,369 --> 00:37:19,430
dollinen johtuen siitä että automaattinen
päivitystoiminto on rajoitettu Linux:lle,
368
00:37:19,430 --> 00:37:24,119
Windows:lle ja macOS:lle. Samalla lailla,
Bring Your Own Script ei päde mobiiliin,
369
00:37:24,119 --> 00:37:29,180
koska OnConnect ja OnDisconnect-skriptien
jakelu on myös rajoitettu vain ei-mobii-
370
00:37:29,180 --> 00:37:34,009
leille alustoille. Liittyen local policy-
tiedostoon Linuxilla, meidän näkemyksemme
371
00:37:34,009 --> 00:37:39,219
on että siitä pitäisi tehdä niin rajoitet-
tu kuin mahdollista, ehkä vaatia opt-in:iä
372
00:37:39,219 --> 00:37:44,140
skriptaus-toiminnollisuudelle. Tämä vä-
hentäisi monia hyökkäyksiä, mutta tieten-
373
00:37:44,140 --> 00:37:48,779
kin vaikuttaisi myös käytettävyyteen.
Vaikka sovellus on ollut saatavilla monia
374
00:37:48,779 --> 00:37:54,279
vuosia, me näytämme että niissä on yhä
bugeja löydettäväksi. Bug bounty-ohjelmien
375
00:37:54,279 --> 00:38:00,859
käyttöönotto olisi mahtava tapa motivoida
useampaa turvallisuustutkijaa tarkistamaan
376
00:38:00,859 --> 00:38:06,799
sovellus haavoittuvuuksien varalta. VPN:n
käyttö lupaa turvallisuutta ja yksityi-
377
00:38:06,799 --> 00:38:11,049
syyttä käyttäjille, kuitenkin tutkimuksem-
me AnyConnectiin näyttää että suljetun
378
00:38:11,049 --> 00:38:16,559
lähdekoodin ohjelmistot mahdollistavat
uusia hyökkäysvektoreita järjestelmiin.
379
00:38:16,559 --> 00:38:24,460
Toivomme että tulevaisuudessa tehtäisiin
tutkimusta asiakasohjelmistoihin, ja että
380
00:38:24,460 --> 00:38:29,610
työmme tasoittaa matkaa sinne. Se oli sii-
nä. Kiitoksia ja kysykää vain jos niitä on
381
00:38:30,700 --> 00:38:35,599
H: No niin, tervetuloa takaisin. Siinä oli
tallenne tästä supermielenkiintoisesta
382
00:38:35,599 --> 00:38:41,239
esityksestä Very Pwnable Netwokrks. Olen
varma, että olette nähneet kuinka pwnatta-
383
00:38:41,239 --> 00:38:48,630
via ne ovatkaan, ja onneksi meillä on
täällä tänään kanssamme Jiska, Matthias ja
384
00:38:48,630 --> 00:38:56,499
Gerbert Internet-taikuuden avustuksella.
Jos et ole vielä kirjoittanut kysyymystäsi
385
00:38:56,499 --> 00:39:05,869
tee se nyt, jotta voimme vielä vastata
siihen. Joko menemällä IRC-kanavalle rc3-
386
00:39:05,869 --> 00:39:12,219
cwtv hackened-verkossa tai postaamalla
tweetin tai tootin suosikki-SoMellasi,
387
00:39:12,219 --> 00:39:19,490
joka sisältää hashtagin #rc3cwtv ilman
väliviivaa, hyvin tärkeä huomio.
388
00:39:19,490 --> 00:39:27,629
Signaalienkelimme on kerännyt joitakin
kysymyksiä meille, joidenka avulla nyt
389
00:39:27,629 --> 00:39:33,280
kidutan näitä kolmea ihmistä. Katsotaan
mitä sanotte näihin.
390
00:39:33,280 --> 00:39:41,799
Mutta aah, nämä ovat aika - aika vaisuja,
vai? No, eka kysymys on: onko mitään sivua
391
00:39:41,799 --> 00:39:45,839
tai wikiä, jossa tämä tieto on saatavilla?
392
00:39:45,839 --> 00:39:53,150
G: Tällä hetkellä sitä ei ole vielä jul-
kaistu. Luulen että julkaisemme sen lähi-
393
00:39:53,150 --> 00:39:58,952
tulevaisuudessa GitHubissa tai vastaavalla
alustalla.
394
00:39:58,952 --> 00:40:02,940
H: Onko mitään tapaa, jolla ihmiset voivat
löytää linkin tuohon kun sitten viimein
395
00:40:02,940 --> 00:40:07,630
julkaisette sen?
G: Luulen että Jiska voi sanoa tähän.
396
00:40:07,630 --> 00:40:10,579
J: Joo, eli SEEMOO:lla on Github-sivu ja
397
00:40:10,579 --> 00:40:16,249
myös Twitter-tili, joten se tullaan jul-
kaisemaan. Mutta on vielä pari, pari seik-
398
00:40:16,249 --> 00:40:21,680
kaa joista emme pitäneet, jotka eivät ole
vielä julkisia. Joten kyllä, sitten jul-
399
00:40:21,680 --> 00:40:27,420
kaisisimme vain yhden julkaisun sen sijaan
että yksi CVE täällä, toinen tuolla.
400
00:40:27,420 --> 00:40:31,519
H: Aivan, tekee enemmän vaikutusta ker-
ralla ja myös parempaa julkaisua. Pidän
401
00:40:31,519 --> 00:40:38,160
tuosta. Ja seuraava kysymys on: onko tämä
VPN-tapahtuma vain Ciscosta? Joten joo,
402
00:40:38,160 --> 00:40:46,420
olette vain katsoneet Ciscao, eikö vain?
Tässä tapauksessa ehkä haluatte kertoa
403
00:40:46,420 --> 00:40:50,729
meille jos te olette katsoneet muita VPN-
toimittajia tai jos muilla VPN-toimitta-
404
00:40:50,729 --> 00:40:55,589
jilla olisi myös ongelmia? Ehkä.
405
00:40:55,589 --> 00:41:01,670
M: Joo, me olemme tehneet tätä tutkimusta
osana maisterin työtä, ja sen vuoksi se on
406
00:41:01,670 --> 00:41:10,059
vain Ciscon AnyConnectista, ja joo meillä
ei ole ollut aikaa katsoa näitä muita VPN-
407
00:41:10,059 --> 00:41:14,408
palveluita. Pelkästään AnyConnectia.
408
00:41:14,408 --> 00:41:19,630
H: Aivan, tyypillinen maisterin näkymä -
kirjoitetaan sitä kahvin voimin pari viik-
409
00:41:19,630 --> 00:41:25,190
koa ennen määräaikaa. Joo, voin kuvitella
että olette keskittyneet Ciscoon silloin.
410
00:41:25,190 --> 00:41:30,630
Toinen erittäin hyvä kysymys: onko näitä
haavoittuvuuksia muissa AnyConnectin kal-
411
00:41:30,630 --> 00:41:35,039
taisissa sovelluksissa, kuten niissä jotka
on integroitu Linuxin NetworkManager:iin?
412
00:41:35,039 --> 00:41:40,309
Luulen että hän puhuu nimenomaan Open-
Connectista. Juu, tuo tuli juuri sisään.
413
00:41:40,309 --> 00:41:45,749
Hmm, me puhuimme tästä vähän aiemmin, niin
ehkä teillä on jotain sanottavaa tästä.
414
00:41:45,749 --> 00:41:50,210
G: Meidän tietääksemme siinä -
415
00:41:50,210 --> 00:41:56,999
OpenConnectissa ei ole skripitoimintoja
aktvoituna tai integroituna. Joten
416
00:41:56,999 --> 00:42:03,630
sanoisimme että tällaiset hyökkäykset
eivät ole vielä mahdollisia, mutta - hmm..
417
00:42:03,630 --> 00:42:10,559
M: Olisi mahdollista että joku kykenevä
tarkistaa tämän, ja katsoo siihen myös,
418
00:42:10,559 --> 00:42:15,680
OpoenConnectiin myös, joo.
H: Hmm, aivan, ei vielä tiedossa onko
419
00:42:15,680 --> 00:42:24,059
mahdollista. Sanotaan se niin. Ikinä ei
tiedä. Onko mitään muita kysymyksiä
420
00:42:24,059 --> 00:42:31,439
chatista, Twitteristä tai Mastodonista?
Nyt olisi aika antaa kysymyksenne. Muutoin
421
00:42:31,439 --> 00:42:40,480
tämä olisi ollut hyvin lyhyt Q&A. joten
menkää rc3-cwtv-kanavalla hackened-IRC-
422
00:42:40,480 --> 00:42:49,319
verkossa tai postatkaa tweet tai toot
hashtagilla #rc3cwtv mutta ilman välivii-
423
00:42:49,319 --> 00:42:56,150
vaa. Tehkää se nyt ja toivottavasti saamme
sen vielä Signaalienkelin taikuudella,
424
00:42:56,150 --> 00:43:00,890
joka kerää tätä tietoa minulle.
425
00:43:00,890 --> 00:43:05,549
Ja joo, ehkä voitte kertoa onko teillä
vielä jotain lisättävää tai joitain uusia
426
00:43:05,549 --> 00:43:09,339
aiheita joiden kanssa työskentelette, jot-
ka ovat tuloillaan. Ehkä voimme saada
427
00:43:09,339 --> 00:43:13,589
ennakkokatselmusta. Olen varma että yhä
jatkatte tutkimustanne siihen ja -
428
00:43:13,589 --> 00:43:15,799
J: Pahoittelut, minun piti ottaa mykistyk-
seni pois. Ei vielä
429
00:43:15,799 --> 00:43:20,249
spoilereita mutta joo, edes yhden suljetun
koodin VPN-asiakasohjelmiston tutkinta on
430
00:43:20,249 --> 00:43:25,838
hyvin, hyvin paljon työtä ja aikaavievää.
431
00:43:25,838 --> 00:43:32,630
Voin kertoa teille tarinan kuinka katse-
limme binäärejä kuukausia ja se ei oikein
432
00:43:32,630 --> 00:43:37,819
skaalaudu esim. 10:een eri asiakasohjel-
mistoon, ainakin jos haluaa saada merki-
433
00:43:37,819 --> 00:43:44,479
tyksellisiä löydöksiä.
H: Joo, mutta eikö teillä ole sellaisia
434
00:43:44,479 --> 00:43:51,349
jotain muita suunnitelmia, esimerkiksi
muiden ohjelmistojen katsomista tai jos
435
00:43:51,349 --> 00:43:56,609
olette saaneet pyyntöjä katsella muita
ohjelmia tai jotain mikä ohjaa teitä
436
00:43:56,609 --> 00:44:02,309
jokin omituisen ääreeen? Ei? Okei.
G: Ei vielä.
437
00:44:02,309 --> 00:44:06,010
J: Jep.
G: Mutta, mutta joo Matthias yhä työsken-
438
00:44:06,010 --> 00:44:10,930
telee sen parissa. Luulen että hän löytää
jotain tulevaisuudessa. M: Toivottavasti.
439
00:44:10,930 --> 00:44:21,039
H: Juu, juu. No siiinä on aika pitkälti
kaikki viimeiset kysymykset, paitsi vii-
440
00:44:21,039 --> 00:44:26,339
meinen: Jsika, takanasi on kaksi varjoa,
onko se varjokabinetti?
441
00:44:26,339 --> 00:44:29,629
J: Ei ei ei, minulla on vain useita lamp-
puja täällä, joten -
442
00:44:29,629 --> 00:44:31,476
H: Joo joo, aivan se on aika hauskaa
kaikki
443
00:44:31,476 --> 00:44:34,509
J: Ainakin se näyttää vain varjoni kahtena
eikä - eikä minua.
444
00:44:34,509 --> 00:44:39,739
H: Joo, mutta olemme aika onnekkaita että
ainakin tässä puhelussa yhteys näyttää
445
00:44:39,739 --> 00:44:46,089
toimineen aivan hyvin. Meillä on ollut
joitakin ongelmia täällä. Mutta joo, tämä
446
00:44:46,089 --> 00:44:51,280
on mahtavaa. Jos teillä on muita kysymyk-
siä niin luulen että lopettelemme tähän,
447
00:44:51,280 --> 00:44:57,420
jotta emme pidä teitä kauempaa. Olen varma
että haluatte hyppiä rc3-maailmassa, ja
448
00:44:57,420 --> 00:45:03,469
jos teillä on mitään muuta, ehkä voitte
liittyä kanssamme IRC:hen myöhemmin. Jos
449
00:45:03,469 --> 00:45:08,859
on mitään muita kysymyksiä, ehkä he katso-
vat tänne vähän ajan kuluttua tai minä vä-
450
00:45:08,859 --> 00:45:12,239
litän heille ne kysymykset. Ok sitten.
J: Kiitoksia.
451
00:45:12,239 --> 00:45:16,569
H: Kiitoksia teille oikein paljon tästä
super-mielenkiintoisesta puheesta. Minäkin
452
00:45:16,569 --> 00:45:20,809
opin jotian uutta VPN-ohjelmasta, johon
olen kans törmännyt työskennellessäni.
453
00:45:20,809 --> 00:45:28,169
Joten tämä oli minullekin mielenkiintoista
Ja lopetellaan tähän.
454
00:45:28,169 --> 00:45:35,749
postroll-musiikkia
455
00:45:35,749 --> 00:45:52,559
Tekstitykset luotu c3subtitles.de:llä
vuonna 2022. Liity ja auta meitä!
456
00:45:52,559 --> 00:45:59,000
[Translated by {Iikka}{Yli-Kuivila}
(ITKST56 course assignment at JYU.FI)]