Haavoittuvuus23/2019
Linux-, Android-, macOS- ja muiden Unix-pohjaisten käyttöjärjestelmien verkkopinoista on löytynyt haavoittuvuus (CVE-2019-14899), jonka avulla on mahdollista saada tietoa laitteista ja VPN-yhteyksien tilasta ja mahdollisesti liittää VPN-tunneloituun liikenteeseen hyökkääjän kontrolloimaa dataa.
Haavoittuvuuden tarkempi kuvaus
Haavoittuvuus perustuu TCP/IP-pinon toteutuksessa olevaan ominaisuuteen, jossa päätelaitteella on useita IP-osoitteita. Tällöin RFC 1122 (Ulkoinen linkki)-dokumentin mukaan toteutetut TCP/IP-toteutukset voivat valita, miten ne käsittelevät IP-paketteja, jotka saapuvat tietystä fyysisestä verkkosovittimesta, mutta joiden kohdeosoite ei vastaa kyseiseen sovittimeen määriteltyä verkkoa. Kyseiset paketit joko voidaan hylätä (Strong Host Model) tai käsitellä (Weak Host Model). Nyt löydetty haavoittuvuus koskee jälkimmäisellä tavalla konfiguroituja TCP/IP-toteutuksia, jotka vastaanottavat VPN-tunnelin ulkopuolelta tulleita manipuloituja paketteja kuin ne olisivat tulleet tunnelista.
Tämän hetken tietojen perusteella manipulointi tapahtuu väärentämällä lähteen ja kohteen IP-osoitteet ja lähettämällä paketin tiettyyn haluttuun MAC-osoitteeseen, jotta paketti menee halutulle väärälle verkkoliittimelle (kuten eth0 tai wlan0).
Manipuloituja paketteja lähettämällä on mahdollista selvittää ensin uhrilaitteen IP-osoite VPN-tunnelissa seuraamalla pakettien kokoa VPN-liikenteessä. Kun osoite on selvitetty, hyökkääjä voi vastaavalla tavalla selvittää tietyn yhteyden ACK-järjestysnumeron. Tämän jälkeen hän voi syöttää haluamaansa dataa TCP-yhteyteen uhrin suuntaan. Hyökkäyksen avulla voi myös selvittää, ottaako uhri yhteyttä tiettyyn palvelimeen tai verkkosivuun.
Hyökkäyksen edellytyksenä on mahdollisuus kuunnella VPN-liikennettä sekä mahdollisuus lähettää muokattuja paketteja kohteelle. Käytännössä tämä tarkoittaa, että hyökkääjän on oltava samassa Ethernet-verkossa (esim. langattomat tai langalliset julkiset- ja vierasverkot) uhrin kanssa.
Hyökkäys toimii ainakin IPsec-, OpenVPN- ja Wireguard-protokollia käyttäviä VPN-tunneleita vastaan.
Haavoittuvuuksia hyväksikäyttävää hyökkäystä vastaan ei ole korjauksia, mutta erilaisia keinoja hyökkäyksen rajoittamiseksi on olemassa. Rajoituskeinoista on lisätietoja alempana.
Kun haavoittuvuuden löytäneet tutkijat julkaisevat aiheesta paperin, päivitämme tätä tiedotetta.
Kohde
- Työasemat ja loppukäyttäjäsovellukset
- Verkon aktiivilaitteet
- Palvelimet ja palvelinsovellukset
Vaikutukset
- Palvelunestohyökkäys
- Suojauksen ohittaminen
- Luottamuksellisen tiedon hankkiminen
Hyväksikäyttömenetelmä tiedossa
- Haavoittuvuuden havainnollistava esimerkkikoodi
Ratkaisu
- Ongelman rajoittaminen
- Ei päivitystä
Haavoittuvuuden kohde
Tutkijat ovat testanneet onnistuneesti haavoittuvuuden hyväksikäyttöä seuraavissa käyttöjärjestelmissä. Muut Unix-pohjaiset käyttöjärjestelmät, kuten Android ja macOS ovat myös haavoittuvia.
- Ubuntu 19.10 (systemd)
- Fedora (systemd)
- Debian 10.2 (systemd)
- Arch 2019.05 (systemd)
- Manjaro 18.1.1 (systemd)
- Devuan (sysV init)
- MX Linux 19 (Mepis+antiX)
- Void Linux (runit)
- Slackware 14.2 (rc.d)
- Deepin (rc.d)
- FreeBSD (rc.d)
- OpenBSD (rc.d)
Mistä on kysymys?
Linux
- Laita "reverse path filtering" päälle "strict"-moodiin. Lue lisää Kernel-dokumentaatiosta (Ulkoinen linkki), ohjeista (Ulkoinen linkki) ja keskustelusta aiheesta (Ulkoinen linkki)
- Näet tilan komennolla:
cat /proc/sys/net/ipv4/conf/default/rp_filter
- Näet itse verkkokortin interfacen arvon komennolla ($interface on haluttu verkkokortti, kuten eth0):
cat /proc/sys/net/ipv4/conf/$interface/rp_filter
- Katso lisäksi kaikkien verkkokorttien arvot komennolla:
cat /proc/sys/net/ipv4/conf/all/rp_filter
- Ota käyttöön "bogon filtering", eli filtteröi pois väärät IP-osoitteet. Lisää tietoa esimerkiksi Ubuntun ohjeessa (Ulkoinen linkki).
- Lisää palomuuriin suodatussääntö, joka pudottaa prerouting-vaiheessa VPN:n virtuaali-IP-osoitteeseen saapuvat paketit. Esimerkkejä löytyy Wireguardin postituslistalta (Ulkoinen linkki).
OpenBSD
- Mitigaatio tulossa seuraavaan julkaistavaan versioon 6.7 (Ulkoinen linkki): (ks. myös https://marc.info/?l=openbsd-tech&m=157580561114203&w=2 (Ulkoinen linkki))
Wireguard
- Mitigaatio saatavissa versionhallinnasta saatavasta versiosta 0.0.20191127 alkaen (Ulkoinen linkki).
Mitä voin tehdä?
- Tutkijoiden kuvaus haavoittuvuuksista ja niiden hyväksikäytöstä https://seclists.org/oss-sec/2019/q4/122 (Ulkoinen linkki)
- Strong ja Weak Host Model RFC 1122:ssa: https://tools.ietf.org/html/rfc1122 (Ulkoinen linkki) (kohta 3.3.4)
- Host model Wikipediassa: https://en.wikipedia.org/wiki/Host_model (Ulkoinen linkki)
- Bogon filtering Wikipediassa https://en.wikipedia.org/wiki/Bogon_filtering (Ulkoinen linkki)
- Keskustelua hyökkäyksen yhdistämisestä DNS-vastausten väärentämiseen: https://seclists.org/oss-sec/2019/q4/124 (Ulkoinen linkki)