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.

  • hunter2@lemmy.ml
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    1
    ·
    edit-2
    1 year ago

    PGP private keys are harder to steal than JWTs, as they are not generally stored as a long-term cookie but briefly just to sign something. Through XSS (the vulnerability in this case), cookies are relatively easy to steal, but to steal a PGP key would require a more complex script able to steal the key at the time it is loaded in the browser (assuming the signing feature is implemented in the browser). It’s a bit more sophisticated, but not totally bulletproof.

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

      First of all, it’s still possible, as you said. Second, we must always take humans into consideration. Let me explain.

      Most people don’t know what PGP is, thus you can sign your posts with any crap and most won’t care.

      Out of those who know what PGP is and how to use it, most won’t be checking the posts as they will auto-assume that if it’s signed - it’s ok.

      There will be a small minority of those who care, but they can be silenced easily through social engineering.

      It is possible to integrate server side signature checks, but then again you’re vulnerable when someone gains unrestricted access to your account.

      The correct solution requires multiple features to be implemented.

      1. Lemmy web UI should move to an industry standard framework, which disables XSS and other attack vectors by default. For example, Angular.
      2. Official admin announcement, as well as important admin tasks, should require 2FA on each action. Like it’s done on GitHub, for example.
      3. Cookies should not contain JWT tokens, they should only cotain session id for read only purposes. JWT token should be moved to sessionStorage instead. It’s a lot more secure by design than cookies. You can still exploit it, but it’s noticeably harder.
      • hunter2@lemmy.ml
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        Agree with the points on PGP and other features. I almost made a lengthier reply mentioning the signing issues, which seems appropriate now. It would not be easy, but a successful implementation would definitely need clients to automatically detect and verify signed content, due to the human issues you mention. A problem is obtaining public keys from a trusted source. Maybe it could be attached to profile information with a 2FA requirement to modify it. Just an idea. In this way, verification is not dependent on the user to perform.