Email or username:

Password:

Forgot your password?
Top-level
fiona :loading:

Pixelfed before v0.12.5 has a vulnerability where it could leak your private posts, regardless of whether you are a Pixelfed user or not.
Admins should update ASAP.

When following someone from a different server on the Fediverse, the remote server decides whether you are allowed to do that. This enables features like locked accounts. Due to an implementation mistake, Pixelfed ignores this and allows anyone to follow even private accounts on other servers. If a legitimate user from a Pixelfed instance follows you on your locked account, anyone on that Pixelfed instance can read your private posts.

I wrote a blog post about how I found the vulnerability, how disclosure coordination went and general ramblings about Fediverse safety:
fokus.cool/2025/03/25/pixelfed

#pixelfed #fediverse #activitypub

36 comments
Phil

@fionafokus@mystical.garden Hey Fiona, quick update here.

Dansup did in fact change the ToS for Loops.video after I published my blog post. However, I have seen nothing to indicate that he did release the copyrights and licenses he claimed from his users, nor that he notified anyone of the issue.

I'm not sure what happened with that, if users got notifications and and explanation or not.

Perhaps someone who used Loops.video in that time period can check their email/ inboxes and confirm that Dan isn't holding on to everyone's personal data/ image/ content any more?

@fionafokus@mystical.garden Hey Fiona, quick update here.

Dansup did in fact change the ToS for Loops.video after I published my blog post. However, I have seen nothing to indicate that he did release the copyrights and licenses he claimed from his users, nor that he notified anyone of the issue.

I'm...

Phil

@fionafokus@mystical.garden Side-question here, since I'm not very familiar with the code.

If I posted something privately, and it was visible to someone using Mastodon, who was followed by someone using Pixelfed, are there any conditions in which my private posts could have been exposed by proxy?

E.g. would it be visible by default, would it require a reaction/ renote (if possible) or a comment?

Just how large is this issue?

David - Forking Mad

@fionafokus It's and interesting read, and yet another example of lack of testing of the product before release. I'm not saying all bugs would be eliminated but there are many, some very trivial, that would never have made it through any kind of testing.

Also disappointing that common practice was not adhered to in the way security reporting/fixing was handled by the developer. Exposing risk to the community unnecessarily.

Great article.

draNgNon

@daj @fionafokus

(sort of side question, but my curiosity is sparked)
how is that sort of thing handled usually, in open source? do maintainer groups have dedicated testers or do they rely on the broader community?

obviously for something with this many users, they should not rely on just their users especially for this flavour of issue.

fiona :loading:

@draNgNon Automatic software tests would catch most of these problems. Normally a set of tests are implemented separately, by specification. They are run automatically before every merge. That way you also catch unexpected breakage. @daj

Tammi πŸ₯΄

@fionafokus @daj @draNgNon there is that activitypub test suite which also received sovereign tech fund money weee
socialweb.coop/activitypub-testing/

draNgNon

@fionafokus

oh

it ... didn't cross my mind someone would put software out there for others to use and contribute to without automated testing to ensure it would continue to enjoy being functional

I was interpreteing "any kind of testing" to mean more like QA (or I guess in the UK, they call is QC)

@daj

PaUwUle

@draNgNon @daj @fionafokus yeah technically a good idea but based upon my own experience trying to work with that project - it falls apart even earlier.

To give you a lil example. The frontend code used to be compiled and pushed into the repo by the one and only dev of this. Combining this with a beoken build process on "main" for over half a year - there was a lot of complied frontend code checked in and that was actually not matching the source alongside...

draNgNon

@paule

...i'm a release engineer. these problems, i understand and mentally associate with startup culture, which i guess is appropriate here.

@daj @fionafokus

The Nexus of Privacy

@fionafokus thank you for your work here, and your attempts to limit the damage by responsible disclosure, and the excellent writeup. I agree that there's an important discussion about the impact of this pattern of reckless behavior (and the willingness of so many cis male fediverse influencers to give it a pass and encourage people to donate to a project with this track record).

Cairo Braga [gts]

@thenexusofprivacy @fionafokus I've seen people trying to frame valid criticism against him as homophobia... it's fucking insane.

