Veel bedrijven en instellingen maken gebruik van een firewall die zo is ingesteld dat er vanaf Internet geen verbindingen met het LAN kunnen worden opgezet. MKB's met een NAT router (en zelfs thuisgebruikers) hebben natuurlijk in principe ook zo'n setup.
(1) Als ik het goed begrijp maakt TeamViewer gehakt van deze policy door vanuit je LAN een verbinding op te zetten met een "master" TeamViewer server (beveiligingsstatus onbekend) en deze in stand te houden. Zodra iemand (al dan niet legitiem) vanaf een willekeurige internet PC (beveiligingsstatus onbekend) toegang wil tot de TeamViewer PC in je LAN, meldt deze zich bij de "master" TeamViewer server waarna die laatste zal bemiddelen bij het tot stand brengen van de uiteindelijke verbinding (tussen de internet PC en de PC met TeamViewer in je LAN). Beide PC's mogen achter "NAT" zitten. Net zoiets als Skype dus. Dat je met de "QuickSupport" versie niet eens beheerdersrechten nodig hebt betekent dat je in veel bedrijfsomgevingen gewoon je werk-PC (of die van een ander) remote toegankelijk kunt maken. Netwerkbeheerders zijn ook vaak zeer geinteresseerd in dit soort protocollen, maar om een andere reden (180 graden) dan TeamViewer-fanaten.
(2) Je moet de makers van TeamViewer vertrouwen dat ze (A) geen opzettelijke backdoors hebben ingebouwd en ze (B) geen onbedoelde kwetsbaarheden in alle betrokken schakels hebben laten zitten (reken maar dat zo'n product een interessant target is voor aanvallers).
M.b.t. (B): uit het plaatje op blz. 3 in
http://www.teamviewer.com/images/pdf/Teamviewer_SecurityStatement.pdf kan ik op geen enkele manier opmaken dat de public keys secure worden overgedragen (*). Zonder certificaten en een ander medium (2-factor) is dat ook niet mogelijk voor zover ik weet, en "key exhange vulnerabilities" in het algemeen zijn helaas geen zeldzaamheid (Google er maar naar). Het zou mij niet verbazen als er, direct na installatie, middels een MITM attack de verbinding kan worden gestolen (dit geldt zowel voor de PC in het LAN als de PC van de "beheerder op afstand"). Tuurlijk, het is een klein kansje dat er net op zo'n moment iemand "meekijkt" op het netwerk, maar toch (aan de andere kant, het kan ook zijn dat je juist TeamViewer installeert op het moment dat er "vreemde dingen" gebeuren).
(*) Ja, een public key is publiek, iedereen mag hem hebben, het probleem met public keys is alleen dat je zeker moet weten van
wie hij is. Bij een
echte Public Key Infrastructure is er sprake van certificaten en hierarchische trusts, daar lijkt bij TeamViewer geen sprake van te zijn (terwijl er wel van PKI gesproken wordt; slechts uitwissellen van public keys maakt er nog geen PKI van). Correct me if I'm wrong!
N.b. de wereldwijde PKI met stapels rootcertifcaten in onze webbrowsers van deels onbetrouwbare CA's is waarschijnlijk ook ongeschikt voor dit soort toepassingen, maar niks belet je om je eigen CA te beginnen en zelf certificaten te ondertekenen. Dat is alleen een boel werk (denk maar aan de authenticatie van mensen wiens certificaat met public key je moet ondertekenen), een daar zitten ze bij TeamViewer B.V. natuurlijk niet op te wachten.
Ook weten we niet of TeamViewer bijv. van een OpenSSL library gebruik maakt, en zo ja, welke versie, en of ze die correct hebben geimplementeerd (denk aan de Debian OpenSSL keygen bug).
http://www.twistedpairrecords.com/blog/2010/07/ suggereert dat een TeamViewer sessie gehijacked werd, vermoedelijk doordat de aanvaller de private key kon stelen (de betreffende PC was gecompromitteerd). Wat me vebaast is dat de auteur meldt dat de verbinding meerdere keren verbroken werd en er toen een verbinding was met een PC in Duitsland. Kennelijk had de aanvaller ook al het wachtwoord "meegelezen" (keylogger). Of het verhaal klopt weet ik niet, maar kennelijk is er bij TeamViewer geen sprake van
volwaardige 2-factor authentication (d.w.z. iets buiten de PC waar een aanvaller-via-het-netwerk niet bij kan).
In alle andere dan huis-tuin-en-keuken situaties lijkt me een VPN tussen je LAN en de externe PC (welke aan bepaalde minimale veiligheidscriteria moet voldoen) een stuk verstandiger. Het mooiste is als daarbij een private key wordt gebruikt die
buiten de PC is opgeslagen, en berekeningen daarmee natuuurlijk ook buiten de PC plaatsvinden (een TPM chip, waar een aanvaller-via-het-netwerk ook niet in kan kijken, is een leuk alternatief hiervoor; implementaties hiervan zijn helaas nauwelijks te vinden). Anders is bescherming van die private-key-op-de-PC middels een wachtwoord toch wel het minste (maar niet waterdicht natuurlijk). Je kunt de VPN verbindingen natuurlijk ook termineren op dedicated VPN-routers, of daar speciale Linux bakjes voor neerzetten; dat verkleint het risico op diefstal van de VPN credentials natuurlijk, maar iemand met oneigenlijke toegang tot de "beheerders" PC kan nog dan steeds wel bij de PC in het LAN. Een ander voordeel van VPN verbindingen is dat je veel eenvoudiger zelf kunt monitoren op inbraakpogingen, en de uitgifte van credentials heb je natuurlijk geheel in eigen hand.
2010-09-08 00:53 - correctie: in laatste stukje stond onbedoeld "TeamViewer PC in het LAN": daar gaat het juist NIET om een TeamViewer PC, maar eentje die via VPN wordt benaderd.