Как стать автором
Обновить

Безопасность мобильных приложений 1С, взгляд по диагонали

Время на прочтение8 мин
Количество просмотров12K
Что приходит первое в голову при словах «1С Предприятие»?

Даже тем, кто далек от ИТ, представляется большущий компьютер (а тем, кто не далек, стойка двух-юнитных серверов), рядом слушает музыку сервера (как вариант просто музыку) сисадмин, за стеной в опен-спейсе менеджеры принимают заказы и бухгалтерия сдающая отчетность. «Зарплата, зарплата!»: слышны их радостные крики. «И кадры»: уточняет HR. Да, все верно. Это 1С.
Кто в теме, напомнит про крики не совсем приятные: «Все тормозит! Сделайте что-нибудь, #тыжпрограммист». И борющихся за живучесть ИТ-шников. В обычном офисном потоке дел, редко кто задумывается о безопасности. А тех кто задумывается, прошу под кат…


Два ковбоя сидят в салуне.
На улице выстрелы, грохот. Скачет всадник и палит из револьвера.
— Билли, это кто?
— А, да это неуловимый Джо
— Что, его реально никто поймать не может?
— Да кому он нафиг нужен-то?!


Время от времени приходит рассылка, о недопустимости пароля «123» и он меняется на «1234», а тот, кто с «123456», тот вообще молодец. Сервер 1С зачастую совмещен с файлопомойкой, где многие более любопытные вещи лежат в формате простого текста. А еще чаще и с терминальным (это для скорости, скажет любой админ), где все делают, что хотят. Многие скажут, что эти времена ушли вместе с 3-х дюймовыми дискетами, а вот и нет.
Лирическое отступление
Год назад одной не маленькой, но гордой компании захотелось соответствия ФЗ-152 по хранению персональных данных. Автор этих строк, по просьбе руководства, не поленился почитать технические требования и сравнить их с присутствующим набором (примерно описанным выше) и не побоялся это озвучить. А бояться было уже поздно, потому что руководство уже все решило. #тыжпрограммист –ты и будешь ответственный за сохранность персональных данных, так два очень топ-менеджера и руководитель юридического департамента напутствовали его. — А у нас же ничего не готово? Вы что думаете, в руководстве дураки сидят?: был ответ. –Мы со всех соберем подписи, что они обязуются персональные данные не смотреть и не воровать: гордо сказала юрист.

На самом деле, очень большая доля сермяжной правды присутствует.


Если человек понимает архитектуру «1С Предприятие», то вряд ли он будет работать менеджером по продажам, скорее он будет на светлой стороне силы с соответствующим окладом и количеством задач, не позволяющим отвлекаться по мелочам.

Чтобы совершить открытие,
иногда достаточно посмотреть на привычные вещи по диагонали.
приписывается А.Энштейну

Но есть нюанс… Со времен 3-х дюймовых дискет «1С Предприятие» проделало огромный путь в своем развитии. И сейчас это могучая экосистема поддерживающая и активно внедряющая все современные технологии.

Техническо-лирическое отступление

Как человек идущий с 1С как раз со времен 3-х дюймовых дискет хочу сказать, слова «могучая экосистема» это не оговорка и не лесть.

Именно с тех времен для меня и для тысяч, если не миллионов (времени, то ого-го прошло) программистов, стала тем подручным средством мгновенной разработки, которым можно в считанные дни реализовать практически любую бизнес-идею, понятное дело в разделе учета. Именно в режиме – утром деньги, вечером стулья. Для того, чтобы писать игры или управлять реал-тайм оборудованием есть более приспособленные языки. Причем сделанное решение будет приятно на вид и в середнячках по быстродействию. Так происходит и с мобильной платформой, она много не может по сравнению с нативным кодом, но добавить хранение/добавление/редактирование и отображение сущности однотипных объектов (справочник) в ней можно за 5 мин и 0 строчек кода. А на java модель MVC придется писать самому, частично еще «гугля» подходящие фреймворки. То же и для десктопных платформ.

Это огромный плюс в сравнении с системами недалеко ушедшими от DOS, но и небольшой минус.

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


Так было с появлением управляемого интерфейса, когда «1С Предприятие» стало по сути веб-приложением, когда твою базу видит и пробует на зуб практически весь интернет. То есть, человек глядящий на базу в лоб из локальной сети и смотрящий на нее чуть со стороны видят разные вещи. Я писал об этом для журнала «Хакер» в далеком 2013 году, но у некоторых воз и ныне там, простите уж за каламбур. К этому вопросу мы еще возможно вернемся.

