Ik probeer jouw quoting te herstellen in mijn reactie:
12-11-2015, 02:07 door Anoniem: 11-11-2015,17:00 door Erik van Straten: 11 november 2015, 11:03 door Redactie:
[...]
Het probleem wordt veroorzaakt door een kwetsbaarheid in de Apache Commons Library.
[...]
Dat lijkt in eerste instantie het geval, maar is onjuist. Libraries kunnen nou eenmaal functies bevatten die trusted input verwachten, omdat ze anders niet kunnen functioneren en/of te traag zijn.
Of omdat de ontwikkelaar geen benul had dat je invoer moet valideren.
Jouw "Of" begrijp ik niet helemaal: wat mij betreft
moet een ontwikkelaar input valideren (niet alleen om te voorkomen dat untrusted input tot code execution kan leiden). Een ontwikkelaar die niet weet dat je input
hoort te valideren is een amateur.
12-11-2015, 02:07 door Anoniem: Er lijkt met geen woord gerept dat deze library trusted input verwacht. Als een ontwikkelaar het al in het hoofd haalt om na te laten geen input validatie te implementeren dan mag je op zijn minst verwachten dat deze bewuste keuze kenbaar is gemaakt zodat ieder die de library wil gebruiken niet eerst zelf een code review hoeft te doen of die library wel veilig is.
Lastig in dit kader is dat de input zo wordt gemanipuleerd dat, onverwacht door de programmeur, een library wordt gebruikt die toevallig in het classpath staat. Dit type aanval was, voor zover ik weet, tot voor kort vrij onbekend; de ontdekkingen van Chris Frohoff et al. hebben niet de aandacht gekregen die ze verdienden. Echter, ik stel voor dat we er lessen uit trekken en geen tijd verspillen aan de schuldvraag.
Daarnaast heb je natuurlijk gelijk dat het heel handig zou zijn als van library-functies gedocumenteerd zou zijn of ze "veilig" zijn of niet, maar het is natuurlijk wel erg lastig om te documenteren wat een functie allemaal
niet doet.
Als programmeur kun je dan ook niet anders dan ervan uitgaan dat, als specifieke functionaliteit (waaronder input validatie) in code van derden
niet is gedocumenteerd, deze waarschijnlijk niet aanwezig zal zijn. Vaak is het helemaal niet zo moeilijk om te testen hoe functies reageren op
onverwachte input [*] (d.w.z. bewust gemanipuleerde of legitieme doch beschadigde input, maar ook legitieme input uit andere software met een later versienummer dan waarmee wordt getest).
En dat is exact wat programmeurs en testers in veel te veel gevallen nalaten; er wordt alleen getest of iets werkt zoals bedoeld, en
niet hoe het systeem zich gedraagt bij onverwachte, eventueel kwaadaardige, input. Voor steeds meer systemen verschijnt fuzzing software; het argument dat er geen tools voor bestaan gaat vaak niet meer op.
[*] probeer in C++ eens
strcpy(0,0).
12-11-2015, 02:07 door Anoniem: 11-11-2015,17:00 door Erik van Straten: Het fixen of uitschakelen van de Apache Commons library lost dit ene probleem misschien even op, maar met de schijnwerpers op dit onderwerp verwacht ik meer vergelijkbare lekken in allerlei libraries.
Vanwaar deze redenatie? Bijna dagelijks worden er meldingen gedaan van lekken in libraries. Dit lek was zelfs 9 maanden bekend maar niemand die er iets om gaf. En om er gebruik van te maken van een security bug in een library ben je meestal afhankelijk van zowel de specifieke implementatie van de library in de applicaties en de plaats waar dan de kwetsbare functie nog wordt toegepast in die applicatie zonder dat die applicatie nog verdere risico's wegneemt. Zoals je zelf al aangaf, libraries gaan nogal eens te makkelijk met input om en dat weten ontwikkelaars van applicaties vaak ook.
Je hebt gelijk dat ik
lekken tussen aanhalingstekens had moeten zetten, want het is op z'n minst discutabel of het hier gaat om een lek in een library (zie ook de, al eerder door mij genoemde, reactie van Apache in
https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread).