Who else is tired of C libraries since this week?
[–] Gigachad 1 day ago
[–] cristoperb 1 day ago
[–] angry_octet 18 hours ago
[–] awesome_dude 1 day ago
How about being constructive instead - old bug in old code is no surprise, no matter the language/technology.
[–] fartfeatures 1 day ago
https://www.darpa.mil/research/programs/translating-all-c-to...
[–] eviks 1 day ago
[–] awesome_dude 1 day ago
[–] dvdkon 22 hours ago
[–] cowlevel 17 hours ago
[–] grumbelbart2 17 hours ago
We have a lot of legacy code that probably contains many bugs that could be exploited.
We could either stop using that legacy code, i.e. re-write and move to a newer library / package. Or fix the old code.
I now believe that "fixing" the code is actually in reach for an organization such as Google, which has deep pockets, frontier AI models, and a history of working on open source. Spend a few billions to walk through every package that runs on a common Linux installation, find potential issues and robustify the code.
[–] grg0 1 day ago
[–] jooops1 1 day ago
[–] dgrunwald 22 hours ago
But yes, memory-save languages like Rust are a massive help protecting against remote code execution. (unless said memory-safe language introduces its own category of RCE vulnerabilities, e.g. deserialization in Java)
[–] jeroenhd 22 hours ago
Rust will not protect you against exploding regexes, it will not protect you against integer over/underflows (unless you specifically call safe wrapping methods), but it will protect you against double frees if you use it sensibly (nothing prevents you from breaking the borrow checker and messing up memory if you write an unsafe {} block).
[–] ferrisjoke 1 day ago
[–] jeroenhd 22 hours ago
Getting rid of C isn't the holy grail it might appear to be (Ubuntu has been working hard at rewriting sudo and coreutils in Rust and they have had plenty of bugs in the process), but I do hope the C projects will preemptively start fuzzing/running fil-C/invent new safety mechanisms for old code.
[–] awesome_dude 10 hours ago
One of the points I wish more people understood about fuzzing is what it is doing is grabbing a random selection of all the possible inputs and running them through the function (Yes the fuzzer can be made to target/exercise different branches in the code, but it's still doing that with a random selection of the possible inputs that will exercise said piece of code).
Fuzzers miss bugs, because the full corpus of possible inputs is impossible to permutate through every function.
But the advantage of fuzzers is that they choose inputs that developers never think to try on the code.
edit: some back of the envelope AI math:
To enumerate every unique state of a 64-bit variable, you must iterate through 18,446,744,073,709,551,616 individual inputs (2⁶⁴).
The exact time in seconds depends entirely on the processing speed of the system executing the loop. Here is how the time breaks down across three different performance levels:
1. Standard Desktop CPU (1 Billion operations/sec)
• Time: 18,446,744,073 seconds
• Scale: Roughly 584.5 years
• Context: If a single core on a modern processor handles roughly 1 billion state evaluations per second (1 GHz efficiency), it would take nearly six centuries to finish.
2. High-End Multi-Core Processor (4.3 Billion operations/sec)
• Time: 4,294,967,296 seconds
• Scale: Exactly 136.1 years
• Context: If you maximize a consumer CPU utilizing multiple threads or an incredibly high single-core instruction-per-clock rate (4.29 GHz efficiency), it still takes well over a human lifetime.
3. High-End Enterprise GPU / Supercomputer Cluster (1 Trillion operations/sec)
• Time: 18,446,744 seconds
• Scale: Roughly 213.5 days
• Context: A highly optimized, massively parallel hardware setup—like an enterprise GPU cluster capable of churning through 1 Terahash/Tera-iteration per second—can shrink this problem down to a matter of months.
And now we are seeing that was all untrue.