В одной из наших первых лекций CS по безопасности мы прошли через проблему C, не проверяя предполагаемые длины буфера, и некоторые примеры различных способов использования этой уязвимости.
В этом случае похоже, что это был случай операции злонамеренного чтения, где приложение просто считывало, однако, много байтов памяти
-
Правильно ли я утверждаю, что ошибка Heartbleed является проявлением проблемы проверки длины буфера C?
-
Почему вредоносное использование не вызвало ошибку сегментации при попытке прочитать другую память приложения?
-
Было бы просто обнулить память перед ее записью (а затем и после ее чтения), вызвав ошибку сегментации? Или это зависит от операционной системы? Или между каким-либо другим фактором окружающей среды?
-
По-видимому, использование ошибки не может быть идентифицировано. Это потому, что функция heartbeat не регистрируется при вызове? В противном случае, возможно, какой-либо запрос для строки ~ 64k может быть вредоносным?