Verbod commando maakt C/C++-apps veiliger
Gepubliceerd: Vrijdag 15 mei 2009
Auteur: Michiel van Blommestein
Nieuwe Windowsapplicaties geschreven in C en C++ moeten binnenkort een flink stuk veiliger worden dan nu het geval is, als het aan het Microsoft Developers Network ligt althans. Ontwikkelaars is niet langer toegestaan om een beruchte programmeerfunctie aan te roepen die constant zorgt voor beveiligingsproblemen.
Het MSDN gaat de functie Memcpy() en zijn kleinere broertjes, CopyMemory() en RtlCopyMemory(), toevoegen aan de lijst van verboden function calls in de Security Development Lifecycle (SDL). Praktisch komt het erop neer dat ontwikkelaars die de functies op die lijst aanroepen hun code niet als 'veilig' mogen bestempelen van Microsoft, of SDL-compiant in MSDN-termen.
Al lange tijd is de Memcpy()- call een makkelijke manier voor luie C-ontwikkelaars om inhoud van het ene deel van het geheugen naar een ander deel te kopiëren. Probleem is dat het kan gebeuren dat de brondata meer ruimte inneemt dan er is in het deel waar ze naartoe moeten. Dat maakt het hackers makkelijk om een overflow uit te lokken en zo de applicatie te laten crashen, waardoor de mogelijkheid onstaat om willekeurige code te draaien. Bijzonder veel lekken in Windowsonderdelen- en applicaties hebben hun bron zitten in een zwervende Memcpy()- functie.
Om die reden stond de functie al op de advieslijst om niet te gebruiken, maar het wordt binnenkort dus helemaal uitgebannen. Gebruikers van Visual Studio krijgen op het moment dat ze de gewraakte functies aanroepen een waarschuwing in beeld krijgen dat het commando verouderd is, en dat ze het daarom vooral niet moeten gebruiken.
Het aangeboden alternatief is memcpy_s, een functie waarmee bij het kopiëren de grens kan worden aangegeven van het doelgebied, maar deze wordt niet door alle compilers ondersteund.
Bron: Techworld
