De downloadknop van een VPN-portal levert precies één bestand op, en dat bestand kan twee heel verschillende dingen zijn: een kant-en-klaar installatieprogramma van de leverancier met een configuratieprofiel dat meereist, of een build die de organisatie zelf heeft samengesteld. De pagina ziet er in beide gevallen hetzelfde uit, dus de knop kan u niet vertellen welke u hebt. Er achter schuilen drie vragen — wie het uitvoerbare bestand heeft gepubliceerd, welke configuratie de installatie schrijft en wie die repareert wanneer de volgende clientversie verschijnt. De eerste beantwoordt u uit de metadata van het artefact, de tweede uit de inhoud van het pakket en de derde alleen uit het team dat de uitrol bezit.

Het slot in de browser dekt de overdracht, niet het artefact.

Wat het download-eindpunt werkelijk teruggeeft

De meeste portals geven een downloadverzoek door aan een kleine handler die ofwel een opgeslagen bestand streamt ofwel er ter plekke een samenstelt, en daarna een bestandsnaam en een inhoudstype zet voordat het antwoord vertrekt. Wat aankomt is een container: een MSI, een PKG, een DEB of RPM, of een zelfuitpakkende wikkel rond een daarvan. Binnenin zit het binaire bestand van de client, en niets in de bestandsnaam zegt betrouwbaar of dat binaire bestand van de leverancier of van een interne buildpijplijn kwam. Een bestand met de naam client-setup.exe legt een naamgevingsbeslissing vast, geen herkomstfeit.

Vergelijk de gedownloade bytes met de gepubliceerde controlesom van de leverancier. Een afwijking bewijst geen kwaadwil; ze bewijst dat het bestand niet de build van de leverancier is, en dat is het verschil waarop het de moeite loont te handelen.

Waar het profiel de client binnenkomt

Vooraf ingevulde instellingen reizen meestal als een apart bestand dat het installatieprogramma naar een pad per gebruiker of per machine kopieert: een JSON- of XML-profiel op Windows, een configuratieprofiel op macOS, een fragment onder /etc op Linux. De waarden in dat bestand — hostnamen van de gateway, vertrouwensankers, soms inschrijvingsmateriaal — worden bij de eerste start de standaardwaarden van de client. Daarom kan één download zowel geheimen als code vervoeren.

Vraag wat het upgradepad met het profiel doet. Afhankelijk van de verpakking kan het een clientupdate overleven, erdoor overschreven worden of de schemavalidatie in de nieuwe versie niet halen.

Wat de handtekeningketen niet bewijst

Codeondertekening verbindt een uitgeversidentiteit aan een bestandshash, en op Windows laat de Authenticode-tijdstempel een handtekening langer leven dan het certificaat dat haar heeft gemaakt. Een geldig resultaat beantwoordt twee vragen: welke uitgever deze bytes heeft ondertekend, en of ze daarna zijn veranderd. Het somt de diensten, registerschrijfacties of meegeleverde stuurprogramma's van het installatieprogramma niet op, en het beslist niet of die uitgever hier vertrouwd moet worden. Microsofts Authenticode-documentatie beschrijft het mechanisme en is expliciet over die smalle reikwijdte.

Portalauthenticatie beantwoordt een derde vraag: dat de sessie de bedoelde server heeft bereikt. Drie verschillende controles, drie verschillende faalmodi.

Verifieer het artefact voordat iemand het uitvoert

Plaats het bestand op een geïsoleerde machine en lees de metadata voordat u iets uitvoert. Deze opdrachten beantwoorden de uitgeversvraag op de drie gangbare platforms.

# Windows PowerShell
Get-AuthenticodeSignature .\client-setup.exe | Format-List Status, SignerCertificate, TimeStamperCertificate

# macOS
pkgutil --check-signature ./Client.pkg
codesign -dv --verbose=4 /Applications/Client.app

# Debian/Ubuntu
dpkg-deb -I ./client_amd64.deb
sha256sum ./client_amd64.deb

Lees het subject van de ondertekenaar in plaats van alleen het statuswoord. Een interne certificaatautoriteit die een interne build ondertekent is te verwachten; hetzelfde certificaat op een pakket dat pretendeert de release van de leverancier te zijn niet.

Voor een pakket met alleen een profiel: open het archief en behandel elke ingebedde hostnaam en sleutel als gegevens waarvoor verantwoording moet worden afgelegd. Als het profiel iets herbruikbaars bevat, maakt portaldistributie er een gedeeld geheim met een uitrolschema van.

Eigendom vastleggen vóór de uitrol

Achter de laatste vraag zit geen opdracht. Zoek uit wie het artefact bijwerkt wanneer de leverancier een nieuwe client uitbrengt, wie de ondertekeningssleutel voor een interne build heeft en hoe het profiel wordt geroteerd wanneer een eindpunt verschuift. Schrijf die namen naast de downloadlink.

Als niemand dat antwoord bezit, is de download een distributiekanaal zonder onderhoudscontract, en dat is de bevinding die het waard is om te melden.

Gerelateerde artikelen