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

Apple запрещает приложения эмулятора терминала на iPhone: в текущих версиях через них можно скачивать код

Open sourceРазработка под iOSРазработка под LinuxIT-компании


В начале ноября 2020 года сразу два разработчика эмуляторов терминала под iOS заявили (1, 2), что Apple собирается удалить их мобильные приложения iSH и a-Shell из магазина приложений App Store.

Причем создатель iSH уточнил, что приложение будет удалено из App Store уже завтра 10 ноября. По обновленным данным, Apple решила отложить эту процедуру на некоторое время.

Существование в магазине Apple приложения a-Shell также под угрозой, если разработчики срочно не выпустят обновление с удалением из программы команд curl, pip и wasm. Разработчики a-Shell подали апелляцию по этому требованию Apple.

Автор Linux терминала iSH Теодор Дюбуа (Theodore Dubois) пояснил, что Apple совсем недавно одобрила его приложение, а затем сообщила, что собирается его удалить. Разработчик пытался в течение двух недель понять, что там нужно исправить, но так и не разобрался в претензиях и логике системы App Review.

Ранее в мае этого года при первой попытке отправить iSH на рассмотрение был получен отказ. Apple отклонила приложение в соответствии с пунктом 2.5.2 руководства App Store Review Guidelines. В ответе компании также говорилось, что «в частности, ваше приложение позволяет пользователю устанавливать исполняемый код Linux...». Чуть позже Apple пояснила — в данном случае недопустимым является «управление пакетами или загрузка любого кода из локальных или удаленных источников». Обнаружилось, что у Apple существует неписаное правило, касающееся функций управления пакетами.

В июне этого года Дюбуа решил выяснить детали этого запрета на конференции для разработчиков WWDC 2020. Apple позволила в онлайн-чате лично общаться со своими сотрудниками в рамках этого мероприятия. И в одной из таких встреч Дюбуа смог пообщаться напрямую с разработчиком компании. Он пояснил, что Apple не нужны приложения, которое могут изменять свои функции после утверждения. Также не разрешен удаленный импорт пакетов, хотя в App Store есть популярные приложения, где запускается код на Python и поддерживается графический интерфейс для pip.

Дюбуа тогда спросил Боба (так назвался сотрудник Apple) — если он удалит apk из iSH, то поможет ли такое действие в его случае. На что Боб ушел от ответа, но посоветовал отправить исправленное приложение на одобрение.

Через пару месяцев Дюбуа удалил apk из iSH и отправил приложение 20 октября, на следующий день его одобрила Apple, а 22 октября оно появилось в App Store. Спустя четыре дня Apple без предупреждения позвонила разработчику и Майкл (так назвался сотрудник Apple) рассказал, что wget также является формой управления пакетами и эту функцию нужно убрать.

Оказалось, что за несколько дней в магазине App Store пользователи оценили приложение, а некоторые из них успешно попробовали его усовершенствовать — с помощью wget смогли установить apk. Причем разными способами.

    cd
    wget http://dl-cdn.alpinelinux.org/alpine/latest-stable/main/x86/apk-tools-static-2.10.5-r1.apk
    cd /
    tar xvzf ~/apk-tools-static-2.10.5-r1.apk
    ln -s /sbin/apk.static /sbin/apk
    cd
    apk

Или таким:

wget -qO- http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/apk-tools-static-2.10.5-r1.apk | tar -xz sbin/apk.static && ./sbin/apk.static add apk-tools && rm sbin/apk.static && rmdir sbin 2> /dev/null

Тем более, что исходный код эмулятора терминала для iOS iSH выложен на GitHub.

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

Разговор с Apple ни к чему не привел. Специалисты компании не поняли, что в этом приложении wget просто загружает файлы, причем Safari разрешено скачивать файлы, а wget — нет. Apple стояла на своем — запрещен удаленный и локальный импорт кода. Специалист компании позже пояснил — можно выполнять код, который пользователь вводит в приложении, но не код, полученный из внешних источников. Специалист не пояснил, чем от автоматического скачивания отличается ситуация, когда код копирует из внешних источников и вставляет в приложение сам пользователь.

Закончив читать пункты в списке отказа, специалист Apple прояснил главную проблему — это приложение терминал Linux на iOS представляет собой угрозу безопасности. В посте в личном блоге Дюбуа цитирует шутку xkcd, что это уязвимость «атакующий может выполнить вредоносный код на собственной машине».

Дальнейшие апелляции Дюбуа в App Review не сыграли никакой роли — Apple собралась удалить его приложение из App Store.

Автор iSH подытожил, что его команда потеряла две недели на безрезультатные попытки договориться с Apple. Похоже, что процесс общения разработчиков и прохождения App Review был разработан компанией для максимального удобства Apple без особого внимания к тому, насколько это неудобно для сторонних авторов приложений. Apple может и должна давать больше возможностей, а не просто так отфутболивать разработчиков.

Разработчики a-Shell столкнулись с такой же проблемой. Их приложение может быть тоже удалено, если апелляция будет отклонена. Сейчас приложение a-Shell проходит еще одну проверку в Apple. Оказалось, что пользователи используют в нем pip install для добавления пакетов Python. Это также запрещено в пункте 2.5.2 в Руководстве App Store Review Guidelines: «Приложения должны быть автономными в своих пакетах и ​​не могут читать или записывать данные за пределами обозначенной области контейнера, а также они не должны загружать, устанавливать или выполнять код, который представляет или изменяет функции или возможности приложения, включая другие приложения". Apple делает исключение этого пункта для «образовательных приложений, предназначенных для обучения, разработки или предоставления студентам возможности тестировать исполняемый код».

Программист Саагар Джа (Saagar Jha) из команды iSH отметил, что несмотря на кажущуюся мощь сред этих двух эмуляторов терминала, они исполняются в песочнице, как и любое другое приложение iOS.
Теги:App StoreAppleiSH. a-Shellэмулятора терминала
Хабы: Open source Разработка под iOS Разработка под Linux IT-компании
Всего голосов 34: ↑33 и ↓1+32
Просмотры16K

Похожие публикации

Лучшие публикации за сутки