cross-posted from: https://lemmy.world/post/49778547

Also /c/modabuse. Also /c/yepowertrippinbastards. Also lemmy.ml/c/worldnews, comrade, ACAB, and 552 individual accounts across 67 instances, about half of them on lemmy.world.

None of this is in the source code. It’s downloaded at runtime from a file nobody has ever looked at.

If you’re just tuning in

Tesseract is a third-party web frontend for Lemmy, maintained by asimons04 and licensed AGPL-3.0. Admins deploy it on their own servers alongside or instead of lemmy-ui, and there are public instances of it people use to browse Lemmy generally. If you’ve used a Lemmy site that didn’t look like stock Lemmy, there’s a fair chance it was this.

Last week db0 posted a PSA: Tesseract contains a blacklist of instance domains compiled directly into the application. 32 of them. Admins can’t see it, can’t configure it, and aren’t told it’s there. Connect to a listed instance and the app tells you it’s “incompatible,” which is not true.

I went through the code to see how that was implemented. The hardcoded list turns out to be the small half of the system.

There’s a second filter policy fetched over HTTP every time the app loads. It isn’t in the git repository. It’s unauthenticated and world-readable, so anyone can pull it. Right now it carries 552 user accounts, 2,275 username patterns, 54 instances, 97 communities, 289 keyword patterns and 351 domains, with every category set to hide matches rather than flag them. Not collapsed behind a click. Simply absent, with no indication anything was removed.

Verify all of it in ten seconds

curl -s https://tesseract.dubvee.org/tesseract/api/system/policy \
  | base64 -d | gunzip > policy.json

That’s the live policy, base64-wrapped gzip, 111KB of JSON when it unpacks. There’s a stale fallback copy at /data/policy.dat as well.

It filters criticism of moderators

  • lemmy.sdf.org/c/modabuse — listed
  • lemmy.dbzer0.com/c/yepowertrippinbastards — listed
  • lemmy.dbzer0.com/c/YPTBcirclejerk — listed
  • community regex power ?tripping?
  • keyword censoring me

Call the rest of it whatever you like. This part is not spam defence.

It filters words

The 32 community name patterns include Communis(t|m), Conservativ(e|es|ism), Leftis(t|m), Libertarian(ism)?, ^Green Part(y|ies), Zionis(t|m), (Police|Cops), guillotine and billionaire.

Keywords include comrade, ACAB, neoliberal, proletaria(n|t) and death to.

Filtered communities on instances that aren’t blocked: lemmy.ml/c/worldnews, lemmy.today/c/news, lemmy.ca/c/politicalnewscanada, lemmy.ca/c/usa, infosec.pub/c/strategic_unions.

The 552 users aren’t bots

67 instances. 272 on lemmy.world alone, 40 on sh.itjust.works, 19 on lemmy.ca, and 28 instances contributing exactly one person each.

355 of the 552 usernames are plain alphabetic, twelve characters or under, median length eight. Only 36 look like spam registrations. A bot list looks like the opposite of that.

Seven of them aren’t even Lemmy. There are Mastodon and Friendica accounts in there: people who have never used Lemmy, hidden by a Lemmy frontend, with no possible way of finding out.

I have the list and I’m not posting it. Most of these are ordinary people who got pattern-matched, and 552 names on this comm is a harassment target inside an hour. Run the command above and grep for yourself.

And it lies about it

When the instance block fires you get: “Incompatible Instance. Not Supported. $instance is not compatible with Tesseract.”

Nothing is incompatible. It’s a policy decision dressed as an API error, and it’s what had db0 chasing a version mismatch that never existed.

For the hidden users, communities and keywords, you get no message at all.

Admins can’t switch it off

Tesseract has env vars for PUBLIC_DOMAIN_BLACKLIST, PUBLIC_FAKE_NEWS_BLACKLIST and the shortener lists. There is none for either blocklist. enableToxicMode bypasses the other filters and explicitly not this one.

Self-host it and you cannot disable this, nothing in your config admits it exists, and the contents can change without you pulling a commit.

Before someone says it

A lot of that domain list is real spam defence. It filters conservatism as well as communism. “It targets the left” doesn’t survive the data and I’m not going to pretend it does.

