this post was submitted on 10 Jul 2023
15 points (94.1% liked)

Selfhosted

40659 readers
149 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

  1. Be civil: we're here to support and learn from one another. Insults won't be tolerated. Flame wars are frowned upon.

  2. No spam posting.

  3. Posts have to be centered around self-hosting. There are other communities for discussing hardware or home computing. If it's not obvious why your post topic revolves around selfhosting, please include details to make it clear.

  4. Don't duplicate the full text of your blog or github here. Just post the link for folks to click.

  5. Submission headline should match the article title (don’t cherry-pick information from the title to fit your agenda).

  6. No trolling.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 2 years ago
MODERATORS
15
submitted 1 year ago* (last edited 1 year ago) by Zak to c/selfhosted
 

I just updated my Mastodon server to the latest version due to a security vulnerability. I got a 500 page and error:0308010C:digital envelope routines::unsupported in the logs from mastodon-web.

I could reproduce by running bin/webpack from the command line. Some searching led me to try Node 16 LTS, but then I get an apparently blank page when I load the site and call to eval() blocked by CSP in the browser console.

The API works normally; this only affects the website.

top 2 comments
sorted by: hot top controversial new old
[–] Zak 2 points 1 year ago* (last edited 1 year ago) (1 children)

Solved-ish.

I got webpack to run reliably by replacing its use of md4 with sha256 in these files:

$ grep -r md4 node_modules/webpack
node_modules/webpack/lib/ModuleFilenameHelpers.js:      const hash = createHash("md4");
node_modules/webpack/lib/optimize/ConcatenatedModule.js:                const hash = createHash("md4");
node_modules/webpack/lib/optimize/SplitChunksPlugin.js:         .createHash("md4")
node_modules/webpack/lib/NamedModulesPlugin.js: const hash = createHash("md4");
node_modules/webpack/lib/SourceMapDevToolPlugin.js:                                                             contentHash: createHash("md4")
node_modules/webpack/lib/WebpackOptionsDefaulter.js:            this.set("output.hashFunction", "md4");
node_modules/webpack/lib/HashedModuleIdsPlugin.js:                              hashFunction: "md4",

then in `config/initializers/content_security_policy.rb', I replaced the line

.script_src :self, assets_host, "'wasm-unsafe-eval'"

with

p.script_src :self, assets_host, "'wasm-unsafe-eval' 'unsafe-eval'"

This seems like way more tinkering with the code and defaults than I should need to keep the server running so I'll probably dig more later. I hope this post ends up being useful to anyone else having an issue.

[–] [email protected] 1 points 1 year ago

Md4.....? Uh, even MD5 has been considered bad for literally decades