Microsoft vil ikke længere leve med potentielle sikkerhedshuller i softwaren forårsaget af C-funktionen memcpy(). Derfor bliver funktionen føjet til listen over ?forbudte? C-funktioner senere på året, fremgår det af et indlæg på MSDN-bloggen The Security Development Lifecycle (SDL).
Funktionen memcpy() bruges til at kopiere et antal bytes mellem to ikke-overlappende områder i hukommelsen. Den er defineret i header-filen string.h i standardbiblioteket for programmeringssproget C.
Problemet med memcpy() - og flere andre funktionskald som for eksempel strcpy() og strcat() - er, at funktionerne kan give anledning til buffer overflow, hvilket kan udnyttes i hackerangreb.
Memcpy() får følgeskab af funktionerne CopyMemory() og RtlCopyMemory() og erstattes af funktionen memcpy_s(), der ikke skulle lide under samme sårbarhed.
»Fordi vi har set mange sårbarheder i sikkerheden i produkter fra Microsoft og mange andre, og fordi vi har en funktionsdygtig erstatning (memcpy_s(), red.), er jeg 'stolt' af at kunne annoncere, at vi tilsigter at tilføje memcpy() til listen senere på året,« lyder det på SDL-bloggen.
Der opfordres samtidig til, at alle udviklere sætter memcpy() stolen for døren og tilføjer følgende kode i fælles header-filer:
#pragma deprecated (memcpy, RtlCopyMemory, CopyMemory)
Programmøren vil så modtage følgende advarsel:
warning C4995: 'memcpy': name was marked as #pragma deprecated
Microsoft-udviklerne påpeger, at det er relativt smertefrit at skifte fra memcpy() til memcpy_s(). Den nye funktion tager et ekstra argument, som er størrelsen på destinationsbufferen. Dermed tvinges programmøren til at tænke over, hvor meget data skal kopieres hvorhen, hvilket skulle reducere risikoen for buffer overflows.
Blogindlægget på Security Development Lifecycle kan findes via det eksterne link herunder.