Slashdot Mirror


Did Programming Language Flaws Create Insecure Apps? (bleepingcomputer.com)

Several popular interpreted programming languages are affected by severe vulnerabilities that expose apps built on these languages to attacks, according to research presented at the Black Hat Europe 2017 security conference. An anonymous reader writes: The author of this research is IOActive Senior Security Consultant Fernando Arnaboldi, who says he used an automated software testing technique named fuzzing to identify vulnerabilities in the interpreters of five of today's most popular programming languages: JavaScript, Perl, PHP, Python, and Ruby.

Fuzzing involves providing invalid, unexpected, or random data as input to a software application. The researcher created his own fuzzing framework named XDiFF that broke down programming languages per each of its core functions and fuzzed each one for abnormalities. His work exposed severe flaws in all five languages, such as a hidden flaw in PHP constant names that can be abused to perform remote code execution, and undocumented Python methods that can be used for OS code execution. Arnaboldi argues that attackers can exploit these flaws even in the most secure applications built on top of these programming languages.

100 comments

  1. Sure. But still... by Anonymous Coward · · Score: 0

    Itâ(TM)s not like you ever saw a program coded in C not get hacked.

  2. Yes. by OffTheLip · · Score: 1

    So did bad programming.

  3. Interpreter flaws, not language flaws! by RhettLivingston · · Score: 4, Informative

    This article is either intentionally sensationalist or written by someone who just has no clue.

    The research presented found flaws in popular interpreters for a few interpreted languages. This is little different than finding flaws in libraries and in fact, many of these flaws were in the libraries.

    It is a very important distinction. Fixing a problem in a language usually takes negotiation and can be years. Fixing a problem in an interpreter often takes days.

    People whose idiot managers read this and are panicking at this moment will now be having to explain to them this week why this doesn't mean that they need to rewrite all of their code into another language to fix their problems.

    1. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      Are you trolling or just clueless? Have you ever heard of JITters?

    2. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 1

      You have been living under a rock for the last decades or so, right?

      Some interpreted languages I know of compile the source into byte code internally and run it on a virtual machine. But does it really matter? The numbers you give, 10-50 times slower, where did you pull them from? I would really like to see benchmarking to validate those claims.

      Also, speed can be more than execution speed. Sometimes development speed is important too. Go read: https://www.tcl.tk/doc/scripting.html

    3. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0, Funny

      I'll tell you a bigger cause of security vulnerabilities in Apps: sexual harassment against women in the workplace!

    4. Re: Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 1

      As others mention JIT mutes that argument. In most cases JIT code with garbage collection is substantially faster as itâ(TM)s far better suited to the processor it is running on. Itâ(TM)s just like compiling with the exception that the code is optimized for the local CPUâ(TM)s pipeline.

      In async programming patterns where there can be inter-thread communication across cores, JITed code is almost guaranteed to be faster especially if âoelocksâ on objects are native to the language as a keyword as opposed to library functions, the JIT can identify whether to execute the locks or not based on current task dependencies. As such, constraints can be calculated within user space avoiding the system calls, privilege mode changes and of course the kernel level thread synchronization.

      Some of us use these language precisely because we can achieve far better performance because they are JITed instead of compiled which is far too static.

    5. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      That is undoubtedly the script kiddie way to solve the problem. Say no more.

    6. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 1, Informative

      JavaScript is not secure, as language or as interpreter.

      There are tons of flaws in JavaScript as buffer overflows, arithmetic underflows-overflows, loss of accuracy, race conditions, NaN, undefined, exceptions raises, etc.

    7. Re:Interpreter flaws, not language flaws! by HiThere · · Score: 2

      It's possible that JavaScript is the ideal solution to some problems, but it sure isn't the ideal solution to all problems. Or even most. Perhaps not many.

      FWIW, I looked into using it and I would have needed to write a custom library in another language to even make it possible...a much better choice was to just use a different language. Not, admittedly, the one I would have used if I were writing a JavaScript custom library.

      The language that's best depends substantially on the problem you're trying to address. E.g., if Ruby with guilds were available, I might well have chosen to work in Ruby...but that's a few years off.

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    8. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      Doubt it, and it probably uses 6x more memory.

      But hey if you can't code without producing error messages every line, keep on doing what you're doing.

    9. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      Yep. JIT makes interpreters tolerable on blazingly fast hardware, not fast.

    10. Re:Interpreter flaws, not language flaws! by mikael · · Score: 1

      So ideally, you want a Javascript to C++ compiler and you'll have the best of both worlds.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    11. Re:Interpreter flaws, not language flaws! by K.+S.+Kyosuke · · Score: 1

      So, for example, on-the-fly generated numerical algorithms with inlined functions in LuaJIT are going to be slower than GSL with function pointer callbacks?

      --
      Ezekiel 23:20
    12. Re:Interpreter flaws, not language flaws! by K.+S.+Kyosuke · · Score: 1

      Javascript is generally flawed, the semantics is rather weird. On the other hand, you have quality, high-performance implementations of, say, Scheme, which is quite the opposite in terms of how well has its language core been crafted. Many of them are even embeddable. The flaws of a few implementations, or even of a few languages, shouldn't steer people away from the very idea of writing most of their code at appropriately higher levels of abstraction.

      --
      Ezekiel 23:20
    13. Re: Interpreter flaws, not language flaws! by Zero__Kelvin · · Score: 0

      You are an idiot.

      --
      Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    14. Re:Interpreter flaws, not language flaws! by Darinbob · · Score: 1

      There are people who seem to don't mind slowdowns. Even higher level workers. I've run across one who was proud that the tool he used to auto-generate code "only" had a 100% overhead.

    15. Re:Interpreter flaws, not language flaws! by Darinbob · · Score: 1

      Sadly, if you put development speed as top priority, that implies quality is not top priority, or even bug fixing. It may be true that management values speed, but a professional craftsperson should always value quality over speed.

    16. Re: Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      Well then why is Dosbox so much slower than native (i.e. dosemu or ntvdm with vdmsound on a 32 bit OS)? If what you say is true then surely using an x86->x86 JIT should be substantially faster than just running said software natively?

    17. Re: Interpreter flaws, not language flaws! by TheRaven64 · · Score: 1

      x86 is a horribly complex ISA, but MIPS JIT'd on MIPS was around 10-20% faster when the Dynamo project did it a couple of decades ago.

      --
      I am TheRaven on Soylent News
    18. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      The numbers you give, 10-50 times slower, where did you pull them from?

      Clearly pulled from his ass, but they are also probably more accurate then the benchmarks made by the language developers to highlight how awesome their new language is.
      A large source of slowdown is the extra memory overhead you get from "modern" languages.
      The "memory is cheap" mantra that is pushed by programmers that doesn't want to think about the problem isn't taking how modern processors work into consideration.
      The thing that limits execution speed is often the cache memory. It isn't cheap, it isn't easy to buy more of and it isn't something that languages that compile into bytecode are good at managing.

    19. Re:Interpreter flaws, not language flaws! by Anonymous Coward · · Score: 0

      but a professional craftsperson should always value quality over speed.

      A lot of people here are dealing with realtime applications, some of them even safety critical ones.
      Speed is quality, and in some cases life critical.
      Inconsistent or indeterminable execution time are in many cases bugs.

    20. Re:Interpreter flaws, not language flaws! by SQLGuru · · Score: 1

      If you're using an interpreted language, you've already made the decision that you don't really give the slightest shit about speed. Interpreted languages as a rule run 10-50x slower than compiled and also require a runtime be installed. Nobody who is doing any serious programming cares about this.

      Most code written today doesn't need to be 10-50x faster, so interpreted code is perfectly acceptable. For those few routines that need to be blazingly fast, feel free to optimize them in whatever fashion is appropriate -- whether that's writing them as libraries in real languages or even implementing them in hardware.

      It's all a matter of economics. I can hire as many developers as I want at $30 to $50/hr that can code in the interpreted languages and then hire only one or two experts at $100 to $150/hr that know real languages. The interpreted language devs and work on things like data validation and pushing data in and out of a database while the lower level devs work on key proprietary routines.

    21. Re: Interpreter flaws, not language flaws! by Carewolf · · Score: 1

      He was talking about speed of development. Not speed of the program. And while speed of development is highly desirable. It is not a quality of the end product

  4. What about the benefits? by Anonymous Coward · · Score: 1

    Letâ(TM)s assume for example that the languages themselves arenâ(TM)t perfect. Developers working in these languages (I am not) will write code using the standard libraries for these languages. So unlike C and C++ where developers tend to constantly rewrite the standard libraries (see Qt, glib, etc...) as well as compile non-library related problems into their code making it have to be recompiled in order to correct flaws, when security flaws are found in code written in these languages, updating the languages and their libraries often secure the programs as well.

    Basically, the real issue isnâ(TM)t whether the languages are flawed. Weâ(TM)ve seen problems in code provided by libg++ in the past. The problem is whether the languages are patched through automatic updates in a timely fashion and whether the patches actually correct problems not just in the language but also in the code written against them.

    That said, Iâ(TM)m working on C# code now which through reflection (advanced RTTI) will require every function to explicitly define permissions to platform wide resources making every function in the code âoedeny anyâ until the developers and operators explicitly permit what it has access to based on RBAC. I expect the first few versions of this code to cause more harm to security than it helps. Once it is hardened though, it should probably be the most secure coding system ever written which doesnâ(TM)t impede usability.

    1. Re:What about the benefits? by Anonymous Coward · · Score: 0

      Sick of this (TM) crap... Does /. not have programmers on its payroll that can fix such a simple bug?

    2. Re:What about the benefits? by Rockoon · · Score: 0

      Tje bug is in your idevice, douche bag.

      Wake up and realize that â(TM)I.T. doesnt just work.â(TM)

      --
      "His name was James Damore."
    3. Re: What about the benefits? by Anonymous Coward · · Score: 0

      Actually, I think the problem is the website's trying to convert UTF-8 characters in the HTML source as some other encoding, and this doesn't work really well some of the time.

      (P.S. This can easily be fixed by adding somewhere in the header.)

    4. Re: What about the benefits? by Anonymous Coward · · Score: 0

      Wow, didn't know it actually rendered HTML in the content. That's REALLY insecure. Shame on these developers.

      What I meant to put is (bracket)meta http-equiv="Content-Type" content='text/html; charset=utf-8'(bracket).

      In fact, let me test something, this might be important....

    5. Re: What about the benefits? by Anonymous Coward · · Score: 0

      If this page is changed and comes up as something different, congratulations Slashdot, your code is bad and you should feel bad. If not, the html was blocked and you can carry on with your day.

  5. Yes but no. by Anonymous Coward · · Score: 0

    Yes, flaws in virtual machines or compilers can create security vulnerabilities.

    No, you can't prevent *all* security vulnerabilities by fixing those flaws. The desire for this is very strong for obvious reasons, but it is impossible. If the language is powerful enough to be useful, it is powerful enough to be used wrong.

    So long as we need software developers at all, we need them to have the means, motive, and opportunity to ensure that their code is secure. That will never be free.

    1. Re:Yes but no. by Pseudonym · · Score: 1

      To pick an obvious example, there has never to my knowledge been an exploitable bug in the JVM. Plenty in the standard library though.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    2. Re: Yes but no. by Anonymous Coward · · Score: 0

      Hmm... Iâ(TM)ve written a few JVMs back in the day as well as worked on one of the more popular ones. I wouldnâ(TM)t say they canâ(TM)t be exploited, I would agree that to my knowledge they havenâ(TM)t been. The JVM itself is a ridiculously simple VM... basically a clone of Forth. However, JNI does offer opportunity from the back end, so it is extremely easy for example to code inject a compromised class loader which could be exploited for privilege elevation if non-malicious code asks for and is granted privilege.

      This has been handled by the mainstream JVMs through possibly excessive code-signing requirements. But some of the more open solutions tend to reduce the painful nonsense associated with executing code which has certificate issues.

      I can also see some opportunism on AOT JVMs regarding exploitation of OS level virtual memory allocation as part of the garbage collector. This might be library or JVM depending on how youâ(TM)re interpreting the spec.

      Who knows?

    3. Re: Yes but no. by Pseudonym · · Score: 2

      That is fair, that the JVM hasn't been exploited. That is partly because you have to get through the verifier first.

      If you're using JNI, you are already on the other side of the airlock. Unless you can get malicious JNI loaded from the outside, a JNI attack is not a JVM flaw.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    4. Re:Yes but no. by Pseudonym · · Score: 1

      How many of those were JVM exploits?

      Please read what I said again, bearing in mind that this story is about interpreters. There have been PLENTY of standard library exploits, but I can't think of any JVM bugs that have been exploited. There might be a couple of obscure ones.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    5. Re:Yes but no. by TheRaven64 · · Score: 1

      There have been quite a few. My favourite relates to the Java security model, which requires that methods that call out of the JVM perform checks on the current security manager. The security manager will then throw an exception if called from code that doesn't have the required permission. Unfortunately, the JVM was speculating the code that performed the action before the code that performed the check, because it wasn't correctly modelling the possible flow-control implications of the privilege check. This was exploitable, allowing any code running with reduced privileged (e.g. untrusted plugins) to run with the privilege of the JVM process.

      --
      I am TheRaven on Soylent News
  6. Sure, these are flaws by Anonymous Coward · · Score: 4, Informative

    But the exploits require shell-level access to launch the interpreters. When you have shell access, it's not surprising that you can execute an arbitrary shell command.

    1. Re:Sure, these are flaws by Brian+Feldman · · Score: 1

      I don't get this article. They're not even fuzzing the interpreters, but rather the STANDARD LIBRARIES. How is this remotely interesting? Passing unsanitized input to arbitrary standard library functions, what could go wrong?? *facepalm*

      --
      Brian Fundakowski Feldman
  7. Re:Sure. But still... by Hal_Porter · · Score: 3, Funny

    Some heretics have been tempted away from the One True Faith in C/C++ binarchy. They will find the heretical languages they have aligned themselves are false Gods or tempters like the fallen angel, Satan. Their abode will be fiery and their torment long!

    Here Endeth The Sermon.

    The congregation will now rise and repeat Google's Style Guide For C++, omitting the parts that are now known to be heresy and falsehood sent by malicious trickster demons.

    --
    echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
  8. Pounding the hell out of functions with random (and thus lying) input is one of my best tricks.

    How am I gonna save the Enterprise if everyone knows the secret?

    --
    (-1: Post disagrees with my already-settled worldview) is not a valid mod option.
  9. With security, it is very expensive. by Anonymous Coward · · Score: 0

    Security analysis in computer science is a very hard task that is costly hard to implement a safe software & hardware.

    Adding security's features does impose a hard penalization that consumes many available resources & time.

    Zero risk does not exist.

    Bugs & flaws are the enemy of the existence.

  10. brilliant GNU/Mandela scripting. by Anonymous Coward · · Score: 0

    i realy like your BASIC-esque line formatting, and here I thought we would be tempted with another series of Fortran trolls fighting with Pascal trolls about how C got the semi-colon wright the first time and evetyone else better pay the Syntax like a knaive!

    1. Re:brilliant GNU/Mandela scripting. by Megol · · Score: 1

      I'll up for some fishing:
      The Pascal way can be hard to interpret so C is clearly better.
      But LISP need no semi-colons as it produces no semi-shit!

  11. Turing complete by hackwrench · · Score: 3, Insightful

    It's almost like being Turing complete opens you up to being insecure.

  12. You could say the same for C by The+MAZZTer · · Score: 1

    With "traditional" attacks such as buffer overflows. Newer languages abstract away having to do things like manually allocate string sizes to make buffer overflows less possible. That's why we continue to improve these languages and develop new ones and I expect this process to continue as newer attacks are developed against existing languages.

    1. Re:You could say the same for C by Anonymous Coward · · Score: 0

      Well, interpreted languages tends to suffer from injection style attacks. Especially if you mix them.
      It is far too convenient to just pass string around and join them rather than build them in a structured way.
      (Unless you are coding C, then it is pretty darn convenient to make functions that convert SQL commands to the query with clear separation between commands and input.)

  13. Re:Trump by infolation · · Score: 1

    Trump uses PHP.

    Or Golf Script to keep his Code Golf score to a minimum. Arf.

  14. Fuzz testing: Good thing he didn't test TECO by fahrbot-bot · · Score: 4, Insightful

    Most of us are probably too young to remember the TECO editor, from the early 1960s, but ...

    It has been observed that a TECO command sequence more closely resembles transmission line noise than readable text. One of the more entertaining games to play with TECO is to type your name in as a command line and try to guess what it does. Just about any possible typing error while talking with TECO will probably destroy your program, or even worse - introduce subtle and mysterious bugs in a once working subroutine.

    Also, I assert that there are no language flaws in Perl, just obscure and/or advanced usages, some of which may be dangerous to you, others or the planet.

    --
    It must have been something you assimilated. . . .
    1. Re:Fuzz testing: Good thing he didn't test TECO by Anonymous Coward · · Score: 1

      s/TECO/vim/ and it's essentially saying the same thing: try to guess what happens when you type your name as a command in vim

    2. Re:Fuzz testing: Good thing he didn't test TECO by K.+S.+Kyosuke · · Score: 1

      Just about any possible typing error while talking with TECO will probably destroy your program

      I'm pretty sure that's mostly the case with contemporary programing environments as well. Point to a random spot, replace the character in that spot with a random one, and observe the glorious result. We don't have any self-repair yet.

      --
      Ezekiel 23:20
    3. Re:Fuzz testing: Good thing he didn't test TECO by vtcodger · · Score: 1

      I'm old enough to remember TECO, the world's most terrifying text editor. It never actually did anything terrible to me, but living one keystroke away from disaster eight or ten hours a day was stressful.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    4. Re:Fuzz testing: Good thing he didn't test TECO by Anonymous Coward · · Score: 0

      In vim it's more like type 2 letters than uu and you're back where you started.

    5. Re:Fuzz testing: Good thing he didn't test TECO by david_thornley · · Score: 1

      Delete to end of line, and replace with "vid". Easily fixable by undoing.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  15. No by zifn4b · · Score: 0

    Programming languages don't write insecure applications, people do.

    Next thing I suppose we'll arrive at is if someone builds a structurally insecure apparatus with a hammer, nails and wood, I suppose it will be the hammer's fault for being a bad tool and we'll need to consider not using hammers anymore?

    Humans have an uncanny ability to evade culpability in clever ways.

    --
    We'll make great pets
    1. Re:No by Anonymous Coward · · Score: 0

      but but, like, but not actually, STEM, and like, but not actually, shortage of workers - need h1bs, and like, but not actually, programming...

  16. Java by Anonymous Coward · · Score: 0

    Java can solve this by layering.

    The java machine can run in a java machine, running on a java machine written in java.

    Any exploit would have to be multiple layers deep. And with each machine taking longer and longer to boot, it would be like inception, where 1 hr of the users time is like 1 or 2 cycles of the machine.

  17. This is why... by Anonymous Coward · · Score: 0

    ...I do all of my web scripting in assembly language.

  18. So 'hello world' can be exploited? by Cesare+Ferrari · · Score: 1

    So if I were to write a straight 'hello world' app in these languages, it could be exploited. Any proof?

  19. some computer science by Anonymous Coward · · Score: 0

    any non-trivial program (sorry meant app) will branch out in ways that are not fully testable. Try all you like you cannot make it 100% safe.

  20. Not actually language flaws... by pthisis · · Score: 4, Insightful

    Fuzzing is great, but he doesn't seem to understand what a language flaw is.

    In the case of Python, he's found 2 methods in libraries that can call shell commands. Leaving aside that this would be a library issue rather than a language issue, there's no evidence that it's even that.

    Python explicitly doesn't have sandboxing. Like most languages (including C, C++, etc), the documented behavior is that if you control the program and environment then you're fully allowed to import subprocess or os and run whatever you want. You don't need to find "hidden" ways to run a subprocess, you can directly "import subprocess" and run stuff.

    This is doubly true because of the nature of the modules investigated. The first "flaw" is that mimetools has a deprecated "pipeto" method that lets you pipe to arbitrary commands. But mimetools is already well-known to expose os access in millions of ways (most obviously, it imports and exposes os, so if for some bizarre reason you want to avoid importing os yourself, you can simply run "mimetools.os.popen" directly); no competent programmer would expect otherwise.

    The second "flaw" is that pydoc runs a pager program which lets you run an arbitrary command if you control the program environment. Of course, the documentation states explicitly that the specified pager program will be used. It's unclear what part of the behavior here he thinks even surprising. And, again, the pydoc module imports and exposes "os" in exactly the same way that mimetools does.

    --
    rage, rage against the dying of the light
    1. Re:Not actually language flaws... by vtcodger · · Score: 3, Insightful

      I'd be kind of surprised if something called "pipeto" DIDN'T allow one to run arbitrary commands. But so do subprocess, os.system, os.popen, and probably 20 other Python library functions.

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    2. Re:Not actually language flaws... by corychristison · · Score: 1

      This "study"'s PHP "vulnerability" was that if you pass USER INPUT to a function called "shell_exec", that there's a security flaw there.

      Well DUH!

  21. not a flaw in perl by Anonymous Coward · · Score: 3, Informative

    I haven't looked at the other languages, but in the case of perl, it's not a flaw in the interpreter, its a flaw in a specialised library module (ExtUtils::Typemaps::Cmd) that is used to build other modules - i.e. that is run only when building and installing a third-party module. The installer for such a module will typically hard-code the module name they pass to ExtUtils::Typemaps::Cmd::embeddable_typemap(). If someone wanted to modify the installer to run a command rather than load a file, they could just directly write 'system "rm -rf /"' rather than the elaborate ExtUtils::Typemaps::Cmd::embeddable_typemap( 'system "rm -rf /"'). And if they could modify the install script, you've lost anyway.

    Also, I can't find any in-the-wild use of that function.

  22. Rushed products are to blame by Anonymous Coward · · Score: 0

    Everything in the world has flaws, so it wouldn't be different with Operating Systems, Virtual Machines, communication protocols, languages and ourselves.
    However the biggest problem seems to be the need to rush products just to try to get ahead in the market, to deliver something because some person that wasn't technical enough provided some absurd deadline date or because many developers today are lazy and don't code as they should (yeah GC's are to blame) to avoid problems. With it in mind and projects getting each time more complex, that means we rely each time more in rushed finished frameworks(projects), see the irony!

  23. Should have used Ada by AHuxley · · Score: 1

    Imagine code that actually helped with security rather than opened a back door and trap door.

    --
    Domestic spying is now "Benign Information Gathering"
  24. Insecure apps come from a few primary causes:
    • Summer of code and similar "I hate paying programmers so much so lets try to get a bunch of unqualified people in" initiatives, even before the summer of code and code.org nonsense when it was simply:
    • Hiring the cheapest retarded salesman who sounds like he knows what he's talking about (hint: if they are cheap and can afford a salesman they don't have any good programmers,) or:
    • Hiring that one guy who you know made a geocities page when you knew him as a kid because he'll give you a deal (hint: good programmers don't give deals on anything but their own personal projects someone else wants to get involved in, they have too much shit to do and too little time/resources to do it, I've yet to meet one without at least hundreds of projects on their backlog that they actually want to do instead of your "brilliant" "it's a social network for x but it does y too" website they are too nice to call you retarded over.)
  25. Unskilled "engineers" pumped through bad schools to cobble together some barely functional shit to make money for venture capitalists and industrialists in a huge economic bubble made insecure apps.

    Another factor is engineered vulnerabilities to assist mass surveillance.

    Basically our entire society has become a bubble that is going to pop within 50 years.

    --
    My karma was manually wiped by site staff https://slashdot.org/~slshdtisctrldbysjws 18 mod up, 10 mod down = bad karma
  26. Re:Yes & it's a "holy terror" to me... apk by Anonymous Coward · · Score: 0

    WTF is that post EVEN saying? And why can't he MANAGE his caps lock KEY?

  27. Re:Yes & it's a "holy terror" to me... apk by Anonymous Coward · · Score: 0

    I read and understood it perfectly. Is english your primary language?

  28. Obvious Answer by Required+Snark · · Score: 3, Interesting
    Everything should be coded in Haskell. It has the best compile time error checking on the planet. (Sorry ADA, but Haskell is more advanced.)

    Note for the dim bulbs: this comment is meant to be a joke. The original article was foolish, and suggesting Haskell shows how ridiculous it is in the first place.

    --
    Why is Snark Required?
  29. What a load ... by MikeBabcock · · Score: 1

    The examples given mostly have nothing to do with the languages having vulnerabilities at all (I only read the Python section as I'm most familiar).
    For goodness sake, none of those were privilege escalation or remote access attack vectors. Yes, if you allow the user to specify their environment variables (like PAGER and EDITOR) they'll get executed *as that user* which is known behaviour.

    --
    - Michael T. Babcock (Yes, I blog)
    1. Re:What a load ... by numbers1x · · Score: 2

      Also the case for the perl example, which I kid you not, posits that if you have access to the command line such that you can type in a perl one-liner, there's a perl library function for which one of the parameters can be tricked into shelling out to (you guessed it) ... the command line.

      The example cited is this:

      perl -e "use ExtUtils::Typemaps::Cmd;print embeddable_typemap(\"system 'id'\")"

      ... which shells out the output of the 'id' command in the middle of the error message it returns.

      And yet the perl system function, by design, straightforwardly does the exact same thing, minus the above error messages and convoluted approach:

      perl -e 'system "id";'

      Finally, if you have access to the command line anyhow, you can, you know, simply input the 'id' command.

      If the point here is that user input shouldn't be blindly passed to functions that might execute them, and, oh by the way, here's a fairly obscure example of a module function that does that, as a heads up ... well, OK ... but that's another matter entirely.

      I'm pretty much only seeing facepalm material here.

  30. Yes by bug_hunter · · Score: 2

    > Humans have an uncanny ability to evade culpability in clever ways.

    Well you seem to be saying that language designers / implementers have no culpability at all.

    For your metaphor, what if the person building the house is using a rubber mallet, rusted nails and broken wood?

    People can write bad programs in any programming languages, but some programming languages have flawed designs that make bad behaviour much more likely.

    --
    It's turtles all the way down.
    1. Re:Yes by zifn4b · · Score: 0

      Well you seem to be saying that language designers / implementers have no culpability at all.

      For your metaphor, what if the person building the house is using a rubber mallet, rusted nails and broken wood?

      No, you missed the point. If someone builds something that is unstable with a hammer and nails, is the manufacturer of the hammer and nails liable for it. NO. A thousand times NO. Take your nanny state and shove it up your liberal ass.

      --
      We'll make great pets
    2. Re:Yes by bug_hunter · · Score: 1

      WTF?! Seriously, we're making metaphors of programming languages as tools and houses as programs.
      You make the point that it's the builder's responsibility to make a good house. (I got your point, it's not a hard one to understand).
      I make the point that it's worth using good tools, because some programming languages make it hard to write secure code. I could keep stretching the metaphor and say it's up to the builder to know what good tools are if that would make you happier.

      Jumping to "Take your nanny state and shove it up your liberal ass." is a little crazy man.

      --
      It's turtles all the way down.
  31. 2nd amendment by Anonymous Coward · · Score: 0

    Programs don't kill, programmers do.

  32. Yes they can & it's a "holy terror" to me... a by Anonymous Coward · · Score: 1

    See subject: C shows you it in buffer overflows due to null-terminated string use & functions like sscanf (iirc this had big problems) having to be redone.

    Neither is a problem in Pascal/Object Pascal (length is built-into strings).

    Had a troll "bug me" today https://it.slashdot.org/comments.pl?sid=11461611&cid=55711831/ & it "hits on" this part & what did I do to AVOID program language issues (especially in stringwork which my program noted there HUGELY operates in)?

    Something from a book I read years ago was a BIG INFLUENCE in a way ("The Toyota Way" - that company experienced huge success using PROVEN tech, nothing fancy, for decades - so I decided to do the same w/ the program noted in that link & above + after it).

    I chose as PROVEN of tech language-wise as I knew of for stringwork (even though I like C++ as much, even C to a lesser extent) since Delphi knocked the chocolate outta MSVC++ in VBPJ (competing trade rag) DOUBLING it in math & stringwork winning 4/6 tests given (Sept/Oct 1997 issue "Inside the VB5 Compiler").

    I used that 23++ yr. proven language (actually much longer than that but as Delphi Object Pascal it is that, OWL predates that by far longer & so does its base language Pascal) & controls used in my program too (solid ones, no 'new hotness' 3rd party stuff that are proven decades long now since 1995 Delphi 1.0) & an IP stack that's been patched & proven since 1968++ w/ the hosts file that's been solid since it was introduced (1973 iirc).

    Any methods I used are proven from my own coding for 25 or so years now, much of the as a pro, too. I didn't want to take chances & give anyone any "ammo" they can take "potshots" @ me with!

    The "infamous they" say "don't take codework personally" well, NOT when it's MY NAME on the work!

    APK

    P.S.=> So far, so good foor 5++ yrs. publicly now (I had it long before that here privately) - but there's always a chance something will turn up in the language itself (but after that long of a solid track record, it's more doubtful than possible imo)... apk

  33. you're a computer program? by Anonymous Coward · · Score: 0

    We don't have any self-repair yet.

    humans have doctors, but apparently you are some sort of bot

    1. Re:you're a computer program? by K.+S.+Kyosuke · · Score: 1

      I meant program self-repair, obviously.

      --
      Ezekiel 23:20
  34. Not the language, but the OS by ka9dgx · · Score: 3, Insightful

    If your OS doesn't require you to specify what I/O is allowed for a program when you run it, you're never going to have a secure system. We need capability based security, and will be spinning our wheels until we get it.

  35. Re:Sure. But still... by Anonymous Coward · · Score: 0

    Oh almighty C, hallowed be thy name..I shall have no other compiler than thou... Thou are my one true compiler! Amen!

  36. Trying to shift the blame by CustomSolvers2 · · Score: 2

    These tests aren't about bugs in in-built functionalities used as expected, but about somehow unexpected behaviours when misusing them. Or, in other words, what is the likeliness of a poorly developed piece of software (an extreme scenario where you aren't even properly using well-documented resources aimed to ease your work) to have a valid appearance? As per my personal experience and despite not caring too much about the specific programming language, I have observed curious behaviours when mistyping some bits in some of the mentioned languages. Not getting a clear error when you do something wrong is certainly a bit bothering, but blaming that for a faulty output is going too far.

    Any experienced enough programmer shouldn't find any problem to deal with virtually any language. Even in case of not having too much experience, you could avoid all this by paying more attention and/or reading the available documentation. Additionally and regardless of your experience, thoroughly debugging/testing all the code should be a relevant part of any development.

    --
    Custom Solvers 2.0 = Alvaro Carballo Garcia = varocarbas.
  37. Failure to do the needful by Anonymous Coward · · Score: 0

    Software quality is directly related to a failure to do the needful and revert back with highest priority.

  38. Re:Sure. But still... by TheRaven64 · · Score: 2

    It is possible to write memory safe code in C. There are three problems. The first is that it's quite hard. The second is that a single memory safety bug violates invariants that the entire program depends on and so can cause non-local problems. The third is that C is the lingua franca for library interfaces and so it's likely that your program is using C libraries with bugs that can completely destroy the program's security.

    Now here's the kicker: Most of the languages listed are implemented in C. Not only in C, but often using some of the pointer manipulation tricks that make C both powerful and dangerous. On top of that, they're providing standard libraries that are mostly both written in C and using third-party libraries written in C. Even if your Ruby (for example) code is entirely bug free, you have so much C code in your address space that it's astonishing anything works at all.

    --
    I am TheRaven on Soylent News
  39. fearmongering by Anonymous Coward · · Score: 1

    this looks a lot like someone just wants a paper they can refer to when they sell you their "NextGen Cyber Security Protection Package (tm)" for a couple grand a month. I mean, those "flaws" are certainly not language flaws, they aren't even interpreter flaws, and to me it looks like they aren't even flaws at all.
    Python: libraries provide relatively unknown functions that allow to execute arbitrary code, don't feed them user input and you're fine
    Perl: see python
    php: if you feed user input to shell_exec without proper sanitation you deserve to get hacked. same if your security depends on a constant being defined and you haven't ensured it's actually defined.
    nodejs: who passess user input to require()? if you do that you deserve to get hacked.
    jruby: so you're passing unsanitized user input to a function that loads the given file and executes it? well shit.
    basically all those "flaws" are "function_that_executes_stuff(unsanitized_user_input);"

    So yeah this dude "found" some ways you could write insecure code. he could have titles his paper "5 things you shouldn't do when developing a secure application". but claiming that even the most secure applications built with those languages can be compromised because of those things is just complete BS.
    and besides, how is his technique fuzzing? not one of those "flaws" is triggered by weird input, which I thought fuzzing was for? this really looks like "oh let's take some bad practices, call them flaws and claim we discovered them with our Shiny New Framework, and don't forget the buzzwords"

    sorry for the rant, but things like these just make me really pissed:/

  40. Between the chair and the keyboard by Anonymous Coward · · Score: 0

    That's where all flaws lay. No matter whether you are user, nerd or developer, or all of them.

  41. Scripting languages. by Anonymous Coward · · Score: 0

    What did you expect?

  42. what flaw? by loufoque · · Score: 1

    you're already running an arbitary php script on the machine. What does executing arbitrary machine code through the php interpreter gives you that you don't already have?
    The ability to escape php's poor sandboxing features? Don't make me laugh.

  43. Honestly looking in the wrong place... by Anonymous Coward · · Score: 1

    The biggest flaws are in OSes and product strategies. Microsoft is the obvious poster-boy for this. Their product strategy of binary backwards compatibility is easily responsible for 99% of the exploits on Windows. And the pathetic part is that people did and have been predicting nearly every type of exploit that has hit Windows since 1995 simply base on architectural design issues caused by this product strategy. Windows has only recently become half-secure as it's abandoned that fundamental design flaw and technology debt has been swept away. Not perfect but much better. The problem: Microsoft should have bitten this bullet in 1995, not 2015!

    What's the new "Epic Fail"? IoT obviously. Talk about unimaginative architectures and baked-in architectural security risks and flaws!! Gee, let's put an x86 or nearly as powerful ARM into a device to implement complex yet insecure protocols that have not even been proven and those same deivces requires low costs, has low margins and can't be monitored for break-ins without dozens of points of "man-in-the-middle" hacking plus somehow with all of this the network stacks and security won't have problems? It's so painfully obvious what will be happening soon with IoT: basically every malware and security failure that has ever hit Microsoft but worse because critical infrastructure will depend on it. At least infrastructure managed by people stupid enough to adopt these technologies.

    None of these has much to do with programming language flaws (except to the extent that using the wrong language could contribute to security risks as a top-level strategy issue).

  44. Re:Sure. But still... by david_thornley · · Score: 1

    I'd say there's another distinct problem with safe memory management in C: it's nonlocal, and can't be verified in general, since telling if a memory block is freed or used after free can easily be changed into the Halting Problem. If you use C++ and smart pointers appropriately, you can generally set things up so that memory management is local, so that it's a lot easier to verify correctness.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes