home.social

#so_bindtodevice — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #so_bindtodevice, aggregated by home.social.

  1. ч1: Обзор. Полгода после утечки через tun0. Кто из VPN-клиентов закрыл дыру, а кто закрыл issue

    Исключите Termux из VPN на Android-телефоне и выполните в нём одну команду: curl --interface tun0 ifconfig.me Лучше перебрать tun0-tun9 Если в ответ пришёл адрес вашего VPN-сервера, значит приложение, которое по вашим же настройкам не должно ходить в туннель, только что сходило через него. Ни root, ни своего кода для этого не нужно. А пароль на локальный прокси, который весной добавили многие клиенты, от этой утечки не спасает. С весны прошло полгода. Мы прошли по трекерам и релизам 28 клиентов и прочитали код тех, кто утечку закрыл. Проверку владельца соединения сделали двое. И у обоих, судя по коду, была одна и та же ошибка. Про исключённое приложение Android отвечает «владелец неизвестен». И именно такие соединения они пропускали. Один клиент исправил это в тот же день, как мы написали ему. Второй пока молчит. Ниже обзор: кто закрыл дыру, кто закрыл issue, и что можно сделать уже сейчас.

    habr.com/ru/articles/1088980/

    #tun0 #vpn #android #split_tunneling #утечка_IPадреса #SO_BINDTODEVICE #amneziavpn #singbox #v2rayng #TeapodStream

  2. ч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. Но улучшать ещё есть что, и разбор мы пишем для двух целей: чтобы другим клиентам было проще закрыть ту же дыру и чтобы собрать критику. Если увидите у нас слабое место, напишите.

    habr.com/ru/articles/1089082/

    #AmneziaVPN #AmneziaWG #tun0 #SO_BINDTODEVICE #getConnectionOwnerUid #VpnService #JNI #Go #split_tunneling #утечка_IPадреса

  3. ч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. Но улучшать ещё есть что, и разбор мы пишем для двух целей: чтобы другим клиентам было проще закрыть ту же дыру и чтобы собрать критику. Если увидите у нас слабое место, напишите.

    habr.com/ru/articles/1089082/

    #AmneziaVPN #AmneziaWG #tun0 #SO_BINDTODEVICE #getConnectionOwnerUid #VpnService #JNI #Go #split_tunneling #утечка_IPадреса