Специалисты из компании Red Hat подняли заслуживающий внимания вопрос интеграции средств защиты от проведения атак, основанных на корреляции времени выполнения операции и степени совпадения данных, сравниваемых функцией memcmp. Используемая по умолчанию в Glibc реализация memcmp подвержена проблеме, которая позволяет предсказать значение сравниваемых данных.
Например, если memcmp используется при сравнении ключа шифрования c входными данными, то атакующий может байт за байтом подобрать значение с которым осуществляется сравнение. Техника атаки основана на том, что memcmp завершает выполнение после первого несовпадения, т.е. атакующий может передать случайный набор данных и изменять значение первого байта, отслеживая время выполнения операции. Устойчивое увеличение времени будет сигнализировать об успешности подбора первого байта, после чего можно начать подбирать второй байт и т.д.
В качестве решения проблемы предлагается перейти на использование реализации функции memcmp, время выполнения которой явно не зависит от степени совпадения строки (например, можно сравнивать элементы в случайном порядке или сравнивать блоки в несколько байт). Включение по умолчанию подобного варианта функции в Glibc рассматривается как маловероятное (с позиции производительности, текущий вариант memcmp предпочтительней), поэтому как наиболее реалистичный вариант рассматривается возможность задействования защищённой версии memcpm при сборке Glibc с опцией «-D_FORTIFY_SOURCE=2».