I don't know who needs to hear this, but DO NOT EVER expose Jellyfin to the internet


Collection of potential security issues in Jellyfin This is a non exhaustive list of potential security issues found in Jellyfin. Some of these might cause controversy. Some of these are design fla...
in reply to Zozano

Hacking, even on an insecure system, would be illegal. Any copyright troll trying to sue a single user for having a private jellyfin instance which they hacked to find out about would probably have a hard time actually making a case.

"Yeah, this one guy was distributing films to himself and a few friends. I know because I hacked him" doesn't seem like a good case.

in reply to walden

Not unless the reverse proxy adds some layer of authentication as well. Something like HTTP basic auth, or mTLS (AKA 2-way TLS AKA client certificates)

For nginx: docs.nginx.com/nginx/admin-gui…

so if I add a user ”john” with password “mypassword” to video.example.com, you can try adding the login as: “https://john:mypassword@video.example.com”

Most HTTP clients (e.g. browsers) support adding login like that. I don’t know what other jellyfin clients do that.

The other option is to set up a VPN (I recommend wireguard)

This entry was edited (1 year ago)
in reply to walden

in reply to Scary le Poo

It's a list from 2021 and as a cybersec researcher and Jellyfin user I didn't see anything that would make me say "do not expose Jellyfin to the Internet".

That's not to say there might be something not listed, or some exploit chain using parts of this list, but at least it's not something that has been abused over the last four years if so.

in reply to troed

The last set of comments is from 2024. These have not been addressed. The fact that it is possible to stream without auth is just bonkers.

The entirity of jellyfin security is security via obscurity which is zero security at all.

"As a cybersec researcher", the limp wristed, hand wavy approach to security should be sending up alarm bells. The fact that it doesn't, means that likely either, you don't take your research very seriously, or you aren't a "cybersecurity researcher".

"Thank you for this list. We are aware of quite a few, but for reasons of backwards compatibility they've never been fixed. We'd definitely like to but doing so in a non-disruptive way is the hard part."

Is truly one of the statements of all time.

This entry was edited (1 year ago)
in reply to Link

It isn't randomly generated. If you read through you would have known that.

Also, Rainbow tables.

tldr, Rainbow tables are precomputed lists of hashed values used to crack password hashes quickly. Instead of hashing each password guess on the fly, attackers use these tables to reverse hashes and find the original passwords faster, especially for weak or common ones. They're less effective against hashes protected by a unique salt.

This entry was edited (1 year ago)
in reply to Clent

If the server is using a standard path prefix and a standard file layout and is using standard file names it isn't that difficult to find the location of a media file and then from there it would be easier to find bore files, assuming the paths are consistent.

But even for low entropy strings, long strings are difficult to brute force, and rainbow tables are useless for this use case.

in reply to troed

Agreed, this is a valid list of minor concerns but this is just a fearmongering post. It’s not good that some metadata can leak but if you take normal precautions (i.e. don’t run this next to your classified information storage) it’s fine to open this so your friends can watch media.

Source: me and my Masters degree in cybersecurity (but apparently OP just learned about Kerckhoff’s principle and rainbow tables in a completely incorrect context so I know how to do my job or smth lmao)

Edit: lol don’t look at OPs post history, now I know where the fearmongering came from

This entry was edited (1 year ago)
in reply to ilega_dh

This entry was edited (1 year ago)
in reply to Scary le Poo

Who has the technical wherewithal to run Jellyfin but leaves access on the open web? I get that sharing is part of the point, but no one's putting their media collection on an open FTP server.

The level of convenience people expect without consequences is astounding. Going to be away for home for a few days? Load stuff onto an external SSD or SD card. Phoning home remotely makes no sense.

in reply to Powderhorn

My Jellyfin server is behind Cloudflare with IP outside of my country banned.

I got Crowdsec set up on Cloudflare, Traefik and Debian directly.

I got Jellyfin up in a docker container behind Traefik, my router opens only 80 and 443 ports and direct them to Traefik.

