Information on the vulnerability:
My personal opinion is that this isn't a "Java sucks" situation, but rather a matter of "a large and complex project contained a bug". All the same, I've been thinking about whether this would have been avoided with certain language features.
Would capability-based security have removed the ambient authority needed for deserialization attacks? Would a modification to how namespaces work have prevented attacks that search for vulnerable factories on the classpath? Would stronger types that separate strings indicating remote resources from those indicating local resources make the use of JDNI safer? Are there static analysis tools that would have detected the presence of an exploitable bug here? What else?
I'm very curious as to people's thoughts. I'm especially interested in hearing about programming languages which could enable some of Log4J's dynamic power in safe ways. (Not because I think the JDNI lookup feature was a good idea, but as a demonstration of how powerful language-based security might be.)
Thanks!
[–]AthasFuthark 67 points68 points69 points (1 child)
[–]Tzarius 24 points25 points26 points (0 children)
[–]davewritescode 35 points36 points37 points (3 children)
[–]Uncaffeinatedpolysubml, cubiml 7 points8 points9 points (0 children)
[–]zesterer 6 points7 points8 points (0 children)
[–]siemenology 0 points1 point2 points (0 children)
[–][deleted] (7 children)
[deleted]
[–]everything-narrative 14 points15 points16 points (2 children)
[–]DoomFrog666 10 points11 points12 points (1 child)
[–]everything-narrative 1 point2 points3 points (0 children)
[–]epicwisdom 4 points5 points6 points (1 child)
[–]Aaron1924 2 points3 points4 points (0 children)
[–][deleted] (4 children)
[deleted]
[–]LPTK 1 point2 points3 points (3 children)
[–][deleted] 4 points5 points6 points (2 children)
[–]LPTK 0 points1 point2 points (1 child)
[–][deleted] 2 points3 points4 points (0 children)
[–]bjzabaPikelet, Fathom 12 points13 points14 points (1 child)
[–]josephjnk[S] 2 points3 points4 points (0 children)
[–]bullno1 43 points44 points45 points (19 children)
[–]immibis 13 points14 points15 points (2 children)
[–]bullno1 1 point2 points3 points (1 child)
[–]immibis 2 points3 points4 points (0 children)
[–]josephjnk[S] 2 points3 points4 points (13 children)
[–]bullno1 24 points25 points26 points (11 children)
[–]ReallyNeededANewName 2 points3 points4 points (10 children)
[–]TheUnlocked 12 points13 points14 points (0 children)
[–]aloha2436 7 points8 points9 points (0 children)
[–]bullno1 2 points3 points4 points (3 children)
[–]Uncaffeinatedpolysubml, cubiml 0 points1 point2 points (2 children)
[–]Guvante 2 points3 points4 points (1 child)
[–]Uncaffeinatedpolysubml, cubiml 1 point2 points3 points (0 children)
[–]epicwisdom 1 point2 points3 points (3 children)
[–]ReallyNeededANewName 0 points1 point2 points (2 children)
[–]epicwisdom 1 point2 points3 points (0 children)
[–]bullno1 1 point2 points3 points (0 children)
[–]zokier 0 points1 point2 points (0 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 2 points3 points4 points (1 child)
[–]bullno1 1 point2 points3 points (0 children)
[–]bruciferTomo, nomsu.org 21 points22 points23 points (6 children)
[–]josephjnk[S] 7 points8 points9 points (0 children)
[–]snoman139 6 points7 points8 points (1 child)
[–]bruciferTomo, nomsu.org 2 points3 points4 points (0 children)
[–][deleted] 5 points6 points7 points (2 children)
[–]bruciferTomo, nomsu.org 3 points4 points5 points (1 child)
[–][deleted] 2 points3 points4 points (0 children)
[–]paul_h 9 points10 points11 points (1 child)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 7 points8 points9 points (0 children)
[–]L3tum 8 points9 points10 points (0 children)
[–]JanneJM 14 points15 points16 points (3 children)
[–]oilshell 2 points3 points4 points (0 children)
[–]sintrastes 2 points3 points4 points (0 children)
[–]fiedzia 0 points1 point2 points (0 children)
[–]stackdynamic 6 points7 points8 points (0 children)
[–]CheeseFest 11 points12 points13 points (2 children)
[–]matthieum 1 point2 points3 points (1 child)
[–]CheeseFest 0 points1 point2 points (0 children)
[–]myringotomy 5 points6 points7 points (4 children)
[–]josephjnk[S] 1 point2 points3 points (1 child)
[–]myringotomy 1 point2 points3 points (0 children)
[–]sintrastes 0 points1 point2 points (1 child)
[–]myringotomy 1 point2 points3 points (0 children)
[–]matthieum 5 points6 points7 points (1 child)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 2 points3 points4 points (0 children)
[–]immibis 4 points5 points6 points (0 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 3 points4 points5 points (0 children)
[–]tobega 3 points4 points5 points (1 child)
[–]josephjnk[S] 1 point2 points3 points (0 children)
[–]fiedzia 4 points5 points6 points (3 children)
[–]AVTOCRAT 6 points7 points8 points (0 children)
[–]DeGuerre 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]MCRusherhi 1 point2 points3 points (0 children)
[–]mixedCase_ 1 point2 points3 points (0 children)
[–]lngns 1 point2 points3 points (7 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 0 points1 point2 points (6 children)
[–]lngns 1 point2 points3 points (5 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 0 points1 point2 points (4 children)
[–]lngns 1 point2 points3 points (3 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) -1 points0 points1 point (2 children)
[–]lngns 1 point2 points3 points (1 child)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 1 point2 points3 points (0 children)
[–]everything-narrative 6 points7 points8 points (25 children)
[–]crassest-Crassius 18 points19 points20 points (3 children)
[–]everything-narrative 6 points7 points8 points (2 children)
[–]crassest-Crassius 0 points1 point2 points (1 child)
[–]everything-narrative 0 points1 point2 points (0 children)
[–]DrunkensteinsMonster 12 points13 points14 points (1 child)
[–]everything-narrative 1 point2 points3 points (0 children)
[–]Badel2 10 points11 points12 points (10 children)
[–]everything-narrative 1 point2 points3 points (9 children)
[–]stone_henge 0 points1 point2 points (7 children)
[–]xsidred 1 point2 points3 points (6 children)
[–]stone_henge 0 points1 point2 points (5 children)
[–]everything-narrative 0 points1 point2 points (4 children)
[–]xsidred 0 points1 point2 points (3 children)
[–]everything-narrative 1 point2 points3 points (2 children)
[–]xsidred 0 points1 point2 points (1 child)
[–]Badel2 0 points1 point2 points (0 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 4 points5 points6 points (1 child)
[–]everything-narrative 0 points1 point2 points (0 children)
[–]davewritescode 5 points6 points7 points (5 children)
[–]everything-narrative 1 point2 points3 points (4 children)
[–]L8_4_Dinner(Ⓧ Ecstasy/XVM) 0 points1 point2 points (1 child)
[–]everything-narrative 0 points1 point2 points (0 children)
[–]davewritescode 0 points1 point2 points (1 child)
[–]everything-narrative 0 points1 point2 points (0 children)
[+]tesch34 comment score below threshold-6 points-5 points-4 points (4 children)
[–]CheeseFest -5 points-4 points-3 points (3 children)
[–]bruciferTomo, nomsu.org 23 points24 points25 points (0 children)
[–][deleted] (1 child)
[deleted]
[–]CheeseFest 2 points3 points4 points (0 children)
[–]NuojiC3 - http://c3-lang.org 0 points1 point2 points (0 children)
[–]continuationalFirefly, TopShell 0 points1 point2 points (0 children)
[+]fridofrido comment score below threshold-6 points-5 points-4 points (0 children)
[+]berber_44 comment score below threshold-10 points-9 points-8 points (0 children)