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.

  • LuckyLu@lemmy.world
    link
    fedilink
    arrow-up
    29
    ·
    1 year ago

    Very impressed by how quickly action has been taken by this and other instances to patch the issue.

    • Darkard@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 year ago

      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)

      • LuckyLu@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        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

        • Carnelian@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          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

      • LuckyLu@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        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.

        • grissee@lemm.ee
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          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)

          • LuckyLu@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            1 year ago

            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”.

            • grissee@lemm.ee
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              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

              • LuckyLu@lemmy.world
                link
                fedilink
                arrow-up
                0
                ·
                1 year ago

                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.

  • ThisIsMyLemmyLogin@lemmy.world
    link
    fedilink
    arrow-up
    25
    ·
    1 year ago

    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.

    • Riskable@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      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 👍

      • Ready! Player 31@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 year ago

        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.

      • bev@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        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.

    • vacuumflower@lemmy.sdf.org
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      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.

      • jarfil@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        How about cleaning the bottom 10%'s debt, with the earings from one week of the top 0.1%?

        • DreadTowel@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          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.

          • jarfil@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            1 year ago

            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).

            • DreadTowel@lemmy.world
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              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.

        • vacuumflower@lemmy.sdf.org
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          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.

          • sab@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            1 year ago

            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.

            • vacuumflower@lemmy.sdf.org
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              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).

          • jarfil@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            edit-2
            1 year ago

            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

            • vacuumflower@lemmy.sdf.org
              link
              fedilink
              arrow-up
              1
              ·
              edit-2
              1 year ago

              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.

  • wazoobonkerbrain@lemmy.world
    link
    fedilink
    arrow-up
    17
    ·
    1 year ago

    IMPORTANT ANNOUNCEMENT: My account was not among those hacked. Any random bullshit appearing in my post/comment history was written by me.

    • Drewfro66@lemmygrad.ml
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      On the other hand, the “attack” seemed to just be mostly harmless griefing and it’s good for these sorts of vulnerabilities to be found early.

  • Vamp@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    1 year ago

    what steps are being taken to ensure it doesn’t happen again? was any personal data compromised for users?

      • BustedPancake@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        So all our cookies are negated now with the JWT changed, and we just needed to login again? Can attackers have stolen our cookies in order to use our accounts to post as if it was us? I’m sure they were only interested in admin cookies, so most others were “useless” to them? I see nothing wrong with my posts so I should be safe, right?

        • cantevencode@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          Prior to the JWT secret being rotated, yes, they could have authenticated as you. The tokens are now all invalid and useless

        • Rooki@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 year ago

          If you think they could change your password:

          YES, they could.

          They could have changed the email => “Forgot PW” and with that you lost ur account.

          • Xero@lemmy.world
            link
            fedilink
            English
            arrow-up
            0
            ·
            edit-2
            1 year ago

            I think I’ve lost my account, I clicked Forgot Password and nothing came into my mailbox. This account is the one I made just now.

            My old account:

            If you see that account post or comment on anything, please report it

            Edit: Nvm, I use another email to sign up for Lemmy and forgot about it

              • Xero@lemmy.world
                link
                fedilink
                English
                arrow-up
                1
                ·
                1 year ago

                actually nevermind, I forgot that I use a different email for Lemmy, I can log back in now

      • Vamp@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        Also I am curious, what’s the easiest way to currently reach the admins in case this happens again somehow? Two of them on their account have been seemingly inactive for a month and as per your own statement you rarely check your notifications and dms. Is there a discord somewhere for it?

  • dorumon@lemmy.world
    link
    fedilink
    arrow-up
    4
    ·
    1 year ago

    Well that’s just great it really is a shame though how some people would actively want to ruin something free like this just because they can.

    • luffyuk@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      “Some people just want to watch the world burn”

      On a positive note. It’s much better that these things happen and vulnerabilities are discovered while we’re still a small-ish community.

  • Sam1232188@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    Thank the heavens the meme community stayed safe through this without my daily dose of cybersecurity memes idk how I would function ;)

  • Marek Knápek@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    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.

    • abhibeckert@lemmy.world
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 year ago

      I’m old-school developer/programmer and it seems that web is peace of sheet. Basic security stuff violated:

      I’m a modern web developer who used to be an old-school one.

      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.

      Yeah - pretty much, though there are some mitigating factors.

      Strictly speaking, it was the alt text for the emoji. Alt text is HTML, and rather than allow arbitrary HTML they allowed another language called Markdown. Markdown is “a plain text” language with human readable syntax specifically designed to be converted into HTML.

      Markdown is the right format to use for emoji alt texts, but you do need to be careful of one thing - the original purpose of Markdown was to allow HTML content to be easier to write/read and it is a superset of the HTML language. So arbitrary HTML is valid markdown.

      Virtually all modern Markdown parsers disable arbitrary HTML by default, but it’s a behaviour which can be changed and that leaves potential for mistakes like this one here. Specifically the way Lemmy injected emojis with alt text into the Markdown content allowed arbitrary HTML.

      This wasn’t an obvious mistake - the issue over on Lemmy’s issue tracker is titled “Possible XSS Attack” because they knew there was an XSS Attack somewhere and they weren’t immediately sure if they had found it in the emoji system. Even now reading the diff to fix the vulnerability, it still isn’t obvious to me what they did wrong.

      It’s fairly complex code and complexity is the enemy of security… but sometimes you have to do complex things. Back in the “old-school” days, nobody would have even attempted to write something as complicated as a federated social network…

      JavaScript (TypeScript) has access to cookies (and thus JWT). This should be handled by web browser, not JS.

      Yeah - the Lemmy developers made a mistake there. There are a few things they aren’t doing right around cookies and JWT tokens.

      Hopefully they fix it. I expect they will… It was already actively being discussed before this incident, and those discussions have been seen by a lot more people now.

      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.

      There are several levels of isolation that could have blocked this:

      1. Users should not be able to inject arbitrary HTML.
      2. A flag on the page should be set telling the browser to ignore JavaScript in the body of the page - this is a relatively new feature in the web and disabled by default for obvious backwards compatibility reasons, but it should be set especially on a high value target like Lemmy, and I expect once it’s been around a little longer browsers will enable it by default.
      3. A flag should have been set to block JavaScript from contacting an unknown third party domain. Again, this isolation is a relatively new web feature and currently disabled by default.
      4. As you say, JavaScript shouldn’t be able to access the JWT token or the cookie. That’s not a new feature in the web, it’s just one Lemmy developers didn’t take advantage of (I don’t know why)
      5. Even if all of those previous levels of isolation failed… there are things Lemmy should be doing to mitigate the attack. In particular instance admins have had to manually reset JWT tokens. Those tokens should have expired somehow on their own - possibly the moment the attacker tried to use 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.

      Yep - the modern best practice is for admins to manage the site via a completely different system. That adds considerable complexity and cost though, so it’s rarely done unfortunately. But you know, Lemmy is open source… so if someone wants to take on that work they can do it.

      I’ll add one more - it should have taken less time to close the exploit… but given this is the first serious exploit I’ll forgive that.

      Ultimately several of failures contributed to this attack. I expect many of those failures will be corrected in the coming weeks, and that will make Lemmy far more secure than it is right now - so that next time there’s a bug like the one in the Markdown parser it isn’t able to cause so much disruption.

      The good news is no harm was done, and a lot of people are going to learn some valuable lessons as a result of this incident. Ultimately the outcome is a positive one in my opinion.

  • Ahmed@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    Thanks Ruud for fixing it! Just a reminder guys that If you are using a third party app you need to login again.

  • trouser_mouse@lemmy.world
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    First - really good summary and sounds like everyone is working hard.

    Cross posting the below comment.

    Under GDPR if you have had a data breach you have a legal obligation to assess whether you need to report it and you must make the report within 72 hours of discovering the breach.

    There are other types of reportable breaches too, I only mention data as it sounds most likely. You may or may not be subject to PECR which may also have been breached although less likely. I don’t really have enough familiarity with the regulation to discuss that one.

    If you are not sure if there has been a breach you may also need to discuss it with the relevant body or make a report.

    Please can you update what action you have taken regarding this and if the incident was reportable or not and the reasons why. Edit - from that new information, it sounds like this is a reportable breach.

    For a full understanding, it would be good to know if you had 2FA enabled on the compromised account particularly as it had admin privileges and if so how 2FA was circumvented with this exploit.

    It would also be good to know what measures you have in place to prevent the same or other malicious attempts on your Open Collective and Patreon accounts as issues with those are potentially more serious. They may not be vulnerable to this, but it is going to be reassuring to know there is good security practice, 2FA protection etc enabled and you have robust procedures in place.