Статья попала в раздел взлом, хотя на самом деле никакого взлома нет, просто доступ к выполнению кода на сервере стал проще. Теперь пришло время мобильной платформы «1С Предприятие». Если относиться к написанию приложений для нее также, как к программированию для локальной сети (читай обычному стилю для программистов 1С) то легко можно попасть впросак. Здесь твоя база, это не твоя крепость, а совсем наоборот, устройство, принадлежащее разным людям. С разным уровнем подготовки, однозначно с нежеланием никакого отслеживания и не связанных ограничениями трудового договора. С них подписи не смотреть как устроено твое приложение не соберешь. Это давно уже поняли программисты нативных приложений для мобильных устройств, они очень трепетно относятся к своему коду и его безопасности, придут к этому и программисты 1С, надеюсь эта публикация им поможет.

Оптимист считает, что стакан наполовину полон,
пессимист, что стакан наполовину пуст…
А реалист знает, что пока оптимист и пессимист спорили, стакану приделали ноги.
Началось все как обычно с пустяка. Некая компания на Инфостарте разместила статью с мобильным приложением covid-19.



(ну куда же без него) и просьбой «помочь с контактами в правительственных или здравоохранительных организациях для размещения в магазинах приложений». Ранее на Хабре, аналогичную статью уже размещали, там же неполиткорректный народ откомментировался «Ну и нафига козе очередной баян, причём мобильный?». (На момент написания этих строк публикация переведена в черновик, но кеши помнят все). Тем не менее, обсуждение в моем окружении разделилось, одни считали, что перепост с сайта worldometer никому не нужен, другие высказывали предположение, что надо поддержать альтруистов. Ведь ни Брюс Уиллис, ни Уилл Смит не торопились спасать мир, значит самое время искать других героев. Самое печальное, что спор было не разрешить – приложение устанавливалось, но не запускалось. Пришлось вспомнить, что я #тыжпрограммист 1С и реалист по натуре. Приложение было установлено и препарировано. Тем более, что раздавалось оно без всяких обязательств. Результат превзошел ожидания. Нет не в том смысле, что оно запустилось. В том, что открылся небольшой ящичек Пандоры и оттуда посыпались чудеса.

Техническое отступление
Начать знакомство с разработкой на 1С проще, чем многие думают. Для этого достаточно зарегистрироваться на сайте online.1c.ru и загрузить версию для обучения.
Комплектов там предостаточно, и с книгами и с мобильной платформой и по направлениям деятельности. Я рекомендую самую последнюю версию платформы (лайфхак – иногда на англоязычном сайте 1c-dn.com/она новее) и версию с мобильной платформой.
Так же не сложно установить эмулятор андроид устройства. Я рекомендую NoxPlayer. Стартует за 30 сек из холодного старта, работает подо всем, не требователен к ресурсам и выглядит получше идущего в android sdk.
У него есть некоторое количество клонов (впрочем у наших китайских партнеров не всегда понятно, кто клон, а кто оригинал) LDPlayer к примеру имеет страницу ВКонтакте.

Таким образом набор ПО для тестового стенда получился такой:


Все бесплатно и все доступно


Структура и даже названия файлов на мобильном устройстве полностью совпадают с версией большого брата


Поэтому скопировав каталог с эмулятора или телефона на компьютер вы сможете его открыть платформой 1С Предприятие для ПК.

Полное описание и расположение служебных файлов 1С находится здесь (не говорите только, что не можете зарегистрироваться), нас же интересует сам файл СУБД — 1Cv8.1CD.





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

В случае мобильного приложения covid-19 он был виден, как говорится в фильме невооруженным глазом. Кроме того было видно невооруженным глазом, что разработчики на это не рассчитывали.
Пароли, токены авторизации, модуль показа рекламы, все смешалось в доме Облонских тексте кода.

Аркадий пишет напоследок,
что никого мол не винит,
но вдруг зачеркивает строчку
и пишет, пишет имена

Техническо-лирическое-юридическое отступление
Как мирный и лояльный к компании 1С человек безусловно до публикации этой статьи я поставил группу разработки мобильной платформы 1С в известность и предоставил текст и все данные, они передали его по цепочке некоей компании. Потому по поводу рекламного блока есть ответ разработчиков приложения:
Утверждение, что приложение Covid-19 собирается рекламировать мобильное приложение «Фитнес», если оно останется в статье — будет ложью.
Мы ведем разработку с помощью набора ранее созданных готовых модулей. Нами разработана собственная БСП для мобильных приложений…

