Are they just an issue with wefwef or trying to use an exploit

    • 𝙚𝙧𝙧𝙚@feddit.win
      link
      fedilink
      arrow-up
      45
      ·
      3 years ago

      Looks like it’s issuing a GET to https://zelensky.zip/save/{ENCODED_JWT_TOKEN_AND_NAV_FLAG}. The ENCODED_JWT_TOKEN is from btoa(document.cookie+nav_flag) where nav_flag is essentially 'navAdmin' if the account hit is an admin or '' if the user hit is not an admin (it checks if the admin button in the nav exists). Their server is likely logging all incoming requests and they just need to do a quick decoding to get jwt tokens and a flag telling them if it’s an admin account.

      I’d be hesitant to visit Lemmy on a browser atm 😓

          • 𝘋𝘪𝘳𝘬@lemmy.ml
            link
            fedilink
            arrow-up
            13
            ·
            3 years ago

            To prevent execution of scripts not referenced with the correct nonce:

            script-src 'self' 'nonce-$RANDOM'
            

            To make it super strict, this set could be used:

            default-src 'self';
            script-src 'nonce-$RANDOM'
            object-src 'none';
            base-uri 'none';
            form-action 'none';
            frame-ancestors 'none';
            frame-src 'none';
            require-trusted-types-for 'script'
            

            Especially the last one might cause the most work, because the “modern web development environment” simply cannot provide this. Also: form-action 'none'; should be validated. It should be set to self if forms are actually used to send data to the server and not handled by Javascript.

            The MDN has a good overview: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

        • 𝙚𝙧𝙧𝙚@feddit.win
          link
          fedilink
          arrow-up
          5
          arrow-down
          1
          ·
          3 years ago

          I’d be willing to bet they’re using the API to make all the changes. The cookie has the jwt token. I don’t believe you need the username (at least judging by the js API docs).