Является ли ошибка с кровотечением проявлением классического эксплойта по переполнению буфера в C?

В одной из наших первых лекций CS по безопасности мы рассмотрели проблему C, не проверяя предполагаемую длину буфера и некоторые примеры различных способов использования этой уязвимости.

В этом случае, похоже, это была вредоносная операция чтения, когда приложение просто считывало как можно больше байтов памяти.

Правильно ли я утверждаю, что ошибка Heartbleed является проявлением проблемы проверки длины буфера в C?

Почему злонамеренное использование не вызывало ошибку сегментации, когда он пытался прочитать память другого приложения?

Будет ли просто обнуление памяти перед записью в нее (а затем последующее чтение из нее) вызвать ошибку сегментации? Или это зависит от операционной системы? Или между каким-то другим фактором окружающей среды?

Видимо, использование ошибки не может быть идентифицировано. Это потому, что функция heartbeat не регистрируется при вызове? Иначе наверняка любой запрос на строку ~ 64k может быть вредоносным?

Ответы на вопрос(2)

Ваш ответ на вопрос