Habr•October 1, 2026•🇷🇺Translated from Russian

Six Months After tun0 Leak: Which Android VPN Clients Fixed Server Address Exposure and Which Ignored It

Six months after widespread reports of VPN server address leaks on Android, an independent analysis shows that only a handful of clients have addressed the issue, while many others either ignored reports or closed them without fixes.

The investigation identifies two separate leaks that are frequently confused. The first occurs when VPN clients expose a local SOCKS proxy on 127.0.0.1 without authentication. Any application can connect to this port and route traffic through the VPN tunnel, revealing the server address even if the app was explicitly excluded from the tunnel. The second leak is independent of proxies and stems from Android’s handling of SO_BINDTODEVICE on the tun interface.

How the tun0 Leak Works

When split tunneling excludes an application, Android removes the route to tun0 for that app’s UID. However, any process can still call setsockopt to bind a socket directly to tun0. The kernel then forwards packets through the interface anyway. The VPN client receives the packet, encrypts it, and sends it to the remote server, exposing the server IP to the destination. No root access or custom code is required; a simple curl command from Termux placed in the exclusion list reproduces the leak.

Testing showed that excluded applications, including the open-source RKNHardering detector, successfully reached the VPN server and recorded its address multiple times.

Client Responses

Most clients addressed only the local proxy issue in April by adding random ports and passwords. AmneziaVPN, TeapodStream and v2rayNG implemented this change, though v2rayNG leaves the protection disabled by default. Karing, Throne and FlClash followed similar approaches.

For the tun0 leak, only two projects implemented proper owner verification. TeapodStream rewrote its tun2socks layer to check every connection with ConnectivityManager.getConnectionOwnerUid. After notification, the developer released version 1.6.6 that correctly rejects packets returning INVALID_UID when exclusions are active. OlConnect performs a similar check but still accepts INVALID_UID in all modes and was unreachable for comment.

sing-box added a package_name_regex rule that can reject unknown owners, but users must insert it manually. AmneziaVPN received a series of pull requests covering both AmneziaWG and the full client stack; none have been merged yet. v2rayNG closed the tun0 report as “not planned.”

No public statements or fixes were found for WireGuard for Android, Mullvad, Proton VPN, IVPN, Cloudflare WARP, Outline, Tailscale, NordVPN, Windscribe, Lantern, Psiphon or OpenVPN for Android.

Users can verify their own client with one Termux command that attempts to reach ifconfig.me through the tun interface while the app is excluded from the VPN.

Related articles

Security NEXT•Vulnerabilities & Exploits

GitLab Issues Critical Patches for CVE-2026-110264 Affecting Wide Range of Versions

GitLab has released emergency security updates to address multiple vulnerabilities, including one rated critical that allows unauthenticated remote code execution. The flaw, tracked as CVE-2026-110264, stems from an integer overflow in the regular expression compiler and carries a maximum CVSSv3.1 base score of 10.0. It impacts GitLab Community Edition and Enterprise Edition starting from version 7.0, with patches now available for both current and older branches. The company strongly urges immediate updates due to the severity and potential for arbitrary code execution on affected servers. Additional lower-severity issues were also resolved in the same release cycle.

Hispasec•Vulnerabilities & Exploits

PHP Issues Emergency Patches for Critical PHP2Shell RCE Flaws as Exploit Attempts Emerge

PHP has released urgent patches for two critical vulnerabilities collectively known as PHP2Shell that enable unauthenticated remote code execution on affected servers. The flaws, tracked as CVE-2026-109618 and CVE-2026-109619, score 9.2 on CVSS v4.0 and have already seen active exploitation attempts with malicious payloads adjusted to bypass WAF rules. The issues affect multiple PHP deployment methods including Apache with mod_php, PHP-FPM, php-cgi, FrankenPHP, and LiteSpeed, and do not require complex application code to be exploitable. CVE-2026-109618 involves a memory corruption chain leading to code execution under the web process privileges, while CVE-2026-109619 stems from an obsolete global state issue causing use-after-free conditions that can result in memory disclosure and code execution. Patched versions include PHP 8.5.12, 8.4.27, 8.3.36, and 8.2.35, with administrators advised to restart all persistent workers after updating. Temporary mitigations such as setting memory_limit to -1 and disabling session.upload_progress.enabled are available for environments that cannot patch immediately.

Security NEXT•Vulnerabilities & Exploits

Two Critical RCE Vulnerabilities Patched in PHP with CVSS 9.2 Scores

The PHP development team has disclosed two severe remote code execution vulnerabilities affecting the widely used scripting language. Both issues, tracked as CVE-2026-109618 and CVE-2026-109619, received a CVSSv4.0 base score of 9.2 and were rated Critical. The flaws stem from improper memory handling during request processing and cleanup phases. Exploitation could allow attackers to execute arbitrary code by manipulating uninitialized or residual data in worker processes. Security updates addressing both vulnerabilities were released on October 21, 2026, and users are strongly urged to apply the patches immediately. The advisories were previewed the previous day, highlighting the urgency of the fixes.

BoletimSec•Vulnerabilities & Exploits

Critical PHP Core Flaws Enable Unauthenticated Remote Code Execution

The PHP project released emergency patches on October 21 for two critical vulnerabilities in the language core, tracked as CVE-2026-109618 and CVE-2026-109619 and collectively referred to as PHP2Shell. Both issues received a CVSS 4.0 score of 9.2 and allow remote code execution without authentication. CVE-2026-109618 resides in memory-handling routines where longjmp can leave request data partially initialized, and subsequent shutdown operates on invalid data; multipart requests with many headers or empty file fields can trigger the condition. CVE-2026-109619 affects an obsolete global state in long-lived workers that retain references to freed memory, with confirmed paths involving fatal errors, error reporting data, and session upload progress. Researchers demonstrated unauthenticated code execution over HTTP against the first flaw on Apache with mod_php using default limits, while PHP-FPM exposure was identified through code analysis. The FBI Cyber Division issued an alert urging immediate updates, and Cloudflare deployed WAF rules while confirming early attacks in the wild.