vpnhide/scripts
Danila Gornushko 0d6ecf9969
fix(iface): exclude ipip/gre fallback netdevs from VPN matching (#356)
* fix(iface): exclude ipip/gre fallback netdevs from VPN matching

The `tun` and `gre` name-prefix rules in data/interfaces.toml matched the
kernel's own fallback tunnel devices — tunl0 (ipip), gre0 and gretap0
(ip_gre) — which are auto-created at index 0 when those modules load and
are not user VPNs. Treating them as VPN interfaces made every backend hide
them from target apps and deny SO_BINDTODEVICE/SO_BINDTOIFINDEX to them;
the resulting "interface exists but is absent from enumeration" is also a
fingerprint. Real-world impact is limited (matching is per-UID and the
fallback devices carry no traffic), so no changelog fragment — but it is
still incorrect and worth fixing.

The match grammar had no way to express "match X but not Y", so add an
[[exclude]] section evaluated before the [[vpn]] rules in all four
generated matchers (kmod C, zygisk Rust, checks Rust, lsposed Kotlin).
Exclude the `tunl` prefix and the exact names gre0 / gretap0, so
user-created tunnels (tun0, gre1, gretap1, ...) stay hidden.

Regenerated every matcher and its tests via scripts/codegen-interfaces.py.
Host vectors updated accordingly (56 C vectors pass; Rust + Kotlin vector
tests pass).

* fix(iface): limit fallback exclusion to exact tunl0 name
2026-10-12 15:09:10 +03:00
..
build-version.py fix(build): port build scripts to Python to allow Windows contributors to build subprojects (#83) 2026-04-25 19:53:15 +03:00
build_lib.py feat(zygisk): ship a 32-bit activator selected by $ARCH 2026-09-08 20:22:01 +03:00
changelog.py Close audit findings in clean-device, release, changelog, update-json, codegen (#209) 2026-06-30 11:31:45 +03:00
changelog_lib.py chore: CI + scripts cleanup (review items #12 #13 #24 #31 #32 #37) 2026-04-27 01:14:03 +03:00
clang-format-c.sh lint: cover the built-in driver with clang-format 2026-09-17 19:27:42 +03:00
clean-device.sh refactor(storage): remove legacy configuration migration 2026-08-11 22:06:44 +03:00
codegen-hooks.py refactor(native): move checks and helper into workspace 2026-09-16 22:06:32 +03:00
codegen-interfaces.py fix(iface): exclude ipip/gre fallback netdevs from VPN matching (#356) 2026-10-12 15:09:10 +03:00
codegen_lib.py Close audit findings in clean-device, release, changelog, update-json, codegen (#209) 2026-06-30 11:31:45 +03:00
gen-help-index.py fix(scripts): satisfy ruff on gen-help-index.py (line length + format) 2026-09-15 18:00:13 +03:00
measure-startup.py refactor(lsposed): make the dashboard's banner logic a pure, tested function 2026-08-25 17:38:15 +03:00
network-view-probe.py feat(lsposed): make pushed callbacks and PendingIntents describe the cover network 2026-09-16 17:25:25 +03:00
preview-changelog.py fix(scripts): CHANGELOG.md at release time + Markdown fragments 2026-04-19 21:57:34 +03:00
release.py docs: catch the reference docs up with the built-in backend and fix drift 2026-09-17 19:02:00 +03:00
stats.py ci+chore: add ruff (format + lint) for python scripts 2026-04-26 23:48:37 +03:00
test-root-transport.py refactor(native): unify app helper transport 2026-09-16 22:18:22 +03:00
update-json.sh ci(builtin): publish vpnhide-builtin.zip and wire update-json 2026-09-07 18:31:46 +03:00