Disclaimer:
1. Сразу хочу сказать, что компания МойОфис со мной никоим образом не связана, в том числе финансово, по крайней мере уже несколько лет. Если не считать обещания с моей стороны написать эту статью, о котором я думаю что со стороны сабжа давно забыли. Что ж, обещанного как говорится три года ждут и вот дождались, благо есть подходящий повод.
2. Изначально статья задумывалась более подробной, с примерами и скриншотами, но причинам из п.1 написана в основном по памяти и абы как. Актуальность информации минимум три года, могут быть любые неточности, хотите верьте - хотите проверьте. Всех персонажей считайте выдумкой. Пруфов не будет, вместо них будут лирические отступления, за верность и давность которых я тоже не ручаюсь.
3. Вообще-то уговор был отдать статью на проверку и одобрение перед публикацией, но мне честно говоря влом (см. п.1). Также часть информации получена в рамках коммерческого исследования проведенного другой компанией, и только затем уже перепроверена в частном порядке. Так что если кто-то желает дополнить, исправить или заявить о правах на интеллектуальную собственность - пишите, думаю все поправимо.
4. Мой личный опыт ограничивался набором десктопных приложений под Windows и немного под Linux, но есть серьезные основания считать, что с остальными продуктами ситуация обстоит примерно так же.
Итак, семейство продуктов МойОфис: пакет офисного ПО, "убийца" {одного крупного офисного пакета} и флагман импортозамещения всего и вся. Разрабатывается при поддержке государства, в том числе грантами и госзаказом (на самом деле с этими грантами много печальных моментов, думаю многие в курсе, но оставим эту тему за рамками статьи).
Впервые мое знакомство с ними случилось не то чтобы в начале разработки, но когда продукт был еще довольно сырым и коммерчески не распространялся. Разработчик заказал на этом этапе исследование безопасности(sic!) ПО у специализированой компании, и собственно моя команда смотрела десктопную часть.
Boost
Первое что было обнаружено под капотом - библиотека boost. Если честно, то мое мнение при обнаружении буста - тушите свет, то есть найти там что-то серьезное шанс минимален. Впрочем, оставалась надежда на логику, да и исследование было заказано и оплачено, так что нужно было копать дальше.
Open source
Следующим было отмечено наличие большого объема кода, позаимствованного из популярного open source. Это тоже в целом факт не внушающий оптимизма (тем кто ищет уязвимости), так как считается что код, доступный для проверки большому количеству независимых специалистов, "чище" и безопаснее. Забавно, но забегая вперед скажу что единственная пара условно эксплуатируемых (раз в сто лет, в марсианское полнолуние в фазе овна) багов была связана именно с использованием open source библиотек.
Обратная связь
Тут мы нашли, к чему можно было придраться. Часть библиотек была скомпилирована без флага ASLR, то есть расположение кода в памяти не рандомизировалось при загрузке. Так себе недочет, без уязвимости с передачей управления смысловой нагрузки не имеет, но считается плохой практикой.
Доступ к порталу для связи с разработчиками нам дали сразу, так что мы заполнили тикет и продолжили работу.
Запрос дополнительных сведений от разработчика пришел наверное в течение часа, а емнип уже на следующий день прислали обновленные установщики!
Чтобы было понятнее, исправлений очень серьезных уязвимостей от очень серьезных вендоров зачастую приходится ждать месяцами, а некоторые начинают чесаться только после выкладывания всего в открытый доступ! Так что подобное отношение стало культурным шоком и даже слегка напугало. А ведь программистам пришлось сначала подробно изучить проблему, затем перелопатить всю систему сборки.
ООП
Смотрим что внутри бинарников. Сам код, несмотря на буст, оказался довольно строен и удобочитаем. Повторное использование задействовано по максимуму, все сущности на всех этапах аккуратно распиханы по объектам. Обнаружилось несколько разыменований неинициализированых объектов, судя по всему в тех местах где еще была не реализована функциональность и стояли заглушки. Но буст естественно об этом позаботился и объекты были заполнены нулем. Разыменование нуля теоретически тоже эксплуатируемо, на старых системах и при множестве дополнительных условий, но увы, не в нашем случае. Все чинилось сразу, и заодно насколько я помню, нам сообщили о починке нескольких похожих мест до которых мы тогда не добрались.
Линки
Логическая (условно) уязвимость - наличие в документах ссылок, позволяющих запустить локально приложение, правда, без аргументов. То есть, вы можете добавить в .docx ссылку, при клике на которую запустится калькулятор. Разработчики добавили предупреждение перед открытием - точно так же оно работает в WordPad, например.
Роботы атакуют
Самые большие надежды были на парсинг xml, в котором баги находятся почти всегда и у всех. Но тут ждало самое большое разочарование. Код парсера был настолько безупречен, будто написан роботом. Когда дали доступ к исходникам, так и оказалось - все xml обработчики были машинно сгенеренными, ловить там было нечего. Кажется этот факт с точки зрения компании представлял какую-то страшную тайну, уже не помню почему, надеюсь я ничего такого не раскрываю.
Исходники
В исходниках же автоматикой поймали пару багов в open source. Код давали посмотреть исключительно оффлайн, в обстановке строгой секретности, в офисе - ну и заодно показали офис. Довольно мило, горячие обеды и прочие приятности в наличии.
Двоичный формат
Но вернемся к исследованию. Оставался еще старый двоичный формат {одного крупного офисного пакета}. Тут было прикручено стороннее проприетарное решение... на C#. Поковыряли без особой надежды. Ничего не нашли.
Остальное
Процедура обновления. Тоже все хорошо.
Если придираться, то лично мне не понравилось что все данные грузятся в память процесса, без какого-либо кеширования и мапирования. Теоретически, да и на практике было замечено что это дает тормоза при открытии больших файлов. Но эта неприятность выходит за рамки секурити. Может, сейчас уже поправили.
Почтовый клиент оказался перекрашеным файерфоксом, так что туда заглянули чисто чтоб убедиться что ничего своего опасного не прикрутили. Убедились.
В общем, ничего страшного в итоге не нашлось. В онлайн решениях, насколько мне известно не нашлось тоже. Тем не менее, сотрудничество по всем фронтам продолжалось, и я не припомню вендора который настолько трепетно относился бы к любым огрехам с точки зрения безопасности.
P.S.: Зачем я это вообще пишу?
Ради справедливости :D Бывает немного обидно читать комментарии к статьям МоегоОфиса на Хабре. Принято считать (небезосновательно) что все это импортозамещение на грантах это такое тяп-ляп и в продакшн, а не будут брать - отключим газ. Однако ж вот, есть компании, нарушающие это правило. Подходящие со всей ответственность к разработке продукта со всех сторон, и то, как они монетизируются - не решающий показатель. И если {один крупный офисный пакет} вам больше не продают, есть альтернативы.
P.P.S.: если сравнивать сабж с {одним крупным офисным пакетом} в плане безопасности, то мое личное мнение, что у сабжа все хорошо в то время как оппонент изнутри выглядит как-то так
Вполне можно обнаружить артефакты, которые создавались если не под DOS, то во всяком случае под 16 бит.
Комментарии (14)
cl0verfi3ld
30.03.2022 14:46+7после цикла разгромных статей о том как у нас все плохо по железу и чипам, честно говоря трудно, но все еще хочется верить, что хоть по софту у нас не все так скверно..
artebel
30.03.2022 15:54+6Ой, а может МойОфис объявить публичную баг баунти за найденные уязвимости? Сразу и баги достойные появятся)
infom
30.03.2022 17:42+1Никогда не нравилось когда в имени компании/бренда есть местоимение. Вот и тут "МойОфис" и в итоге автор пишет фразы вида
"к статьям МоегоОфиса на Хабре ".
Режет глаз и слух сильно, да и не правильно скорее всего.Nialpe
31.03.2022 08:42+1Еще немного омоним смущает в названии - если прочесть как глагол в повелительном наклонении (клининговая компания? бренд роботов-пылесосов?).
runaway
30.03.2022 18:08+3Я может напишу сейчас поперёк общего торжественного настроя, но.
Мы на работе начали тестировать "МойОфис" на предмет замены пакета от MS на новых машинах. И если с текстовым редактором всё на крепкую тройку (вёрстка не разъезжается, но стили не поддерживаются в полном объёме), то с таблицами полная беда. Выпадающих списков нет как класса. А у нас на них настроено 100500 шаблонов с автоподстановкой значений (та самая функция "ВПР", если что). При этом в LibreOffice ситуация обратная: с текстовым редактором всё плохо, но в таблицах выпадающие списки работают. Вопрос, как же так? В Open Source функционал есть, а в платном ПО -- нет?
Автору: к сожалению, альтернативы пока так себе. Ищем дальше.
kompilainenn2
30.03.2022 19:00При этом в LibreOffice ситуация обратная: с текстовым редактором всё плохо
А можно список того, что именно плохо? Если речь про импорт/экспорт DOCX - укажите сразу, пожалуйста. Спасибо
myoffice_ru
01.04.2022 14:30Благодарим автора за интересную статью и положительный отзыв о продукте.
За прошедшие годы мы значительно улучшили работу в данном направлении и продолжаем наращивать компетенции безопасности внутри компании, с привлечением в том числе и внешних экспертов.
Один момент, который мы хотели бы утонить – это финансирование нашей компании. Мы разрабатываем наши продукты за счет вложений частных инвесторов. Единственный грант от государства МойОфис получил в 2021 году, речь о крупнейшем в истории гранте от РФРИТ, который покрывал 50% стоимости разработки почтовой системы Mailion, и был направлен на доработку и вывод решения на рынок. О продукте Mailion мы неоднократно писали на Хабре: habr.com/ru/company/ncloudtech/news/t/592357ormoulu Автор
01.04.2022 15:25Написано за 20 минут в приступе ностальгии без какого-либо фактчекинга, так что извините если что ¯\_(ツ)_/¯
petrov_engineer
"Вы просто поверьте - там все замечательно!" (с)
alexshipin
ой, зря вы так. я лично попользовался некоторыми приложениями от мойОфис, и скажу - они весьма и весьма непллохи, особенно в сравнении с MS Office.
Я бы оценил мойОфис на 4 из 5, а вот в тех же реалиях MS Office я бы поставил слабую 3 (скорее 2) из 5.
Но, повторюсь, это был мой личный опыт в специфических рабочих условиях.