Windows Command Escape Vulnerability - Critical CVE ... or is it?

Поділитися
Вставка
  • Опубліковано 1 лют 2025

КОМЕНТАРІ • 144

  • @MrChaoS441
    @MrChaoS441 9 місяців тому +332

    java chad move "won't fix"

    • @pheanelrondo
      @pheanelrondo 9 місяців тому +68

      skill issue, moving on

    • @AntonioZL
      @AntonioZL 9 місяців тому +15

      the problem is somewhere between the software and the hardware. Skill issue.

    • @joonwonsong4081
      @joonwonsong4081 9 місяців тому

      what the actual fuck xDDDD

    • @figboot
      @figboot 9 місяців тому +37

      it's ultimately a windows API design issue

    • @trustytrojan
      @trustytrojan 9 місяців тому

      ​@@figbootyep

  • @jamesarthurkimbell
    @jamesarthurkimbell 9 місяців тому +106

    Heartening to see someone look into this and get a real sense of what's going on instead of shooting off a video last week when the news was hot

    • @mCoding
      @mCoding  9 місяців тому +28

      *Me, who was just busy and totally would have fired off a vid with everyone else*
      Yeah *those* guys 🫣

  • @yeetdeets
    @yeetdeets 9 місяців тому +139

    Windows skill issues.

    • @HoSza1
      @HoSza1 9 місяців тому +3

      xz... ahem 😂

    • @dirlrido2522
      @dirlrido2522 9 місяців тому

      @@HoSza1 Caught before reaching production systems

    • @ItsCOMMANDer_
      @ItsCOMMANDer_ 9 місяців тому +1

      @@dirlrido2522 bat: never used in production

    • @dirlrido2522
      @dirlrido2522 9 місяців тому +1

      @@ItsCOMMANDer_Uncommon use doesn't make bat not an exploitable part of every Windows system lmao

    • @ItsCOMMANDer_
      @ItsCOMMANDer_ 9 місяців тому

      @@dirlrido2522 bat isnt the problem lol, (deprecated) cmd.exe is

  • @Cucuska2
    @Cucuska2 9 місяців тому +62

    Quite weird that the Win API doesn't have a way of processing an array of arguments.

    • @michawhite7613
      @michawhite7613 9 місяців тому

      It does, iirc, it's just implemented incorrectly.

    • @ruroruro
      @ruroruro 9 місяців тому +21

      ​@@michawhite7613 Nah, this has nothing to do with the Windows CreateProcessW API. If this was a problem with CreateProcessW then the same vulnerability would also happen with non-.bat files.
      The problem is in the implementation of cmd.exe (that gets implicitly ran when attempting to execute a batch file). Your program escapes the argument list correctly and packs them into the single argument string of CreateProcessW. CreateProcessW spawns a new process and passes all of the arguments to it. At this point, any normal program would treat those arguments as raw strings, but cmd.exe instead intentionally evaluates them in a shell.
      So basically, cmd.exe manually "un-escapes" the arguments one extra time and calls it a feature.

    • @maxpoulin64
      @maxpoulin64 9 місяців тому

      @@michawhite7613 It doesn't, that's why it's a problem in the first place. POSIX systems use an array of null terminated strings, so your array of arguments gets passed as-is even in bash scripts. The shell itself parses that when you run commands, so you escape for the shell when you're in a shell context. In code, if you pass an array of arguments with spaces in them, they don't magically become more arguments, you can really put whatever you want in there as long as it doesn't contain a null byte. Windows seems to have carried over stuff from DOS where it probably read up to the first space to find out which program to run, then just passed everything until
      to it raw. So CreateProcess* functions take a single string too, which gives an opportunity for every program to do whatever the hell they want, making passing arguments to subprocesses in Windows safely impossible. I could decide my program uses tab delimited arguments, and there's nothing you can do about it apart for special-casing my program.

    • @Howtheheckarehandleswit
      @Howtheheckarehandleswit 9 місяців тому +6

      ​@@ruroruro To be fair to it, `cmd.exe \c` *is* a shell. If I pass arguments to `bash -c` or `zsh -c`, I generally expect them to evaluate those arguments as a shell as if I'd typed them into my terminal, and they will.

    • @RandomGeometryDashStuff
      @RandomGeometryDashStuff 9 місяців тому +2

      ​@@Howtheheckarehandleswitbash -c only evaluates one argument as shell script:
      ```
      bash -c 'echo "$0"' '&echo hello'
      ```
      output:
      ```
      &echo hello
      ```

  • @Grub4K
    @Grub4K 9 місяців тому +19

    This can still be a big problem; look at npm or VSCode: these typically get called using `npm` and `code`, but those are batch files on Windows ("npm.cmd" and "code.cmd"). So if you use these you cannot do it using `npm` or `code` in path anymore, or you could be exploited. Some might not even realize they were calling a batch file for these! THAT is why this is such a big deal!
    Ofc the solution is for these programs to NOT use batch file wrappers, but for now you have to manually search for the actual executable and always use an explicit ".exe" extension

  • @AntonioZL
    @AntonioZL 9 місяців тому +28

    0:15 "Rust is a programming language" 🗣🗣🗣🗣🔥🔥🔥
    Btw, I found out that ChatGPT can write batch files *literally* yesterday while using the task scheduler on Windows to schedule the execution of a Python script on one of the PCs at my job, so I'm technically part of the people still using it.

    • @mCoding
      @mCoding  9 місяців тому +5

      I pointed out rust specifically because they were the ONLY language mentioned in the actual cve description, which I found weird because so many languages are affected.

  • @dave_jones
    @dave_jones 9 місяців тому +39

    Thank you James, I can’t wait to have to send this video to my OIS when they tell me I need to abandon python. I keep telling them the real thing we need to abandon are windows servers!

    • @mCoding
      @mCoding  9 місяців тому +7

      Well, hopefully you weren't passing along untrusted inputs in the first place so nothing to worry about!

    • @Norsilca
      @Norsilca 9 місяців тому

      OIS?

    • @dave_jones
      @dave_jones 9 місяців тому +1

      @@Norsilca office of information security

  • @TheFerdi265
    @TheFerdi265 9 місяців тому +5

    The problem is that unlike 'sh -c' or 'bash -c' on Linux, which only process one argument as a shell script and pass the rest as unevaluated arguments, 'cmd /c' actually parses all following arguments as a single shell command. There is no way to pass untrusted unevaluated arguments to 'cmd /c'.
    Without _knowing_ whether the target is a batch script or cmd.exe (or even a copy of cmd.exe!), it's impossible for a programming language API to correctly escape arguments here.
    The backwards-compatible solution would be for Microsoft to provide a new flag for cmd.exe that behaves like Linux's 'sh -c' and only processes one argument as a shell script, and for batch script invocations to use this new flag if a certain compatibility option is not set (in settings or registry or whereever)

    • @TheFerdi265
      @TheFerdi265 9 місяців тому +2

      It would also be possible to write a 'bad-sh' program for linux that behaves similarly, and every script that defines '#!/usr/bin/bad-sh' would then have the same problem as bat files on windows. (Or at least, similar, since Linux at least has an OS level array of arguments)
      The problem isn't actually the programming languages, it's the windows cmd shell. But I absolutely understand that Programming languages are trying to make it harder to shoot yourself in the foot with this, since it's a pretty easily overlooked way to accidently run untrusted commands.

    • @l3xforever
      @l3xforever 9 місяців тому

      They already provide it, it’s “pwsh -command” 😹

  • @johnsmith34
    @johnsmith34 9 місяців тому +7

    here's the part that's questionable to me:
    ```
    To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the following arguments: /c plus the name of the batch file.
    ```
    Is what the documentation says, and what it actually does is run cmd for you regardless.

    • @davidfrischknecht8261
      @davidfrischknecht8261 9 місяців тому +2

      It only runs "cmd.exe" automatically because ".bat" and ".cmd" are configured to open with that application in the registry by default. You could always go into the registry and modify those associations to open the files in a text editor. When Windows is told to launch a file that's not an executable, it looks at the file associations in the registry to figure out what you want it to do with the file.

  • @anon_y_mousse
    @anon_y_mousse 8 місяців тому +1

    I hope you see this even though it's a month late, but the execv*() functions are actually very problematic for the fact that you can elide the program name as the first argument and cause all kinds of havoc with calling an executable. Basically, if your program processes arguments in the wrong way and a third-party has called you via an execv*() function, then problems ensue.

    • @mCoding
      @mCoding  8 місяців тому +1

      Seen! I think it's impossible to avoid all problems no matter which interface you choose, you always have to be careful when dealing with os level calls.

  • @KvapuJanjalia
    @KvapuJanjalia 9 місяців тому +27

    If you are passing untrusted user input (escaped or not) to shell - it's on you.

    • @ruroruro
      @ruroruro 9 місяців тому +10

      Consider the following: doing EXACTLY the same thing on Linux, using test.sh instead of test.bat is PERFECTLY SAFE. Now please explain to me, why is this the programmers fault instead of Microsofts?

    • @maxpoulin64
      @maxpoulin64 9 місяців тому +10

      But you're not passing untrusted user input to a shell, you're passing untrusted user input to a shell _script_. You might not even expect to be calling a shell script, the script may be user provided and you expect an exe or a py file and they gave you a bat file. It's safe to do on every operating system except Windows.

    • @antonf.9278
      @antonf.9278 9 місяців тому +2

      ​@@maxpoulin64 If you execute a user provided executable (shell, exe, py,...), you voluntarily build a command injection vulnerability into your system. The entire goal of the BadBat exploit is command injection.

  • @whamer100
    @whamer100 9 місяців тому +1

    this is my exact reaction to seeing this CVE. i was like "isnt this just, expected behavior?" lmao

  • @echidne
    @echidne 9 місяців тому +1

    the clearer explanation i see so far. Bravo !!

  • @AbstractObserver
    @AbstractObserver 9 місяців тому +21

    This is literally the behavior I expected... since ALWAYS

    • @maxpoulin64
      @maxpoulin64 9 місяців тому +4

      Is it a known thing in the Windows world that safely escaping arguments is impossible? Because from a Linux/Mac point of view, I wouldn't. If I run a bash script, I don't have to escape arguments because the program is the shell _script_, not the shell itself. It's `shell=False`, it's not supposed to run through a shell. It might run the script using a shell as the interpreter via the shebang, but in no way is the input arguments to the script ever parsed as shell commands or even shell options.The docs says it's a safe API, and on POSIX it indeed is.
      If I had to run something on Windows, I wouldn't think twice and assume that as the docs says and as every other operating system does, my array of arguments shows up as-is unmangled in the subprocess. The fact that magically if you happen to call a batch script it'll interpret the arguments as shell commands is... weird. Why on earth does cmd.exe even implement that? Isn't it the calling shell's job to handle stuff like "&" to fork in the background?

    • @ruroruro
      @ruroruro 9 місяців тому +13

      Except doing EXACTLY the same thing on Linux, using test.sh instead of test.bat is PERFECTLY SAFE. The fact that cmd.exe evaluates the contents of its arguments instead of passing them to the batch file as raw strings is just crazy.

    • @Howtheheckarehandleswit
      @Howtheheckarehandleswit 9 місяців тому

      @@maxpoulin64 The reason cmd.exe does that is because of the way that you ask it to run a batch file. MCoding didn't go into it, but basically, there isn't actually a flag to tell cmd.exe (which *is* the shell) to interpret a batch file. What you do is run `cmd \c [batch_file_name] [batch file args...]`, which is the same idea as running `sh -c "./[shell_script_name] [shell_script_args...]"`, rather than the much safer `sh [shell_script_name] [shell_script_args...]`

  • @Ariccio123
    @Ariccio123 9 місяців тому +2

    6:30 the C cast to (LPSTARTUPINFOW) is cursed. Always raises a red flag to me!

  • @japedr
    @japedr 9 місяців тому +1

    Just look for an article entitled "How Command Line Parameters Are Parsed". Windows command line is just crazy.

  • @AK-vx4dy
    @AK-vx4dy 9 місяців тому

    Very exhaustive take on subject. Great job !

  • @d_techterminal
    @d_techterminal 9 місяців тому +4

    Superb video!

    • @mCoding
      @mCoding  9 місяців тому +1

      Thank you very much!

  • @jullien191
    @jullien191 9 місяців тому

    Muy bien amigo! Qué es tu opinion de JavaScript y Rust?

  • @aperturesignaturebandwidth
    @aperturesignaturebandwidth 9 місяців тому +2

    What does it mean to validate an unknown/untrusted input? Is there a way to determine if some input you have wants to run an executable?

    • @michawhite7613
      @michawhite7613 9 місяців тому +3

      The problem is that sanitization functions weren't correct, because of an unknown feature of cms.exe. Rust fixed their sanitization to support this. Node just removed the ability to call batch scripts.

    • @aperturesignaturebandwidth
      @aperturesignaturebandwidth 9 місяців тому +1

      @@michawhite7613 well, for the 5 languages that won't change, it seems like the user should sanitize. What does this mean? What does it look like?

    • @ruroruro
      @ruroruro 9 місяців тому +2

      @@aperturesignaturebandwidth its not the users/programmers fault and its not the languages fault. It's pretty clear that this is Microsofts fault. The fact that cmd.exe evaluates its arguments before passing them to the batch script is completely insane, imho.

    • @kezif
      @kezif 9 місяців тому +2

      @@aperturesignaturebandwidth For example in sql you could write “1; drop table”. “;” is special character here witch means new line of code and after that is bad code (delete table). So it would be a good idea to escape characters (like in python place “\” before bad stuff), remove it completely or pass to built in parsing algorithm ( in sql something like query = “select * from table where user_name == @user_input”; query.addarg(“@user_input”, nasty_user_input). As opposite to embedding whatever user given to the query. That is called sanitation, i.e. removing special characters from user input.

    • @1vader
      @1vader 9 місяців тому +2

      @@aperturesignaturebandwidth Doing the escaping correctly is extremely convoluted because the parsing of cmd.exe is messed up and doesn't have good escapes for everything so you need to hack your way around it. That's also why Rust chose to return an error for certain convoluted inputs instead of trying to escape them. In most cases, you can probably just filter or disallow all the relevant special characters. If you need to allow all special characters and escape them correctly, your best bet is probably to check the article by the person that found the CVE. Iirc Microsoft also has some documentation on the topic.

  • @MarekKnapek
    @MarekKnapek 9 місяців тому

    This behavior / issue has been with us (and properly documented) for ages. But. Somebody piled bunch of abstractions on top of it, and in meantime, forgot how the bottom layers actually worked.

  • @unperrier
    @unperrier 9 місяців тому +1

    Great explanation, thanks.

  • @Jcewazhere
    @Jcewazhere 9 місяців тому +5

    I love the snark behind "first you're running windows", and then later 'it feels like I should've validated my inputs'.
    Windows still dominates the market share, and input validation is sadly lacking all over the place.

  • @29crypto
    @29crypto 9 місяців тому +7

    I think you overestimate the average python programmer, just saying

  • @kinomonogatari
    @kinomonogatari 9 місяців тому +2

    Hi James, will you ever make a video on Mojo?

    • @felixfourcolor
      @felixfourcolor 9 місяців тому +1

      I'd love that, but not until they're fully open source. Right now there's still so much mystery behind them that there's a good chance it's just a pump and dump scheme, I don't want any free advertisement for them at this point.

    • @kinomonogatari
      @kinomonogatari 9 місяців тому

      @@felixfourcolor I don't think someone like Chris Lattner would be involved in such scheme.

    • @mCoding
      @mCoding  9 місяців тому +3

      I really haven't looked into mojo at all yet. I like to stick to videos around proven technologies and methods, so if mojo sticks around for a few more years, I might make some content on it.

    • @felixfourcolor
      @felixfourcolor 9 місяців тому

      @@kinomonogatari I also hope not, but we can't know. I'm very skeptical of their ludicrous performance claim, and I don't want to add to the hype.

  • @spaghettiking653
    @spaghettiking653 9 місяців тому

    Can anyone explain a circumstance in which this can be exploited? Looks like it could never affect 99.9% of users, just don't type in a malicious command on your own machine. You can already do that by just opening the command prompt.

    • @AK-vx4dy
      @AK-vx4dy 9 місяців тому

      Github, GitLab and other user configurable CI/CD/Actions wich must be done on Windows....

  • @Dimitriedmr
    @Dimitriedmr 9 місяців тому

    Nice! Thank you!

    • @mCoding
      @mCoding  9 місяців тому

      And thank you for watching!

  • @peterholzer4481
    @peterholzer4481 9 місяців тому

    I wonder if this isn't a vulnerability in the batch file. On Unix you are told to always properly quote parameter expansion (i.e., write «echo "$1"», not «echo $1» to prevent similar issues. But there are no quotes on %1 in the batch file, even there are quotes on "%~1" on the previous line (2:13).

    • @Grub4K
      @Grub4K 9 місяців тому +3

      Thats not the point. This would also work if the batch file were completely empty. The call actually getting attacked is `cmd /c problem.bat & calc.exe`. here, cmd executes `problem.bat` and then `calc.exe` as it treats `&` special here already

    • @peterholzer4481
      @peterholzer4481 9 місяців тому

      @@Grub4K Ok, that wasn't clear to me from the video.

  • @GoldenBeholden
    @GoldenBeholden 9 місяців тому +1

    I am surprised this is even considered an exploit. I have always assumed it would work like this, so I treat calls to a subprocess as if I were executing a query on a database -- in no way would I just trust user input to not contain anything malicious.

  • @4_real_bruh
    @4_real_bruh 9 місяців тому +1

    But when do you actually want to pass input into a subprocess.run/call/check_output in the first place? This seems more like a software architecture problem rather than a Windows bug. In the cases where shell is additionally set to true, any arbitrary command sequences can be executed either way through command chaining in cmd.

    • @bigutubefan2738
      @bigutubefan2738 9 місяців тому +1

      When writing any Python wrapper for a CLI.

    • @mCoding
      @mCoding  9 місяців тому +2

      It is indeed a very nice use pattern. A shell written in Python might be the only valid use case. 🤔

  • @POINTS2
    @POINTS2 9 місяців тому +15

    It seems strange to make this issue a CVE given this is known how to work

    • @bennetttomato
      @bennetttomato 9 місяців тому +4

      I mean they made CVEs out of all of the “this is how the http2 protocol works” DDOS issues so CVEs have already been enshittified

    • @yash1152
      @yash1152 9 місяців тому

      "how its known to work" - so, i mean, if it is wrong... then u'd just accept it?

  • @tryashtar
    @tryashtar 9 місяців тому +1

    When will we move past communication between programs via concatenated strings that get parsed and interpreted along the way, this is embarrassing

    • @ruroruro
      @ruroruro 9 місяців тому

      Did you watch the last part of the video? The fact that CreateProcessW passes encodes and packs the arguments into a single string has literally nothing to do with this CVE. In this case you successfully escape the argument, pass them to the cmd.exe process and instead of treating those arguments as normal strings (like for exmple python.exe or bash would), it decides to evaluate them.

    • @tryashtar
      @tryashtar 9 місяців тому +1

      @@ruroruro "Escaping" is only necessary because there's an opaque parser between you and the batch file that you need to appease. It seems insane to me that we've designed programs around adding fluff to a string just so that another program can remove it, hopefully in a symmetric way. When you can't disable, control, or even see this pointless second layer, it's no wonder these injection issues pop up so often.

    • @ruroruro
      @ruroruro 9 місяців тому

      @@tryashtar Once again. Rewatch the video. There is indeed an opaque parser between you and any other process (CreateProcessW isn't specific to batch files). But the escaping done by Python and the parser inside CreateProcessW cancel each other out PERFECTLY. You can tell that there is no vulnerability in this escape-then-parse logic, because passing arguments to any other executable works just fine. The problem only appears when the target executable is a batch file. That's because the problem is inside the implementation of cmd.exe specifically, not in the CreateProcessW API.

    • @tryashtar
      @tryashtar 9 місяців тому

      @@ruroruro Yes I understand. I'm not complaining about CreateProcessW, just a general complaint about unparsed strings being the communication method between programs in most operating systems.

    • @mCoding
      @mCoding  9 місяців тому +1

      I think the create process api is related mostly in that it causes a lot of developer confusion about what needs to be escaped and what doesn't. The cve could still be a thing if we had an array version of it, but I think people would be much less likely to fall for it when they read the docs, which would no longer mention about "escaping" inputs on Windows.

  • @ConstantlyDamaged
    @ConstantlyDamaged 9 місяців тому +2

    _squints_
    Okay, so unless you're already doing something exceptionally *_bad,_* on a platform that sucks, this is an underpants-on-head error.

  • @kenny-kvibe
    @kenny-kvibe 9 місяців тому +1

    when people started writting/filming about this "vulnerability" I became confused because it looked like they forgot about SQL injection stories and like they want "nothing needs checking" programs... why are they even programmers ?

  • @Finkelfunk
    @Finkelfunk 9 місяців тому +4

    Literally: If you rely on passing user input in your program to a batch file for processing, you have bigger problems with your code on a fundamental level.

  • @Relkond
    @Relkond 9 місяців тому

    So, this is in the funny space that includes the interface between the API implementation (by Microsoft) and the consumers of the API.

  • @shikutoai
    @shikutoai 9 місяців тому +2

    I got to tell people today something to the effect of "this is the expected operation, please adjust your own operations in order to match," and was met with "but can we change it anyway?"
    No. No we cannot. #YouBecomeWhatYouHate #HatingMicrosoftIsAnOkayHatred

  • @vasudevmenon2496
    @vasudevmenon2496 9 місяців тому

    Damn I've a mix a suborocess with shell cmds and without one on Linux servers.

  • @xXJM01Xx
    @xXJM01Xx 9 місяців тому +6

    So in a nutshell...... sanitize your inputs... got it.... I've never seen something that should be at best a 1 out of 10 be treated as so critical just because people don't know how to sanitize inputs.

    • @Grub4K
      @Grub4K 9 місяців тому +3

      Im fairly sure that 99.9% would not be able to sanitize input to pass to batch files properly, and there is no real good resource out there on how to do it. Its not as easy as you think and from the provided "fixes", only Rust did it correctly.

  • @bartlomiejodachowski
    @bartlomiejodachowski 9 місяців тому +1

    execve for no cve, counter-intuitive

  • @l3xforever
    @l3xforever 9 місяців тому

    Oh nœh, cve numbers not making any practical sense AGAIN?!

  • @Mekuso8
    @Mekuso8 9 місяців тому

    You can just skip a bunch of steps and call Windows as a whole a CVE

  • @TheChemicalWorkshop
    @TheChemicalWorkshop 9 місяців тому +1

    10? Nope

  • @DePhoegonIsle
    @DePhoegonIsle 9 місяців тому

    What gets me is ... who the hell is making use of batch files and passing arguments through blindly? Bat files are just the pickiest sons of b***ches out there with it's argument list and you have to do it carefully. I know I make use of them to do a whole host of automated file creation/updating with preset values that vary on a few values & a few strings. Though One think I never did was pass the strings directly through to the next bat file without modifying the strings [as they would be from expected values & strings]
    bat files are great for aid files for your other programs and projects, and cleanups.. but this whole thing confuses me....
    who setups a rust cli tool for windows, that calls a bat file to do something, it could have just done with stored cmd.exe calls, instead based on inteneral logic with code more robust than batch script. This seems like someone doing bad practices overall. There is genuinely no real reason to be calling anything except the most default & specialized bat files from another programing language whatsoever.
    I know i've set my own nest of bat files up... but I also am using intellij and doing mods for games and the terminal access to is quick to produce a certain support file for what i need from it.

  • @obi1998
    @obi1998 9 місяців тому

    The random ChatGPT reference was kinda weird. But hey, if that's what you are in to I wont kink shame.

  • @y2ksw1
    @y2ksw1 9 місяців тому

    Yeah. Windows. Who would run batch files, anyway?

    • @Ruhrpottpatriot
      @Ruhrpottpatriot 9 місяців тому

      People who deal with legacy code? Do you know how most of the radar software out there only runs on windows?

    • @y2ksw1
      @y2ksw1 9 місяців тому

      @@Ruhrpottpatriot Yes. Also medical equipment, ATM machines (with XP), to name a few.

    • @AK-vx4dy
      @AK-vx4dy 9 місяців тому +1

      Wow.... does linux have not a "shell apocalypse" with redefing variables ?

  • @TylerLarson
    @TylerLarson 9 місяців тому

    Is there such a thing as issuing a CVE recall? This whole discussion needs to be restarted under a reasonable premise... instead of some researcher getting their cve score inflated to make it sound like they discovered a legitimately critical flaw instead of discovering an old shell with a bad api.

  • @Alexagrigorieff
    @Alexagrigorieff 9 місяців тому

    cmd.exe line parsing is garbage. Its handling of circumflex '^' for line splitting is terribly buggy.

  • @ArthurKhazbs
    @ArthurKhazbs 9 місяців тому

    Just don't execute untrusted input, lol. It's not a language or platform bug, it's a programming skill issue.

  • @DarkVirtu
    @DarkVirtu 9 місяців тому +2

    Of course they are following NSA™, I mean, Microsoft® exact instructions. All those silly paranoid people making noise again. How silly!! Lol.
    Great explanation as always!!❤

  • @gge6021
    @gge6021 9 місяців тому

    java wont fix im giggling so hard

  • @MrKleiner
    @MrKleiner 9 місяців тому

    Literally same as making a rookie mistake of not sanitizing SQL queries.
    Skill issue, cry about it.

  • @gtdmg489
    @gtdmg489 9 місяців тому +1

    At this point, programming languages are cementing that windows users have -major skill issues- been unaware of CMD's oddly behaviour.

  • @tiranito2834
    @tiranito2834 9 місяців тому +7

    The amount of bots in this comment section lmao... also, 3 views in 1 min, bro really fell off

  • @chudchadanstud
    @chudchadanstud 9 місяців тому +2

    Chad C++... Still tge safest language

  • @owlmostdead9492
    @owlmostdead9492 9 місяців тому

    Then don't have a "Shell=False" flag, seems really annoying if text doesn't to what it says.

  • @rursus8354
    @rursus8354 9 місяців тому

    OK. So don't run Windows! Microsoft isn't taking security seriously.

  • @James-l5s7k
    @James-l5s7k 9 місяців тому

    Who is still writing batch files? Phhh noobs. I use CMD instead like a pro

    • @AK-vx4dy
      @AK-vx4dy 9 місяців тому

      What do you mean by using CMD *instead* ?

  • @James-l5s7k
    @James-l5s7k 9 місяців тому +1

    Rust is not more secure nor securable than C.

    • @0LoneTech
      @0LoneTech 9 місяців тому

      Inaccurate. It is more secure in the same sense that the only secure computer is one that's never turned on.

  • @sherpya
    @sherpya 9 місяців тому

    so rust developers just broke windows api because people does not validate inputs?

    • @1vader
      @1vader 9 місяців тому

      It only errors when it recieves certain convoluted inputs that it can not escape properly. Unlike Python, it (now) ensures that inputs are always escaped properly in any other case, even for Batch files.

    • @0LoneTech
      @0LoneTech 9 місяців тому

      No, Windows API never satisfied a property of POSIX APIs that Rust and many other languages - including those most of Windows is implemented in - expects. Windows batch files in particular cannot be written in a way to compensate. Rust did make the mistake of claiming that the functions would behave POSIX style when Windows made that impossible.