While I was asleep, apparently the site was hacked. Luckily, (big) part of the lemmy.world team is in US, and some early birds in EU also helped mitigate this.
As I am told, this was the issue:
- There is an vulnerability which was exploited
- Several people had their JWT cookies leaked, including at least one admin
- Attackers started changing site settings and posting fake announcements etc
Our mitigations:
- We removed the vulnerability
- Deleted all comments and private messages that contained the exploit
- Rotated JWT secret which invalidated all existing cookies
The vulnerability will be fixed by the Lemmy devs.
Details of the vulnerability are here
Many thanks for all that helped, and sorry for any inconvenience caused!
Update While we believe the admins accounts were what they were after, it could be that other users accounts were compromised. Your cookie could have been ‘stolen’ and the hacker could have had access to your account, creating posts and comments under your name, and accessing/changing your settings (which shows your e-mail).
For this, you would have had to be using lemmy.world at that time, and load a page that had the vulnerability in it.
IMPORTANT ANNOUNCEMENT: My account was not among those hacked. Any random bullshit appearing in my post/comment history was written by me.
Very impressed by how quickly action has been taken by this and other instances to patch the issue.
Very, seems like great work.
Hijacking the top comment to say I had problems with logging in to Lemmy.world today and liftoff was failing in odd ways.
I had to go into my web browser and clear my site cookies for lemmy.world to let me log in there.
In liftoff I had to go into the app settings in android to clear the cache and then remove and re-add my account for it to be able to log me in. (Press and hold on the account to remove it)
I’m on iOS with the Memmy app. It’s a work in progress that’s officially unfinished so I’m not surprised but it has also been a bit buggy. Doesn’t seem that I can log out without deleting and reinstalling the app so hopefully this doesn’t happen too often XD
So I was actually just struggling with that myself, also in the Memmy app in case that isn’t clear
What I did was add my account (again)
There was no warning or anything, and it populated the list with two of me.
At that point, a “delete account” option appeared under both of them. So I guess in normal circumstances, it wants you to keep one account around at all times?
I deleted one of them, and the app basically reinitialized. Both were gone and it showed me the welcome screen.
I logged back in, and now everything is back to normal
Ah interesting. I’ve had multiple accounts from the start so it was much easier for me. Just removed my main account and added it back.
Finally I found good instructions, was about to delete and reinstall until I followed this!
I just did edit account and then saved, it seemed to trick it into logging in again (secrets on my instance were also reset).
Interesting. Definitely could be made clearer, I’ll make a post on the GitHub later about some of my suggestions.
Whoops, glitched double response.
I found I didn’t actually have to log out, just go into account settings and reconfirm everything without changing it
No you can. You just remove the account from the accounts list. It’s labeled “delete this account” which is scary but it just removes it from Memmy. You can add it right back and that logs you back in. Not a great experience.
I sure hope this doesn’t happen a lot. This kind of barrier hurts site growth. I’ve managed a lot of large sites and seen a lot of bugs and when everyone gets logged out there is a measurable impact, and some folks never return. Just look at all the comments here saying “thank I didn’t know to do that.” For every one of those there are 100 people going “huh… Lemmy is down… oh well… on to something else…”
I was I able to upvote anything or subscribe. Seems like uninstalling and reinstalling fixed my issue
thanks for posting this, I wouldn’t have figured that out lol
How have I never thought of comment hijacking?!
deleted by creator
uh, why did you have negative one dislike?
Negative one upvotes would mean that enough people disliked me/another poster to bring my upvote total to zero. (Upvotes and likes are effectively the same thing, it’s just a naming convention). Reddit totals them up and seemingly Lemmy does as well.
huh that’s weird (yes I meant negative one downvote), I already know that the total can be either positive or negative, but shouldn’t the upvote number and downvote number be either positive or zero? (for now I’ll just accept it as a lemmy bug/ inconsistencies between instances)
Nope, just like Reddit it’s a value that ranges between negatives and positives. If I get two thousand upvotes, positive 2k. If I get two thousand downvotes, negative 1999 (because iirc you start with one by default).
Not exactly sure I understood what you meant by “either positive or zero”.
see your comment rn, it has 1 upvote (from yourself by default) and 0 dislike (so it’s not shown)
but in the screenshot I sent above you got 287 upvote and minus -1 downvote (making your total 288) which is mathematically correct but seems like an unintended behavior
for example this comment of mine normally have 9 upvote and 2 downvote (which is shown as a positive integer 2, not negative), making my total upvote 7
Just occurred to me that the app I use also shows separate counters. I fooled myself into thinking it was a single counter.
That’s interesting. Remember it’s a very new platform, minor bugs aren’t out of the ordinary.
I wish hackers would invest their time in clearing credit card debt, deleting hospital fees, or something else that actually serves the public good, instead of hacking ordinary people just trying to get by.
Deleting hospital fees/debt is very dangerous… In many HUGE regions in the US there’s only one hospital and if that hospital suddenly can’t pay its bills it could shut down, leaving a whole lot of completely innocent people in a very sad, people-are-dying sort of state.
In fact, something like this already happened:
https://www.cbsnews.com/chicago/news/st-maragrets-health-central-illinois-hospital-closing/
Hospitals are special in that they’re often evil organizations (not all though) that are some of the easiest to hack but also provide critical services to the most vulnerable. One should tread lightly. Political solutions are better (hack some politicians that are against healthcare reform instead).
Clearing credit card debt via hacking is nearly impossible but I agree it would be a much more ethical choice for hackers to target. I used to work for the credit card industry. My unique insider perspective, deep industry knowledge, and personal experience is here to let you know they suck. They are just as evil and unethical and unnecessary as everyone thinks they are! Seriously: If Visa, MasterCard, American Express, and all the lesser players suddenly disappeared the world would be a better place.
Before that can happen though people need a backup payment method that doesn’t go through their systems and no: Cash won’t work (there’s not enough in circulation and it’s dangerous to carry large amounts of it). The credit card companies know this threat exists which is why they lobbied Florida (and probably other states) to outlaw alternative, government-run forms of payment (e.g. central bank currency).
As soon as people have a widely accepted payment option that doesn’t go through Visa and MasterCard’s middlemen (e.g. First Data) then hackers can take their gloves off! Until then though… Let’s keep the payment infrastructure working, OK? Thanks!
There’s no limit to the amount of good deeds hackers can do though. So let’s encourage that! For example, there’s plenty of cartels and evil religious organizations (e.g. Taliban, ISIS, Mormon Church, Prosperity Gospel scam artists) that have plenty of money to spare and enormous attack surfaces 👍
Hospitals are special in that they’re often evil organizations
Just want to state the obvious and say, this is pretty much only the case in the US.
I think the alternative payment systems in the developing countries are actually good. UPI in India is very utilitarian. China also has the wechat thing. I guess the issue with these are that they are not universal and limited to a single country.
Considering some of the targeted instances and the stuff they left behind, it was likely some nazi.
Removed by mod
I thought we weren’t going to be Reddit-brained over here
Reddit, Threads, Twitter, Elon, and, Zuck seem to be all people know how to talk about in the more popular communities.
And don’t forget circle jerking about how the average IQ of a Lemmy user is higher than average.
As I pointed out in the thread it was probably a few Lemmy users themselves that did it.
And some people do it for teh lulz.
Not everything has to be some conspiracy theory.
Yeah it seems like the attack wasn’t “malicious” per se in that the attacker didn’t seem to want to completely take down the site. They just seemed to want to mess with everyone by redirecting to lemon party and other mildly shocking things like racist remarks. Reads more like a bored person to me than anything.
2008 4chan humour
Gotta bring back the classics
Pool’s closed, sorry!
it doesn’t matter who, it’s the “why”. They get nothing from this, the only one who benefits from Lemmy going down is spez
I’ve sat at keyboards beside people studiously working their own. My presumption was that we were working on the same project. Then they have their AHA moment, and show me how they’ve hacked into our host machine.
They didn’t do it for money or to cause disruption. They did it to see if they could, and succeeding was reward enough. Then, happy as could be, they set off in pursuit of their next accomplishment.
Ya never know what’s going through others’ minds or what motivates them.
If anything an annoyed Reddit “hacker” doing it to see if they could and for the lulz
Nah. There’s far too much risk for Reddit to be involved. If even one hacker spilled the beans it’d cause a massive panic for Reddit investors.
I mean if they spilled the beans, we’d have to upvote them.
“It would be extremely stupid and would inevitably backfire if reddit was responsible. Seriously, if spez has one ounce of foresight he would not be involved.”
Well you have convinced me reddit is behind it.
There’s a huge difference between alienating people in an effort to make the website profitable, and outright paying hackers to go after Lemmy, which would be a criminal action. Let’s not get all big brain on here and pretend Lemmy.world is a threat to Reddit and is pulling away tons of users, to the point that Spez needs it out of commission. I didn’t jump here from Reddit to promote conspiracies
It’s well established that Rdeadit* doesn’t make foolish moves. /s
I’m not saying they’re behind this. I think they are not. But I’m not ruling them out because of their acumen.
During the event a message flashed on my screen, “This website has been seized by Rdeadit for copyright violation”. That suggested two things to me. Rdeadit didn’t write that. Whoever did write it doesn’t understand how a domain would legally be seized.
clearing credit card debt, deleting hospital fees, or something else that actually serves the public good,
Inflation does very clearly not serve the public good. That aside, causing havoc in banks and medical institutions would have other unpleasant effects.
How about cleaning the bottom 10%'s debt, with the earings from one week of the top 0.1%?
I already know I’m gonna be downvoted for this, but the top 1%/0.1% spending isn’t gonna change, whereas the bottom 10% will cause inflation… That’s why there’s no magic bullet.
The bottom 10% don’t have enough money to “cause” inflation, not even the bottom 90% have that much money. Inflation is driven by the top 5-10%, representing 70% of the wealth; the rest just get taken for the ride.
You’re right the top 1%'s spending won’t change, it’s already 1000x above a person’s basic needs, so what’s the difference between 1000x and 900x (10% inflation).
Exactly, the bottom 10% don’t have enough money, meaning that any money you give them will go towards consumption. The top bracket’s spending as % of income or wealth is tiny and is mostly independent of their income. Their money is spent on investments, not basic goods and services. They practically don’t affect inflation.
I think money should be printed during periods of low inflation. E.g. Japan could have benefited from that. After this bout is over, governments can return to printing, carefully.
Ah, you mean unauthorized “redistribution”, not unauthorized “vanishing debt”.
Technically should do less harm in terms of inflation, but money lying around is different from money being used, so there’ll still be an increase in inflation.
The part about causing havoc - kinda same, there may not be direct inconsistencies as in the initial variant, but there’ll still be some confusion due to the “top 0.1%” possibly being petty and trying to get their money back.
I frankly prefer changing the rules so that there’d be fewer artificial barriers for competition and economic efficiency to this. Say, patent law and trademark laws and IP laws have basically outgrown their usefulness and are now just a plague. Same with various licenses and practices for medical/pharmaceutical stuff (I know that things should be tested and an average person can’t tell a hoax from a normal thing, just entities doing certification shouldn’t be able to block stuff which would then be used to create oligopolies). Same with telecom. And so on.
Except for air traffic, water traffic, road traffic and radio, of course. Not regulating those would mean, eh, real havoc.
you mean unauthorized “redistribution”
Fine, let’s do taxes: how about cleaning the bottom 90%'s debt, with the income from 4 months of the top 0.1%.
…and that’s just 30% income tax, it used to be 90% for the rich right after WWII: History of taxation in the United States
It’s not that simple, there’s a response of the “top 0.1%” moving their property elsewhere or distributing it by various legal means so that they’d have to pay less.
In dumb terms, you have to design a system where 4 people collectively owning 4bln$ would pay the same as 1 person owning 4bln$. Not even mentioning that they can have N friends abroad.
Also there are still “rich” people in Scandinavian countries, who may not directly own nearly as much as Bill Gates, but still have enormous power.
Also this will, in fact, affect inflation.
My point is - money represents power, which is convertible into other means, you can tax money or property, but you can’t universally tax power.
Money-wise (as a universal equivalent in a non-coercive system) you can at least somewhat clearly evaluate that power. If you scare powerful people off to convert their power into more obscure media, you won’t have that clarity.
So I don’t see this as a problem one can solve, but I see other problems more accessible, like patent\IP\trademark\certification laws.
I have no idea why you got down voted, but you’re right
Well, I honestly in a way write such comments in a tone more likely to irritate people. Maybe not consciously. I just happen to have grown in a family and in groups where disagreeing and arguing was not considered disrespectful, and I am ironically not very tolerant to the other way of looking at this.
(Should think about this more often when I want to complain about life - some people were not that lucky.)
Seems that a chunk of this platform’s userbase are people generally angry at the establishment who upvote everything that wants to bring it down and downvote everything that rejects the idea. Happy that there’s many reasonable people here too :)
I’m generally angry at the establishment too, it’s just that I see that establishment being pretty friendly to leftist ideas on economics in everything but direct admission of it.
You’re ruining the circlejerk with your realism! 😠
Edit: I think Mr. Robot gave a good glimpse what would happen if all debts were wiped. It sounds fun on paper, but in the end, the people with the least money would suffer the most.
I personally just lose any interest in conversation when I realize that my counterpart doesn’t want a working system or a better world or really some justice, they simply want to rob someone who has more than they do. No deeper purpose or something, just plain envy.
It’s like certain moments in sex. So bloody frustrating.
And, of course, the only leftists I’ve encountered who wouldn’t be what I describe were book characters. Yeah, nice characters, fascinating, really making me wish something like this was possible, but even with the depth limitations for describing an entire person on paper they were still deeper that RL leftists, FFS!!!
I have at least met living sincere good-willing ancaps and living sincere good-willing fascists (sic) even. The only people I know in person I could possibly call a real sincere good-willing leftist would be my sister, and maybe one of my cousins, and one DM (though from a few conversations I suspect he just has, eh, a leftist background, but is more literate in economics than such people usually are).
Please don’t confuse wealth and money.
What about earnings and income?
Top 0.1% don’t have earnings and income.
Having a dedicated sub for bad understanding of economics seems stupid, it’s already spread over all subs, it’s normal.
Of course, the extremes of bad economics would be usually found someplace with “soc” in the name.
I’m saying your statement is bad economics. Debts get discharged all the time and they have no impact on inflation. It’s called the Bankruptcy System and it’s been a part of American economic reality since the mid-1800s.
Debts get discharged all the time
Yes, so?
and they have no impact on inflation
Measured by whom? Logically they should.
It’s called the Bankruptcy System and it’s been a part of American economic reality since the mid-1800s.
So in your idea of good economics it doesn’t matter for inflation if debt of NxM total gets discharged per month or of NxK total per month where K is much bigger than M?
I just don’t get that pretentious acting.
Logically they should.
No, they shouldn’t. The money supply is unaffected by discharges.
So in your idea of good economics it doesn’t matter for inflation if debt of NxM total gets discharged per month or of NxK total per month where K is much bigger than M?
Discharge does introduce short-term shocks but it’s not the doomsday scenario you’re painting it to be. We did it in the 1800s and it was mostly fine compared to the regular bank panics before the greenback was adopted.
The money supply is unaffected by discharges.
Ah, OK. Maybe “inflation” is the wrong word, but there’s a response. Insurance becomes more expensive, loans become more expensive, basically everybody for whom such an event is a risk reacts to its probability growing.
but it’s not the doomsday scenario you’re painting it to be
Well, I’m not saying it’s literally a doomsday scenario, just that it likely wouldn’t benefit the person dreaming about it more than it would harm them.
“Marty we started this journey together!”
“It was a prank, Cos’!”
Ribbit
So what happened:
- Someone posted a post.
- The post contained some instruction to display custom emoji.
- So far so good.
- There is a bug in JavaScript (TypeScript) that runs on client’s machine (arbitrary code execution?).
- The attacker leveraged the bug to grab victim’s JWT (cookie) when the victim visited the page with that post.
- The attacker used the grabbed JWTs to log-in as victim (some of them were admins) and do bad stuff on the server.
Am I right?
I’m old-school developer/programmer and it seems that web is peace of sheet. Basic security stuff violated:
- User provided content (post using custom emojis) caused havoc when processing (doesn’t matter if on server or on client). This is lack of sanitization of user-provided-data.
- JavaScript (TypeScript) has access to cookies (and thus JWT). This should be handled by web browser, not JS. In case of log-in, in HTTPS POST request and in case of response of successful log-in, in HTTPS POST response. Then, in case of requesting web page, again, it should be handled in HTTPS GET request. This is lack of using least permissions as possible, JS should not have access to cookies.
- How the attacker got those JWTs? JavaScript sent them to him? Web browser sent them to him when requesting resources form his server? This is lack of site isolation, one web page should not have access to other domains, requesting data form them or sending data to them.
- The attacker logged-in as admin and caused havoc. Again, this should not be possible, admins should have normal level of access to the site, exactly the same as normal users do. Then, if they want to administer something, they should log-in using separate username + password into separate log-in form and display completely different web page, not allowing them to do the actions normal users can do. You know, separate UI/applications for users and for admins.
Am I right? Correct me if I’m wrong.
Again, web is peace of sheet. This would never happen in desktop/server application. Any of the bullet points above would prevent this from happening. Even if the previous bullet point failed to do its job. Am I too naïve? Maybe.
Marek.
Good thing we all use randomly generated passwords for every account and always remember to change them every few months.
This is really good to see such transparency from admins
Ikr! This is really great to see!
Thank the heavens the meme community stayed safe through this without my daily dose of cybersecurity memes idk how I would function ;)
Thanks Ruud for fixing it! Just a reminder guys that If you are using a third party app you need to login again.
Further 3rd party heads up – for us nontech refugees:
If it looks like you are logged in, you may not be. I use Connect, and at your reminder, I clicked my acct and it says I was logged in. I tried to comment that Connect login was working, and my comment didn’t show up.
I tried again, only to see an ”error: not logged in” message pop up.
Signed out, signed in again manually, and all is well.
So do a double check, Lemurs. Trust in your actions, not your eyes.
Can confirm. Was like: “Memmy is fine!” — **Narrator:**nope. It was not.
Thanks for the info! Here is my test to see if I’m actually logged in.
For capable people this is a minor annoyance but whenever there’s an “everyone needs to login again” issue, we will lose mere mortal users. In this case it wasn’t even clear that was needed - I appeared to be logged in but nothing worked. Ordinary users give up over things like this. I’ve seen it happen many times on sites where I had access to the analytics. I hope we regard this as a really bad thing to be avoided at all costs and not a “no big deal, just log in again.” Easy for you, easy for me, many others will just bail.
Thank you.
In case anyone else is having trouble logging in, my password wasn’t working so I had to reset it from the website.
So now I can log in via a 3rd party app but not the website (with the new password that I reset via the website.)
I’m currently posting from the 3rd party app. Digging around to try and find 2FA settings for Lemmy.
Someone else commented that cookies need to be cleared on the website (again, for anyone else reading this and having issues.)
deleted by creator
Thanks for the heads-up.
One wonders how much spez paid for that hack.
You guys really have my highest respect for spending so much time to keep this running, despite all the recent trouble and now even an attack.
Thank you very much <3 You guys are awesome and I really appreciate how publicly you deal with this.
I think this is a strong reminder: We shouldn’t put all our eggs in one basket. This will happen again. Unlike Reddit, we don’t need to concentrate all communities on one instance. We should all make an effort to spread out. Some other general use instances are:
Again, for those new, you can post content to any of these instances and interact with content from other instances at the same time, just like you can send an email from your Gmail account to your ProtonMail account.
FYI: I had to clear my lemmy.world cookies in order to be able to successfully log back in.
(This was with Firefox)
(Edit: I also shift-clicked reload, which somebody pointed out does clean the cache for that page, so I also cleaned the cache).
Likewise, on Liftoff I had to delete my account and re-login
The same thing was required with Vanadium. In the past, issues with the site only required clearing the cache. However, this one requires clearing the cache and cookies.
Clearing cache and cookies alone didn’t work for me, the login button just wasn’t working after I typed the password in. I ended up doing a password reset, opening the reset link in a private/incognito browser window and choosing a new password, and then my new password worked to log me in with my normal browser window.
I didn’t actually clean the cache, only the cookies.
Unless the force reload (i.e. pressing shift + clicking the reload icon) cleans the cache.
I actually tried the most minimal clearing possible (because having to re-login for all the other things in other pages and tabs on the browser is a PITA) and so only cleaned the cookies from the lemmy.world domain and then did a shift-reload of the lemmy.world page only.
Yeah, I think shift + refresh button clears the cache for that page. At least that’s my experience with web development
Any truth to what I’ve heard this may have been done by a group we defederated with?
Thanks for fixing and being so open about it
Do we have any details on how Michelle’s account was compromised? Right now in the GitHub issue about the vulnerability they’re clueless about how the custom emoji exploit could be performed without first an already compromised admin account.
EDIT: yeah here’s how: https://github.com/LemmyNet/lemmy-ui/issues/1895#issuecomment-1629326627
You do NOT need an admin account to do that. Any normal user could have done that.
They are incorrect I believe. An unprivileged account could change the markdown to contain malicious code before posting. Though through the admin panel one could modify an emoji and make the code embed anywhere that emoji was used not just where the attacker posted it.
Source: I watched it happen on hexbear.net (there they did not get any admins, but there was an attempt)
An unprivileged account could change the markdown to contain malicious code before posting.
How? I kept trying it yesterday without any luck, even with manual POST requests. The markdown (at least in the comments) seems to be properly escaped.
you’d have to find an unpatched instance to try it on I guess, I’m just telling you what I saw. Maybe hexbear’s emoji code was modified from upstream. What happened there was:
A new user showed up and posted one emoji in the megathread to get a couple of established accounts’ tokens, and then used those established accounts to first, DM spam the admins with the token stealer, then when that failed, spam porn/gore. It was cleaned up in nearly real time, and they definitely didn’t compromise an admin account first.
I can look for more details in a bit
I just figured out how: https://github.com/LemmyNet/lemmy-ui/issues/1895#issuecomment-1629326627
Yeah, an admin account is absolutely not necessary.
So, simply viewing a comment thread with a maliciously-altered emoji (on an unpatched instance) was enough to compromise your account?
Pretty much. The hacker sent me a DM with the emoji which contained the malicious code. All I did was open and read it. I’m proud of the team that worked until 2 AM to not only revert the changes, but fix the exploit.
Damn. This is why Adkins should have separate admin tools that aren’t part of there main Lemmy usage
AlmightySnoo is posting in Github a lot. I’m assuming that the user above has been trying it on the older, unpacked, docker instance.
@AlmightySnoo Correct me if I’m wrong of course.