Tailscale SSH: Investigation and remediation update
Posted by figmert 1 day ago
Comments
Comment by minimaltom 1 day ago
Having done my own review of the vulns and the fixes as they are landing in github, its pretty clear to me that this only affects situations where you use ACLs to permit ssh into a node (via tailscale ssh, not via opensshd), but dont give a path to sudoers/root.
If a user had no SSH access and/or connectivity to a vulnerable node, none of these vulns give them access.
However, if you have a vulnerable tailscaled and you give ssh access as some non-root account/privs, then yes, these vulns are relevant as theres now known privilege escalations that give access beyond some specific user account.
Not trying to play down the vuln (its important), but its not a free-for-all RCE that some ppl are acting like it is.
Comment by whywhywhywhy 1 day ago
Would only show worm behavior if machines within the tailnet had the right settings and also were members of other tailnets with those settings but then it would require someone in that tailnet to have another tailnet with the right settings…
It’s far fetched.
Comment by dennysora-main 1 day ago
Comment by minimaltom 1 day ago
If all your tailscale-ssh ACLs allow you into an account with sudo, or allow you into root, theres no impact (you cant do anything with these vulns you couldnt do a month ago). Thats the nuance I'm trying to get across (admittedly my english is bad).
Comment by lambda 1 day ago
There are a handful which restrict users to their own user accounts. But it's on dev server with friendly devs, so even for that use case it's not really the end of the world.
I'm sure our infosec folks are going to demand that we upgrade everywhere, however.
Comment by stingraycharles 1 day ago
Comment by scoodah 1 day ago
Comment by randomblock1 1 day ago
Comment by septune 1 day ago
Comment by hmartin 1 day ago
Comment by zaptheimpaler 1 day ago
Comment by gnabgib 1 day ago
Comment by waterTanuki 1 day ago
Comment by jon-wood 18 hours ago
My gut feel is that you're correct but presumably they do have a decent number of proper corporate customers or none of these features would exist in the first place.
Comment by embedding-shape 11 hours ago
I too use ssh with Tailscale, but as I understand things, this is only impact "tailscale ssh", which is different from doing "ssh over tailscale" (over tailnet), at least how I understand other comments here, someone please correct me if I'm wrong.
Comment by lifeisloving 1 day ago
Of course it should be taken seriously, but this topic is also piggy backing off of 7 days straight of non stop viral engagement farming on X after php2shell, where people we're farming likes by just posting stuff like
"YoU ThInK PhP2ShELl iS BaD JuST WaIt unTiL TaIlScAlE get HaCkED, ThIS JuSt ThE BeGiNNiNG oF a CybeR ReCKoNiNG"
To farm FUD from normies. Which of course led researchers who were working on tailscale vulns to take advantage of that algorithmic attention as well and talk about their research.
Like Im pretty sure we knew about this vuln for 3 days now, or atleast that it was responsibly disclosed (and not being used in the wild).
The attention this is getting is definately the product of some cringe viral snowball effect of the also rather benign p2pshell vuln.
It feels like there's a ton of AI influencer astroturfing going on, because its wildly easy to get engagement when you add the words "agent/ai" with "vulnerbility" and [insert popular service].
Comment by eru 19 hours ago
Comment by minimaltom 15 hours ago
Another fun fact: there’s a list of things with tails.txt and scales.txt (see GitHub) and that list is used to generate the random tailnet name :)
(Or at least it used to, it’s been years)
Comment by ramblurr 1 day ago
Comment by quantumwoke 1 day ago
Comment by Alex13192 1 day ago
Comment by manyzens 1 day ago
Comment by aborsy 1 day ago
I personally use openssh, but someone else may use tailscale SSH.
Comment by rietta 1 day ago
Over the decades, I have maintained remote access through port forwarding on my router - at one point in 2008 I put SSH on port 80 so I could access it from the restricted wifi network at the hospital my grandmother was at. I have also used openvpn. I have also used cloudflare tunnels. But in the end, I always connect to hardened openssh with key only authentication.
Comment by selfmodruntime 18 hours ago
Comment by rietta 7 hours ago
Comment by InsidiousWombat 18 hours ago
and now, bugs
Comment by selfmodruntime 11 hours ago
I work at a finance org with hundreds of engineers and thousands of technical users. You cannot be compliant with finance compliance frameworks using OpenSSH without audits and traceability and some source of identity management. That is exactly what Tailscale (or an alternative product) provides.
> and now, bugs
If you do it yourself, you now own that software entirely. Your comment lacks understanding of the complexity of real world scenarios.
Comment by ferngodfather 10 hours ago
All the benefit of the core SSH protocol as it's just key signing. It's honestly underrated.
Comment by nisegami 17 hours ago
Comment by waynesonfire 13 hours ago
Comment by speedstyle 1 day ago
Comment by LtWorf 23 hours ago
Comment by speedstyle 13 hours ago
Comment by sroussey 23 hours ago
Comment by eternauta3k 22 hours ago
Comment by LtWorf 22 hours ago
Comment by minimaltom 1 day ago
Comment by LeBit 1 day ago
I understand port 443 is always opened but nowadays you can’t just run ssh traffic on 443 without it being detected as not being https
Comment by lmm 20 hours ago
Comment by octoberfranklin 1 day ago
Comment by novafunc 1 day ago
If their firewalls can detect it not being typical http/s traffic, they can block it.
Comment by QuantumNomad_ 1 day ago
I’ve been hoping that HTTP3 adoption would make 443 UDP accessible from even more places. But maybe they already do the kind of thing you said for that too, looking at the traffic flow to determine that it is not HTTPS.
Weirdly sometimes there are WiFi networks where I am not able to connect to my WireGuard VPN on 443 UDP, but I can connect to servers over ssh on standard port 22 TCP. Perhaps they sometimes block all UDP traffic because they don’t want people to use BitTorrent etc, but one would think that with all the online meeting platforms that do video streaming there would be a lot of problems for people if all UDP traffic was blanket blocked.
I might eventually try out AmneziaWG instead of vanilla WireGuard, but at the moment I am fine not being able to Connect to my VPN sometimes. I only use it to connect to my other machines anyway, not as a VPN tunnel for my web browsing etc.
Comment by teravor 1 day ago
some VPN apps bypass wireguard blocks automatically by using https tunnels and whatnot.
Comment by rietta 1 day ago
Comment by Imustaskforhelp 1 day ago
Comment by jen20 19 hours ago
Comment by megous 1 day ago
Comment by toast0 9 hours ago
SSH is dead simple to detect, because the server sends an outbound greeting in ASCII text; and the client doesn't send anything until it gets the greeting. The binary protocol does not look like a TLS stream at all either.
Comment by InsidiousWombat 18 hours ago
SSH does nothing to hide it is SSH (tho "I'm just https" mode would certainly be welcome addition)
Comment by sandos 21 hours ago
Comment by megous 19 hours ago
Comment by jon-wood 18 hours ago
Comment by LeBit 20 hours ago
DPI immediately can tell it is ssh.
Comment by LeBit 1 day ago
Comment by andix 1 day ago
Letting Tailscale handle VPN and SSH at the same time is basically once again a single point of failure. Similar to exposing SSH directly to the internet.
Comment by computerfriend 19 hours ago
Comment by JJJollyjim 23 hours ago
Comment by teekert 23 hours ago
And before people start coming up with alternatives, I know, but they either have the same (theoretical level of) attack surface (ie [managed] Nebula), or they require much more manual work (ie Wireguard) and are therefore more sensitive to misconfiguration.
Comment by mzhaase 21 hours ago
Comment by waynesonfire 13 hours ago
Yes, needing to RTFM is much more manual work. Better to deploy bugs.
Comment by aborsy 1 day ago
I use it extensively, and I would rather pay them a fee if they could review thr code.
A possibility is a lock down mode, disabling risky features.
I just want a VPN for connrctiviy, no taildrop, taildrive, SSH, funnel, services, DNS, node sharing, ...They are disabled in my admin console, but the code runs on my devices and they can be enabled by mistake.
A question. Taildrop enables unauthenticated input and doesn't even obey ACLs. I'm not quite sure about this, but couldn't malware in a low trust device send a file to my Synology NAS, which will then automatically process it for indexing things like thumbnail, leading to potential code execution? Why doesn't it obey ACLs, and why isn't the recipient approval needed before the file exits the sender's device? I use tags, but I'm the owner not the tag.
Comment by drdexebtjl 1 day ago
Does anyone know of a Tailscale alternative that sticks to the basics?
Something that’s just WireGuard but without the manual key exchange, and with Tailscale-like NAT hole-punching that falls back to using an oblivious relay?
Comment by sigbottle 1 day ago
I was trying to do some kind of insane workflow where you as the operator have a privileged hardware yubikey that admins the nodes when you plug it in, and the point is the nodes would self-propogate the changes outwards. I immidiately ran into classic issues with distributed security in distributed systems (even with only one central operator trying to admin everything). Tailscale is also a bit more secure in its oauth layer - with this architecture, you need to set proper time limits for expiring so one node compromise doesn't get access to the whole fleet. Couldn't really come up with better ideas than forcing the operator to reuse some kind of hardware key (the idea trying to be avoiding maintaining a cloud control plane as much as possible)
Fun foray but creating such a system requires a lot of expertise that I unfortunately lack
Comment by LeBit 1 day ago
I really liked it. I like the idea of embedding firewall rules in a certificate.
But , like you observed, it does not scale as well as tailscale.
Comment by Yasuraka 1 day ago
Bit more than the basics, but not as much as tailscale.
Comment by huslage 1 day ago
Comment by drdexebtjl 1 day ago
Comment by LeBit 1 day ago
{tail,head}scale is the best there is for wireguard at more than 3 nodes.
Comment by chasd00 1 day ago
Comment by InsidiousWombat 18 hours ago
It is massively more complex than say Wireguard, because it was developed with "everything and kitchen sink approach", and even the standard de facto authors, Cisco, took good 20 years to stop having IPSec related vulnerability every few months (hell we just had one this year in Linux IIRC)
Comment by sgerenser 18 hours ago
Comment by ctippett 1 day ago
Comment by JJJollyjim 23 hours ago
[1]: https://web.archive.org/web/20221222120703/https://emily.id....
Comment by ctippett 22 hours ago
Comment by aborsy 23 hours ago
Comment by mintflow 1 day ago
There are too much features added now, perhaps some related to enterprise features because that must drive the revenue
Sometimes I am thiking perhaps they provide a light tailscale version but that seems not viable given the complexity now, headscale is great, but the OSS client still have plenty features, though they are gradually added feature based switch in the client source which I think is great, perhaps we can build a light version over it
This is also I do not think the tailscale-rs(which aim to rewrite tailscale with rust) will not be ready in a short time because too much (feature + cross platform) need to be tested
Comment by skowalak 1 day ago
Comment by aborsy 1 day ago
I install tailscale on my cloud vps which I use for downloading torrents. I want my laptop to talk to this node, but I don't want this vm talk to my laptop, which is the whole purpose of ACLs. My ACL is deny by default, so that is great and easy to set. But now this node can still send arbitrary files to my laptop. If I don't remember to tag it, I'm vulnerable. If I do, there is still a window that this node can send me files until I tag it (I can't install tailscale to a tag).
Sending a file otherwise normally requires an app listening to a port, so taildrop permissions should be same as network permissions set by ACL.
BTW, last year or so tailscale advertised a position for someone to manage complexity of tailscale. Founder was talking about this issue. They seem to be aware of the problem.
Comment by ctippett 1 day ago
Comment by bradfitz 1 day ago
FWIW you can rebuild tailscaled to omit all the optional stuff:
https://github.com/tailscale/tailscale/tree/main/feature#mod...
e.g.
% go run ./cmd/featuretags --min
ts_omit_ace,ts_omit_acme,ts_omit_advertiseexitnode,ts_omit_advertiseroutes,ts_omit_androidbin,ts_omit_androiddns,ts_omit_appconnectors,ts_omit_aws,ts_omit_bakedroots,ts_omit_bird,ts_omit_c2n,ts_omit_cachenetmap,ts_omit_captiveportal,ts_omit_capture,ts_omit_cliconndiag,ts_omit_clientmetrics,ts_omit_clientupdate,ts_omit_cloud,ts_omit_colorable,ts_omit_completion,ts_omit_completion_scripts,ts_omit_conn25,ts_omit_connreject,ts_omit_dbus,ts_omit_debug,ts_omit_debugeventbus,ts_omit_debugportmapper,ts_omit_desktop_sessions,ts_omit_dns,ts_omit_dnsresolvecache,ts_omit_doctor,ts_omit_drive,ts_omit_exitnodehealth,ts_omit_favorites,ts_omit_flashappliance,ts_omit_gro,ts_omit_health,ts_omit_hujsonconf,ts_omit_identityfederation,ts_omit_ipnbus,ts_omit_iptables,ts_omit_kube,ts_omit_linkspeed,ts_omit_linuxdnsfight,ts_omit_listenrawdisco,ts_omit_logtail,ts_omit_nattraversal,ts_omit_netlog,ts_omit_netstack,ts_omit_networkmanager,ts_omit_oauthkey,ts_omit_osrouter,ts_omit_outboundproxy,ts_omit_peerapiclient,ts_omit_peerapiserver,ts_omit_portlist,ts_omit_portmapper,ts_omit_posture,ts_omit_qrcodes,ts_omit_relayserver,ts_omit_remoteconfig,ts_omit_resolved,ts_omit_routecheck,ts_omit_runtimemetrics,ts_omit_sdnotify,ts_omit_serve,ts_omit_serviceclientprefs,ts_omit_ssh,ts_omit_synology,ts_omit_syslog,ts_omit_syspolicy,ts_omit_systray,ts_omit_taildrop,ts_omit_tailnetlock,ts_omit_tap,ts_omit_tpm,ts_omit_tundevstats,ts_omit_udptransport,ts_omit_unixsocketidentity,ts_omit_useexitnode,ts_omit_useproxy,ts_omit_usermetrics,ts_omit_useroutes,ts_omit_wakeonlan,ts_omit_webbrowser,ts_omit_webclientComment by traceroute66 18 hours ago
It would also cost Tailscale nothing to build and ship a minimised version alongside the bloated version. Thereby making it officially supported option.
Because you just know support will start finger-pointing and asking you to install the bloated version if you tell them you're having an issue with your home-compiled minimised version ....
Comment by infogulch 15 hours ago
Comment by InsidiousWombat 18 hours ago
Comment by wrxd 1 day ago
I wasn't using any of the additional features, I can get away with exposing a port on my router and I am changing devices rarely.
News like this make me happy I removed a lot of complexity and attack surface
Comment by femiagbabiaka 1 day ago
using wireguard is awesome, but I wouldn't say deploying and maintaining it lacks complexity exactly. and you didn't get rid of attack surface, you just made it your responsibility ;)
Comment by ectospheno 1 day ago
Comment by LoganDark 1 day ago
Comment by neilalexander 1 day ago
Comment by LoganDark 1 day ago
Comment by mbreese 1 day ago
Comment by LoganDark 1 day ago
Comment by lakeviewterrace 1 day ago
Comment by Gigachad 1 day ago
Comment by icedchai 1 day ago
Comment by LoganDark 1 day ago
Comment by esseph 1 day ago
Comment by LoganDark 1 day ago
Comment by esseph 1 day ago
Comment by LoganDark 1 day ago
Comment by dns_snek 20 hours ago
I jest, but you're describing authentication protocol which uses the UDP destination port field to carry each character of the "one time password" in a roundabout way. You could simply send 1 packet containing the password to the daemon.
I've never seen it used in the wild but apparently, it exists: https://github.com/mrash/fwknop
Comment by LoganDark 15 hours ago
Reading the fwknop README is such a breath of fresh air, thank you for that treat. I hate AI-generated documentation so much.
Comment by SV_BubbleTime 1 day ago
I’m not even sure you need more than two. One seems bad because that’s just a lucky port scanner one time.
Comment by LoganDark 1 day ago
It would be idiotic to use the knock as the only authentication, which is why I don't.
To be quite honest, I just like the aesthetics of it.
Comment by megous 1 day ago
Comment by sersi 23 hours ago
Comment by swingandamiss 1 day ago
Comment by drum55 1 day ago
Comment by hdgvhicv 1 day ago
Comment by drum55 1 day ago
Comment by hdgvhicv 20 hours ago
Not that my WireGuard connection needs nat as it terminates on my router. And I use private ip ranges as I want to be sure that if WireGuard drops out for some reason traffic doesn’t route over the unencrypted path. Defence in depth.
Comment by swingandamiss 1 day ago
Comment by LoganDark 1 day ago
I do disagree with GP's assertion that Claude can never make something comparable to Tailscale, but that's just because I believe I (and probably many others here) could probably prompt that, not because I think just anyone could. LLMs can one-shot a fair few things based on unskilled prompts, but I don't believe this is one of them yet.
Comment by swingandamiss 1 day ago
Comment by LoganDark 1 day ago
Comment by arcanemachiner 1 day ago
Comment by swingandamiss 1 day ago
Comment by femiagbabiaka 1 day ago
Comment by swingandamiss 1 day ago
Comment by LeBit 1 day ago
Wireguard is the building block for higher level tools like Tailscale to build on.
Comment by fooqux 1 day ago
Comment by giwook 1 day ago
Comment by OptionOfT 1 day ago
Tailscale doesn't have this issue.
Comment by Dagger2 18 hours ago
(This behavior is a deliberate choice from Wireguard. They claim it's not broken, but... it's broken.)
Comment by LeBit 1 day ago
Connect from your home to a public VPS and connect your public devices to that VPS.
Comment by jon-wood 18 hours ago
Comment by wrxd 21 hours ago
Comment by LeBit 20 hours ago
Lot’s of ISP have moved to CGNAT where port forwarding has become a nightmare. That’s one reason. You can look at it as if your router moved from your home behind a public CGNAT, dynamic, shared IP to a public non-shared, static, stable IP on the internet.
In a workplace setting, connecting to your residential IP will raise suspicions or alarms. That being said, if you go for a cheap VPS, it also might raise alarms. Maybe your 'VPS' should be with whichever cloud provider your employer goes with so you don’t even register as a blip.
It is added complexity, but it is really very simple. Using Wireguard, you connect from a always on server in your home to your VPS. Then, using Wireguard, you configure your laptop to always connect to your VPS. Any local LLM can generate the wg-quick config files in seconds.
Also, not opening a port has become a security checkbox. If your home router isn’t a hardened Linux box, why would you prefer to let a ASUS 'WiFi Router' handle that critical networking function instead of a Linux box you can easily update and audit?
Comment by jon-wood 18 hours ago
Just because your VPN endpoint is on a VPS somewhere rather than a computer on your home network doesn't make it any more secure, and the scare mongering here that somehow a home router will drastically mess up a function as simple as forwarding traffic coming in on a port to another machine is weird... if you don't trust it to do that then I'd get rid of the thing because that's its entire job.
Comment by onel 1 day ago
Comment by wrxd 21 hours ago
Comment by F_r_k 1 day ago
Comment by dizhn 1 day ago
Comment by modeless 1 day ago
Comment by kccqzy 1 day ago
Comment by siva7 1 day ago
Comment by SchemaLoad 1 day ago
So a failure in tailscale is not an issue on it's own because you'd then also have to find an exploit in what I'm actually hosting as well. Both of those things happening at the same time is much less likely.
Comment by mrheosuper 1 day ago
I don't see the reason for Tailscale instead of plain old simple Wireguard, it's WG under the hood anyway.
Comment by niobe 22 hours ago
I am a relatively old school engineer. When building a bricks and mortar business recently I kept hearing about tailscale for remote access. Looked and saw it was just a wrapper over wireguard. I immediately went aha, there's a solid underlying project without the risk of something over the top trying to make life easier for people unwilling or unable to manage their own systems. Went with a direct wireguard on opnsense approach.
Bamn, proved right today.
Wireguard is perfectly elegant and maintainable as it is for me, and a wonderful improvement on traditional site to site VPNs.
Comment by drnick1 1 day ago
Comment by Gigachad 1 day ago
Good idea to set up automatic updates for the tailscale client though.
Comment by slowin 1 day ago
Comment by minimaltom 1 day ago
Comment by teekert 23 hours ago
Comment by dist-epoch 1 day ago
> Organizations using headscale v0.29.5 have no mechanism to disable the forwarding behavior at the center of the finding.
https://techjacksolutions.com/scc-vendor-rollup/tailscale-he...
Comment by 6thbit 1 day ago
> Most of the Tailscale SSH issues we've identified concern privilege escalation. In some circumstances, someone already authorized to connect over Tailscale SSH may be able to perform actions beyond the permissions of their configured local user, including potentially gaining elevated privileges.
"Most"? "In some circumstances"?
Makes me think that they could also be investigating a full on unauthorized connection issue, or am I reading too much into it?Comment by remus 1 day ago
Comment by awildfivreld 1 day ago
Comment by drum55 1 day ago
Comment by brof 1 day ago
Comment by jasona123 17 hours ago
In my world I believe we would call that a dick move.
Comment by deanputney 14 hours ago
Comment by pizzafeelsright 1 day ago
There is some weaselly language.
In some circumstances default config? with password? this is a condition leading to the next
someone already authorized to connect over Tailscale SSH they have access, but it may be limited or restricted, although scope could be beyond the intended
may be able to perform actions beyond the permissions If there is a full moon and your brother in law's second cousin is wearing a hat, he may be able to use your upstair's thermostat provided you have a second story.
Comment by fooqux 1 day ago
Comment by tptacek 1 day ago
Comment by p_l 1 day ago
I fully understand being carefully worded when you need serious brain power just to figure out every claim in the logorrhea
Comment by traceroute66 1 day ago
Quick reminder that in recent months Tailscale has had issues with age-old classic vulnerabilities such as input validation.
The problem with Tailscale is twofold.
First their attack surface is too big. They continuously shoehorn new features into the product.
Second they don't appear to do regular deep-dive code audits and instead they appear to rely mostly on the goodwill of third-parties to poke at select areas of their code as and when those third-parties feel like it. Hence simple vulnerabilities such as input validation keep on popping up.
Fancy SOC2 certificates are not the same thing. That's just dogfood for the corporate auditors.
At $work we are busy working on removing Tailscale. The bells and whistles of Tailscale sure are attractive candy, but we simply can't overlook the security risk of what has become a bloated product.
Comment by devmor 1 day ago
Comment by rhedak 15 hours ago
Comment by pluto_modadic 10 hours ago
Comment by hollow-moe 1 day ago
Comment by 99harry 23 hours ago
Comment by teekert 23 hours ago
If I literally ask an LLM your question it makes beautiful table of pros cons, underlying tech etc. So, LM G<>LLM TFY ;)
Comment by parasyte 9 hours ago
Most of the neat tricks like funnel, serve, SSH, etc are off by default and you need to specifically allow them for hosts to use them.
Comment by 99harry 2 hours ago
Comment by MisterTea 1 day ago
Comment by jubilanti 1 day ago
Comment by justinsaccount 1 day ago
Comment by holoduke 16 hours ago
Comment by y-c-o-m-b 11 hours ago
My wife is tech-phobic, so having her sign up for Tailscale with her existing Google account and installing the Android app was easy enough for her to agree to this setup.
Comment by redmalang 1 day ago
Comment by seany 1 day ago
Comment by wslh 1 day ago
Comment by fanruocheng 1 day ago
Comment by krazy_00 1 day ago
Comment by zkscout 21 hours ago
Comment by TacticalCoder 1 day ago
My question to those who kept praising Tailscale and making fun of good old plain SSH: how do you like your state backdoor --excuse me, I mean bug-- in Tailscale now?
Comment by Liuser 1 day ago
Comment by mediaman 1 day ago
Comment by LeBit 1 day ago
Comment by _def 1 day ago
Comment by seemaze 1 day ago
Comment by RobMurray 1 day ago
What is the advantage? Why would I want to swap the well tested auth in ssh for auth managed by tailscale?
Comment by seemaze 1 day ago
Comment by femiagbabiaka 1 day ago
Comment by LeoPanthera 1 day ago
Comment by zer0zzz 1 day ago
Comment by forbiddenlake 1 day ago
Comment by pluto_modadic 10 hours ago