Also don't get me wrong. Molly might be written by less experienced programmers. And if it was written from scratch, it could be very likely it would contain more vulnerabilities per 1000 lines of code than standard Signal app. But it's mostly just it's a hardened superset sans some nasty stuff. I'd compare that more to how Calyx or GrapheneOS are to plain AOSP than how some low maintenance random custom ROM from XDA with fuckton of bells and whistles that will leave your bootloader unlocked is.
pkill
Have you seen signal's issue tracker? Ik it's a big project, but it's literally getting spammed, plus the desktop app that keeps database key in plaintext and won't work natively under wayland (needs xwayland, making basic stuff like sending attachments hard if you use most tiling compositor, tho that's partly Wayland's design flaw of lacking consistent reference implementation). Also I principally don't trust apps that rely on both proprietary network services and libraries. The very fact that they don't leverage their funding to reduce their costs by working on support for federation that is not a matrix bridge (which hasn't been even developed by them btw) or decentralization, especially since XMPP, SimpleX and Matrix (which has currently 3 well developed server implementations: Synapse, Dendrite and Conduit) have been able to do so with much smaller funding. And it's Signal, not Molly's maintainers who have been putting more effort into shiny UX improvements over hardening infrastructure code lately. And even if Signal does improve it's security, the patches get regularly backported into Molly, whereas even such basic shit implemented solely in Molly, such as app passwords that actually encrypt it's database is pretty useful. Because even PIN scrambling is not fully immune to shoulder surfing. Defense in deph matters.
tl;dr a longer rant about decentralization vs federation 👇
Even the argument of network effect achieved thanks to reliance on phone numbers is becoming less relevant these days, with DeltaChat providing a convenient way to have encrypted chats using the existing email infrastructure in much more convenient way than traditional PGP. Pixelfed has already achieved E2EE DMs and it's being worked on for Mastodon. If the UI of the most popular apps and the official web interface are also redesigned to make messaging more convenient to use it might have the same positive effect on user retention as Facebook Messenger once had. Anyway things are bound to change in favor of federation, but not necessarily decentralization. For instance I got mixed feelings about EU's DMA. I'm optimistic about the interoperability benefits it could bring, but even the official act doesn't specify how it'll be implemented. If it relies on something like WebFinger which does require a domain name it'll end up just grouping a couple of major walled gardens together, so for example SimpleX, Session or Status users still might not be able to chat with people on centralized platforms
I advise you stop using Signal Desktop immediately, they keep the database key in plaintext. Exposed over 5 years ago and still not fixed. Frankly I find this pretty pathetic. Making this safer could be as simple as encrypting such files with something like age and perhaps regenerate the keys on a frequent basis (yes I know full disk encryption is somehow a viable solution against unwanted physical access. But instead, they'd rather focus on security by network effect by adding shiny UX features instead of fixing infrastructural stuff, like improving trust by decentralization, not requiring phone numbers to join, or adding support for app pasphrase (which is available in case of Molly, along with regular wiping of RAM data which makes things like cold boot or memory corruption attacks harder)
Why not gitignore the build artifacts and either publish them with releases or include a build directive in makefile/justfile? I mean, your platform might not be someone else's. Also consider using less global variables and shortening your main()
in favor of dedicated functions ( that can still run in a loop inside main()
) and using shorthand :=
assignment. Otherwise good job with documenting your code well.
PS, this one's more of a marketing tip really: try including a GIF in README.
piped and yt-dlp are also good
Who cares about their honeypot
maybe if YaCY or Wiby were better... instead even if you use a meta search engine it still spams fucking Reddit, Quora and Medium atop of the results it retrieves from the other engines
maybe try setting up a matrix bridge if you feel confident you can secure that properly. On one hand it might increase attack surface (use only servers and bridges with End to Bridge Encryption) but what's an attack surface on software that is so ridiculously compromised. Also you can try using an alternative client such as Flare. Though YMMV, for me the last time I've used it it was quite rough around the edges but I'm happy to see it's actively maintained so might be worth checking out.
Also no, flatpak doesn't fix this issue. Yeah it provides some isolation which can be further improved with flatseal, and other defense-in-depth methods. But unless you are willing to face the trade-offs of using Qubes, you won't compartmentalize your entire system. The key file in question is stored in
~/.local/share
. I'm not denying vulnerabilities in userland applications, but thanks to it's wide reach, often massive codebases and use of unsafe languages like C, it's the core system or networked software that is the most common attack vector. And that doesn't ship and will never ship via flatpak.The most obvious way this is exploitable is directory traversal. But not only that. Just look up "Electron $VULNERABILITY", be it CSRF, XSS or RCE. Sandbox escape is much easier with this crap than any major browser, since
contextIsolation
is often intentionally disabled to access nodejs primitives instead of electron's safer replacements. Btw Signal Desktop is also an electron app.