VPN хонгилоор хийсэн TCP холболтыг хулгайлах боломжийг олгодог эмзэг байдал

Нийтэлсэн VPN хонгилоор дамжуулж буй TCP холболтуудад пакетуудыг хууран мэхлэх, өөрчлөх, солих боломжийг олгодог халдлагын техник (CVE-2019-14899). Асуудал нь Linux, FreeBSD, OpenBSD, Android, macOS, iOS болон бусад Unix-тэй төстэй системүүдэд нөлөөлдөг. Линукс нь IPv4-д зориулсан rp_filter (урвуу замыг шүүх) механизмыг дэмждэг бөгөөд үүнийг "Хатуу" горимд асааснаар энэ асуудлыг саармагжуулдаг.

Энэ арга нь шифрлэгдсэн хонгилоор дамжих TCP холболтын түвшинд пакет орлуулах боломжийг олгодог боловч нэмэлт шифрлэлтийн давхаргууд (жишээлбэл, TLS, HTTPS, SSH) ашигладаг холболтууд руу залгахыг зөвшөөрдөггүй. Хуурамч пакетууд нь гадаад интерфейсээс ирдэг бөгөөд цөм нь VPN интерфэйсийн пакет хэлбэрээр боловсруулагддаг тул VPN-д ашигласан шифрлэлтийн алгоритмууд хамаагүй. Халдлагын хамгийн их магадлалтай зорилт бол шифрлэгдээгүй HTTP холболтод саад учруулах явдал юм, гэхдээ хасаагүй мөн DNS хариуг удирдахын тулд халдлагыг ашиглах.

OpenVPN, WireGuard болон IKEv2/IPSec ашиглан үүсгэсэн хонгилд пакет хуурамчаар үйлдэх нь амжилттай болохыг харуулсан. Tor нь траффикийг дамжуулахдаа SOCKS ашигладаг бөгөөд буцах интерфэйстэй холбогдсон тул асуудалд өртөмтгий биш юм. IPv4-ийн хувьд rp_filter-г "Сул" горимд тохируулсан бол халдлага үйлдэх боломжтой (sysctl net.ipv4.conf.all.rp_filter = 2). Эхэндээ ихэнх системүүд "Хатуу" горимыг ашигладаг байсан, гэхдээ үүнээс эхлэн системд 240, өнгөрсөн арванхоёрдугаар сард гарсан бөгөөд үндсэн үйлдлийн горимыг "Сул" болгож өөрчилсөн бөгөөд энэ өөрчлөлт нь олон Linux түгээлтийн үндсэн тохиргоонд тусгагдсан болно.

rp_filter механизм хэрэглэсэн Эх сурвалжийн хаягийг хууран мэхлэхээс сэргийлэхийн тулд пакетийн замыг нэмэлт баталгаажуулах зорилгоор. 0-д тохируулсан үед эх хаягийн шалгалт хийгдэхгүй бөгөөд сүлжээний интерфэйсүүдийн хооронд ямар ч пакетыг хязгаарлалтгүйгээр дамжуулах боломжтой. 1-р горим "Хатуу" нь гаднаас ирж буй пакет бүрийг чиглүүлэлтийн хүснэгттэй нийцэж байгаа эсэхийг шалгах бөгөөд хэрэв пакет хүлээн авсан сүлжээний интерфэйс нь оновчтой хариу хүргэх маршруттай холбоогүй бол пакетыг устгана. 2-р горим "Сул" нь ачааллын тэнцвэржүүлэгч эсвэл тэгш бус чиглүүлэлтийн горимыг ажиллуулахын тулд чекийг зөөлрүүлдэг.
Хариу өгөх зам нь ирж буй пакет ирсэнээс өөр сүлжээний интерфейсээр дамжиж болно.

Сул горимд ирж буй пакетыг чиглүүлэлтийн хүснэгттэй харьцуулан шалгадаг боловч эх хаяг нь ямар нэгэн сүлжээний интерфэйсээр холбогдох боломжтой бол хүчинтэй гэж үзнэ. Санал болгож буй халдлага нь халдагч нь VPN интерфэйстэй тохирох хуурамч эх хаяг бүхий пакет илгээх боломжтой бөгөөд энэ пакет нь VPN-ээр биш, харин гадаад сүлжээний интерфэйсээр системд нэвтэрдэг гэсэн баримт дээр үндэслэсэн болно. rp_filter "Сул" горимд ийм багцыг хаяхгүй.

Халдлага үйлдэхийн тулд халдагч нь хэрэглэгч сүлжээнд нэвтрэх гарцыг хянах ёстой (жишээлбэл, MITM байгууллагаар дамжуулан, хохирогч халдагчийн удирдлагатай утасгүй хандалтын цэгт холбогдох үед эсвэл дамжуулан чиглүүлэгчийг хакердах). Хэрэглэгч сүлжээнд холбогдсон гарцыг удирдсанаар халдагчид VPN сүлжээний интерфэйсийн хүрээнд хүлээн зөвшөөрөгдөх хуурамч пакетуудыг илгээж болох боловч хариултууд нь хонгилоор дамжих болно.

VPN интерфэйсийн IP хаягийг орлуулсан хуурамч пакетуудын урсгалыг үүсгэснээр үйлчлүүлэгчийн үүсгэсэн холболтод нөлөөлөхийг оролддог боловч эдгээр пакетуудын нөлөөллийг зөвхөн холбогдох шифрлэгдсэн урсгалын идэвхгүй дүн шинжилгээ хийх замаар ажиглаж болно. хонгилын ашиглалтын хамт. Довтолгоог хийхийн тулд VPN серверээс өгсөн туннелийн сүлжээний интерфейсийн IP хаягийг олж мэдэх, мөн туннелээр дамжуулан тодорхой хосттой холбогдох холболт идэвхтэй байгаа эсэхийг тодорхойлох шаардлагатай.

VPN виртуал сүлжээний интерфэйсийн IP-г тодорхойлохын тулд SYN-ACK пакетуудыг хохирогчийн систем рүү илгээж, виртуал хаягуудын бүх хүрээг дарааллаар нь жагсаана (юуны өмнө VPN-д ашигласан хаягуудыг анхдагч байдлаар жагсаасан болно, жишээлбэл OpenVPN). 10.8.0.0/24 дэд сүлжээг ашигладаг). RST туг бүхий хариу хүлээн авсны үндсэн дээр хаяг байгаа эсэхийг шүүж болно.

Үүнтэй адилаар, тодорхой сайт руу холбогдсон эсэх, үйлчлүүлэгчийн талд байгаа портын дугаарыг тодорхойлдог - портын дугаараар ангилах замаар SYN пакетийг хэрэглэгч рүү сайтын эх хаяг болгон илгээдэг. IP орлуулсан бөгөөд очих хаяг нь виртуал IP VPN юм. Серверийн портыг урьдчилан таамаглах боломжтой (HTTP-ийн хувьд 80), үйлчлүүлэгч талын портын дугаарыг RST-тэй пакет байхгүйтэй хослуулан ACK хариуны эрчмийн өөрчлөлтийг өөр өөр тоогоор задлан харгис хүчээр тооцоолж болно. туг.

Энэ үе шатанд халдагчид холболтын бүх дөрвөн элементийг (эх IP хаяг/порт ба очих IP хаяг/порт) мэддэг боловч хохирогчийн систем хүлээн авах хуурамч пакет үүсгэхийн тулд халдагч TCP дарааллыг тодорхойлох ёстой. хүлээн зөвшөөрөх тоо (seq ба ack) - холболтууд. Эдгээр параметрүүдийг тодорхойлохын тулд халдагч ACK хариу багцыг илрүүлэх хүртэл хуурамч RST пакетуудыг тасралтгүй илгээж, өөр өөр дарааллын дугааруудыг оролддог бөгөөд энэ нь ирснээр тоо нь TCP цонхонд байгааг илтгэнэ.

Дараа нь халдагчид ижил дугаартай пакетуудыг илгээж, ACK хариу ирэхийг ажигласнаар тодорхойлолтын зөвийг тодруулж, дараа нь одоогийн дарааллын яг тоог сонгоно. Хариултуудыг шифрлэгдсэн хонгилд илгээдэг бөгөөд саатуулсан замын урсгалд байгаа эсэхийг зөвхөн шууд бус аргаар шинжлэх боломжтой тул даалгавар нь төвөгтэй юм. Үйлчлүүлэгч VPN сервер рүү хаягласан ACK пакет илгээх эсэх нь хуурамч пакет илгээхтэй холбоотой шифрлэгдсэн хариултуудын хэмжээ, хоцролтоос хамаарч тодорхойлогддог. Жишээлбэл, OpenVPN-ийн хувьд 79 хэмжээтэй шифрлэгдсэн пакет нь дотор нь ACK байгаа эсэхийг нарийн дүгнэх боломжийг олгодог.

Асуудлыг хаах түр зуурын арга болгон үйлдлийн системийн цөмд халдлагын хамгаалалт нэмэгдэх хүртэл санал болгож байна "урьдчилан чиглүүлэх" гинжин хэлхээнд пакет шүүлтүүрийг ашиглан туннелийн виртуал IP хаягийг очих хаягаар зааж өгсөн пакетуудын дамжуулалтыг блокло.

iptables -t raw -I PREROUTING ! -i wg0 -d 10.182.12.8 -m addrtype ! --src төрлийн LOCAL -j DROP

эсвэл nftable-д зориулсан

nft хүснэгтийн ip түүхийг нэмнэ
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'

IPv4 хаягтай хонгилыг ашиглахдаа өөрийгөө хамгаалахын тулд rp_filter-г "Хатуу" горимд тохируулна уу ("sysctl net.ipv4.conf.all.rp_filter = 1"). VPN тал дээр шифрлэгдсэн пакетуудад нэмэлт дэвсгэр нэмж оруулснаар дарааллын дугаар илрүүлэх аргыг хааж, бүх пакетуудыг ижил хэмжээтэй болгож болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх