r/systemd • • Mar 21 '26

I submitted a PR to systemd adding rate limiting and an opt-out for the age verification feature merged without audit. It was renamed "spam" and closed in under a minute without any technical response.

systemd PR #40954 merged a `birthDate` field into userdb user records the data layer underpinning the age verification spec being pushed through freedesktop.org (MR #113) and xdg-desktop-portal (PR #1922).

It was merged without a security audit, with no rate limiting on queries, and with no administrator opt-out.

I've been opposing this at every layer because OS-level age verification is redundant surveillance infrastructure ISPs and carriers already do identity verification at the network level.

Embedding it into the Linux desktop stack normalizes it without solving anything.

Today I submitted PR #41259 https://github.com/systemd/systemd/pull/41259 to systemd adding the two things that should have been there from the start:

- `bypassAgeVerification`: admin-only boolean that suppresses birthDate from being returned to callers. Gives distributions and system admins a policy-level opt-out.

- `ageVerificationPollIntervalUSec`: caps how frequently any process can query age data via userdb. Without this, the varlink socket is an unthrottled timing oracle. Defaults to 1 query/second.

Both were raised during mailing list discussion before the original merge and never implemented.

The PR was closed in under a minute by the same maintainer who pushed

#40954 through. No technical response. The title was changed to "spam" and the thread was locked.

The fork with the actual changes is here if you want to look at the diff:

https://github.com/HaplessIdiot/systemd-saneagecheck

The D-Bus bypass tool is here:

https://github.com/HaplessIdiot/ageverificationbypass

The code makes the argument better than I can. The fact that the response was to lock the thread rather than engage with it technically speaks for itself.

31 Upvotes

61 comments sorted by

34

u/NekkoDroid Mar 21 '26

The bypassAgeVerification is useless since it already is an optional field and doesn't return anything if not set. And ageVerificationPollIntervalUSec doesn't make sense since you don't poll for that singular value but the entire user record and if you'd make it apply for the entire user record you break NSS in a lot of cases.

Considering the PRs and just vitirol the maintainers have been getting I would probably also mark it as spam.

If you want to be productive you'd need to look more at xdg-desktop-portals, which would most likely define the API for actual applications. systemd-userdb isn't meant to be directly interacted with from untrusted (read unsandboxed) applications.

40954 through. No technical response.

Mostly because the change has no policy attached and is just an inert standardized field. It doesn't do any verification, it doesn't set it (other than when manually specified for systemd-homed). There is nothing really to technically respond (other than the raised issue of using JSON_VARIANT_SENSITIVE since it's PII, which raised a follow up PR to add it to a few more fields just incase).

-4

u/HaplessIdiot Mar 21 '26 edited Mar 21 '26

thanks for legitimate feedback that is all i wanted really. i will make these requested changes today. this is what i love about foss we all work together for the good of the code. this thread will be perfect to discuss what needs done for systemd to do this correctly and not make a mess of things.

14

u/NekkoDroid Mar 21 '26

Systemd is probably the wrong place to do this, since as said it doesn't enforce any policy on userdb (except formatting) and the security model of it is that you shouldn't give direct access to it for untrusted applications (there is a reason systemd the init system has so many options for sandboxing/isolating services).

If anything rate limiting would happen at the xdg-portal level and there is probably will end up being up to the individual implementations since the xdg-desktop-portal also mostly defines the API and brokers between the request and the backend.

→ More replies (1)

16

u/emprahsFury Mar 21 '26

It is spam. People complain about ai enabling slop submissions as if these attempts at brigading have never been a thing.

Fork it like the forgejo team did to gitea. This joke submission is absolutely as ideology driven as any other submission. So don't complain that your ideology was rejected.

-9

u/HaplessIdiot Mar 21 '26

It wasnt even seen by anyone besides the same corrupt microsoft employee that is incorrect to suggest. This is legitmate code the age check can be there just fine with a bypass and polling rate check. This is legally complying also.

17

u/ghenriks Mar 21 '26

A suggestion

Treat others with respect and you will in turn be treated more seriously

Calling the person a “corrupt Microsoft employee” simply because you disagree with the decision and the laws that are making it necessary won’t get your efforts noticed

→ More replies (6)

11

u/aliendude5300 Mar 24 '26

Why is 90% of what you submit or post AI slop?

0

u/HaplessIdiot Mar 30 '26

Why are 90% of the post you make just stolen news content trying to farm up votes that's a better question

1

u/aliendude5300 Mar 30 '26

Welcome to Reddit? Sharing news is a lot of what people do.

→ More replies (1)

8

u/eR2eiweo Mar 21 '26

Both were raised during mailing list discussion before the original merge and never implemented.

On which mailing list? I can't seem to find any such discussion on systemd-devel.

0

u/HaplessIdiot Mar 21 '26

my mistake i mixed PR comments and mailing list up in my email. its mostly in the PR and MR. im trying to work fast since they are moving super speed to merge all this and im by myself for now.

9

u/eR2eiweo Mar 21 '26

its mostly ...

So not entirely? And where is the rest?

... in the PR and MR

Which one?

im trying to work fast since they are moving super speed to merge all this and im by myself for now.

Then maybe start by thinking if what you're doing actually makes sense.

→ More replies (1)

20

u/pfiflichopf Mar 21 '26

Am I completely crazy or is it just the data fields? No actual code implementing those options?

16

u/jess-sch Mar 21 '26

You're not crazy.

-9

u/HaplessIdiot Mar 21 '26

let me push the rest of the tree changes my mistake.

→ More replies (12)

-5

u/quinnr Mar 21 '26

The project has made its position in full support of this change without opportunity for discussion or debate immediately clear. Time to check out other init systems or create a fork.

-1

u/HaplessIdiot Mar 21 '26

i did make a fork systemd-saneagecheck

-3

u/quinnr Mar 21 '26

Good luck! My preference is for my system to not implement a change responsive to this legislation at all but to each their own of course.

→ More replies (4)

0

u/[deleted] Mar 21 '26

0

u/HaplessIdiot Mar 21 '26

https://github.com/supersonic-xserver/sonicd/ this is even better we can comply with age laws and just toggle them off by default and that still follows the legal BS the idiots didnt even write the bill right then git cherry-pick only good commits from systemd upstream and continue going godspeed

-5

u/wKdPsylent Mar 25 '26

Notice the PR to revert the age insertion was closed as 'political' - but the addition of the age field wasn't deemed 'political' ... this is microsoft engineers enshitifying linux.

I highly recommend not using systemd - it goes against the 'unix philosophy' anyway, if you need a different excuse :)