This vulnerability, hidden within the netfilter: nf_tables component, allows local attackers to escalate their privileges and potentially deploy ransomware, which could severely disrupt enterprise systems worldwide.

          • turdas@suppo.fi
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 day ago

            It’s not a joke. What was described above is pretty much C++'s RAII pattern, which Rust evangelists love to present as a revolutionary Rust invention. Used with smart pointers, it will help avoid use-after-frees. What it doesn’t avoid is null pointer exceptions (you can std::move a unique_ptr and still access it, it’ll just be nullptr), but those will typically “just” be a crash rather than a gaping security hole.

            That is not to say Rust doesn’t have its own innovations on top of that (notably that the compiler stringently enforces this pattern), and C++ does give you many more ways to break the rules and shoot yourself in the foot than Rust does.

            • sp3ctr4l@lemmy.dbzer0.com
              link
              fedilink
              English
              arrow-up
              3
              ·
              1 day ago

              Your second half there is the whole point.

              Being memory unsafe in C++ is can occur by accident.

              Being memory unsafe in Rust… essentiallly requires consistent intent.

              When coming up with guidelines for an emgineering procesd that can go catastrophically wrong… do you use a stricter ruleset, or a less strict one?

              That’s basically the safety argument.

              • turdas@suppo.fi
                link
                fedilink
                English
                arrow-up
                1
                ·
                1 day ago

                If you follow modern C++ best practices, memory unsafety will not happen by accident. The dodgy stuff in modern, idiomatic C++ is immediately obvious.

                • calcopiritus@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  3 hours ago

                  I would love to see a study about people that follow C++ best practices. Put a bunch of C++ devs and tell them to write some programs. Then see how many of those programs would be valid according to rust’s borrow checker.

                  Whatever % of people that “fail” this test, is much higher than the 0% of people that would do so using rusts’ compiler.

                  Of course, programs that don’t pass the borrow checker can be totally memory safe, but that would need to be analyzed on a case by case basis.

                  • turdas@suppo.fi
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    ·
                    2 hours ago

                    Whatever % of people that “fail” this test, is much higher than the 0% of people that would do so using rusts’ compiler.

                    Of course, programs that don’t pass the borrow checker can be totally memory safe, but that would need to be analyzed on a case by case basis.

                    Programs that do pass the borrow checker aren’t guaranteed to be totally memory safe, so the number isn’t actually 0% for Rust either: https://github.com/Speykious/cve-rs

                • sp3ctr4l@lemmy.dbzer0.com
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  23 hours ago

                  Yes but the whole point is that Rust forces you to do this.

                  Not everybody follows best practices, sometimes people who say they do, well they make mistakes.

                  I really don’t understand how this is conceptually difficult to grasp.

                  • turdas@suppo.fi
                    link
                    fedilink
                    English
                    arrow-up
                    1
                    ·
                    edit-2
                    23 hours ago

                    Rust forces you to do this until you have to use unsafe, after which it doesn’t. That is not so different from C++ guaranteeing your safety until you start using raw pointers.

                    It is not the compiler’s job to stop the programmer from shooting themselves in the foot if they want to. It’s the compiler’s job to make it clear to the programmer when they disable the safety, put their finger on the trigger and aim the gun at their foot. Modern C++ does this, and if you still inadvertedly shoot yourself in the foot in spite of the warnings, you brought it on yourself.

                    Regular old C, on the other hand, gives you a 9mm when you’re in grade 7, safety: always off.

          • henfredemars@infosec.pub
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 day ago

            I think the idea is that it’s easier to manage your resources in C++ if you write your code using RAII. Linux is mainly C, not C++, which makes resource management a little bit more manual.

            Rust however categorically tries to stop these problems from happening in an even stronger way. You can still write bad code in any language, but it’s supposed to be a lot more difficult to get memory corruption.

      • henfredemars@infosec.pub
        link
        fedilink
        English
        arrow-up
        8
        ·
        2 days ago

        Yes, that’s right. You cannot have a UAF situation unless you’re using unsafe “escape hatch” tools.

          • calcopiritus@lemmy.world
            link
            fedilink
            English
            arrow-up
            1
            ·
            3 hours ago

            I’ve only seen it once. And it was made specifically to trigger a compiler bug. It barely looked like rust code.

            Now tell me how someone will introduce such a bug by accident. Winning the lottery 10000 times in a row with the same number isn’t impossible either. But we are engineers, not pure math pedantics. 0.000000000000001% probability for something that happens with less frequency than once per second is impossible.

        • dragonfly4933@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          7
          ·
          2 days ago

          This is correct, but not what most people think. For example, memory leaks could be considered bugs and it is easy to leak memory memory in safe rust on purpose.

          Memory leaks are usually not disastrous for security, mostly an issue for availability, sometimes.

          • Zangoose@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            1 day ago

            I think a lot of the confusion comes from the ambiguity of the phrase “memory leak.” Rust is designed around preventing insecure memory access (accessing out of bounds for an array, use-after-free, etc.) and devs call that a memory leak. But another form of memory leak is just not freeing up memory when its no longer needed (e.g. continuously pushing a bunch of things to a global vector and never clearing it). That is more of a fundamental program design issue that rust can’t do anything about. (and really, neither could any turing complete language)

      • just_another_person@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        2 days ago

        Improbable. Everything has bugs that surface. See my other link, or look yourself. There have been plenty of security fixes for Rust. It’s not bulletproof, just like anything else, just less likely specifically for certain memory attacks to be vectors.

        • arcterus@piefed.blahaj.zone
          link
          fedilink
          English
          arrow-up
          11
          ·
          edit-2
          2 days ago

          Everything has bugs that surface.

          This is a worthless statement. Rust is designed to help reduce the number of bugs. No one thinks Rust will completely eliminate all bugs. Your argument about fixes in the compiler or standard library or whatever applies to C as well.

          See my other link, or look yourself.

          The link you posted says nothing about Rust software having bugs, it’s about malware written in Rust exploiting bugs in other software.

        • arcterus@piefed.blahaj.zone
          link
          fedilink
          English
          arrow-up
          13
          ·
          edit-2
          2 days ago

          Did you even read the article you posted? This is about malware written in Rust being harder to analyze (or notice), not software written in Rust having vulnerabilities…

        • aubeynarf@lemmynsfw.com
          link
          fedilink
          English
          arrow-up
          6
          ·
          2 days ago

          Your link has nothing to do with bugs in Rust. It says attackers are writing their tools in Rust, which is making the attack tools more robust.

          attackers are smart, adaptable types, and they’ve discovered a different angle: malware written in Rust often shields itself using the very design principles we admire about the language. For us, as defenders, this means a steep learning curve and a shift in focus. Let’s break this down.

          • just_another_person@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            2 days ago

            🤦 It’s not necessarily about bugs in Rust-lang, though you can lookup CVEs if you want. The point is that ANY software, by default, will have bugs and exploits. Doesn’t matter if it’s Rust or C. You can exploit at the core, or at implementation. It’s just matter of time and effort, as they say.

            Just flat out saying Rust, or software written in Rust is be default is secure, is a fool’s assertion. Sure it’s LESS LIKELY to have a memory exploit, but that’s where that assertion ends.

            • aubeynarf@lemmynsfw.com
              link
              fedilink
              English
              arrow-up
              1
              ·
              edit-2
              22 hours ago

              Just flat out saying Rust, or software written in Rust is be default is secure, is a fool’s assertion.

              Who said that, Mr. Strawman?

              It’s clearly better from both language feature and security standpoint and the community is behind it. What’s the problem?

              did you mean to post a different link?

        • Zangoose@lemmy.world
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 day ago

          ‘Use-after-free’ bugs are a specific type of memory access bug that Rust was designed around preventing. It literally refers to trying to access a block of memory after it has already been freed by the memory allocator. Unless you go out of your way to use the “unsafe” keyword in rust (which in most cases, you shouldn’t) then this type of bug is not possible.

      • AMoistGrandpa@lemmy.ca
        link
        fedilink
        English
        arrow-up
        5
        ·
        1 day ago

        Rust is a programming language which was designed to be memory safe without any of the overhead caused by traditional memory safety techniques employed by existing languages (namely, garbage collection and reference counting). It does this by shifting the memory management from happening at runtime to happening at compile time. The compiler forces the programmer to follow certain rules to ensure that their program can be proven to be free of errors such as use-after-frees and double-frees. Because of this design philosophy, Rust is a good fit as a replacement for C, because it can do everything that C can while ensuring the programmer doesn’t make any mistakes with regard to memory management.