В процессе разработки распределенной информационной системы, от корректности функционирования которой напрямую зависит доступность других информационных систем, встала задача обеспечения доступа к компонентам ее администрирования. Организация обмена данными между узлами осуществлялась с использованием зоопарка технологий, которые предоставляет Windows Communication Foundation, входящий в состав .NET Framework. Веб-сервисы, XML-сообщения, SOAP, web.config WCF-клиента с установленным элементом “security” – все это было бы отличным фундаментом для решения поставленных задач с учетом аспектов безопасности доступа к административной части, но факт существования техники “Padding Oracle Attack” ставит под сомнения концепцию и заставляет задуматься над конкретной реализацией.
Несколько слов о технике «Padding Oracle Attack». Oracle (в данном контексте) – это не есть программный продукт одноименного вендора и не имеет к нему никакого отношения. Оракул – элемент инфраструктуры, который отвечая на специально сформированные запросы злоумышленника, раскрывает чувствительную информацию о деталях своего функционирования. Атака основана на уязвимостях в использовании криптографических примитивов и позволяет третьему лицу скомпрометировать данные, проходящие по зашифрованному каналу «сервис-клиент». XML-сообщения, которые являются элементами обмена информацией в классических схемах, реализуемых WCF, шифруются с использованием блочных алгоритмов согласно рекомендации «XML Encryption», разработанной W3C. Конкретная реализация шифрования сообщений позволяет злоумышленнику на основе хитрозакрученных запросов произвести раскрытие содержимого зашифрованных пакетов. Детали эксплуатации уязвимости описаны в презентации Padding Oracles Everywhere (а также в Microsoft Security Bulletin MS10-070) и заострение внимания на матчасти в данном случае будет излишним.
Тот факт, что технологии ASP.NET и WCF абстрагируют программиста от процедур обеспечения безопасности, позволяя сконцентрироваться на вещах более масштабных, нежели реализация алгоритмов шифрования сообщений, заставляет задуматься, а может стоит копнуть немного глубже в процессе реализации своей распределенной инфраструктуры? Скорость разработки, которую позволяют набрать технологии .NET Framework, ведет к тому, что в группу риска попадают системы, состоящие из огромного количества компонентов, неправомерный доступ к которым может привести к печальным последствиям. Рост технологий проектирования распределенных систем давит на хрупкий фундамент их безопасности.