News for hackers. Stuff that matters.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @11:56AM (#50381447)
i think it's just unbelievable there isn't a bigger push to move away from c to languages that can prevent stuff like this from happening. this and just the pure unsafety. it's 2026. it's like pure negligence at this point, the equivalent of building a bridge with matchsticks because you like using it more.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by my-huge-pony on Thursday November 05, 2026 @12:12PM (#50381630)
How would using a language different than C help here? At it's core this bug is a logic bug, where "*" == crypt(x), because crypt in musl started returning "*" in some cases some years ago. This could be Rust. This could be Go.

Not every C vuln is a memory safety problem.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by realharo on Thursday November 05, 2026 @12:16PM (#50381667)
>because crypt in musl started returning "*" in some cases some years ago

In Rust, the type of the return value would be a `Result<T, E>`, which means the chain of events that led to this would never have started in the first place.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by my-huge-pony on Thursday November 05, 2026 @12:18PM (#50381696)
In C the return value would be NULL, except it was changed by musl at some point.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by realharo on Thursday November 05, 2026 @12:28PM (#50381826)
The type of the value in C is `char*`.

That's what led some people to write code where it crashes without checks. Which is still their mistake. But if the type was something that can't be implicitly used like an always-present value, that would have prevented the situation, even with those same people.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by uecker on Thursday November 05, 2026 @02:47PM (#50383542)
A pointer is a type where a null pointer can't be used as a regular value but leads to a trap when dereferenced.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by realharo on Friday November 06, 2026 @02:33PM (#50397216)
By "can't be used as a regular value", I meant that it would be a compile-time error.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by uecker on Friday November 06, 2026 @05:22PM (#50399300)
I see. For safety a run-time check is enough though.

But it turns out one can have a compile-time error forthis in C as well: https://godbolt.org/z/8E9z66cfs

Re:Alpine Linux Security advisory: OpenSSH-server password a... by atomicUpdate on Thursday November 05, 2026 @02:04PM (#50383014)
You mean could be a `Result<T, E>`. There’s nothing in Rust that forces that.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by rhdjebejdbd on Thursday November 05, 2026 @12:17PM (#50381679)
Another comment said that returning a * was to avoid returning null which would crash users of the library who didn't check for null. That seems like a C smell to me
Re:Alpine Linux Security advisory: OpenSSH-server password a... by ethin on Thursday November 05, 2026 @01:19PM (#50382441)
Not really. This is like if the char* were an Option<String> but you had programs which stupidly didn't check if the Option had something and assumed it always did. As others have said, Rust would not prevent this.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by K0nserv on Thursday November 05, 2026 @01:34PM (#50382667)
`Option<String>` or `Result<String>` forces the check at the callsite. Unlike C, you cannot forget that the function can error. This absolutely helps prevent issues like this.

Now, the decision to return `"*"` instead of letting poorly written code crash on `NULL` is not good either.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Thursday November 05, 2026 @02:09PM (#50383071)
I don't think it's that people forget it while writing the code, it's that people want their program to work with as little effort as possible and decide to ignore it "for now". And that definitely can happen with Option and Result as well. There's no protection for not checking return values, and it's probably not even possible to protect against
Re:Alpine Linux Security advisory: OpenSSH-server password a... by _flux on Thursday November 05, 2026 @02:24PM (#50383248)
Well they would use `unwrap` if they were lazy, but at least that would be quite visible in the code and would not result in undefined behavior due to operating on a null value. And there might be a group of developers who first choose to use .unwrap. I hope it is the minority.

Given how easy it is to just forward that error to the caller, I think most Rust developers would just choose to do that.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by uecker on Thursday November 05, 2026 @02:46PM (#50383526)
While dereferencing a null pointer is technically UB, it practice it leads to a safe trap. So .unwrap is the right comparison. If you always forward the error to the caller, it will also just lead to some random error message at some point, not really different to a crash.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by K0nserv on Thursday November 05, 2026 @02:26PM (#50383274)
> There's no protection for not checking return values, and it's probably not even possible to protect against (in entirety)

That's exactly what you get with Result and Option, it's impossible to forget.

Compare:

    char* hash = crypt(key, salt);

    // We crash here on the hash derefence, it's no clear from the code
    // that we were supposed to check for NULL or that we forgot. 
    if (!strcmp(hash, expected)) {
    }
To:

    let result: Result<Vec<u8>, Error> = crypt(key, salt);
    // We MUST write this line, which is a very clear signal
    // that we can panic here.
    // This can be grepped for or forbidden.
    let hash: String = result.unwrap();

    // if result == expected { would type error
    if hash == expected {
    }
Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Thursday November 05, 2026 @02:32PM (#50383347)
That's exactly what I mean. And I have seen a huge amount of unchecked unwraps in production code in the past years
Re:Alpine Linux Security advisory: OpenSSH-server password a... by K0nserv on Thursday November 05, 2026 @02:35PM (#50383386)
Sure, but it's far better than the C code and I don't think in Rust a library would start returning `Ok` with sentinel values to "fix" shit calling code. Maintainers would, rightfully, tell people to fix their code.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Thursday November 05, 2026 @02:45PM (#50383510)
Don't get me wrong, I think rust has some great features and does some things extraordinarily good. But at the same time I can see that for 99% of cases it's just as prone to bugs, including security and supply chain attacks, as any other language. I think I could just as much argue that any "->" is clearly de-referencing that needs checking, which is also pretty easy to see.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by K0nserv on Thursday November 05, 2026 @02:52PM (#50383591)
Agree to disagree I guess :)
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @03:37PM (#50384160)
this is theoretically, empirically, and objectively wrong. akin to saying that you can get into an accident in a truck as well as a motorcycle, so in 99% of cases there is no difference in safety.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Thursday November 05, 2026 @04:14PM (#50384540)
different kind of programming languages change the kinds of bugs and their properties, but it does not change the amount of bugs per line of code. in respect to C and rust for example, rust may have less memory bugs - which LLMs seems to be able to spot now - but it did increase supply chain attacks for example.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by orf on Thursday November 05, 2026 @05:15PM (#50385256)
> but it does not change the amount of bugs per line of code

You are really uninformed: different programming languages have very different volumes of bugs per line of code

Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Thursday November 05, 2026 @06:28PM (#50386053)
With all the respect but I don't think I am: https://arxiv.org/html/1901.10220v2
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Friday November 06, 2026 @01:35AM (#50388931)
that only tries to show a single study is flawed, nothing else

do you think bugs/loc is the same between brainfuck and rust?

Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Friday November 06, 2026 @04:00AM (#50389875)
> that only tries to show a single study is flawed, nothing else

no the study failed to show any difference in bug count for a specific set of common used languages, where C and Python were both part of the dataset.

I don't think programming languages have a big impact on bugs per line when every line is written by a human. Now given that I was talking about bug counts, not severity.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Friday November 06, 2026 @06:36AM (#50391114)
it showed errors in the methodology of an earlier study, it did not produce a novel result.

kind of reminds me how the "research" suggests that there are no practical differences between dynamically typed and statically typed languages...except we know from practical experience that there is, and the literature there is horribly flawed.

we have real-world evidence that rust leads to significantly less bugs in the real world

https://blog.google/security/rust-in-android-move-fast-fix-t...

Re:Alpine Linux Security advisory: OpenSSH-server password a... by pheggs on Friday November 06, 2026 @08:26AM (#50392028)
> it showed errors in the methodology of an earlier study, it did not produce a novel result.

It showed that there's no big difference. From the link:

> Combining corrections for all of these aforementioned items, the reanalysis revealed that only 4 out of the original 11 languages correlated with abnormal defect rates, and even for those the effect size is exceedingly small.

--

> we have real-world evidence that rust leads to significantly less bugs in the real world

no, we only have evidence for memory bugs, that's not what I was talking about

Re:Alpine Linux Security advisory: OpenSSH-server password a... by orf on Sunday November 08, 2026 @03:54PM (#50417137)
[delayed]
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @12:17PM (#50381680)
why does this logic bug exist? why are they returning a string, why not a result type, (nil, err), or something else?

oh right, because c is a crusty old language with barely any features.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by bmacho on Thursday November 05, 2026 @12:58PM (#50382153)
[delayed]
Re:Alpine Linux Security advisory: OpenSSH-server password a... by Gibbon1 on Thursday November 05, 2026 @03:07PM (#50383786)
I write firmware where the program has to run for years unattended.

You are right, C with manual memory management, no lifetime management, lack of phat pointers and a culture of leet has problems with deranged maddening bugs that other languages don't have.

But this bug first shows how inband signaling is bad news usually. But worse it's a failure to adhere to the spec properly. If you implement a library and you don't adhere to the spec you're going to bone someone.

Perhaps even worse is obviously the spec doesn't come with any standard testing framework. That was also the root of Apples infamous goto bug.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by anonreplier on Thursday November 05, 2026 @12:14PM (#50381650)
guess what, this kind of sentinel value mistake could even be made in rust
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @12:18PM (#50381694)
no rust programmer would ever return a sentinel string like this.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by ethin on Thursday November 05, 2026 @01:21PM (#50382459)
Are you sure about that? When backwards compatibility comes into the picture people tend to bend over backwards.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by _flux on Thursday November 05, 2026 @02:25PM (#50383268)
Backwards compatibility with what? Rust has always has had enum also for this exact case, to avoid encoding sentinels as strings or pointers.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @03:43PM (#50384230)
you literally sound insane. its like an assembly fanboy saying C isn't any better because you could write inline asm, and therefore whatever bugs C prevents, well, it doesn't prevent them at all.

people like you are holding back software and security by decades.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @03:49PM (#50384301)
im quite positive the only rust programmer who would do this is a C programmer who doesn't understand rust
Re:Alpine Linux Security advisory: OpenSSH-server password a... by anonreplier on Thursday November 05, 2026 @03:11PM (#50383848)
why, because they all use agents to do the coding and don't check it?
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @03:46PM (#50384257)
because rust has features that makes doing it pointless.

in theory could someone do it? yeah, just like in theory someone could use unsafe and return a raw char pointer for some reason.

but in practice would anyone do it? no.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by woah on Thursday November 05, 2026 @12:44PM (#50381994)
Cars without seatbelts and airbags chopping off driver's heads in relatively slow collisions? Well guess what, that could happen in a modern car as well if the driver sticks their head out the window while going through a very tight tunnel!
Re:Alpine Linux Security advisory: OpenSSH-server password a... by anonreplier on Thursday November 05, 2026 @03:12PM (#50383858)
you followed up an incorrect comparison with another one, are you sure you're a rust programmer?
Re:Alpine Linux Security advisory: OpenSSH-server password a... by oguz-ismail2 on Thursday November 05, 2026 @12:14PM (#50381653)
What exactly do you mean "push"? What do you think is going to make musl developers switch languages?
Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @12:21PM (#50381729)
it's unbelievable to me that there isn't a larger movement of developers to move away from c towards better & safer languages. look at how much pushback the rust4linux folks get, primarily from c developers who are simply afraid of change. imagine engineers not adopting safer building practices because "they prefer the old way"....it's disgusting honestly.

what will it take to move away from c? older devs retiring. Planck said that "science advances one funeral at a time" and i fear it will be the same for software.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by bigbadfeline on Thursday November 05, 2026 @12:57PM (#50382144)
> what will it take to move away from c? older devs retiring.

I'll take forking and porting, thank goodness for LLMs.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by anonymous908213 on Thursday November 05, 2026 @01:53PM (#50382871)
It will indeed take everyone dying, but it's not because of developers being afraid of change. In large part, it's because of people like you who make Rust insufferable. Rust is the only language I have antipathy for, because of its community. No other programming language broadly has people who make it their life's mission to tell other programmers they're programming wrong because of their choice of language. When your arguments for why they're wrong are also vapid, eg. "C is bad because of an insane developer committed a logic bug that blatantly violates a trivially-written spec" when an insane developer could just as easily write Rust code that violates the spec, it reinforces that there is no reason to switch.

Rust is a fad among HN-types. It is not used in the real world. You see logic errors reported in C/++ because 99.99% of the world's system code is written in it. The only reason you don't see headlines about logic errors in Rust is because nobody uses Rust in production code. Rust certainly does not prevent you from producing the most dogshit software imaginable, eg. https://jepsen.io/analyses/particledb-1.1.4 , which is far worse than any C/++ database anybody uses.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by hollowonepl on Thursday November 05, 2026 @02:05PM (#50383023)
Moving away from C in any POSIX system is in fact stop being POSIX system as POSIX and linux being unix like system is built on standard that is defined as C library specification.

Rewriting it to Rust is fine attempt, just hard to call it is unix/posix anymore. It may not matter but semantically true.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by rpdillon on Thursday November 05, 2026 @12:15PM (#50381660)
musl's crypt function could be written in Rust, Python, or JavaScript, and still return * when the key is too long.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by ethin on Thursday November 05, 2026 @01:18PM (#50382413)
Rust would not save you here as this is a logic bug. Nor would, well, really any other language. I suppose someone might claim that Rust's result type would save you but it really wouldn't: I can easily make the error type a String or pretty much any other type with little consequence.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by iknowstuff on Thursday November 05, 2026 @01:24PM (#50382519)
It would, due to Result<T> and #[must_use] on it. Nobody would return “*” as a sentinel in Rust.
Re:Alpine Linux Security advisory: OpenSSH-server password a... by K0nserv on Thursday November 05, 2026 @01:30PM (#50382610)
Rust would absolutely have saved you here. Even with `Result<String, String>`, which is pretty poor design, there's no confusing `Ok(s)` with `Err(s)`. Sure you can go out of your way to write something like

    let hash = match result {
        OK(s) => s,
        Err(s) => s,
    };
but at that point I feel like the library is forgiven (except for the poor error design).

@my-huge-pony does make a good point elsewhere in the thread: if the potential error was not foreseen and the code was written originally to return `String` instead of `Result<String, Error>` then even Rust would be in a pickle.

Re:Alpine Linux Security advisory: OpenSSH-server password a... by slopinthebag on Thursday November 05, 2026 @03:47PM (#50384276)
languages with more features would mean developers aren't choosing between unchecked NULLs or sentinel strings.