cross-posted from: https://lemmy.world/post/49778353
Also
/c/modabuse. Also/c/yepowertrippinbastards. Alsolemmy.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.jsonThat’s the live policy, base64-wrapped gzip, 111KB of JSON when it unpacks. There’s a stale fallback copy at
/data/policy.datas well.It filters criticism of moderators
lemmy.sdf.org/c/modabuse— listedlemmy.dbzer0.com/c/yepowertrippinbastards— listedlemmy.dbzer0.com/c/YPTBcirclejerk— listed- community regex
power ?tripping?- keyword
censoring meCall 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),guillotineandbillionaire.Keywords include
comrade,ACAB,neoliberal,proletaria(n|t)anddeath 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_BLACKLISTand the shortener lists. There is none for either blocklist.enableToxicModebypasses 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/modabuseis not spam.Asks
- Publish the runtime policy in the repo, or kill the endpoint.
- Stop reporting a policy block as a technical incompatibility.
- Tell users when something’s been hidden. One line.
- 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.
This tells me the project cannot be trusted at all. The dev is clearly willing to ship undisclosed block lists… What’s next, a crypto miner? Credential harvesting? Who knows.
Yeah that’s what I was thinking. I wonder what his track record on open source is.
Hilarious. Well, I never used Tesseract, but now I’ll make sure never to recommend it
The developer behind Tesseract is the same user who has displayed the habit of preemptively banning users who have never participated in or even visited his communities, particularly those that were on dubvee.org. Apparently for ideological reasons, or simply for being associated with a particular Lemmy instance.
So at the risk of stirring up even more Fediverse drama by saying it, it seems like the findings above are squarely on brand.
Not to come over all Graham Chapman about it or anything, but I always found that type of behavior to be very silly.
Edit!
I got curious and pulled down the data to have a look. If you want to do this on Windows (don’t @ me about it, alright?)
spoiler
you can just point your browser to https://tesseract.dubvee.org/tesseract/api/system/policy and save it someplace or, if you insist on doing it from a commandline,
curl --output [filename] https://tesseract.dubvee.org/tesseract/api/system/policy.Then to decode from base64:
certutil -decode [inputfile] policy.gzAnd extract:
tar -xf policy.gzOr, you know, just open it in Explorer. The resultant file is just plain text.
Anyway, guess what! I’m on the list. I’m a celebrity, ma! I ought to be on TV.
is the same user
Which user specifically
Based on the comment chain above, https://mander.xyz/u/AdmiralPatrick@dubvee.org
Ohhh that’s why I have some community bans!
Maybe he just really hates tomatoes?
Censoring the phrase ACAB is just wild. Way to tell on yourselves.
He’s a cop? Anyway ACAB.
I doubt a cop would be able to even vibe this.
Tons of political shit on that list and then midway through it just decides to ban yuri. Not porn, not furry content, and not hentai. Just yuri
Guy must hate girls having fun. :)
What did the first person in space do to deserve a ban?
"enableKeywordFiltering": true, "hideKeywordMatches": true, "keywords": [ "🥺?👉👈", "0811( |-)?4555588", "@juicypinkrose", "^Article is paywalled.?$",???
What if we kissed inside of the blocklist 🥺👉👈
No bottoms allowed, only tops
This has me cackling like a hyena omg
Oh god, I’m in the user regexes. Should this be an achievement of mine?
Removed by mod
I’ll take what I can get 😤
I’m pretty sure he went by making the broad lists of banned shit, and then ran a query on all the users that came up with saying that stuff.
I’m also on there, so I feel significant.
Or, he hates modern heavy metal, Devin Townsend and Colin Marston in particular.
I’m going to start putting it on my resume
I was having a genuinely good day until i saw i wasn’t on the list. jesus fucking christ to completion in the hand holes and then wiping himself off in the spear wound what kind of blasphemy does a dude have to commit to get on a list nowadays
… well that’s some damn fine blasphemy right there, if I do say so myself.
I’m apparently on the list.
Honestly, surprised the file is still up for me to pull, t+24 or t+48 hours on.
They bothered to end cap the regex with an $… can’t have anything with ‘sp3ctr4l’ anywhere in the name… I don’t have alts, so… I don’t know what the point of that is…
Oh well.
Not my first time.
I got shadow banned and also just actually banned from half of reddit for calling out mods on their bullshit despite being one of the earliest/oldest users there. Obligatory fuck Spez.
I’m reasonably confident that the twitter account I created soley to scream insults and baseless threats at Elon, when he accidentally bought it, … reasonably confident he personally banned me, as … there weren’t really any other actual support staff at that point time, Elon had revoked their credentials.
I like to think I contributed, at least in a small way, to his subsequent insane crashout telling advertisers to ‘go fuck yourselves’.
… this?
This reminds me of literal petty children running Gmod servers, hardcoding steamid blocklists in hashed files… the hilarious part about that is that they actually bothered to properly encrypt them, so you couldn’t read them without a valid server key.
So this? Actually laughable, I’ve literally seen 14 year olds do this in a more clever way.
Fuckin oi vei, man.
I’m so envious, dude. I am not sure how to explain this drama to my wife. She just knows I’ve been giggling into my coffee all day. The best analogy I could think up was kids running Minecraft servers.
Minecraft servers are often extremely, extremely similar, that is a very close comparison, both technically, and in terms of uh… lets say the ‘character’ of those involved.
Yep.
This is where we’re at.
… trying real hard right now to not go get a pack of smokes, god damnit.
EDIT: Modded Mincraft servers, I should say, are very similar to custom GMod servers/communities.
I took a look at it earlier today and the addition of instances to be blocked was super shady and sloppy on part of the maintainer. Some high profile instances were added to the blocklist alongside unrelated changes and not mentioned in the git commit message, for example this commit: https://github.com/asimons04/tesseract/commit/fcd71e01e9f64d5ff40dbee9b815971bc00e9a2a
Also apparently the error you’d get when going to the blocked instance was a generic error which makes the user think there’s a network issue or incompatibility with the API or something and the idea of a hard coded blocklist is never presented to the user as the source of the issue.
That Github is a fun read in general. Some of these variables and function names are sending me. They even seem to be blocking proton email addresses.
Tap for blacklists.ts
https://github.com/asimons04/tesseract/blob/main/src/lib/blacklists.ts
My personal highlights:
// Domains that have been identified as frequent spam export const SPAM_SITES = [ 'gofund.me', 'gofundme.com', // ... const SHIT_KNOWN_BAD_LEMMY_ACTORS_SPAM // ... // Very non-comprehensive list of domains that host disposable/temporary/throwaway email aliases. Basically just the low-hanging fruit to aid in decision making. export const THROWAWAY_EMAIL_DOMAINS = [ 'proton.me', // ... export const BLACKLISTED_INSTANCES: string[] = [ "abolish.capital", "altmedia.house", "anarchist.nexus", "chapo.chat", "chatgptjailbreak.tech", "diggita.com", "hexbear.com", "hexbear.net", "ibbit.at", "test.hexbear.net", "www.hexbear.net", "hilariouschaos.com", "lemmy.bestiver.se", "lemmy.blahaj.zone", "lemmy.dbzer0.com", "lemmy.doesnotexist.club", "lemmy.durstig.online", "lemmy.ml", "lemmy.razbot.xyz", "lemmybefree.net", "lemmygrad.ml", "lemmyusa.com", "lemy.lol", "maga.place", "multiverse.soulism.net", "news.abolish.capital", "nnia.space", "noauthority.social", "r.nf", "realbitcoin.cash", "redlemmy.com", "welppp.com" ] // ... // Fake news sites that MBFC doesn't have on file or are known disinformation campaignss export const FAKE_NEWS = [ ...RUSSIAN_GRU_INFOROS, ...RUSSIAN_NEWS_DOPPLEGANGER, ...RUSSIAN_OPERATION_UNDERCUT, ...RUSSIAN_PORTAL_KOMBAT_PRAVDA_NETWORK, ...RT_ALIASES, ...STOP_NEWS, ...OTHER_RUSSIAN_CAMPAIGNS, ...JOHN_MARK_DOUGAN, ...SHIT_KNOWN_BAD_LEMMY_ACTORS_SPAM, ...MAGA_PROPAGANDA, // Admin-extended list from env vars ...BLACKLIST_CONFIG.FAKE_NEWS_BLACKLIST ] // ... export const isFakeNewsSite() // ... if ( get(userSettings).enableToxicMode) return falseTap for filtering.ts
https://github.com/asimons04/tesseract/blob/main/src/lib/filtering.ts
They seem to be filtering out a lot of political keywords!
// Initialize a default blank policy export const defaultFilterPolicy: FilterPolicy = { name: 'Default Policy', communityRegexes: [ "^Ban ", "^Boycott", "(Elon|(Elon )?Musk)", "^Fuck", "Palestine", "Iran", "Israel", "Musk", "^News|News$", "^Politic(a|s|al)|^Politik", "Trump", ], communityInstances: [ "ani.social", "pawb.social" ],Tap for data.json
https://raw.githubusercontent.com/asimons04/tesseract/refs/heads/main/src/lib/MBFC/data/data.json
Some juicy comments in this one. It’s a list of news sources with their “bias” (left/right/centre/etc). They didn’t write this, they copied it from https://github.com/drmikecrowe/mbfcext/blob/main/docs/v5/data/combined.json
“Official Media Bias/Fact Check Extension”
Be informed as you read your Facebook feed. We are the most comprehensive media bias resource on the internet. There are currently 1100+ media sources listed in our database and growing every day. Don’t be fooled by Fake News sources. This extension is completely open source, and the source code is hosted here.
politico.com bbc.com cbsnews.com front.moveon.org These media sources are moderately to strongly biased toward liberal causes
This is very upsetting. I could see an argument if it was made a user toggle for a “more friendly experience” or something like that (Like the enable toxic mode toggle), but hiding the blacklist and then an opaque error message is cowardly. Having it be pulled every time from another website instead of built into the software is also a very clear accountability dodge.
Also reading over the file, I think it’s biased, especially towards unfairly heavy moderation.
Edit: Just noticed I’m on the blocklist. What he said fuck me for?
How does a forum with such few users have so much drama?
I think we just notice it more because we have less content, so you’re more likely to hear about each bit of drama that comes up and you’re more likely to know one of the parties involved. There was lots of drama on reddit too, but I didn’t subscribe to the communities that talked about it and I often didn’t know enough about each incident to judge anyone
It’s still annoying though 🫤
In this case, I think it’s part of a general effort by left-liberal refugees from Reddit, who genuinely believe that the fediverse will be the new future of Redditesque forums one day.
Unfortunately, they have learned the wrong(imo) lesson from spez becoming a Nazi and pushing his political agenda onto every Redditor. They want the politics of this new medium to be no further left than AOC, and no further right than Chuck Schumer, while seeming to be completely free and open and information must be free, etc.
You can see that in their choice of bans.
I am glad this particular effort was so incompletent. It will not be the only one.
Edit: Oh man, spelling “incompetent” incorrectly there and getting everything else right deserves to be preserved.
Edit: Oh man, spelling “incompetent” incorrectly there and getting everything else right deserves to be preserved.
I noticed that too and it’s a thing of beauty! There should be a special prize for that.
Removed by mod
Because we’re contentious and get to recognizing each other
"software": [ "goofed" ],what the fuck is goofed
You done goofed. I’ve already backtraced your IP.
Good luck, I’m behind 7 proxies.
"(freedom|hamburger|murica) unit","^Paywall(ed|s|\"d)?(…|\\.+)?$", "^Paywalled,? ?sorry?\\.? Can’t read it\\.?$", "pedophile", "Perchance", "pis+rael",
Lol fucking “Perchance”? Whhhy?
Perchance it just felt right.
perchance…
"usgreenlandwar", "^worldnewsnonus", "^Yuri|^WholesomeYuri", "Zionis(t|m)"yuri banned literally 1984
can’t even comment about Yuri Gagarin of the soviet space program
they forgot “fascist unit”

This goofy?
Removed by mod
They just blocked all of blahaj instead of dealing with us individually
Not entirely true 😎
I wish I was cool enough to make the blocklist 😔
I kind of want to k ow if any of my accounts (5 accounts over 4 instances) are on it, but I don’t care enough to find out for myself, and I understand not wanting to post username lists like the OP says.
It gives you something to aim for next time!
tfw not in the cool kids club either
i mean, i expected as much, but still disappointing
If you wanted to, it would be good to know which maintainers made the commits and approved PRs, and what other projects they run or contribute to.
What happened with Tesseract could happen with any of those.
Very good point.
fwiw I’d recommend photon, it’s fantastic and the dev seems to work really hard on it. Hope they aren’t doing something shady either!
There are a few solid ones there. Photon and Blorp are my personal favourites on desktop
Do you know if either of them support user tagging? Currently on the default lemmy UI but I’d jump in a heartbeat for user tagging.
Blorp seems to support it: select the three dots next to a username -> Author -> Tag Author
There is discussion about adding this to Lemmy proper: https://github.com/LemmyNet/lemmy/issues/1456
Thank you! Will check that out. Much appreciated.


























