Onbekende OVPN-bestanden: lokaal risico en vertrouwen op afstand
Een profiel kan de client op je machine beïnvloeden en de operator kiezen die je verkeer ziet. Beoordeel beide beslissingen voordat je het bestand importeert.
Behandel een OVPN-bestand als invoer voor een programma, niet als een bewijs dat de inhoud onschadelijk is. Het serveradres controleren beantwoordt alleen waar het profiel wil verbinden, en niets anders. In dat bestand zitten twee afzonderlijke vertrouwensbeslissingen: wat de client op je machine mag doen, en welke operator het verkeer ontvangt. Een bekende protocolnaam beslecht geen van beide.
Twee beslissingen verschuilen zich in één bestand
De eerste beslissing is lokaal. Het profiel is een configuratietaal, en de client die het leest kan richtlijnen ondersteunen die een plug-in laden, een script uitvoeren of veranderen hoe routing en DNS worden toegepast. De tweede beslissing is op afstand. Wat het bestand ook bevat, de exit-operator ziet het verkeer dat hem bereikt.
De twee verwarren levert in beide richtingen slecht advies op: een schoon lijkend profiel van een onbekende operator, of het profiel van een bekende operator met een hook die niemand heeft gelezen. Een profiel dat lokaal veilig is, kan je verkeer alsnog aan iemand geven die je niet zou kiezen.
Lees het profiel voordat een client dat doet
Lees het bestand als tekst voordat een client het verwerkt. Zoek naar richtlijnen die buiten het bestand wijzen, naar uitvoerbare bestanden verwijzen of rechten wijzigen, en vergelijk die lijst met de gedocumenteerde ondersteuning van de client. Een korte zoekactie is geen beveiligingsaudit, maar ze vertelt je of het profiel een serverlijst is of meer.
grep -nE '^(script-security|up|down|plugin|route-up|ipchange)' untrusted.ovpn
Een leeg resultaat is geruststellend en niet beslissend, omdat opties elkaar kunnen beïnvloeden of uit een ingesloten bestand kunnen komen. Zie de gefilterde lijst als een reden om verder te lezen, niet als een vonnis.
De instructies die met het profiel meekomen verdienen hetzelfde onderzoek als het profiel. Vier verzoeken zouden je moeten stoppen: scripts inschakelen, een helper of bibliotheek installeren, de client als administrator uitvoeren, of een importbeperking verzwakken. Elk daarvan verschuift de vertrouwensgrens naar buiten, en geen ervan hoort bij het normale importeren van een serverlijst.
Lees ook het hele bestand één keer door, want één onbekende regel is in context makkelijker te beoordelen dan in een gefilterde lijst. Is een regel onbekend, zoek hem dan op in de handleiding van je client in plaats van te gissen.
Wat de client werkelijk uitvoert
De handleiding 2.6 van Community OpenVPN documenteert de script-security-ladder: niveau 1 is de standaard en blokkeert door de gebruiker gedefinieerde scripts, terwijl niveau 2 ze toestaat. Het laden van plug-ins is een aparte voorziening met een eigen richtlijn. Daarom kan hetzelfde bestand in verschillende clients iets anders betekenen. Mobiele en leveranciersclients accepteren misschien een smaller stel richtlijnen, of geen van de hooks.
De startmethode is net zo belangrijk als de client. Een profiel dat door een bevoorrechte helper wordt gestart kan meer dan een dat in de gebruikersruimte wordt gestart, en dat verschil is een reden om de importmelding te lezen in plaats van weg te wuiven.
De versie is ook belangrijk, want deze niveaus worden per release gedefinieerd en een client die enkele versies achterloopt implementeert misschien niet hetzelfde beleid. Lees de handleiding die bij de build past die je draait, niet de nieuwste die je kunt vinden. Als de client nergens een versietekenreeks toont, is dat al een reden om langzamer te doen.
Vergelijk de operator, niet alleen het adres
Vergelijk operators zoals je elke andere tussenpersoon vergelijkt. Vraag wie de exit beheert, wat ze loggen, en hoe het profiel bij je kwam. Een geverifieerde downloadpagina en een overeenkomende vingerafdruk zeggen meer dan een bekende hostnaam. Een bereikbare server bewijst alleen dat er iets antwoordde.
Inloggegevens zijn het deel waar mensen onder druk fouten maken. Typ geen wachtwoord van een niet-gerelateerd account in een gedownload profiel omdat de servernaam bekend voorkomt. Een profiel kan ook een privésleutel open en bloot bevatten, dus het hele bestand in een beoordelingsthread plaatsen geeft die sleutel aan de thread.
Een correct gevalideerde HTTPS-sessie verbergt de pagina-inhoud nog steeds voor iedereen die alleen pakketten doorstuurt, dus de exit ziet niet automatisch elk wachtwoord. Hij ziet wel welke sites je bereikt, en die grens is het waard om precies te benoemen in plaats van te overdrijven.
Waar de herkomst van het bestand onduidelijk blijft, of een gevraagd recht geen uitleg heeft die je kunt accepteren, vervang het profiel dan door een uit een bron die ter verantwoording kan worden geroepen. Op een beheerde werkverbinding zou de beheerder de client en de configuratie als één beslissing moeten goedkeuren, niet als twee. Niets hier vereist dat je eerst kwaadwilligheid bewijst; toegang weigeren is een legitiem antwoord.