Баги, уязвимости, эксплойты: условия компромисса

(Ди Марко Роттинги)
14/08/24

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

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

В этой статье я пытаюсь лучше прояснить некоторые важные различия между конкретными терминами, которые слишком часто используются как взаимозаменяемые (и неправильно) с целью вызвать ажиотаж или получить клики в Интернете.

Давайте начнем с пары абсолютных истин, которые мне важно запомнить.

Первая — это цитата светила кибербезопасности Джина Спаффорда: «Единственная по-настоящему безопасная система — это та, которая выключена, отсоединена, заперта в титановой клетке, в бетонном бункере, полном нервно-паралитического газа и охраняется очень хорошо оплачиваемой вооруженной охраной. Даже тогда я бы не поставил на это свою жизнь».

Вторая истина, которую гораздо проще сформулировать, проще повторяет, что «Ни одно программное обеспечение не идеально».

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

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

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

Так что из ошибка Однако если возникает уязвимость, должны существовать некоторые важные условия.

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

Чтобы лучше понять этот нюанс, давайте попробуем изучить, как сообщается об уязвимости, черпая вдохновение из американской организации по анализу угроз MITRE. Среди бесчисленных видов деятельности MITRE есть управление и обновление базы данных уязвимостей под названием CVE (Common Vulnerabilities and Exposures).

Ниже приведен пример того, как уязвимость представляется широкой публике:

Сразу становится понятно, что описание контекста говорит гораздо больше, чем возможные способы эксплуатации ошибки, не приводя при этом примеров по сути. как на практике: например, сообщает нам, что в модели Omada ER605 от производителя TP-Link возникла проблема с переполнением буфера: это означает, что из-за ошибки разработки память устройства принимает больше данных, чем может вместить; сообщает нам, что для записи в эту память не требуется проходить аутентификацию; показывает нам, как эксплуатация этого трескаться также может проходить дистанционно, при наличии квалификации Удаленное выполнение кода.

В отчете об уязвимости никогда не говорится, как ее использовать, по нескольким веским причинам.

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

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

L 'эксплуатировать представляет собой код и/или процедуру, выполнение которой вызывает ошибку, использующую ошибка осталось в коде разработчика.

В итоге: ошибка, уязвимость изд. эксплуатировать это три отдельные сущности, если они и являются следствием, но уж точно не синонимами..

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