From 78a02bc99469df2cc9b9223fca463ac4b9d4d363 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 6 Aug 2026 01:43:19 +0200 Subject: [PATCH 1/4] fix(apple): ATS blocked the library on every non-RFC1918 host The game library rides the management REST API over HTTPS (TCP 47990) through URLSession, authenticated by mTLS and pinned by SHA-256 fingerprint. The app declared no App Transport Security policy at all, so it ran under default ATS -- which exempts only "local" destinations (.local, unqualified names, RFC1918 and link-local literals) and applies the full policy everywhere else. The host certificate is self-signed (and carries no SubjectAltName), so it cannot satisfy that policy: the library loaded at 192.168.x and failed at the TLS layer on any other address. Field-reported against a Tailscale host. 100.64.0.0/10 is CGNAT, not RFC1918, so the library failed there while streaming to the very same address worked -- the QUIC stream plane is raw UDP and never enters the URL loading system. A WireGuard peer or a public-IP host breaks identically. Declares NSAllowsArbitraryLoads, which must stay the dict's only key: iOS 10+ and macOS 10.12+ ignore it whenever a more granular ATS key sits alongside it. Trust is unchanged -- LibraryTLSDelegate still pins the host by fingerprint and hands every other origin (cover-art CDNs) to full system trust evaluation. --- clients/apple/Config/Info.plist | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/clients/apple/Config/Info.plist b/clients/apple/Config/Info.plist index 93224825..898d3e9c 100644 --- a/clients/apple/Config/Info.plist +++ b/clients/apple/Config/Info.plist @@ -19,6 +19,25 @@ _punktfunk._udp + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - +