Having to reverse-engineer an embedded cryptographic library has been… interesting.
And rewarding! This effort should allow us to work around the fact that a misconfigured hardware CRC32 unit is breaking the AES-GCM implementation on a satellite!
https://t.co/u1JGo4DLZN
Node.js v24.7.0 is out 💚
Featuring:
- Post-Quantum Cryptography in node:crypto
- Modern Algorithms in Web Cryptography API
- Node.js execution argument support in single executable applications
And more details in our blog: https://t.co/9nI5y25Cj1
I've now created 1,000 pull requests on GitHub.
The vast majority of my (code) contributions are C++ and/or JavaScript. I don't know how to feel about that.
I also have not yet figured out which of the two is worse.
@sergey_slotin@lemire A lot, sometimes! Google achieved up to 40% smaller memory footprints by using 32-bit pointer compression inside 64-bit processes: https://t.co/quzDchNpGK
@rluvaton@rustlang It's a lifetime! Those guarantee memory safety without having to resort to garbage collection or cloning objects — you can keep references around as long as their lifetimes are sound. In C/C++, you'd have to trust that a reference/pointer remains valid — the compiler can't tell.
@cjihrig@josefaidt Yeah, I'm not saying this is a good idea for JS. In Rust, this can serve as a co-located unit test or even usage example, and it will not affect binary distributions at all. Those blocks even have clearly separated dependencies.
@cjihrig@josefaidt It can be pretty much anywhere, and it's only meant for small unit tests — Rust uses a separate test folder, too. This was also very unusual for me at first, but now, I do see advantages. For example, you can test internal functions without making them visible outside the file.
@mirzaleka@satanacchio What are you looking for, exactly? On a side note, making things "one-shot only" was the approach that the Web Crypto API took, and it really doesn't scale well for large payloads (and small payloads suffer from the async overhead of the API).
Very interesting vulnerabilities this time!
• cryptographic side channel (CVE-2023-46809),
• Linux user privilege escalation through io_uring (CVE-2024-22017) and capabilities (CVE-2024-21892),
• hostname truncation (CVE-2024-24806),
• HTTP DoS (CVE-2024-22019),
• and more!
@wmhilton @uhhyeahbret Old Unix names, hard to find man pages rn but see https://t.co/lWkceMwFad. The names carried over from Unix into the Netscape codebase. I reflected them into JS in a big hurry in 1995 (after the ten days in May but soon).