EDIT

TO EVERYONE ASKING TO OPEN AN ISSUE ON GITHUB, IT HAS BEEN OPEN SINCE JULY 6: https://github.com/LemmyNet/lemmy/issues/3504

June 24 - https://github.com/LemmyNet/lemmy/issues/3236

TO EVERYONE SAYING THAT THIS IS NOT A CONCERN: Everybody has different laws in their countries (in other words, not everyone is American), and whether or not an admin is liable for such content residing in their servers without their knowledge, don’t you think it’s still an issue anyway? Are you not bothered by the fact that somebody could be sharing illegal images from your server without you ever knowing? Is that okay with you? OR are you only saying this because you’re NOT an admin? Different admins have already responded in the comments and have suggested ways to solve the problem because they are genuinely concerned about this problem as much as I am. Thank you to all the hard working admins. I appreciate and love you all.


ORIGINAL POST

You can upload images to a Lemmy instance without anyone knowing that the image is there if the admins are not regularly checking their pictrs database.

To do this, you create a post on any Lemmy instance, upload an image, and never click the “Create” button. The post is never created but the image is uploaded. Because the post isn’t created, nobody knows that the image is uploaded.

You can also go to any post, upload a picture in the comment, copy the URL and never post the comment. You can also upload an image as your avatar or banner and just close the tab. The image will still reside in the server.

You can (possibly) do the same with community icons and banners.

Why does this matter?

Because anyone can upload illegal images without the admin knowing and the admin will be liable for it. With everything that has been going on lately, I wanted to remind all of you about this. Don’t think that disabling cache is enough. Bad actors can secretly stash illegal images on your Lemmy instance if you aren’t checking!

These bad actors can then share these links around and you would never know! They can report it to the FBI and if you haven’t taken it down (because you did not know) for a certain period, say goodbye to your instance and see you in court.

Only your backend admins who have access to the database (or object storage or whatever) can check this, meaning non-backend admins and moderators WILL NOT BE ABLE TO MONITOR THESE, and regular users WILL NOT BE ABLE TO REPORT THESE.

Aren’t these images deleted if they aren’t used for the post/comment/banner/avatar/icon?

NOPE! The image actually stays uploaded! Lemmy doesn’t check if the images are used! Try it out yourself. Just make sure to copy the link by copying the link text or copying it by clicking the image then “copy image link”.

How come this hasn’t been addressed before?

I don’t know. I am fairly certain that this has been brought up before. Nobody paid attention but I’m bringing it up again after all the shit that happened in the past week. I can’t even find it on the GitHub issue tracker.

I’m an instance administrator, what the fuck do I do?

Check your pictrs images (good luck) or nuke it. Disable pictrs, restrict sign ups, or watch your database like a hawk. You can also delete your instance.

