😎 Любую ли уязвимость можно устранить?
Спросили тут, какие мои доказательства, что любая уязвимость приложения поддается устранению. И, вроде бы очевидная хрень, но ведь «очевидная хрень» ≠ «доказательство». Да и понятие «уязвимости» и прочие, можно же по-разному трактовать. Но, тогда, какие уязвимости поддаются устранению, а какие — нет, и в каком смыле? Хорошо бы в этом разобраться.
А, значит, пора вспомнить теорию вычислений 🦄
Во имя душевного спокойствия тех, кто не хочет вспоминать теорию вычислений, полная версия статьи, с рассуждениями и доказательствами, доступна по ссылке.
Здесь же, приведу только выводы:
⚠ TL;DR: Любая уязвимость, устранимая фильтрацией потоков данных, состояний, или мониторингом поведения программы, устранима вычислимыми средствами. В эту категорию входят практически все формализуемые уязвимости, чьи модели не имеют пересечений с моделью предметной области защищаемого приложения.
Но, если устранение уязвимости требует, чтобы программа стала определена на входах, где она ранее расходилась, и при этом согласовывалась с исходной на всех остальных — это может быть доказуемо невозможно. В эту категорию входят уязвимости, чьи формальные модели имеют пересечения с моделью предметной области приложения.
Говоря ещё проще: существуют неустранимые, без ущерба для функциональности приложения, узявимости, относящиеся к классу логических.
#мысли_вслух
Post #94
440
- ❤ 4
- 🤔 2