Дни функции копирования области памяти Memcpy() и ее производных сочтены. По
крайней мере, для тех разработчиков, которые стремятся к созданию безопасного
кода.

Компания Microsoft планирует отказаться от использования этой популярной
функции, по вине которой годами выявлялись проблемы с безопасностью не только в
ОС Windows, но и в огромном количестве числе других приложений, написанных на
языке C. Ближе к концу этого года Microsoft добавит memcpy(), CopyMemory() и
RtlCopyMemory() в список функций, забаненных в соответствии с методикой
разработки безопасных программ
Secure Development
Lifecycle
(SDL).

Memcpy на протяжении долгого периода времени являлась одной из основных
функций языков семейства С, так как она обеспечивала удобный способ копирования
данных из одной области памяти в другую. Минусы ее использования проявляются,
когда источник копирования содержит больше байтов, чем область назначения, что
приводит к переполнению буфера и позволяет злоумышленникам удаленно исполнять
код внутри приложения.

Те разработчики, которые хотят создавать совместимые с SDL приложения, должны
будут использовать вместо memcpy() функцию memcpy_s, позволяющую указывать
размер буфера. Эта команда уже поддерживается в Microsoft Visual C++, однако
родной поддержки в компиляторе GCC пока нет.



Оставить мнение