The problem is that spam filtering and political editorial got welded into one undocumented, remotely-updatable blob, shipped hidden, to admins who’ve never read it and users who don’t know it’s there. The spam work is what makes the rest unauditable: “it’s a spam list” answers every individual question and none of the whole.

And /c/modabuse is not spam.

Asks

  1. Publish the runtime policy in the repo, or kill the endpoint.
  2. Stop reporting a policy block as a technical incompatibility.
  3. Tell users when something’s been hidden. One line.
  4. Give operators an off switch, like every other blacklist in the codebase has.

It’s AGPL-3.0 and db0 already forked it. That’s the licence working as designed. But forking isn’t disclosure, and the admins who need this are precisely the ones with no reason to go looking.

If you run Tesseract, you are relaying a 111KB moderation policy you have never read, under your instance’s name, to users who don’t know it exists.

Full contents of every list, unedited, in the comments.

  • TrickDacy@lemmy.world
    link
    fedilink
    English
    arrow-up
    40
    ·
    edit-2
    1 天前

    lol "^TrickDacy([0-9]+)?$", implies “this guy has lots of alts with numbers!” which I don’t have any…

    I’m way more curious as to how this dumb shit came about rather than mad I’m being censored from the platform for some people. It’s just bizarre. Like what did I do to get on the list? What did anyone do? I don’t actually buy this “he’s a fascist” thing just because I’ve not seen convincing evidence yet, and the person I asked about that yesterday didn’t respond. Might’ve missed something. I kinda think maybe the dude filtered by most comments and then made a snap judgement. I’ve done a lot of commenting here so I may have been on such a list… who tf knows…

    edit: the way that file is formatted suggests it’s maintained by hand. What a weird fuckin thing to do…

    • SkaveRat@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      14
      ·
      edit-2
      21 小时前

      I’m on the list, and before today I didn’t even know tesseract even existed

      Edit: I was added into the file in the march 26th commit.

      Now I have the urge to see if I interacted with the shithead between november and march

      • ggtdbz@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        5
        ·
        edit-2
        7 小时前

        Oh I was wondering if I could see the date I was added. Where can I see the commits?

        So I figured it out. The original repo got nuked ish but the db0 fork keeps the commit history (I know nothing about git) and some trial and error leads me to understand I was added between March 27 and May 30. Interesting. I wonder what post it was.

      • TrickDacy@lemmy.world
        link
        fedilink
        English
        arrow-up
        9
        ·
        21 小时前

        Apparently the dev has an account and has taken notes on anyone that ever disagreed with them? I see I got banned from the tesseract community 8 months ago which I’d forgotten about honestly. Don’t think I ever participated there but was banned out of the blue for “advocating violence”. If memory serves I had made an implication about “Luigi” in an unrelated community. So it seems like the dude has lurked and made a list of “bad” people.

        • Fizz@lemmy.nz
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 小时前

          Its probably more adding users that fight/ are rude/post extreme content rather than based off disagreement. I havent seen the dev getting into many arguments.

          • TrickDacy@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            34 分钟前

            Did you read his statement on this topic? He had a whole host of reasons and not all of the blocklist can be explained by them imo

    • AwesomeLowlander@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      19
      ·
      1 天前

      The guy was… opinionated. And he didn’t like anybody who didn’t share his opinions. I’m reasonably certain I’m there because I was one of the first guys to cheer Luigi on.

      • TrickDacy@lemmy.world
        link
        fedilink
        English
        arrow-up
        16
        ·
        1 天前

        Part of me understands that reasoning, and then a part of me is like “how the hell are you going to maintain such a list?”

        Seems like a fulltime job. I wonder if it’s possible he instructed AI to make a list based on some criteria and then he just re-runs that periodically.

    • Ech@lemmy.ca
      link
      fedilink
      English
      arrow-up
      7
      ·
      22 小时前

      I’m on the list and I interacted with that user all of one time. It’s just a petty power play in their own little snowflake kingdom.

  • Mereo@piefed.ca
    link
    fedilink
    English
    arrow-up
    21
    ·
    1 天前

    We need to upvote this to oblivion for maximum visibility. This is disgusting.

  • Wren@lemmy.today
    link
    fedilink
    English
    arrow-up
    24
    ·
    1 天前

    I used tesh very rarely, only to ban users across all my communities and only in extreme cases, until recently when it just stopped working for me. Now I know why.

    The communities aren’t far left or right, one is just general news that’s about 50% science articles and the other is for independent Canadian news. This kind of censorship is as infuriating as it is bizarre.

    • AwesomeLowlander@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      16
      ·
      edit-2
      1 天前

      Yeah, it’s frustrating that in many ways Tessaract was the best web UI lemmy had. And then they go and do this. Hopefully somebody else will take over maintenance of it.

      • Wren@lemmy.today
        link
        fedilink
        English
        arrow-up
        16
        ·
        1 天前

        Thanks for doing the legwork on this, I probably wouldn’t have found out why, otherwise.

        On second inspection, all of my news communities are blocked. This list is ideologically all over the place, makes me think these blocks are based on personal vendettas as much as politics.

      • frongt@lemmy.zip
        link
        fedilink
        English
        arrow-up
        5
        ·
        23 小时前

        db0 has forked it and stripped these parts, but I can’t imagine that even if tesseract development continues, that dev won’t be sneaking other malicious functionality into it.

        • Axolotl@feddit.it
          link
          fedilink
          English
          arrow-up
          1
          ·
          4 小时前

          db0 said that after lemmy 1.0 get released he won’t mantain it anymore, so it’s better if you just get used to a new frontend

  • Pika@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    17
    ·
    edit-2
    1 天前

    I noticed this myself by complete coincidence when itjust.works updated and I could click on my own comments and they wouldn’t pull anything.

    I had thought that it might have been a bug with the server so I switched over to the standard Lemmy instance and it would load fine.

    Then I dug through the settings more and I found the toxic mode hidden in the advanced settings. and realized that when I enabled toxic mode I could see the comment tree.

    Weirdly enough, I did a deep dive into all the black lists that it has hard-coded when I saw and I couldn’t for the life of me find out what was flagging that post from being able to be seen. None of the instances of anyone in the comment train were in the black list, I guess it’s possible that the instance itself was in a blacklist, but I forgot to check that.

  • AwesomeLowlander@sh.itjust.worksOP
    link
    fedilink
    English
    arrow-up
    29
    ·
    edit-2
    1 天前

    Oh yeah, I’m in there as expected, since I knew he already instance blocked me from dubvee previously. Woo!

    Hmm, come to think of it, any admin who’s using Tesseract wouldn’t be able to see this post. Yay, censorship!

    • Axolotl@feddit.it
      link
      fedilink
      English
      arrow-up
      2
      ·
      4 小时前

      I am def goin to include banned words in my next posts, fuck whoever still support tesseract on purpose!
      (Sorry to whoever don’t know about it but i can’t not get you in the crossfire)

      I also wonder if there is a frontend or mobile client that allow me to have a signature just like some old forums used to do, it would make this easier

  • cecilkorik@piefed.ca
    link
    fedilink
    English
    arrow-up
    12
    ·
    1 天前

    The link to the policy file isn’t working, which is a shame, I’d love to dig through it.

      • frongt@lemmy.zip
        link
        fedilink
        English
        arrow-up
        11
        ·
        1 天前

        Look ma, I’m famous!

        Can’t imagine why I’d be on the list. I don’t really say anything controversial.

    • AwesomeLowlander@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 天前

      That’s weird. I did update my original link, but that was some time ago. Are you seeing a link to file.garden or catbox.moe? If the latter, try refreshing or clearing your cache.

      • cecilkorik@piefed.ca
        link
        fedilink
        English
        arrow-up
        5
        ·
        1 天前

        It was linked to catbox.moe for me, but I downloaded it myself using the code you provided and that worked, thanks. Also, found myself listed as one of the blacklisted users haha, I guess I pissed somebody off. Success!

    • AwesomeLowlander@sh.itjust.worksOP
      link
      fedilink
      English
      arrow-up
      30
      ·
      edit-2
      1 天前

      What does this have to do with lemmy in particular? It’s one independent dev creating a 3rd party front end. Are you claiming Mbin would be immune to this sort of attack? Piefed is already experiencing the same sort of issue, to a much lesser extent, with Rimu.

    • phar@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 天前

      It looks like the only alternative mentioned in the post is lemmy-ui. Are there others you know of? It’s a web ui, not an app.