nocci [cyberpunk'd]

@fionafokus@mystical.garden
Ooph... I agree. The handling on the #pixelfed site was anything but professional.

For a software that has so many users... wow.

At least the whole thing confirms that my decision not to use this software was right

Paul Houle

@fionafokus isn't that a fundamental problem? what stops a person who wants to follow people without their consent from running their own server?

(... my suspicion is that the desire of many fediversians to be visible and invisible at the same time is one of the internal contradictions that means other platforms win)

PaUwUle

@UP8 @fionafokus that requires that that new instance has at least one account which was approved by the private account owner - the problem is that shared instances where one user has successfully requested a follow to a private account are then responsible to enforce which of their users can an can not see these posts (hope that explains it)

Jessie Nabein :neofox_peek_owo:

@fionafokus given the vuln remains in 0.12.4, couldn't a malicious actor simply setup an instance and go to town?

To me it feels as though that specific version should be blacklisted from federation then?

Troed SΓ₯ngberg

@fionafokus Thank you.

It's clear @dansup need more active co-maintainers. The project(s) suffer from the well known single-hero-dev problem.

Genders: ♾️, πŸŸͺβ¬›πŸŸ©; Soni L.

@fionafokus hmm, side-question, what makes it bad about publishing patches?

or: why does coordinated disclosure exist?(?) why does it matter that he published patches instead of following a disclosure timeline, we thought that was only a thing to avoid pissing off corporate entities/avoid lawsuits and CFAA charges?

Jay 🌺

@SoniEx2 @fionafokus

It is already explained in the blog post. If you notify instance admins in advance, without revealing details about the vulnerability, the time window in which the bug can be exploited should be shortened.

theothertom

@SoniEx2 @fionafokus The reason to have some sort of timeline/coordination is that, once the fix is public the problem is (often) obvious to attackers. Saying β€œwe will release a fix for a serious issue at this time” allows everyone who needs to patch it to be ready, so they can minimize the time they’re vulnerable.

Aaron

@SoniEx2 @fionafokus The issue with just putting the patches on the internet without any coordination is that anyone reading them might be able to reconstruct an exploit to abuse the vulnerability while server administrators do not have a chance to protect themselves, i.e., because no release is available yet.
Instead, it is good practice to coordinate this process so that the time from the patches becoming public and an update being available is as short as possible.

(Edit: public visibility)

@SoniEx2 @fionafokus The issue with just putting the patches on the internet without any coordination is that anyone reading them might be able to reconstruct an exploit to abuse the vulnerability while server administrators do not have a chance to protect themselves, i.e., because no release is available yet.
Instead, it is good practice to coordinate this process so that the time from the patches becoming public and an update being available is as short as possible.

Jennifer Moore 😷

@fionafokus

Thanks for this write-up! And thanks for your careful handling of the whole thing.

AnthonyJK-Admin

@fionafokus

That is so unfortunate. And I was thinking seriously about opening up another instance on pixelfed to allow for extended essays.

Is there a safer alternative out there that allows for more than 500-character toots and 4 images??

PaUwUle

@AnthonyJK but cant you just increase the character limit in any standard masto instance? That was configurable to my knowledge - just the default being 500...

AnthonyJK-Admin

@paule

I can't on mine, because I'm on a self-hosted paid monthly subscription plan via masto.host, and they don't allow you that privilege of increasing toot character length. I would have to sign with a separate instance from another platform like Lenny in order to have more room to toot.

thekla

@fionafokus stages of grief learning about the necessary php upgrade

edited meme using the incredulous Vince mcmahon leaning back in chair template:

first caption, mcmahon is paying attention: security fix requires new php version
second caption, mcmahon is about to lose it: security fix requires new distro version
third caption, mcmahon is falling backwards off his chair: security fix requires unstable distro version
nora 🐭 (she/her)

@fionafokus How can I check if all pixelfed instances I ever allowed followers from have updated their software?

It looks like I can't even export a list of my current followers in Mastodon...

anarcat

@fionafokus well *that* was crap disclosure handling from upstream, disappointing

christina | twyn!b

@fionafokus if i had a nickel for every software i use that required a new version of PHP in a minor/patch updat, i'd have two nickels

which isn't a lot but breaking changes go into major releases jfc

EloPup

@fionafokus

Thx a lot for making this public and for your dedication and effort.
Read your blogpost with great interest and also the further sources and links at the bottom were of great help!

Thx again!

Mario Vavti
@Fiona Wait, are you saying they are not checking if they are allowed to fetch a specific message but instead show everything they have from some sort of cache as soon as they decide the follow request was accepted?
@Emelia πŸ‘ΈπŸ»
Go Up