Назначение шаблона

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

Типовые цели безопасности

Типовые цели безопасности при применении шаблона включают:

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

Когда и почему может быть важным?

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

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

Предположения безопасности

Предположения безопасности включают известный формат данных и известный протокол обмена данными.

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

Описание решения

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

  • реализацию монитора безопасности пересылок (режим работы «в разрыв» — перехват всего входящего потока данных без возможности обхода компонента);
  • получение на вход, проверку, очистку и передачу на выход потока данных с приемлемым уровнем задержки и потери;
  • применение правил проверки и очистки данных на основе обновляемого набора правил.

Элементы системы, реализующей шаблон:

  • источник данных;
  • получатель данных;
  • компонент, реализующий проверку и обработку данных перед передачей получателю.

Взаимодействие элементов шаблона представлено на рисунке 1.

Требования к технологии разработки элементов системы

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

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

Необходимо реализовать подходы к обеспечению корректности производимой обработки (очистки) данных, в первую очередь методические и кооперационные подходы, обеспечивающие безопасность и корректность работы программного кода компонента, реализующего проверку и обработку (очистку) данных.

Необходимые шаблоны

Можно сделать попроще, но это опасно

  1. Отсутствие проверки данных
  2. { search and update or create DB record (receivedValue)}                                                                    

    Прямая угроза.

  3. Каждый раз своя проверка, без выделенного кода (ошибки и рассинхрон)
  4. If (receivedValue contain SQL Injection) ignore; else { search and update or create DB record (receivedValue) }                                                                    

    Велика вероятность ошибки или потери при изменениях кода/алгоритма проверки.

  5. Проверка внутри управляющей процедуры
  6. If (IsValidData (receivedValue)) { search and update or create DB record} else;                                                                    

    Можно забыть вызвать проверку, или проигнорировать результаты проверки.

  7. Использование именованных типов и проверка в конструкторе типа
  8. type UserField 
    {
    UserField (input) { if (input contain SQL Injection) value = «»; else value = input; } 
    }
    
    import search and update or create DB record (value: UserField);
    search and update or create DB record (receivedValue);
    }                                                                    

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

Ограничения на применение шаблона

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

Допустимые модификации шаблона

Допустимо применять шаблон не только для обработки (очистки) данных, но также с целью нормализации или изменения формата данных для обеспечения их корректной интерпретации получателем;

Допустимо применять шаблон с целью мониторинга безопасности данных без их обработки (очистки), только для проверки данных, как показано на рисунке 2.

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