Безопасность MAF: как предотвратить атаку «человек посередине»

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

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

Когда я получаю токен надстройки через AddInStore.FindAddIns, я могу только подтвердить, что сама сборка надстройки принадлежит поставщику, как и должно быть. Если злоумышленник подменит сборку надстройки, то мы это обнаружим и не будем активировать эту сборку. Но в любом случае, поскольку он работает практически без разрешений, злоумышленник не может нанести вред приложению и среде (хосту, интрасети и т. д.).

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

Когда я отлаживаю свой код, проверяя в отладчике токен надстройки, я вижу все пути к различным сборкам, которые использовало хранилище надстроек для создания конвейера:

Токен надстройки

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

Есть ли обходной путь для доступа к этой информации?


person Tobias Lorentz    schedule 29.06.2015    source источник


Ответы (1)


Один из способов предотвратить это — не перестраивать конвейер каждый раз при запуске приложения. Если конвейерная DLL отличается от DLL и ключа в PipelineSegments.Store, то DLL не будет загружена.

person John Koerner    schedule 01.07.2015
comment
Привет, Джон, но как я могу изначально узнать, что конвейер содержит правильные библиотеки DLL? - person Tobias Lorentz; 01.07.2015
comment
Я считаю, что вы можете сгенерировать PipelineSegments.Store как часть процесса сборки, чтобы вы знали, что библиотеки DLL являются правильными при отправке. К сожалению, по MAF не так много хороших руководств, поэтому мы застряли, выясняя такие вещи по ходу дела. - person John Koerner; 01.07.2015