• 0 Posts
  • 16 Comments
Joined 5 months ago
cake
Cake day: June 6th, 2025

help-circle

  • Rust has features that are not directly related to memory safety, but introduce paradigmatic and ergonomic improvements that help writing correct logic more often. Features like sum types (powerful enums) and type classes (traits, how generics are implemented) quickly come to mind. Hygienic macros and procedural macros are also very powerful features.

    Sometimes the two aspects (language feature and memory safety) come together. For example, the Send and Sync traits is the part of the type system that contributes to implementing thread safety.

    So it’s not all just about (im)mutability, lifetimes, and the borrow checker, the directly relevant safety features.

    Also, the tooling and the ecosystem are factors the value of which can not be understated.


  • Nice(!) to see so many people who don’t know anything about programming get successfully propagandized into going against something they know nothing about.

    Below is a list of CVE’s published against original sudo, all within the last 5 years. You may not heard of them, because CVE’s against non-Rust projects are not news 🫣

    sudo CVE’s from within the last 5 years

    (severity scores are not available/assigned always)

    CVE-2021-3156 (Severity: High)

    Sudo before 1.9.5p2 contains an off-by-one error that can result in a heap-based buffer overflow, which allows privilege escalation to root via “sudoedit -s” and a command-line argument that ends with a single backslash character.

    CVE-2021-23239

    The sudoedit personality of Sudo before 1.9.5 may allow a local unprivileged user to perform arbitrary directory-existence tests by winning a sudo_edit.c race condition in replacing a user-controlled directory by a symlink to an arbitrary path.

    CVE-2021-23240

    selinux_edit_copy_tfiles in sudoedit in Sudo before 1.9.5 allows a local unprivileged user to gain file ownership and escalate privileges by replacing a temporary file with a symlink to an arbitrary file target. This affects SELinux RBAC support in permissive mode. Machines without SELinux are not vulnerable.

    CVE-2022-43995 (Severity: High)

    Sudo 1.8.0 through 1.9.12, with the crypt() password backend, contains a plugins/sudoers/auth/passwd.c array-out-of-bounds error that can result in a heap-based buffer over-read.

    CVE-2023-7090 (Severity: Medium)

    A flaw was found in sudo in the handling of ipa_hostname, where ipa_hostname from /etc/sssd/sssd.conf was not propagated in sudo. Therefore, it leads to privilege mismanagement vulnerability in applications, where client hosts retain privileges even after retracting them.

    CVE-2023-22809 (Severity: High)

    In Sudo before 1.9.12p2, the sudoedit (aka -e) feature mishandles extra arguments passed in the user-provided environment variables (SUDO_EDITOR, VISUAL, and EDITOR), allowing a local attacker to append arbitrary entries to the list of files to process. This can lead to privilege escalation.

    CVE-2023-27320 (Severity: High)

    Sudo before 1.9.13p2 has a double free in the per-command chroot feature.

    CVE-2023-28486

    Sudo before 1.9.13 does not escape control characters in log messages.

    CVE-2023-28487

    Sudo before 1.9.13 does not escape control characters in sudoreplay output.

    CVE-2023-42465

    Sudo before 1.9.15 might allow row hammer attacks (for authentication bypass or privilege escalation) because application logic sometimes is based on not equaling an error value (instead of equaling a success value), and because the values do not resist flips of a single bit.

    CVE-2025-32462 (Severity: Low)

    Sudo before 1.9.17p1, when used with a sudoers file that specifies a host that is neither the current host nor ALL, allows listed users to execute commands on unintended machines.

    CVE-2025-32463 (Severity: Critical)

    Sudo before 1.9.17p1 allows local users to obtain root access because /etc/nsswitch.conf from a user-controlled directory is used with the --chroot option.


    The special comment from @MTK@lemmy.world in this thread deserves some focus:

    The Rust hype is funny because it is completely based on the fact that a leading cause of security vulnerabilities for all of these mature and secure projects is memory bugs, which is very true, but it completely fails to see that this is the leading cause because these are really mature projects that have highly skilled developers fixing so much shit.

    So you get these new Rust projects that are sometimes made by people that don’t have the same experience as these C/C++ devs, and they are so confident in the memory safety that they forget about the much simpler security issues.

    This has all the classics from the collectively manic discourse that has been spreading lately

    mature projects

    highly skilled developers

    Rust projects that are sometimes made by people that don’t have the same experience as these C/C++ devs

    C/C++ devs (deserves a separate entry)

    they forget about the much simpler security issues.

    The only classic missing is “battle tested” which is a crowd favorite these days.

    But of course the internet gantry’s knowledge about CVE’s reported against non-Rust projects, is as good as their understanding of the Rust language itself.

    Someone bothering to be minimally informed, even when lacking the technical knowledge to maximize their understanding of the information, would have known that the original “mature” sudo has CVE’s published against it all the time. A CRITICAL one was rather recent even. And as it just happens, the ones not (directly) related to memory safety did outnumber the ones that did recently (5 year span). Which ones had higher severity is left as homework for the internet gantry.

    The discourse centered around memory safety is itself lacks the knowledge to realize that the overall value proposition of Rust is much bigger than this single aspect, although the breadth of sub-aspects that cover memory safety offered by Rust is itself also under-grasped.

    The internet gantry’s susceptibility to propaganda and good old FUD done by ignorant and drama mongering “influencers” and “e-celebs” would have been almost concerning, that is if their transient feelings mattered in any way, in the grand scheme of things.


    Needless to say, but this is comment is not meant to be disparaging towards Todd C. Miller or any other sudo developer/maintainer. He has a good relationship with sudo-rs developers anyway, not that the internet gantry would know.


  • I used to run their closed cli client years ago, but only when connecting to grab wireguard configs, then I closed it and connected with that config without it, which worked well*.

    I also remember strace showing it reading a bunch of stuff including /etc/os-release. So they at least knew what distro you were using 😉

    It was okay for me because I knew how to deal with it, although I’m with a provider that provides configs directly so you don’t need to use any service-specific clients.

    Nord was never, or should have never been, a “privacy” choice, unless you are the kind of person that falls for paid reviewers and comparison sites, or marketing bullshit like all the X eyes talk.

    *you can do that with any client that connects through wireguard since you can run wg showconf on the connected wireguard device. Although you would have to do some scripting yourself to replicate other steps like DNS and routing. I don’t think I was the only one doing this.


  • A long time ago, there was this misconception that “linux” was terminal-only. You know, like the interface sysadmins and Hollywood hackers use.

    A small long-defunct non-tech forum I used to be a member of had a tech sub-forum, and in that sub-forum there was a new post one day introducing “linux” and covering some basics. It was full of DE screenshots (GNOME 2 and KDE 3) specifically to dispel the “terminal-only” misconception.

    That was almost ~20 years ago. And the rest is history. I never liked Windows or M$ anyway for both technical and non-technical reasons. So it wasn’t that hard to convince me.

    I almost exclusively use the terminal for everything except web browsing now, and don’t use a DE. So you could say that I myself ironically became a perpetuator of the misconception 😉




  • People stopped taking Brian seriously when he helped create Go. That was pre-Rust.

    Even the “talking points” here seem to be re-used from “Go vs. X” ones. Also, his experience speaks of someone who only tried Rust pre-v1.0.

    Anyone who actually knows Rust, anti- or pro-, knows that what he said (partially in jest) is factually wrong.

    Feel free to prove otherwise, especially the part about the performance of Rust programs. Don’t be surprised if he simply didn’t pass --release to cargo build, a common pitfall for someone in the “hello world” stage of trying Rust.

    And this is why appeal to authority was never more fallacious, considering we live in a world where Dunning-Kruger is a universal reality.


  • ISO@lemmy.ziptoLinux@programming.devFinding a successor to the FHS
    link
    fedilink
    arrow-up
    3
    arrow-down
    1
    ·
    3 months ago

    man 7 hier is much older than linux itself. The 1994 start date in the article is not doing the history of the tradition justice.

    It would have been weirder if the creepy “init system” (with its 58 executables and counting, 52 + 6 arg0 links) dictating the future of that tradition didn’t raise some eye brows.


  • What’s wrong with it

    • It’s a random crate no one uses.
    • You’re not even really “using” it. You are just importing a re-export of reqwest, which is what I expected you to immediately notice after I brought it into attention. You can obviously just remove it and use reqwest directly.
    • Still, trusting a re-export is not a trivial matter. The random author of the no-name crate could replace the original reqwest with something malicious, or bad in some other way, in a v0.1.1 release. That (theoretical) release will be picked up after a cargo update call, or when Cargo.lock is not checked, which is the case by default with libraries.





  • reflector uses https://archlinux.org/mirrors/status/json/ to get mirror status info, and caches it under ~/.cache/Reflector/. So as long as that end-point works, reflector should work.

    I just grabbed a copy and pasted it at http://0x0.st/Ki3Y.json.

    Anyone can grab that JSON data and use file:// URLs so they are never out. e.g.

    curl -L https://archlinux.org/mirrors/status/json/ > /tmp/mirror_status.json
    # or if down, use pasted json
    curl -L http://0x0.st/Ki3Y.json > /tmp/mirror_status.json
    # and then
    reflector --url file:///tmp/mirror_status.json ...
    

    But, as you noted, this has been mostly a nothing-burger from a user perspective anyway. Other than the homepage being unavailable on occasion, everything else has been mostly available just fine as you can see from https://status.archlinux.org/.

    I didn’t notice https://gitlab.archlinux.org/ going down either.


    BTW, and as a general rule of thumb, NEVER take specific technical advice from these editors. They don’t actually know much, and this is me trying to be nice.

    Take for example:

    For AUR disruptions, it’s a bit of a pain if you’re not a regular git user, but you cloned packages directly from the GitHub Arch Linux mirror. To do this, use the command:

    See that link ;) At least he got the command below it correctly, somehow.