Jellyfin has only access to my media files which are just downloaded movies and shows hardlinked by Sonarr/Radarr from my download folder.

It is publicly exposed to be able to watch it from anywhere, and share it to family and friends.

So what? They might access the movies, even delete them, I don't care, I'll just hardlink them back or re-download them. What harm can they do that would justify locking everything down?

in reply to Powderhorn

I get that sharing is part of the point, but no one's putting their media collection on an open FTP server.


You would be very wrong about that. You can even search open FTP servers using Google

palined.com/search/

google.com/search?q=%2B%28.mkv…)%20+Superman%20+intitle:%22index%20of%22%20-inurl:(jsp|pl|php|html|aspx|htm|cf|shtml)%20-inurl:(hypem|unknownsecret|sirens|writeups|trimediacentral|articlescentral|listen77|mp3raid|mp3toss|mp3drug|theindexof|index_of|wallywashis|indexofmp3)

This entry was edited (1 year ago)
in reply to Omgboom

OK. I'll revise. No one with any sense is doing this. "Hi, RIAA and MPAA, come after me" is an asinine approach. I realize we have at least one generation unfamiliar with Napster, KaZaa and LimeWire, which replaced ratio FTP servers (which in turn replaced F-Servs in IRC). This is terrible online hygiene. You don't leave your media out there for all to see. At least password protect access before linking to your friends.
This entry was edited (1 year ago)
in reply to Powderhorn

The typical guides for installing Jellyfin and friends, stop at the point where you can access the service, expecting you to secure it further.

Turns out, the default configuration for many (most) routers, is to allow external access to anything a local service will request it to allow, expecting you to secure it further.

Leaving it like that, is an explosive combo, which many users never intended to set up, but have nonetheless.

in reply to Chastity2323

Do we even know that Plex is better? It’s closed source and hasn’t been audited afaik


Yes... because you can take the raw request your browser makes... remove your auth cookie and replay the same request and it fails.