При старте этой разработки несколько готовых модулей были перенесены в код.

При этом “рекламные” модули не вызываются нигде в приложении.



Набор готовых модулей конечно дело хорошее, но когда готовишь приложение, которое разместят правительственные или здравоохранительные организации неплохо код почистить. А то возьмет его правительство скажем Гондураса, а мимо пробегающий ИТ-шник найдет в нем всякое разное… Присядет посол у окошка и скажет: О чем еще думать наблюдающим статистику пандемии, конечно о фитнесе. И еще немного о параде конечно. Нет, не ту страну назвали Гондурасом.
Не буду здесь перепечатывать анекдот про самогонный аппарат, скажу только что оптимисты потянулись пожать шею разработчиков, хорошо еще пессимисты заступились за создателей приложения. –Раз оно не запустилось, значит и рекламы не видно: логично сказали они и общий спор завершился дружеской ничьей.

После этого очень занятного факта была проверена большая часть мобильных приложений 1С из каталога mobile.1c.ru.

Подчеркну не убирая под кат — это не мобильные приложения выпущенные только фирмой 1С, а приложения на мобильной платформе 1С. Любой, чувствующий в себе силы разработчик, может как я уже сказал выше, с помощью бесплатных инструментов написать и свободно распространять мобильные приложения (только сбор от магазинов Google или Apple). Положение о лицензировании можно прочесть в первоисточнике на этом же сайте.



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


На любой вкус




После проверки открытия конфигуратором, переходим к открытию в режиме пользователя. Для этого использовалось мобильное приложение «Автор сообщества Инфостарт» оно написано мной, так что ничьи авторские права нарушены не были. Здесь обнаруживается второй вектор атаки. Большую часть мобильных баз 1С можно загрузить с телефона, а в случае с эмулятором, просто поместить в общий с эмулятором каталог компьютера и открыть в десктопной версии платформы. Посмотреть/поправить что нужно с помощью внешних обработок, вернуть на телефон и продолжить работать в мобильной версии. Таким образом удалось «оформить покупки» и в них. Так же пала защита и мобильного приложения «Автор сообщества Инфостарт». В нем удалось обойти ограничение количества зарегистрированных авторов в одной базе. Так автор взломал самого себя.



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



Так мы узнаем что у 1С есть ознакомительные версии конфигураций.

Разберем режим запуска подробнее




Список баз определяется, как и в настольной версии файлом ibases.v8i. Его можно редактировать вручную. Можно указать любые каталоги, доступные с телефона (эмулятора) и спокойно работать из них, только монопольном режиме. Но если добавить «чужую» базу, не того типа как в мобильном приложении, то оно не выдаст никаких ошибок и не вылетит, как в том случае, если попробовать открыть базу одновременно двумя версиями платформы, нет. Оно деловито попыхтит, проверит что ему подсунули, и элегантным движением руки откроется пустая база «родного» типа. Все дело в уникальном ГУИД конфигурации.



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

В заключении статьи хочется дать несколько банальных, но нестареющих советов:


Анонимно сделанное зло более гнусно,
анонимно сделанное добро становится прекраснее.
Ашот Наданян

  • Если делаешь добро, делай это бескорыстно. Сейчас это особенно просто сделать – надо в магазине надеть маску.
  • Не забывай простую истину: пока ты смотришь на кого то, кто-то смотрит на тебя.

Aliena nobis, nostra aliis


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

Лирическое отступление
Поскольку язык программирования 1С двуязычный — русско-английский, то мне встречались люди которые программировали матом. Когда пользователи «доставали» программиста 1С он воплощал это в имена функций и переменных.

  • Помни, что доброе имя легко потерять, а обратно не купить. Если встраиваешь в приложение отслеживание действий пользователя, предупреждай об этом открыто. В Европе еще и под GDPR можно попасть.
  • Не гонись за хайпом, но учись новому. А в своей профессии разбирайся досконально. И не жалей времени на тестирование или обращайся за помощью к специалистам.

Из профессионального:

  • Перекомпилируйте свои мобильные приложения 1С используя для получения мобильной конфигурации десктопную платформу не ниже 8.3.15.
  • В стартовой форме запуска проверяйте окружение и если это не мобильное устройство, делайте выводы.

Будьте здоровы и до новых встреч (если было интересно).
Теги:
Хабы:
+18
Комментарии6

Публикации

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн