#so_bindtodevice — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #so_bindtodevice, aggregated by home.social.
-
ч1: Обзор. Полгода после утечки через tun0. Кто из VPN-клиентов закрыл дыру, а кто закрыл issue
Исключите Termux из VPN на Android-телефоне и выполните в нём одну команду: curl --interface tun0 https://ifconfig.me Лучше перебрать tun0-tun9 Если в ответ пришёл адрес вашего VPN-сервера, значит приложение, которое по вашим же настройкам не должно ходить в туннель, только что сходило через него. Ни root, ни своего кода для этого не нужно. А пароль на локальный прокси, который весной добавили многие клиенты, от этой утечки не спасает. С весны прошло полгода. Мы прошли по трекерам и релизам 28 клиентов и прочитали код тех, кто утечку закрыл. Проверку владельца соединения сделали двое. И у обоих, судя по коду, была одна и та же ошибка. Про исключённое приложение Android отвечает «владелец неизвестен». И именно такие соединения они пропускали. Один клиент исправил это в тот же день, как мы написали ему. Второй пока молчит. Ниже обзор: кто закрыл дыру, кто закрыл issue, и что можно сделать уже сейчас.
https://habr.com/ru/articles/1088980/
#tun0 #vpn #android #split_tunneling #утечка_IPадреса #SO_BINDTODEVICE #amneziavpn #singbox #v2rayng #TeapodStream
-
ч2: Разбор. Как мы закрывали утечку через tun0 в AmneziaVPN
Приложение, которое вы исключили из VPN на Android, может привязать сокет к tun0 , пройти через ваш туннель и узнать адрес сервера. Летом мы взялись закрыть это в AmneziaVPN ( issue #2457 ). Сама проверка в AmneziaWG уместилась в одну строчку цикла, который читает пакеты из tun: if uidfilter.Supported && !device.tun.uidGate.AllowOutboundPacket(elem.packet, device) { continue } Вокруг неё набралось полтысячи строк Go и столько же тестов, мост через JNI и три раунда ревью. В статье — почему ядро пропускает такие пакеты, почему «владелец неизвестен» у нас значит отказ, как одно приложение могло остановить весь туннель и какую ошибку мы нашли уже после ревью в собственном мосту. На телефоне с фильтром до сервера доходит 0 попыток обхода из 6, без него все 6. Но улучшать ещё есть что, и разбор мы пишем для двух целей: чтобы другим клиентам было проще закрыть ту же дыру и чтобы собрать критику. Если увидите у нас слабое место, напишите.
https://habr.com/ru/articles/1089082/
#AmneziaVPN #AmneziaWG #tun0 #SO_BINDTODEVICE #getConnectionOwnerUid #VpnService #JNI #Go #split_tunneling #утечка_IPадреса
-
ч2: Разбор. Как мы закрывали утечку через tun0 в AmneziaVPN
Приложение, которое вы исключили из VPN на Android, может привязать сокет к tun0 , пройти через ваш туннель и узнать адрес сервера. Летом мы взялись закрыть это в AmneziaVPN ( issue #2457 ). Сама проверка в AmneziaWG уместилась в одну строчку цикла, который читает пакеты из tun: if uidfilter.Supported && !device.tun.uidGate.AllowOutboundPacket(elem.packet, device) { continue } Вокруг неё набралось полтысячи строк Go и столько же тестов, мост через JNI и три раунда ревью. В статье — почему ядро пропускает такие пакеты, почему «владелец неизвестен» у нас значит отказ, как одно приложение могло остановить весь туннель и какую ошибку мы нашли уже после ревью в собственном мосту. На телефоне с фильтром до сервера доходит 0 попыток обхода из 6, без него все 6. Но улучшать ещё есть что, и разбор мы пишем для двух целей: чтобы другим клиентам было проще закрыть ту же дыру и чтобы собрать критику. Если увидите у нас слабое место, напишите.
https://habr.com/ru/articles/1089082/
#AmneziaVPN #AmneziaWG #tun0 #SO_BINDTODEVICE #getConnectionOwnerUid #VpnService #JNI #Go #split_tunneling #утечка_IPадреса