What is Nostr?
Semantically Secure /
npub1vqv…c08q
2024-10-14 07:16:20

Semantically Secure on Nostr: As I write this, the most recent big move by Matt Mullenweg in his ongoing dispute ...

As I write this, the most recent big move by Matt Mullenweg in his ongoing dispute with WP Engine was to [abuse his position to seize control of a WP Engine owned plugin](https://anderegg.ca/2024/10/13/acf-has-been-hijacked ), justifying this act with [a security fix](https://wordpress.org/news/2024/10/secure-custom-fields/ ). This justification might, under other circumstances, be believable. For example, if WP Engine [weren’t actively releasing security fixes](https://www.advancedcustomfields.com/blog/acf-6-3-8-security-release/ ).

Now, as I wrote on [a Hacker News thread](https://news.ycombinator.com/item?id=41825692 ), I’d been staying out of this drama. It wasn’t my fight, I wasn’t deeply familiar with the lore of the players involved, etc.

**BUT!** This specific tactic that Mullenweg employed happens to step on the toes of [some underappreciated work I had done from 2016 to 2019 to try to mitigate supply chain attacks against WordPress](https://ma.ttias.be/wordpress-get-secure-cryptographic-updates/ ). Thus, my HN comment about it.

Mullenweg’s behavior also calls into question the trustworthiness of WordPress not just as a hosting platform (WP.com, which hosts this website), but also the open source community (WP.org).

The vulnerability here is best demonstrated [in the form of a shitpost](https://xoxo.zone/@lazerwalker/113297704893474421 ):

“Matt” here is Mullenweg.I do not have a crystal ball that tells me the future, so whatever happens next is uncertain and entirely determined by the will of the WordPress community.

Even before I decided it was appropriate to chime in on this topic, or had really even paid attention to it, I had been hearing rumors of a hard-fork. And that maybe the right answer, but it could be excruciating for WordPress users if that happens.

Regardless of whether a hard-fork happens (or the WordPress community shifts sufficient power away from Mullenweg and Automattic), this vulnerability cannot continue if WordPress is to continue to be a trustworthy open source project.

Since this is a cryptography-focused blog, I’d like to examine ways that the WordPress community could build governance mechanisms to mitigate the risk of one man’s ego.##



Revisit Code-SigningThe core code, as well as any plugins and themes, should be signed by a secret key controlled by the developer that publishes said code. There should be a secure public key infrastructure for ensuring that it’s difficult for the infrastructure operators to surreptitiously replace a package or public key without possessing one of those secret keys.

I had previously begun work on [a proposal to solve this problem](https://core.trac.wordpress.org/ticket/49200 ) for the PHP community, and in turn, WordPress. However, my solution (called [Gossamer](https://core.trac.wordpress.org/ticket/49200 )) wasn’t designed with GDPR (specifically, the Right to be Forgotten) in mind.

Today, I’m aware of [SigStore](https://sigstore.dev ), which has gotten a lot of traction with other programming language ecosystems.

Additionally, there is [an ongoing proposal for an authority-free PKI for the Fediverse](https://github.com/fedi-e2ee/public-key-directory-specification ) that appears to take GDPR into consideration (though that’s more of an analysis for lawyers than cryptography experts to debate).

I think, at the intersection of both systems, there is a way to build a secure PKI where the developer maintains the keys as part of the normal course of operation.###



Break-Glass Security with FROSTHowever, even with code-signing where the developers own their own keys, there is always a risk of a developer going rogue, or getting totally owned up.

Ideally, we’d want to mitigate that risk **without** reintroducing the single point of vulnerability that exists today. And we’d want to do it without a ton of protocol complexity visible to users (above what they’d already need to accept to have secure code signing in place).

Fortunately, cryptographers already built the tool we would need: **Threshold Signatures**.

From [RFC 9591](https://datatracker.ietf.org/doc/rfc9591/ ), we could use FROST(Ed25519, SHA-512) to require a threshold quorum (say, 3) of high-trust entities (for which there would be, for example, 5) to share a piece of an Ed25519 secret key. Cryptographers often call these t-of-N (in this example, 3-of-5) thresholds. The specific values for t and N vary a lot for different threat models.

When a quorum of entities do coordinate, they can produce a signature for a valid protocol message to revoke a developer’s access to the system, thus allowing a hostile takeover. However, it’s not possible for them to coordinate without their activity being publicly visible to the entire community.

The best part about FROST(Ed25519, SHA-512) is that it doesn’t require any code changes for signature verification. It spits out a valid Ed25519 signature, which you can check with just libsodium (or [sodium_compat](https://github.com/paragonie/sodium_compat )).##



Closing ThoughtsIf your threat model doesn’t include leadership’s inflated ego, or the corruption of social, political, and economic power, you aren’t building trustworthy software.

Promises and intentions don’t matter here. Mechanisms do.

Whatever the WordPress community decides is their best move forward (hard forks are the nuclear option, naturally), the end result cannot be replacing one tyrant with another.

The root cause isn’t that Mullenweg is particularly evil, it’s that [a large chunk of websites](https://w3techs.com/technologies/overview/content_management ) are beholden to only his whims (whether they realized it or not).

One can only make decisions that affects millions of lives and thousands of employees (though [significantly fewer today than when this drama began](https://ma.tt/2024/10/alignment/ )) before an outcome like this occurs.

Edit of [XKCD](https://xkcd.com/2347/ )If you aren’t immune to propaganda, you aren’t immune to the corruption of power, either.

But if you architect your systems (governance and technological) to not place all this power solely in the hands of one unelected nerd, you mitigate the risk by design.

(Yes, you do invite a different set of problems, such as decision paralysis and inertia. But given WordPress’s glacial pace of minimum PHP version bumps over its lifetime, I don’t think that’s actually a new risk.)

With all that said, whatever the WordPress community decides is best for them, I’m here to help.

https://scottarc.blog/2024/10/14/trust-rules-everything-around-me/

#AdvancedCustomFields #arrogance #automaticUpdates #Automattic #codeSigning #MattMullenweg #PKI #pluginSecurity #powerCorrupts


Author Public Key
npub1vqv669x90y45e0xhdkz9ykxgpx3h0r44nl5wp7fs6z56mnfwdkfsqqc08q