Following months of testing, Plex has started to roll out its redesigned mobile app to Android and iOS devices, and it will arrive to everyone within the next week. The new app comes with an updated navigation system that should make it easier to access different parts of the app and find content to watch, along with a dedicated tab for centralized media libraries.
It also has a button in the top-right corner of the screen for your Watchlist and more artwork across detail pages for shows and movies, as well as cast and crew profiles. In a post on the Plex forum, the company outlines a ton of improvements it has made to the app since the preview, including faster load times and scrolling, the addition of a sleep timer, and picture-in-picture support.
In some ways it is… In others it’s definitely not.
My biggest problem is that I can’t expose it on a domain for my family to get to. They don’t know how to VPN and to educate them would be exhausting.
Install tailscale on your server
Install tailscale on their device
Thats it
Cool… point me to the LG TV tailscale app… or the roku tailscale app…
SDNs in general are no different. App support is limited, specifically on devices that people are most likely to want to watch media content on.
And to say that tailscale is “that’s it” is a bit disingenuous. On my setup (LXC containers) I couldn’t add tailscale even if I wanted without faffing with interface stuff.
So I have a NAS running Ubuntu I only keep my movies, my Jellyfin, and torrent software on in an isolated VLAN I stream from. I would think this would make any security issue with Jellyfin a dead end. I stream all content from Jellyfin domain I made and never use it locally. I stream off it at home from my VPN. This seems a safe way to stream where it can be used away from home unless I am missing something? Pointing out any holes in my logic is appreciated.
If it’s a private VPN, you should be fine. If it’s publicly accessible the jellyfin access through a vpn itself doesn’t matter. They can just subpoena a request to your domain registrar to get your information since the IP won’t yield anything useful for them.
The VPN is a paid no-log VPN out of Panama. The traffic goes through the VPN applied to the VLAN and my device I stream to uses a different connection to the same VPN service. The domain is a DDNS.
Eh, if that’s operating in the US (or other country that cares), they may still give up the mapping to a legal request.
Why not?
https://jellyfin.org/docs/general/networking/#running-jellyfin-behind-a-reverse-proxy
Because a reverse proxy doesn’t resolve any of these major issues.
https://github.com/jellyfin/jellyfin/issues/5415
Your content can be probed, identified, and streamed all without auth. Your users can be enumerated in certain cases.
Edit: If you host legit content, like family videos… All of that can be leaked. If you don’t host legit content… and the public site gets probed and they identify the illegal content… expect to be named in a very large lawsuit… either situation is bad.
Edit2: and hosting it behind a proxy that does it’s own auth would break ALL app-based jellyfin clients.
Holy fuck what a reply.
Yeah… ignoring potentially leaking peoples private videos for the sake of “backwards compatibility” is wild. No… When you find a critical flaw like that, you should be breaking compatibility purposefully in order to make people update to tooling/programs that support the new more secure functionality.
You are reading too much into the issue linked.
In order to actually abuse any of the unsecured endpoints, you need to have knowledge of the domain, the media/user/stream IDs and media paths. You don’t get those unless you have a user on the Jellyfin instance and brute forcing them is not practical. If you trust the users you add to your Jellyfin instance, there is not much risk in exposing it to the internet.
Those issues definitely need to be addressed at some point, but it doesn’t make Jellyfin exposed on the internet open to anyone.
No… and you’re trusting this WAY too much. This is exactly why it’s dangerous.
You don’t need any knowledge of the domain. Tools like shodan will categorically identify EVERY jellyfin instance that scanners will run into.
No. Read the whole thread. https://github.com/jellyfin/jellyfin/issues/5415#issuecomment-2525076658
If your path is similar to my path, which due to the nature of the software we ALL have similar paths. You can absolutely bruteforce the CALCULATED AND NOT RANDOM MD5 hash of the folder names that bigbucksbunny lives in. All it takes is for one angsty company to rainbow table variants of their movies name to screw you completely over. This is “security through obscurity”. This isn’t safe AT ALL.
Edit: Just to clarify you would have to ADD your own GUID style information to the folder path in order to make it so a generic precompiled rainbow table for common paths to not work. Eg, /mnt/53ec1945-55dd-4b73-8e03-9e465d5739c3/movies/bigbucksbunny
common paths/names can be setup based on the defaults for programs like the *arrs with minor linux-minded variants and I bet it would hit a good chunk of users who run jellyfin.
I don’t need to trust because I know how it works: https://github.com/jellyfin/jellyfin/blob/767ee2b5c41ddcceba869981b34d3f59d684bc00/Emby.Server.Implementations/Library/LibraryManager.cs#L538
They can’t. Without the domain, the reverse proxy will return the default page.
I did.
It does not need to be similar, it needs to be identical.
There are 1000s of variations you have to check for every single file name, with 0 feedback until you get a hit. After you have gone through all that trouble, you can now confirm that the file exists and do great things like retrieve the cover art or the subtitles. None of which is incriminating or useful.
My threat model does not include “angsty company worried about copyright infringement on private Jellyfin servers”.
Why bother scanning the entire internet for public Jellyfin instances when you can just subpoena Plex into telling you who has illegal content stored?
Yes… exactly how I said it works. Notice the return.
It’s a hash, not a proper randomized GUID. But thanks for backing me up I guess? I wasn’t interested in posting the actual code for it because I assumed it wouldn’t be worth a damn to most people who would read this. But here we are.
You are wrong, but at this point I’d have to educate you on a lot of stuff that I don’t have the time or care to educate you on. The tools are out there and it’s beside the point at all, proper auth fixes all the concerns. If it’s publicly accessible you have to assume that someone will target you. It’s pitifully simple for someone to setup a tool to scan ranges and find stuff(especially with SSL registrations being public in general, if I asked any database for all domains issued that start with “jf” or “jellyfin” or other common terms, I’d likely find thousands instantly). Shodan can and does also do domain stuff.
So they’d only have to have 2 hashes for a file to hit the VAST MAJORITY OF PEOPLE WHO USE THE DOCKER. What an overwhelming hurdle to jump…
Correct, but how many people actually deviate? Forget that most people will map INTO the container and thus conform to the mapping that the containers want to use. This standardizes what would have been a more unique path INTO a known path. This actually makes the problem so much worse.
And? Many people are simply going to mount as
/mnt/movies
or other common paths. Pre-compiling md5 hashes with hundreds of thousands of likely paths that can be tested within an hour is literally nothing.Sure, but most people follow defaults in their *arr suite… Once again… the up-front “cost” of precompiling a rainbow table is literally nothing.
Correct but the point that I made is that they would simply pre-build a rainbow table. The point would be that they would take similar paths and pre-md5 hash them. Those paths would be similar. Not the literal specific MD5 hash.
Which is pitifully easy if you precompile a rainbow table of hashes for the files for in the name formats and file structures that are relatively common on plex/jellyfin setups… especially to mirror common naming formats and structures that are used in the *arr setups. you can likely check 1000 urls in the matter of a couple of seconds… Why wouldn’t they do this? (the only valid answer is that they haven’t started doing it… but could at any time).
Yes… let’s ignore the companies that have BOATLOADS of money and have done shit like actively attack torrents and trackers to find thousands of offenders and tied them up legally for decades. Yes, let’s ignore that risk all together! What a sane response! This only makes sense if you live somewhere that doesn’t have any reach from those companies… Even then, if you’re recommending Jellyfin to other people without knowing that they’re in the same situation as you. You’re not helping.
I thought you knew your threat model? Plex doesn’t hold a list of content on your servers. The most Plex can return is whatever metadata you request… Except that risk now is null because Plex returns that metadata for any show on their streaming platform or for searches on items that are on other platforms since that function to “show what’s hot on my streaming platforms” (stupid fucking feature… aside) exists. So that meta-data means nothing as it’s used for a bunch of reasons that would be completely legitimate. The risk becomes that they could add code that does record a list of content in the future… Which is SUBSTANTIALLY LESS OF A RISK THAN COMPLETE READ ACCESS TO FILES WITHOUT AUTH but only if you guess the magic incantations that are likely the same as thousand of others magic incantations! Like I said though several times. I’d LOVE to drop plex, BECAUSE that risk exists from them. But Jellyfin is simply worse.
You seem wildly uneducated on matters of security. I guess I know now why so many people just install Jellyfin and ignore the actual risks. The funny part is that rather than advocating for fixing it, so that it’s not a problem at all… you’re waiving it all away like it could never be a problem for anyone anywhere at anytime. That’s fucking wildly asinine when proof of concept of the attack was published on a thread 4 years ago, and is still active today. It’s a very REAL risk. Don’t expose your instance publicly. Proxied or not. You’re asking for problems.
I see we are going nowhere here. You do you, I do me.
Well, i was reading this thread and the other guy is a lot more convincing because you’re just running away.
Oh wow. That is… Bad. And the issue has gone unaddressed for 4 years now?
Would seem so. The project is open source, and nobody is getting paid. So the lack of update makes sense to some extent.
As cool as it is… and as much as I want to make plex shove it completely. Jellyfin just isn’t ready for prime-time.
I run both… Jellyfin isn’t allowed to talk outside of my network at all, and I can access it over my personal VPN… But Plex is where all my users are because anything else would just be too annoying to maintain.
Holy shit. Thanks. I actually had it exposed as I wanted some LF my Plex users to basically veta test my Hardware acceleration config on Jellyfin (another reason why I won’t switch anytime soon) but I just shut that thing down and won’t touch it until I absolutely have to