Здравствуйте, DOOM, Вы писали:
DOO>Покажи мне хоть одно ТЗ, определяющее функционал АС с точностью до последнего входного сигнала и реакции на него.
АС в данном контексте — аналоговая схема, автоматизированная система, атомная станция, etc?
V>>тз бывают формальными, тз бывают педанитичными. в околоисследовательских задачах тз могут вообще не содержать конкретики. DOO>Каким бы ни было ТЗ оно не может описать весь входной язык, все состояния автомата и функцию перехода. Это просто нереально.
it depends (c)
V>>но если в тз явно указанно, что лигитимным входом считается, например, число в некотором диапазоне в строковой форме, а программе на вход подали кусок исполнямого кода, то это можно рассматривать как выход за определение конечного автомата. DOO>Нет-нет-нет. Еще раз — так нечестно. Входной язык в данном случае это именно любой набор сигналов, которые возможно передать в систему. ТЗ тут не при чем абсолютно.
собственно, вопрос в реакции системы на нелегитимные входные данные. с одной стороны, это нецелевое использование ПО (кухонным комбайном из катапульты) — все возможные виды воздействия предусмотреть весьма трудоемко, да не всегда нужно. с другой стороны, валидация входных данных, корректная обработка нелегитимных (и прочие меры aka defensive programming) относятся к минимально необходимому джентельменскому набору большинства ПО. имхо, минимальные требования в каждом случае зависят задачи, и абсолютно всегда требовать от софта корректности в 100% ситуаций слишком расточительно.
DOO>А почему ты все сводишь только к входным данным, причем только к тем, которые может ввести пользователь системы?
где я говорю только о пользователях системы?
DOO>У примеру, я видел уязвимость в web приложении, которая заключалась в том, что в таблицу БД складывалось значение HTTP заголовка User-Agent безо всякой предварительной фильтрации.
Это не входные данные системы?
DOO>А если речь вообще идет о каком-нибудь race condition (это тоже прокол в построении автомата)?
race condition, имхо, трудно отнести к потенциальным уязвимостям перед атаками, разве что только в некоторых случаях для DoS.
V>> если, к примеру, математический пакет падает при попытке вычислить в действительной системе корень от отрицательного числа, то это по меньшей мере "некрасиво", но если этот пакет падает, если ему подсунуть вместо аргумента для корня вместо числа в строковой форме поток бинарных данных, то это "значительно менее некрасиво" %) DOO>Абсолютно одинаково. Если, допустим, речь идет о системе АСУ ТП, которой в результате сбоя в сети пришли искаженные данные от датчика и она помера от этого? Тут даже злого умысла не надо... Тот же clipboard приводит к тому, что приложение потенциально должно быть готово получить из него все, что угодно.
в общем-то, не спорю.
тем не менее, асутп аэс и асутп арбузорастительного комбината — разные вещи с точки зрения требований к надежности. именно минимальных требований, но, разумеется, никак не верхнего ограничения культуры разработки.