Vulnerability In Java Commons Library Leads To Hundreds of Insecure Applications (foxglovesecurity.com)
An anonymous reader writes: Stephen Breen from the FoxGlove Security team is calling attention to what he calls the "most underrated, underhyped vulnerability of 2015." It's a remote code execution exploit that affects the latest versions of WebLogic, WebSphere, JBoss, Jenkins, and OpenMMS, and many other pieces of software. How? An extremely common Java library. He says, "No one gave it a fancy name, there were no press releases, nobody called Mandiant to come put out the fires. In fact, even though proof of concept code was released over 9 months ago, none of the products mentioned in the title of the blog post have been patched, along with many more. In fact no patch is available for the Java library containing the vulnerability. In addition to any commercial products that are vulnerable, this also affects many custom applications.
What else is new, if it's not fodder for hype and awe no one cares. This is a stupid premise for a /. story. This site has really gone downhill
Magnitudes slower means "10-100-1000 times slower" which is BS.
Java's main problem is memory footprint, not execution speed.
Which is on par with C++ code, unless you do extreme object allocate/GC or use sin/cos (which used to be done NOT using CPUs capabilities, leading to much slower code. All to guarantee exactly the same result across platforms)
Your app needs to be accepting Serialized Java objects as input.
Yay.
Never seen that used in any project I was part of and if that would happen security concerns alarm would ring in pretty much any competent team.
Being retired, Im definitely a victim of the banksters LOL
Next story please
The linked article takes a lot of words to get to the point, which is that "WebLogic, WebSphere, JBoss, Jenkins, and OpenMMS, and many other pieces of software." will deserialize arbitrary user-supplied Java objects. To exploit that, you just provide a serialized class from commons-collections which (by design) executes the class's code during its deserialization process. If your application doesn't whitelist the classes it deserializes from an untrusted user, you deserve everything you get.
If you are so enlightened why are you spending your Saturday night criticizing strangers over the Internet when you could be biting your nails in fear of ISIS? Clearly reckless panic will be effective, so lead by example!
"I like to lick butts!" by MobileTatsu-NJG (#32700246) (Score:5, Informative)
You're probably right since I have never heard of on of those selfish Java developers sharing code. They're so greedy. Being around their kind makes me ill. They are so CONservative.
The GOP truly is the party of death.
Spew is correct. Java morons don't share code so this is a lie which is why they refuse to name the library since it doesn't exist.
The media lies constantly since they are owned by the Republicans.
Their kind doesn't believe in free press. They are not whole people.
I would say magnitudes is correct. Not in the 100 range, but 10-20 seems accurate enough from the practical tests I've done.
Now, part of the problem could be that I don't feel comfortable with the Java documentation. I can never figure out how different methods are implemented so it's hard for my to judge if one way to solve a problem is slower than another and when to use one over the other.
Comparing C++ and Java is like comparing Assembler and C++. Why dont you use assembler over C++? Same reason why ppl use Java over C++. Plus it depends on what you are developing. C# vs Java thats different story but C# has similar up and downs as Java. So this discussion is kinda pointless.
Can you deal with the details, now ?
Because it has gotten a name.
Or is "Bad Coffee" better?
This must be 100% bullshit! JAVA is by design 100% safe and we all know it. Stop trolling!
You are an idiot
Thanks to this bug I can see a whole bunch of you masturbating in front of your tablets right now!
Well, nobody really exposes mentioned software to the internet, right? For instance, It is accepted as good practice to have nginx used a request router, which kinda lowers the impact of this exploit, or am I am wrong?
A bit old, but:
http://unthought.net/c++/c_vs_c++.html
Being retired, Im definitely a victim of the banksters LOL
At least old fucks like you will GET TO retire. The Baby Boomers fucked that all up for the Millinials. I wonder how they feel, being the first modern American generation to give their grandchildren no future? I hope that conforts them when they lie dying in a hospital bed from some kind of lifestyle disease...
There are so many scenarios, some where Java is faster than C++ and somewhere it is slower.
To make some kind of blanket statement makes you look like a moron.
Mod me down, my New Earth Global Warmingist friends!
http://news.softpedia.com/news/the-vulnerability-that-will-rock-the-entire-java-world-495840.shtml
This is an issue with how some users use a 3rd party library Apache Commons Collections. Java doesn't have to be fixed. And Apache Commons-Collection doesn't have to be fixed, except maybe stating the obvious...
Do not deserialize objects with executable code from the internet.
That sounds like a blanket statement to me...
Just delete Java, seriously. Oracle is never going to keep it secure. Deleted from my PC at least two years ago for security reasons and have never looked back.
I don't know "so many" but multiple small allocations/deallocations is one example.
Each new/delete is a rather complex system call, no matter how little you allocate. In case of Java it allocates quite efficiently from its internal reserve (which isn't that much of an improvement, but still some) and performs bulk GC instead of deallocating each item separately (which is a big improvement).
Garbage Collector in a lot of cases is a liability, especially if it obscures memory leaks and introduces hiccups in systems that should behave smoothly (multimedia/games). But in this particular scenario it outperforms multiple manual deallocations by strides.
That's because you apparently can't follow a conversation.
Mod me down, my New Earth Global Warmingist friends!
C++ maybe, but never C. Its simply not possible.
Non sequitur: Your facts are uncoordinated.
Is it so subtle and insidious that it is simply impossible to name? Or do you just not understand what you're reading?
[Here, let me give it a go: Basically apps blindly trust network input and let it run in their execution context.]
[[Though I suppose when you put it _that_ way, you can't spend your time implying that it's somehow Java's fault.]]
JAVA
Just
Allow
Vandals
Access
Thanks to this bug I can see a whole bunch of you masturbating in front of your tablets right now!
That would definitely be a bug, not a feature.
Faster! Faster! Faster would be better!
Here is an example of how to whitelist classes by subclassing ObjectInputStream: http://www.ibm.com/developerwo...
My Hello World is 512 bytes. But it's also a valid Fat12 boot sector, Fat12 file reader, and Pmode routine.
See subject: At least this was caught to be patched. That's the important thing (hopefully before it was or can be misused maliciously)...
I code in it - but I don't *REALLY* like it. Not so much the code, it's close enough to C++ for me to be @ home with it. It's more the promises made about it (yes, it does do garbage collecting cleanup vs. having to potentially "delint" C or C++ code on new-malloc/delete - to dispose of memory or object references) but it's more the whole runtime slowup that bugged me... sure, it's nice to have that "crutch" to support you, but the runtime speed hits overheads always bothered me. Why?
That doesn't HAVE to be there IF/WHEN you do it yourself, manually, in code.
I have a job offer in fact for JAVA coding for a BIG finanicial concern in my area I've done contract work for before, but I've turned away from it for these reasons (I only work part-time nowadays is why too: Semi-retired): I don't want to be responsible for OR be involved with something that has a faulty trackrecord where big money is involved...
* Feel free to correct me if/when I made any mistakes here, I haven't had my coffee yet today... I don't express myself well & miss things in that case many times myself (& yes, I write "stream of consciousness" most times too, no edits) - & please - no "grammar/spelling nazi" b.s. for "corrections"...)
APK
P.S.=> This is part of what's biting Google in the behind using it on ANDROID imo (their version of java in dalvik - right there alone, NOT working with what exists & has massive "eyes on the code" hopefully correcting flaws in its base & compilers) - "the new hotness" always comes out with what's many times already resolved in the older stuff turning the new into "old & busted" & what was busted + fixed LONG AGO in the older stuff... apk
Wah wah wah, I'm a millenial, my life sucks. wah wah wah.
I wonder how you feel, knowing you're a whiney stupid shit.
I took the time to read up on how it works and write up an explanation of how it works for people who aren't Java programmers.
to write java code without too much damage. Getting them to write C++, not a chance.
Plus for a lot of stuff it's fast enough.
C++ applications can and do use GC just like Java does. The difference is you can choose how you manage memory.
Your post doesn't really make much sense.
Mod me down, my New Earth Global Warmingist friends!
"Commons"? Fortunately, not universal. Naming a library "commons" does not make it part of the language. All those Apache Commons libraries share one thing: they are mostly collections of anti-patterns. Stuff that can often be done better without dependencies, with real standard libraries (part of the platform) instead of collections of trees of mutually-incompatible libraries that look as written by a lazy first-year student. They feature null checks that make it obvious that the lazy programmer that use them consider null and empty as equivalent, which should in itself raise red lights. At best, they reinvent the wheel, quite often in a bad way. Those dependencies are something you won't find in my projects, and the first thing I remove from projects that I have to take over. Whoever depends on this deserved those things. I'd need to read TFA more extensively, but is there any bug report open for the concerned app servers?
I hope you die in a fire.
And you've got a rock-harder 1-incher just like them. Do you need me to pass the tweezers?
There are a lot of reasons to use apache commons beyond checking if a string is empty.
It was pretty darn hard to parse that article to understand what library the author was talking about, but after some research, the issue seems to be a vulnerability in the Apache Commons Collections library.
I don't understand why the OP calls it "Java commons" or why the author of the article goes out of his way to not mention the name "Apache", using it only when copying and pasting code lines but never stating it in prose. Sure, there are lots of people who may have Java, but if the security vulnerability is of the magnitude that is claimed, properly identifying where it is located would be the logical first step.
There is a somewhat better article at InfoQ.com that parses out the original article and describes it more clearly.
new and delete don't generally make system calls. The system call is brk(), and it's only needed to resize the heap. The C and C++ runtimes also allocate a large heap at startup, and will only resize it when it approaches exhaustion.
Basically, the entire point of your post is lost because it is based on a misunderstanding.
Is Java moping around the house in pajamas all day with insecurities and low self-esteem?
Do you call Java and it doesn't respond or responds with a sigh and a "I really don't feel like I can do it" error message?
CVE number or it didn't happen. https://en.wikipedia.org/wiki/...
I am almost impressed at your epic failure of both reading comprehension and logic. Also, who the hell chooses Java for speed? Java has benefits and detriments. If you think you can say C++ > Java just because you wrote some big loopy tests, you are even dumber than your above statement makes you look.
The garbage collector only obscures memory leaks if you look for them in the wrong place. If you actually took the time to learn how something works before dismissing it, you might find that profiling the JVM heap and backtracking excessive object allocations / orphanings is about the easiest problem one can detect / solve in a Java application. And who the hell is using Java for gaming/multimedia? No wonder you disliked the screwdriver with which you attempted to hammer a nail. I might as well say that C++ is shit because it takes too long to build a web UI or implement an enterprise BPM engine.
No, you must not be a big Java fan (or person who is the least bit aware of how it works or what it is good for). You do realize that it is not the language that would be patched but a commonly used open source project, right? And that such projects can be written in any language to have vulnerabilities? Hmm...how many vulnerability-inducing DLLs/SOs have ever been created vs .jars? Which one is more likely to allow arbitrary code execution vs. just offering somebody the ability to destabilize the application itself? Yeah, we really need to 'patch' that Java menace. And, to do a compare/contrast of Java / C++ based on syntax and the basics of object allocation just severely misses the point of why you would use one or the other.
It's always possible to engineer a micro-benchmark where language X does worse than language Y.
For example, the favorite that "proves" C++ is more performant than C is comparing qsort to std:sort. But that only proves that the C++ standard library has more functionality than in C. Applying that logic, Torch destroys C, C++, and Java because it will dynamically compile and execute algorithms on GPUs.
The real fault seems to be in classes like AnnotationInvocationHandler or PriorityQueue (both part of the Java library), whose readObject() methods trustingly call some methods on their child objects.
AnnotationInvocationHandler calls map.entrySet(); PriorityQueue calls compare(). You just make sure the child object executes malicious code when executing those methods. For the child object, you can find a utility class such as LazyMap (from Commons) that executes a function while calling entrySet(). The function can be another utility class that executes some method by reflection (e.g. a Runtime method). These utility classes are all over the place to support functional-style or config-as-code programming.
But I think the real fault lies in those classes that execute child code during readObject(). It doesn't lie in the Commons classes that are used for the children.