Good luck.

      • @Matriks404
        link
        English
        588 months ago

        The logical fix would be to delete them automatically when unused for longer than let’s say 24 hours. That should be in the lemmy code, and we should not depend on 3rd party utilities to do that.

          • @[email protected]
            link
            fedilink
            English
            388 months ago

            Not everyone is a developer. Users are allowed to point out issues without working on fix themselves.

            • lippiece
              link
              fedilink
              English
              -18 months ago

              This attitude works on sites that provide you service. They have terms of service, and have to comply. In open source, no one owes you anything.

              See a problem? Either fix it or tell someone who can, or leave.

              • Draconic NEO
                link
                English
                28 months ago

                or tell someone who can

                That’s literally exactly what they meant by:

                “Users are allowed to point out issues without working on fix themselves.”

                • lippiece
                  link
                  fedilink
                  English
                  08 months ago

                  Other Lemmy users are not “someone who can”.

        • @[email protected]
          link
          fedilink
          English
          28 months ago

          Well, yeah. We’re saying the same thing. A script to fix this running outside Lemmy is a quick fix. But this same process should be built into Lemmy itself.

    • @[email protected]
      link
      fedilink
      English
      13
      edit-2
      8 months ago

      Or, just tighten up the api such that uploaded pictures have a relatively short TTL unless they become attached to a post or otherwise linked somewhere.

      A script is a fine stopgap measure, but we should try to treat the cause wherever possible, instead of simply addressing the symptom.

      • @[email protected]
        link
        fedilink
        English
        6
        edit-2
        8 months ago

        What’s the practical difference? In both cases you’re culling images based on whether they’re orphaned or not.

        If you’re suggesting that the implementation be based on setting individual timers instead of simply validating the whole database at regular intervals, consider whether or not the complexity of such a system is actually worth the tradeoff.

        “Complexity comshmexity”, you might say. “Surely it’s not a big deal!”. Well… what about an image that used to belong to a valid post that later got deleted? Guess you have to take that edge case into account and add a deletion trigger there as well! But what if there were other comments/posts on the same instance hotlinking the same image? Guess you have to scan the whole DB every time before running the deletion trigger to be safe! Wait… wasn’t the whole purpose of setting this up with individual jobs to avoid doing a scripted DB scan?

        • @[email protected]
          link
          fedilink
          English
          38 months ago

          There are mechanisms that exist in a LOT of services for handling TTL expiry and any relevant purging that needs to be done.

          That said, a cursory look at the pict-rs project doesn’t appear to have any provision for TTL, so it’s probably going to have to be done as a cron job anyways - or at least triggered by the lemmy service when an image upload isn’t used in an instance-local lemmy post within some reasonable interval.

          Note that I’m specifically including “in an an instance-local post” because I am assuming admins don’t want to provide free cloud image hosting to random internet people for arbitrary non-lemmy use.

          • @[email protected]
            link
            fedilink
            English
            28 months ago

            Note that I’m specifically including “in an an instance-local post” because I am assuming admins don’t want to provide free cloud image hosting to random internet people for arbitrary non-lemmy use.

            Note that I at no point allude to hotlinking from outside of the instance. Unless you want it to be possible to create an image post, delete the post, and then have an orphaned image forever (thereby creating an attack vector), you do need to solve that problem. If you solve that problem without considering crossposts and comment hotlinks within the scope of your own instance, you’re going to cause breakage. If you’re forced to consider these things before triggering the deletion regardless, then you’re not saving much on performance.

  • @[email protected]
    link
    fedilink
    English
    99
    edit-2
    8 months ago

    FYI to all admins: with the next release of pict-rs, it should be much easier to detect orphaned images, as the pict-rs database will be moved to postgresql. I am planning to build a hashtable of “in-use” images by iterating through all posts and comments by lemm.ee users (+ avatars and banners of course), and then I will iterate through all images in the pict-rs database, and if they are not in the “in-use” hash table, I will purge them.

    Of course, Lemmy can be improved to handle this case better as well!

  • @Zeth0s
    link
    English
    428 months ago

    Did you opened an issue on github?

    You are wording this as a clickbait news article.

    You find an issue, you report it to the right channel, you notify it. Good. This is how software development work, with active community reporting issues.

    But why using such tone?

    • @[email protected]OP
      link
      fedilink
      English
      328 months ago

      I’m not on GitHub. Nor is a lot here. I’m wording it this way so the issue gets the attention it deserves. Anyway, everybody already knows about this but nobody understood the consequences. Same reason why there’s no option to disable image caching. These issues should have been addressed the moment image uploading was made available in Lemmy. It was just overlooked because of how tiny the platform was then.

      It’s funny because last month Mastodon CSAM was a hot topic in the Fediverse and people were being defensive about it. Look where we are now. Has Mastodon addressed the CSAM issue? Did they follow the recommendations made by that paper? I don’t think so. There wouldn’t be an open GitHub issue about it. Will Lemmy be like Mastodon or will it addressed the concerns of its users?

      • @Zeth0s
        link
        English
        23
        edit-2
        8 months ago

        Creating a product of any size is about planning.

        If you notify here, your information will be lost in 2 days. People forget, and move on to the next hot topic. Relevant stakeholders might very well completely miss this post, because they are not 24/7 on lemmy.

        The way to make it more relevant is going in the place where the planning is done, i.e. Github for lemmy. Open an issue there, explain the problem and describe possible solution. Come back to lemmy, link the issue and ask people to react to it (i.e. show it is relevant for them).

        This is the best way to obtain what you ask. Social media platforms are too broad and fuzzy for tracking real issues.

        This is also why you see a lot of work is done on performances of sql of lemmy backend, because most issues in the past on github concerned that.

        This is my suggestion. If you really care about this being implemented, open a ticket on github and follow the discussion there. If you see there is not enough traction ask help to fellow lemmings.

        Suggestions for the github issue are:

        • be very specific
        • be polite
        • suggest solutions

        If your solution is good, great, if not, people are more willing to think about a problem to show stranger on the internet they are wrong

        • @[email protected]OP
          link
          fedilink
          English
          68 months ago

          Feel free to open the issue on my behalf. I am not a software developer. You seem to know more about this. I’m just reminding people something that I and many others have observed months ago.

          • JackbyDev
            link
            fedilink
            English
            48 months ago

            Signing up for GitHub and opening this issue would take about as long as making this post.

            • @[email protected]
              link
              fedilink
              English
              08 months ago

              You could’ve just done it yourself if you felt so passionate about it. Badgering people into action rarely works.

              • JackbyDev
                link
                fedilink
                English
                98 months ago

                I’m not badgering, I’m demystifying the process.

          • @Zeth0s
            link
            English
            2
            edit-2
            8 months ago

            I haven’t experienced myself the issue. I trust your experience, but I cannot completely reproduce/describe it, as I am not selfhosting. I couldn’t answer in case of questions from developers regarding this.

            Best would be for you to report this. You can create an issue here:

            https://github.com/LemmyNet/lemmy/issues

            There is a simple template to fill, and you can copy and paste most text from this thread.

            • @[email protected]OP
              link
              fedilink
              English
              88 months ago

              You don’t need to selfhost to reproduce this. Anyone can do this and that’s the problem.

              • @[email protected]
                link
                fedilink
                English
                48 months ago

                Not sure why you’re getting downvoted, since you gave clear instructions that anyone can follow to verify what you said.

                • @[email protected]OP
                  link
                  fedilink
                  English
                  28 months ago

                  Sadly not everyone bothered to read the post and just jumped to the comments. Again its like the Mastadon CSAM issue last month. People don’t read the paper and act so defensively about it. Now Lemmy is experiencing the same problems, people suddenly act differently?? Crazy.

      • WorseDoughnut 🍩
        link
        fedilink
        English
        48 months ago

        so the issue gets the attention it deserves.

        The other best way to do this is to actually submit the issue in the appropriate location so the Lemmy devs can track and respond to it.

        It’s been 7 hours, it can’t be that hard to make a github account and format this post into an actually helpful github issue.

        • @[email protected]OP
          link
          fedilink
          English
          28 months ago

          Rogues are very keen in their profession, and know already much more than we can teach them.

      • AphoticDev
        link
        fedilink
        English
        08 months ago

        How would they address your concerns? The chances that one of the devs follows you is nonexistent, I would wager. Instead of using the proper channels to inform them, you did the exact opposite and posted it someplace they are almost guaranteed not to see it.

    • @[email protected]OP
      link
      fedilink
      English
      238 months ago

      This is a nice tool but orphaned images still need to be purged. Mentioned on the other thread that bad actors can upload spam to fill up object storage space.

      • Nerd02
        link
        fedilink
        English
        68 months ago

        That is also very true. I think better tooling for that might come with the next pict-rs version, which will move the storage to a database (right now it’s in an internal ky-value storage). Hopefully that will make it easier to identify orphaned images.

    • Dandroid
      link
      fedilink
      English
      58 months ago

      I tried getting this to run in a container, but I was unable to access my GPU in the container. Does anyone have any tips on doing that?

      • @spamfajitas
        link
        English
        18 months ago

        Not sure how you’re trying to run it in a container, but the answer would depend on a bunch of different factors. Nvidia has a utility you can install that assists in exposing the GPU to the container, documentation found here.

        If you’re using docker compose to run it as a service, there’s a doc page for that too. Note that it uses the previous page I mentioned as prerequisite.

        There’s another way to get it working from within kubernetes that comes up every now and then on stackoverflow.

        If it’s Intel or AMD, no idea if this still applies.

        • Dandroid
          link
          fedilink
          English
          18 months ago

          Yes, this is exactly what I had trouble with. The Nvidia container runtime seems to not support my distro. But even when I tried running it on my Ubuntu machine, I was getting tons of dead links using Nvidia’s instructions. And even when I fixed the links. I was getting issues like the apt repository was throwing errors. IIRC, it was some kind of signature issue, and I’m not sure I want to ignore that, especially considering I had to fudge the URL.

          I’m thinking the best option is to build from source, but I don’t think that’s easier than just running this in a non-container.

      • Nerd02
        link
        fedilink
        English
        18 months ago

        Sorry I haven’t ran this myself yet nor have any experience with that kind of issues. But may I ask why you were concerned with running it inside of a container? Seems rather unnecessary to me.

        • Dandroid
          link
          fedilink
          English
          68 months ago

          Running anything in a container isn’t necessary. It just makes it easier to run, as it comes with all the dependencies. And if you decide you don’t want it anymore, you can just remove the container and it and all its dependencies are gone, which is really clean. It also makes the environment extremely repeatable, so people on all distros can run it with the exact same steps. And you don’t need to worry about what version of python you have and if it’s compatible with the dependencies. For example, the dependencies for this script require python 3.10 exactly. You can’t use 3.9 or 3.11.

          So really the only reason was I wanted to make it easier for everyone.

          • Nerd02
            link
            fedilink
            English
            18 months ago

            I see. I considered the dependency problem but only thought of using a venv to fix that, however you are right, the python version is also often the cause of compatibility issues.

            • Dandroid
              link
              fedilink
              English
              38 months ago

              Honestly, I’m a little sick of needing to make a venv for each python script, which is why I’m trying to put all my python scripts in containers. I already got db0’s project to the point where anyone can run it with one single command line that you can just copy/paste (assuming you have docker installed already). It is just running on the CPU, which is painfully slow.

              • Nerd02
                link
                fedilink
                English
                28 months ago

                Same, it’s the reason why I can’t stand working with python.

                Thank you for doing this, btw. Once you have something working on your hands you could consider spreading the word, maybe to db0 himself. I sure would love a convenient way to run that script, and many other admins probably would too.

            • db0
              link
              fedilink
              English
              3
              edit-2
              8 months ago

              You can go one step further and use a conda env, which would also include the proper python version. All you need then is the micromamba binary. I might develop that as all it would need is to run a shell script to start

      • Nerd02
        link
        fedilink
        English
        48 months ago

        Yeah I know. It’s supposed to be ran from your computer, not the VPS.

          • Nerd02
            link
            fedilink
            English
            18 months ago

            No. Unfortunately it only works with storages on object storages like S3 buckets, not with filesystem storages. Meaning it access the files remotely one at a time from the bucket, downloading them over the internet (I assume, I didn’t make this).

            But the more important thing is that, as it states in the readme, no files get saved to your disk, they only stay in your RAM while they are being processed and everything is deleted right after. This is relevant because even having had CSAM on your disk at some point can put you in trouble in some countries, with this tool it never happens.

            Which btw is the same reason why mounting the pict-rs folder to your local computer is probably not a good idea.

            • db0
              link
              fedilink
              English
              38 months ago

              theoretically this tool could be adjusted to go via scp and read your filesystem pict-rs storage as well, Just someone has to code it.

              • Nerd02
                link
                fedilink
                English
                18 months ago

                Interesting. That would be a nice extension, I think most small admins are using the filesystem (I know I am lol).

    • @Serinus
      link
      English
      0
      edit-2
      8 months ago

      Part of the problem with having an illegal series of bits. Of course people are going to use that as a weapon.

      I don’t think those images should be made fully legal, but maybe we should calm the fuck down about two notches. We should keep in mind that the real crime is creating the pictures. Being effectively legal bombed by them is kind of ridiculous. As is having to keep the detection tools secret.

      If you’re on a grand jury for csam, maybe you should actually see the evidence (with limited censorship) before you indict someone.

      Maybe I’m wrong, but I don’t think seeing a small number of pictures is going to scar you for life. I’ve seen goatse. I’ve seen people decapitated. It’s not pleasant, and I avoid those things, but it’s not scarring.

      The Station Nightclub Fire is scarring. I’ve recommended that video to people because it’s scarring in a way that can save lives. Seeing that stuff every day would absolutely be scarring.

      I don’t want to see that kind of stuff to become common, but I am disturbed that people are afraid of unused images hiding on their Lemmy server.

      • @SuddenDownpour
        link
        English
        58 months ago

        Regardless of the debate of whether admins should be legally liable for not deleting unknown child abuse digital files,

        Maybe I’m wrong, but I don’t think seeing a small number of pictures is going to scar you for life. I’ve seen goatse. I’ve seen people decapitated. It’s not pleasant, and I avoid those things, but it’s not scarring.

        You shouldn’t use your own experiences to make this generalisation, given that people working at agencies prosecuting pederasts often have to receive therapy or even leave the job after continued exposure.

        I am disturbed that people are afraid of unused images hiding on their Lemmy server.

        Don’t you think it’s logical for someone to be worried about being vulnerable to being accused of what likely is, in many legal systems, a crime?

        • @Serinus
          link
          English
          28 months ago

          Yeah, I think continued exposure is different than a one off thing. It’s why I used the Grand Jury example.

          And I do think it’s logical. That’s the problem. My entire point is that csam shouldn’t be so easy to weaponize.

          Maybe seeking, selling, or intentionally distributing should be the crime.

  • Dandroid
    link
    fedilink
    English
    228 months ago

    'm an instance administrator, what the fuck do I do?

    Check your pictrs images (good luck) or nuke it. Disable pictrs, restrict sign ups, or watch your database like a hawk. You can also delete your instance.

    How? I have checked, and there doesn’t seem to be any way to see the photos on my server.

    I actually shut down pictrs entirely on my instance. Running pictrs in its current state is criminally negligent imo.

    • @[email protected]OP
      link
      fedilink
      English
      188 months ago

      They are stored in the pctrs folder. They don’t have file extensions but are viewable with many image programs.

      • Dandroid
        link
        fedilink
        English
        158 months ago

        Oh, I see. I only use command line on my server, so I didn’t realize they were actual photos. Thanks!

  • @[email protected]
    link
    fedilink
    English
    168 months ago

    A lot of web software does this (Github and Gmail for example). I like it but always thought it could be abused.

    • @[email protected]
      link
      fedilink
      English
      148 months ago

      You mean Gmail drafts? I know from at least one case where criminals used this, they shared the Gmail account password and messaged each other only via the drafts function. So technically there was never a mail send.

  • @[email protected]
    link
    fedilink
    English
    158 months ago

    Wasn’t facebook also found to store images that were uploaded but not posted? This is just a resource leak . I can’t believe no one has mentioned this phrase yet. I’m more concerned about DoS attacks that fill up the instance’s storage with unused images. I think the issue of illegal content is being blown out of proportion. As long as it’s removed promptly (I believe the standard is 1 hour) when the mods/admins learn about it, there should be no liabilities. Otherwise every site that allows users to post media would be dead by now.

    • @[email protected]
      link
      fedilink
      English
      118 months ago

      I’m a pentester and security consultant. From my point of view, this vulnerability has more impact than just a resource leak or DOS. We all know how often CSAM or other illegal material is uploaded to communities here as actual posts (where hundreds of viewers run into it to report it). Now imagine them uploading it and spreading it like this, and only the admin can catch it if they goes out of their way to check it?

      I wouldn’t call this a high risk issue for sure. But a significant security risk regardless.

    • @[email protected]OP
      link
      fedilink
      English
      88 months ago

      Whether it’s illegal content or storage-filling DoS attacks, the issue needs to be addressed.

  • Xylight (Photon dev)
    link
    fedilink
    English
    158 months ago

    FYI this requires a JWT so if registrations are closed on your instance you don’t have to worry

    • @[email protected]
      link
      fedilink
      English
      48 months ago

      It seems like self-hosting your own Lemmy instance with registrations, communities, and pretty much anything else turned off is still very safe to do. I still want to end up self-hosting my own Lemmy instance some time when I have more time. Though I’d rather wait for things to be more stable first, there’s bugs I’d like to be ironed out before doing that probably, like one example is I still find it annoying that upvoting a comment in a thread deletes whatever comment you’re currently typing.

  • @[email protected]
    link
    fedilink
    English
    38 months ago

    Because anyone can upload illegal images without the admin knowing and the admin will be liable for it.

    The admin/company isn’t liable until it is reported to them and they don’t do anything about it… That’s how all social media sites work, Google isn’t immediately liable if you upload illegal materials to GDrive and share it anonymously.

    • @[email protected]OP
      link
      fedilink
      English
      68 months ago

      Doesn’t change the fact that this is an issue. Besides, do you think American law applies everywhere?

  • AphoticDev
    link
    fedilink
    English
    28 months ago

    This can be solved very easily by a cron job to clean out the folder periodically, if you’re worried about it.

      • AphoticDev
        link
        fedilink
        English
        08 months ago

        Just make a cron that runs the rm command every day or whatever to clean out the files. Then run a SQL query at the same time to truncate any draft posts in the database. There’s no logic to this method, it just clears out the files and records related to draft posts, but it’s fast and effective.

        There’s a small chance it might fuck somebody up if they were writing a post at that exact moment, but you can schedule the cron for when your instance is the quietest.

  • @Aux
    link
    English
    -58 months ago

    Man, Lemmy devs have zero clue about best practices… What a crap show!

      • @Aux
        link
        English
        08 months ago

        Mmm, not really.

          • @Aux
            link
            English
            18 months ago

            20 years of experience, yes. Working experience from small startups to world’s largest corporations.

            • @[email protected]
              link
              fedilink
              English
              18 months ago

              And you haven’t seen these kinds of problems on large projects? Now I’m wondering what kind of visibility you had into those projects. Lemmy is somewhere between alpha and beta, IMO. I wouldn’t consider it production-ready.

              • @Aux
                link
                English
                08 months ago

                This is basic security. You should never trust the user, ever. Issues like that can only exist before public release or the company management can quickly end up in jail. I guess lack of responsibility is the root cause of what’s going on here right now.