teknika e sulmit (CVE-2019-14899), e cila lejon ndërrimin, modifikimin ose zëvendësimin e paketimeve në lidhjet TCP, të cilat kalojnë përmes VPN-tunelesh. Problemi prek Linux, FreeBSD, OpenBSD, Android, macOS, iOS dhe sisteme të tjera të ngjashme me Unix. Linux mbështet mekanizmin rp_filter (filtrimi i rrugës së kundërt) për IPv4, aktivizimi i të cilit në mënyrën "Strikt" neutralizon këtë problem.
Metoda lejon zëvendësimin e paketeve në nivelin e lidhjeve TCP, që kalojnë brenda një tuneli të enkriptuar, por nuk lejon përfshirjen në lidhjet që përdorin shtresa të tjera enkriptuese (për shembull, TLS, HTTPS, SSH). Algoritmet e enkripcioneve të përdorura në VPN nuk kanë rëndësi, pasi paketat e falsifikuara vijnë nga interfaci i jashtëm, ndërsa përpunohen nga bërthamaja si paketa nga interfaci VPN. Qëllimi më i mundshëm i sulmit është ndërhyrja në lidhjet HTTP të paenkriptuara, por dhe përdorimi i sulmit për të manipuluar përgjigjet DNS.
Ndërrimi i suksesshëm i paketimeve është demonstruar për tunelët e krijuar me ndihmën e OpenVPN, WireGuard dhe IKEv2/IPSec. Tor nuk është i prekshëm nga problemi, pasi përdor SOCKS për kalimin e trafikut dhe lidhjen me ndërfaqen loopback. Për IPv4, sulmi është i mundshëm në rastin e kalimit të rp_filter në mënyrën "Të lirë" (sysctl net.ipv4.conf.all.rp_filter = 2). Fillimisht, në shumicën e sistemeve përdorej mënyra "Strikt", por duke filluar nga , i lëshuar në dhjetor të vitit të kaluar, mënyra e operimit me default u zëvendësua me "Të lirë" dhe ky ndryshim pasqyrohet në cilësimet standarde të shumë distribucioneve të Linux.
Mekanizmi rp_filter për verifikimin e shtesave të kalimeve të paketave për të parandaluar kufizimin e adresës së burimit. Kur vendoset në vlerën 0, verifikimi i adresës së burimit nuk kryhet dhe çdo paketë mund të ridrejtohet pa kufizime midis ndërfaqeve të rrjetit. Mënyra 1 "Strikt" aktivizon verifikimin e çdo pakete që vjen nga jashtë për përputhshmëri me tabelën e rutimit, dhe nëse ndërfaqja e rrjetit, përmes të cilës është pranuar paketa, nuk është e lidhur me rrugën optimale të dorëzimit të përgjigjes, atëherë paketa hidhet poshtë. Mënyra 2 "Të lirë" lehtëson verifikimin, në mënyrë që të lejojë funksionimin në aplikimin e ekuilibrueseve të ngarkesës ose rrugës asimetrike, ku
rruga e përgjigjes mund të kalojë jo përmes atij interfaci rrjeti, përmes të cilit ka ardhur paketa e ardhshme.
NĂ« mĂ«nyrĂ«n "TĂ« lirĂ«", paketa e ardhshme kontrollohet pĂ«r pĂ«rputhshmĂ«ri me tabelĂ«n e rutimit, por konsiderohet e pranueshme nĂ«se adresa e burimit Ă«shtĂ« e arritshme pĂ«rmes çdo ndĂ«rfaqe rrjeti qĂ« ekziston. Sulmi i propozuar ndĂ«rtŃĐ”ŃŃŃ mbi faktin se sulmuesi mund tĂ« dĂ«rgojĂ« njĂ« paketĂ« me njĂ« adresĂ« burimi tĂ« zĂ«vendĂ«suar, pĂ«rputhshĂ«m me ndĂ«rfaqen VPN, dhe megjithĂ«se kjo paketĂ« do tĂ« arrijĂ« nĂ« sistem pĂ«rmes njĂ« ndĂ«rfaqe rrjeti tĂ« jashtĂ«m, e jo pĂ«rmes VPN-sĂ«, nĂ« mĂ«nyrĂ«n rp_filter "TĂ« lirĂ«", njĂ« paketĂ« e tillĂ« nuk do tĂ« hidhet poshtĂ«.
Për të kryer sulmin, sulmuesi duhet të kontrollojë portin përmes të cilit përdoruesi del në rrjet (për shembull, përmes një organizate MITM, kur viktima lidhet me një pikë qasjeje të kontrolluar nga sulmuesi ose përmes ). Duke kontrolluar portin përmes të cilit përdoruesi është i lidhur në rrjet, sulmuesi mund të dërgojë paketa fallco që do të perceptohen në kontekstin e ndërfaqes së rrjetit VPN, por përgjigjet do të dërgohen përmes tunelit.
Duke gjeneruar një rrjedhë paketash fallco, në të cilat vihet adresa IP e ndërfaqes VPN, bëhen përpjekje për të ndikuar në lidhjen e vendosur nga klienti, por ndikimi i këtyre paketimeve mund të vërehet vetëm përmes analizës pasive të trafikut të kriptuar të lidhur me veprimin e tunelit. Për të kryer sulmin, duhet të dihet adresa IP e caktuar nga serveri VPN për ndërfaqen e tunelit, si dhe të përcaktohet se në atë moment ka një lidhje aktive për një host të caktuar përmes tunelit.
Për të përcaktuar IP-në e ndërfaqes virtuale të rrjetit VPN, përdoret dërgimi i paketimeve SYN-ACK në sistemin e viktimës, duke kaluar nëpër të gjithë gamën e adresave virtuale (fillimisht shqyrtohen adresat që përdoren në VPN më së shpeshti, për shembull, në OpenVPN përdoret subneti 10.8.0.0/24). Eksistenca e një adrese mund të gjykohet nga ardhja e një përgjigjeje me flamurin RST.
Në mënyrë të ngjashme, përcaktohet prania e lidhjes me një sit të caktuar dhe numri i portës në anën e klientit - duke bërë një kalim të numrave të porteve në drejtim të përdoruesit, dërgohet një paketë SYN, me IP-në e sitit si adresë burimore dhe me IP-në virtuale VPN si adresë destinacioni. Porta e serverit mund të parashikohet (80 për HTTP), ndërsa numri i portës në anën e klientit mund të llogaritet duke përshkuar, duke analizuar ndryshimin e intensitetit të përgjigjeve ACK për numra të ndryshëm dhe duke kombinuar këtë me mungesën e paketave me flamur RST.
Në këtë fazë, sulmuesi di të katër elementët e lidhjes (adresat/portet IP të burimit dhe adresën/portin IP të destinacionit), por për të gjeneruar një paketë të rreme, e cila do të pranohet nga sistemi i viktimës, sulmuesi duhet të përcaktojë numrat e sekuencës dhe konfirmimit (seq dhe ack) të lidhjes TCP. Për të përcaktuar këto parametra, sulmuesi vazhdimisht dërgon paketat e rreme RST, duke provuar numra të ndryshëm sekuencash, derisa të regjistrojë një paketë ACK përgjigje, arrijë që treguesi tregon se numri bie brenda dritares TCP.
Pastaj sulmuesi saktëson saktësinë e përcaktimit duke dërguar paketa me të njëjtin numër dhe duke vëzhguar marrjen e përgjigjeve ACK, pas së cilës përshtat numrin e saktë të sekuencës aktuale. Detyra vështirësohet sepse përgjigjet dërgohen brenda një tuneli të enkriptuar dhe analiza e pranisë së tyre në rrjedhën e kapur të trafikut mund të bëhet vetëm me metoda indirekte. Fakti i dërgimit të një pakete ACK të adresuar serverit VPN nga klienti përcaktohet bazuar në madhësinë dhe vonesën e përgjigjeve të enkriptuara, të cilat korrelacionojnë me dërgimin e paketave të rreme. Për shembull, për OpenVPN, një paketë e enkriptuar me madhësi 79 lejon të gjykohet saktësisht se brenda saj ndodhet një konfirmim ACK.
Para se mbrojtja nga sulmi të shtohej në bërthamën e sistemit operativ, si një metodë përkohshme për bllokimin e problemit përmes një filtruesi paketash në zinxhirin «preroute» bllokoni kalimin e paketave, në të cilat si adresë destinacioni është e especificuar një IP-virtuale të tunelit.
iptables -t raw -I PREROUTING ! -i wg0 -d 10.182.12.8 -m addrtype ! âsrc-type LOCAL -j DROP
ose për nftables
nft add table ip raw
nft add chain ip raw prerouting â{ type filter hook prerouting priority 0; }â
nft add rule ip raw prerouting âiifname != «wg0» ip daddr 10.182.12.8 fib saddr type != local dropâ
Për mbrojtje gjatë përdorimit të tunelve me adresat IPv4, mjafton të kaloni rp_filter në modin «Strict» («sysctl net.ipv4.conf.all.rp_filter = 1»). Nga ana e VPN, metoda e përcaktimit të numrit të sekuencave mund të bllokohet duke shtuar plotësues në paketat e enkriptuara, duke bërë që madhësia e të gjitha paketave të jetë e njëjtë.
Burimi: opennet.ru
