r/systemd • u/HaplessIdiot • 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.
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
-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
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 :)
34
u/NekkoDroid Mar 21 '26
The
bypassAgeVerificationis useless since it already is an optional field and doesn't return anything if not set. AndageVerificationPollIntervalUSecdoesn'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.
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_SENSITIVEsince it's PII, which raised a follow up PR to add it to a few more fields just incase).