• @FizzyOrange@programming.dev
    link
    fedilink
    543 months ago

    Seems a bit clickbaity to me. It’s a flaw in Windows/cmd.exe, not Rust. Rust is just called out because it tries to emulated proper argument passing on Windows (and didn’t get it perfectly right). All languages are affected by this but most of them just throw their hands in the air and say “you’re on your own”:

    • Erlang (documentation update)
    • Go (documentation update)
    • Haskell (patch available)
    • Java (won’t fix)
    • Node.js (patch will be available)
    • PHP (patch will be available)
    • Python (documentation update)
    • Ruby (documentation update)

    It’s also extremely unlikely that you’d be running a bat script with untrusted arguments on Windows.

  • @eveninghere@beehaw.org
    link
    fedilink
    26
    edit-2
    3 months ago

    In February, the White House Office of the National Cyber Director (ONCD) urged technology companies to adopt memory-safe programming languages like Rust.

    My comment is somewhat unfair, but WH is not the right body to make this kind of recommendation.

    • @thingsiplay@beehaw.org
      link
      fedilink
      93 months ago

      Why not? I mean they are right. Adopting memory safe languages is a good step forward, because it would eliminate bunch of mistakes before they happen. And the White House does not recommend Rust only, but a memory-safe language, something like Rust or something different. I wish my government would do the same.

    • @thingsiplay@beehaw.org
      link
      fedilink
      233 months ago

      But it got a 10/10 on the scoring system by Github.

      The issue isn’t actually too much related to the Rust core language itself, but rather how they handle scripts on Windows platform. So if you don’t have a Windows program that runs Batch scripts, then it doesn’t matter to you. I wonder how common it is to run Batch scripts in Rust?

      • TehPers
        link
        fedilink
        English
        83 months ago

        if you don’t have a Windows program that runs Batch scripts with untrusted arguments

        This only matters when running the scripts with user inputs passed as arguments to the command, which I can’t imagine being remotely common at all.

    • @Sekoia
      link
      173 months ago

      Also, the reason this is a CVE is because Rust itself guarantees that calling commands doesn’t evaluate shell stuff (but this breaks that guarantee). As far as I know C/C++ makes no such guarantee whatsoever.

      • @xmunk@sh.itjust.works
        link
        fedilink
        63 months ago

        C++ has no guarantees built into stdlib but frameworks like Qt provide safe access - the ecosystem has options. C++ itself is quite a simple language, most of the power comes out of toolsets and frameworks built on top of it.

            • @arendjr@programming.dev
              link
              fedilink
              5
              edit-2
              3 months ago

              That’s certainly not the case, because that’s like saying the issue is with Rust’s string slices. I think you may have missed the part of the issue where batch scripts require additional escaping due to Windows’ command handling. It’s a ridiculous design of the Windows API system, which is also why (almost?) every language they tested was vulnerable, so it would be actually very outstanding if Qt prevented this.

              For C++ devs not using Qt it’s just another footgun they’ll likely keep introducing security issues with as well. But if you do use Qt, I think it’s better to double-check since it may also require a patch.

  • @xmunk@sh.itjust.works
    link
    fedilink
    213 months ago

    Now that it has been identified, it should be an easy fix, at least.

    Still, it’s important to remember that Rust is still a relatively young ecosystem and flaws like this exist until we get burned by them.

  • @drjkl@programming.dev
    link
    fedilink
    113 months ago

    I’ve run into bizarre behavior with windows command lines plenty of times before, but I’d never put all the pieces together and realized that:

    a) windows really does pass around unadorned monolithic strings containing the entire command line of an executed command, and

    b) there’s no parsing standard for command lines in windows

    sigh, windows