Closed source doesn't mean that it can't be tested for problems. Just means that you can't go to the code to understand why it's a problem. You can still see that the problem exists (or doesn't in this case).

Edit: I haven't tested every api endpoint myself... but for video files it doesn't work. It's not vulnerable to the same thing that JF is in that specific case.

This entry was edited (1 year ago)
in reply to Chastity2323

It is if you have compared them together.

I haven't recently thought and I am a lifetime Plex pass user (we will see what lifetime truly means sooner or later) and I have still been unaffected by most of the changes Plex has done (watch together is the 1st valuable feature that I have lost), so if you can't expose Jellyfin then it is not better than Plex for me.

in reply to t3rmit3

aaaand now you smart tv can't connect. none of them. the clients dont even support http basic auth creds put into the URL for some crazy reason.

for advanced HTTP-level authentication you would need to run a reverse proxy on the TV's network that would add the authentication info.
for the VPN idea you would need to tunnel the TV's network's internet connection at the router. or set up a gateway address in the TVs network settings that would do that. or use a reverse proxy here too so that it repeats the request to the real server.

but honestly, this is the real and only secure way anyway. I wouldn't be comfortable to expose jellyfin even if the devs are real experts. I mean vulns get discovered, in dotnet, jellyfin dependencies, linux filesystem, and reverse proxy, and honestly who has time to always tightly keep up to date with all that.

that's not to discount the seriousness of the issue though, it's a real shame that jellyfin is so much against security

in reply to ReversalHatchery

In which case there are still ways to make it work, like putting in an SSO bypass rule for the IP of your other property. Point is, under no circumstances is it impossible to both have it be protected against scanning attacks like the ones described in the gh issue, and keep it available to use over the internet for authorized users.
This entry was edited (1 year ago)
in reply to HM King Charles III DG FD

You can always funnel all your VPN traffic through a more typical port, like 80, and there's very little anyone can do to distinguish between your traffic and typical web traffic.

If your ISP causes issues with inbound traffic to your home network, just add another link to the chain to include a cloud-hosted server, or host it all entirely in the cloud (if you find a trustworthy one with a reasonable cost).

in reply to jagged_circle

This may be easier to do on your home network’s router. For instance, mine allows me to set it up as a VPN host, and also to connect to a VPN provider. It has the option to pass all of the connected clients through the connected VPN. So for instance, if I connect my phone to my home VPN, and my home router is connected to Mullvad, my phone’s traffic also gets passed through Mullvad.
in reply to Scary le Poo

Can someone ELI5 this for me? I have a jellyfin docker stack set up through dockstarter and managed through portainer. I also own a domain that uses cloudflare to access my Jellyfin server. Since everything is set up through docker, the containers volumes are globally set to only have access to my media storage. Assuming that my setup is insecure, wouldn't that just mean that "hackers" would only be able to stream free media from my server?
in reply to GiuseppeAndTheYeti

This entry was edited (1 year ago)
in reply to

I think I understand now. Thank you! I will be changing my paths then. It's kind of a moot point since I'll change my paths anyway, but for the sake of my own curiosity, i have a follow up question. Feel free to disregard it if you don't feel like taking the time to answer.

Hypothetically, my docker setup only allows jellyfin to see /mnt/user as /storage. So jellyfin would report the path to Morbius as being:

/storage/hdd1/media/movies/Morbius_all_morbed_up.mkv

when in all actuality it would be:

/mnt/user/hdd1/media/movies/Morbius_all_morbed_up.mkv

My intuition tells me that the file path that jellyfin "sees" would be the security risk. So "/storage/hdd1/...." Is that correct?

in reply to Scary le Poo

If my server is already open to everyone, what kind of potential attacks do i need to be worried a about? I dont keep personal files on my streaming server, its just videos, music and isos/roms. I dont restrict sign ups, so the idea of an unauthorized user doing something like download a video is a non issue for me really.

I do see where there could be problems for folks running jfin on the same server they keep private photos or for people who charge users for acess, but thats not me.

Am i missing something or is the main result of most of these that a "malicious" actor could dowload files jellyfin has access to without authentication?

in reply to HappyTimeHarry

With unrestricted signups, they can obtain their own account easily. With their own account they can enumerate all your other users.

If they have their own account they can just find your instance, make a login, collect all the proof they need that you're hosting content you don't own (illegally own) then serve you a court summons and ruin your life.

I wouldn't worry about the vulnerability in the link since your already wide open. But I wouldn't leave Jellyfin wide open either. Movie and TV studios are quite litigious.

I hope you're at least gatekeeping behind a vpn or something.

Edit: typo

This entry was edited (1 year ago)
in reply to HappyTimeHarry

I guess the worst thing is that your server starts attacking the US military servers because you've become part of a botnet.

That happened to my friend one time when I installed Linux on his computer. He made the username and password the same 4-character word. Got a letter from the DoD.

I dont think they would be so forgiving these days. Especially if you're brown.

This entry was edited (1 year ago)
in reply to Scary le Poo

PluginsController only requires user privileges for potentially sensitive actions
* Includes, but is not limited to: Listing all plugins on the server without being admin, changing plugin settings, listing plugin settings without being admin. This includes the possibility of retrieving LDAP access credentials without admin privileges.


Outch

in reply to ipkpjersi

No. None of the items are closed. Click the "closed" items. All of them are "Not planned. Duplicate, see 5415".
Edit: The biggest issue of unauthenticated streaming of content...
github.com/jellyfin/jellyfin/i…

Last opened last week. closed as duplicate. it's unaddressed completely.

This entry was edited (1 year ago)
Unknown parent

lemmy - Link to source

Laristal

You can, its an option if you use tailscale. tailscale.com/mullvad

Also look into using tailscale lock to secure things more if you do decide to use it

in reply to HurlingDurling

Thank you for this list. We are aware of quite a few, but for reasons of backwards compatibility they've never been fixed. We'd definitely like to but doing so in a non-disruptive way is the hard part.


While I'm sure that some of the answer is in not having dev time to fix it... Their response makes it seem like they're not fully interested in fixing it for other reasons... In the case of this response, "Backwards compatibility".

This entry was edited (1 year ago)