Ровно месяц назад Dropbox анонсировал Dropbox Infinite — «революционно новый способ доступа к вашим файлам», как писала компания в корпоративном блоге. В демонстрационном видео показали, что десктопный клиент Dropbox предоставляет прямой доступ к облачному хранилищу файлов на уровне файловой системы, без необходимости запускать браузер. Локальный диск «увеличивается» на размер облачного хранилища, файлы доступны напрямую. Облачное хранилище может быть больше по размеру, чем локальный диск. Сейчас компания раскрыла технические подробности, как работает эта функция.
Сразу после первого анонса эксперты высказали опасения, что Project Infinite откроет доступ в систему посторонним, если они найдут уязвимости в клиенте Dropbox. Собственное расширение ядра от Dropbox станет тогда своеобразным бэкдором в системе.
В принципе, технические разъяснения Dropbox сейчас в какой-то степени подтверждают эти опасения. Действительно, Dropbox Infinite интегрируется на уровне ядра.
«Традиционно Dropbox работал полностью в пространстве пользователя, как любая другая программа на вашей машине, — пишет разработчик компании Дэмьен Девиль (Damien DeVille). — С Dropbox Infinite мы углубляемся ещё глубже: в пространство ядра. С этой технологией клиент Dropbox меняет роль от пассивного наблюдателя, который смотрит, что происходит на локальном диске, на активную роль в вашей файловой системе. Мы почти два года работали над тем, чтобы соединиться кусочки паззла вместе, чтобы они работали прозрачно».
Разработчик объясняет, что обычная схема FUSE не устраивает их с точки зрения производительности: каждая файловая операция обычно требует лишнего переключения контекста между пространством ядра и пространством пользователя, см. схему FUSE).
Такие переключения контекста довольно дорого обходятся с точки зрения производительности.
Деградация производительности при использовании FUSE
Производительность — не единственная причина. Dropbox считает, что замена стандартных библиотек FUSE на собственное расширение ядра устраняет излишнюю сложность и, следовательно, повышает безопасность системы.
Ещё одна полезная вещь: в расширении ядра работает проверка прав доступа через Kernel Authorization (Copy Hooks в Windows), чтобы детектировать и запрещать определённые операции в папке Dropbox.
Такая проверка осуществляется гораздо проще, чем можно было сделать через FUSE.
Если приложение работает в пространстве ядра, оно может позволить себе гораздо больше, чем обычная программа в пространстве пользователя. С точки зрения безопасности это довольно рискованно. «Если Dropbox в ядре, то может получить доступ к чему угодно, — говорит Сэм Боун (Sam Bowne), который ведёт курсы этического хакинга в колледже Сан-Франциско. — Если в клиенте Dropbox есть баг, его можно использовать для захвата всей системы».
Примерно таким образом хакеры использовали баг в антивирусном ПО от Symantec/Norton (CVE-2016-2208). Антивирусы тоже работают в пространстве ядра, куда пытается проникнуть и Dropbox.
Казалось бы, что может пойти не так?
Kernel memory corruption in Symantec/Norton antivirus, CVE-2016-2208 (more patches soon). https://t.co/Sqhm0a48Fp pic.twitter.com/F22xDIelSU
— Tavis Ormandy (@taviso) 17 мая 2016 г.
«Мы серьёзно относимся к безопасности и делаем всё, чтобы защитить своих пользователей и их данные, — пишет Dropbox. — Наши группы Red team [внутренние независимые подразделения для поиска уязвимостей] предлагают программы Bug Bounty и на регулярной основе приглашают независимых пентестеров, которые помогают искать уязвимости».
Dropbox осознаёт риск для безопасности. Расширение ядра уже почти год тестируют внутри компании, проверяя стабильность и целостность системы. Понимая все риски, компания считает, что это всё-таки будет удобная функция.
Комментарии (54)
Revertis
26.05.2016 14:28Теоретически, они могли бы минимум кода держать в кернел-модуле, и работать с ним из юзерспейса. Но захотят ли?
Frankenstine
27.05.2016 13:47Шило на мыло: такое общение будет сопровождаться переключением контекста, и все выгоды от кернел мода испарятся.
Saffron
26.05.2016 14:29+40Что-то не верится, что dropbox даёт пользователям такую скорость, что они уперлись в производительность FUSE.
AllexIn
26.05.2016 14:40+18Да вся затея выглядит сомнительной. Даже просто формулировка «сервис для синхронизации файлов хочет в ядро» уже немного диковатая, учитывая что ради безопасности всё что возможно наоборот из ядра убирается в юзерспейс.
AntiVIRUZ
26.05.2016 15:13Но тут уже речь идет не о синхронизации файлов, а о программе, которая позволяет работать с данными из облака как с файловой системой, предварительно не скачивая их на диск. То есть и для пользователя, и для программ это станет как бы папкой с небольшой (в зависимости от ширины канала) скоростью чтения/записи
Eklykti
26.05.2016 16:35+10Через FUSE оно точно так же станет «как бы папкой», за исключением того, что модуль FUSE разрабатывается уже больше 10 лет и вероятность наличия в нём дыр, не выявленных за всё это время, гораздо меньше, чем в самописной поделке.
alltiptop
26.05.2016 16:56+8Чем это отличается от sshfs, webdav и пр. вариантов удалённого монтирования?
monah_tuk
27.05.2016 12:09Ну собственно тут рождается вариант: запустить этот модуль ядра где-то на хостинге (если оно позволяется), смонтировать, а директорию хостинга уже подключить по sshfs. К файлам то дропбокс и сейчас доступ имеет, но так, хотя бы остального от вашей системы не получит.
EvgenT
26.05.2016 15:19+2Каждая уборщица стала из себя мнить ядерный модуль…
От дропбокса отказался давно, когда стало известно, что фалы хранятся в открытом виде и любой может запросто их качать. Да, это было очень давно. И с подобными нововведениями, что тут описаны, возвращаться не собираюсь.negodnik
29.05.2016 00:51фалы хранятся в открытом виде и любой может запросто их качать
В каком смысле «любой»? Из сотрудников Dropbox, имеете в виду?GamePad64
29.05.2016 13:43-1Там давно была достаточно мутная история, баг в проверке пароля, когда можно было залогиниться под любым юзером введя любой пароль. И все файлы были доступны в открытом виде. Пруфы почему-то не гуглятся, но скандал по этому поводу был громкий.
dtabashov
26.05.2016 15:13-2Да, ограничений по скорости скорее всего не должно быть… А вообще — идея очень заманчива
izzholtik
26.05.2016 15:13Возможно, проблема в сканировании файлов, которое клиент дропбокса очень любит делать.
dmitry_dvm
26.05.2016 15:10+18Кондолиза Райс теперь прям за ядрышко может потрогать каждого юзера дропбокс.
bluetooth
26.05.2016 15:13+1Остаётся только надеяться, что нам дадут свободу выбора — использовать медленный Dropbox с FUSE или перейти на более быстрый работающий на уровне ядра… Хотя надежды мало.
edogs
26.05.2016 17:41-1Кончается аккаунт с 50гб, предлагают перейти за 100 евро на теребайтный.
При этом на микрософтовском скайдрайве тот же терабайт (и вроде еще можно 4 сделать на разные акки), плюс мс-оффис (тоже полезная вещь) за меньше чем 50 евро.
Что-то нам кажется, что мы свободу выбора используем не для выбора дропбокса:)bluetooth
26.05.2016 18:07Я не о выборе между облачными хранилищами, а о том, что в один прекрасный момент клиент Dropbox для Windows/Linux объявит что ему вот непременно непременно нужно обновиться. Или вообще втихаря обновится.
JTG
26.05.2016 18:46+2Свободный опенсорсный ownCloud, конечно, не заменит Dropbox на всяких читалках и смарт-кофеварках, но всё же весьма хорош.
homocomputeris
26.05.2016 15:13+2>без необходимости запускать браузер
А чем это принципиально отличается, скажем, от WebDAV?
pftbest
26.05.2016 17:25+8Как-то сомнительно звучит, что им не хватает производительности FUSE. Вон тот же ntfs-3g работает в юзерспейсе и на производительность никто не жалуется. Мне кажется что сами сетевые запросы будут на порядок медленнее чем оверхед от переключения контекста.
equeim
27.05.2016 00:57У меня, например, начинаются тормоза, когда Dolphin считает количество файлов в директориях на разделах с ntfs-3g. Пришлось патчить, чтобы убрать эту фичу (все равно я ей не пользуюсь).
Но в случае с дропбоксом это действительно выглядит странно — файлы-то все равно передаются по сети.
Lisio
27.05.2016 17:21Вон тот же ntfs-3g работает в юзерспейсе и на производительность никто не жалуется.
Еще как жалуются. Очень медленный и ресурсоемкий драйвер.
Ivan_83
26.05.2016 18:38+1Я подобным сервисам не доверяю, однако с технической точки зрения есть предпосылки к тому чтобы лезть в ядро.
FUSE на Linux/BSD работает не всегда стабильно. По крайней мере у меня на BSD бывет что то влезает когда соединение отваливается или с кешированием бывают приключения.
На винде я вообще не уверен что в юзерспейсе оно нормально может работать, по крайней мере встроенный WebDAV клиент очень и очень корявый, каждый файл при открытии он качает целиком во временную папку и только потом отдаёт приложению. Может в скайдрайве лучше, но опять же не знаю насколько API для этого МС открыло (а они любят придерживать API для собственного использования).
В тоже время я пользуюсь ядерным smbfs для монтирования сетевых шар и с ним вообще никаких проблем нет.
jQuery
26.05.2016 18:47+1Если сильно надо, то можно поставить Dropbox Infinite на виртуалку, пусть там внедряется куда хочет.
romy4
26.05.2016 22:20Поднять в том же Docker контейнере и пусть себе играется.
makkarpov
26.05.2016 22:52+3Из Docker-контейнера нельзя загрузить модуль ядра, т.к. ядро общее с хостом. Если не хочется, чтобы оно свои модулей в ядро насовало — можно запускать из-под юзера, если паранойя и тут — то из-под отдельного юзера или завернуть в SELinux, например.
profesor08
26.05.2016 18:47+1без необходимости запускать браузер
Так клиент дропбокс и так работал самостоятельно без браузера, создавая виртуальную папку, где были видны все файлы и с ними можно было работать. Если файла небыло на компьютере и к нему нужен доступ, то он скачивался. А тут они предлагают почти то-же самое. В чем профит? В перетаскивании файлов из папки в папку и их переименовывании?
alek0585
27.05.2016 00:39А может ли это иметь смысл для гигабитной сети и супер быстрого ssd-диска? В смысле в теории/вакууме.
mrxak
27.05.2016 01:31+3Вообще всё это уже давно и успешно работает в CERN'е — cvmfs (CernVM-FS, https://cernvm.cern.ch/portal/filesystem/downloads), afs (http://information-technology.web.cern.ch/services/afs-service + OpenAFS) и lustre (https://en.wikipedia.org/wiki/Lustre_(file_system)), ещё и castor для ленты. С работы, например, спокойно вижу весь церн (и другие институты, которые интегрированы в общую ФС) через каталог /cvmfs/, при желании могу и из дома; и на винде, и на линуксе. И что-то у меня сомнения по поводу того, что Dropbox изобретёт более эффективный кроссплатформенный велосипед. А по объемам Церн вряд ли меньше прокачивает, там все-таки огромные массивы данных.
rtzra
27.05.2016 09:15Забавно, только вчера задался вопросом куда уходить с Dropbox и наткнулся на SeaFile https://www.seafile.com/en/product/private_server/ а тут такой повод осуществить переход поскорее
isden
27.05.2016 09:38Еще есть https://www.sync.com, там обещают полное client-side encryption. Плюс контора канадская. Я лично туда присматриваюсь.
rtzra
27.05.2016 09:44+1Тут вот что утверждают: «Built-in File Encryption. A library can be encrypted by a password choosen by you. Files are encrypted before syncing to the server. Even the system admin can't view the files.»
А в достаточно старой статье немного подробнее описан механизм: https://xakep.ru/2014/10/08/own-dropbox/
GamePad64
27.05.2016 14:02Но оно тоже с закрытым кодом. Шило на мыло, получается.
isden
27.05.2016 15:05Любому сервису доверять на 100% нельзя. Но можно дополнительно шифровать что нужно :)
А свое self-hosted дороговато выходит :(
Я уж и так тоже подумывал, но дорого блин сервачок с 1Т диска выходит у более-менее надежных хостеров да еще и с бэкапами.
AllexIn
Open Source?
shiner
Уточните, о чем вопрос?
AllexIn
Тот софт, который Dropbox разрабатывает чтобы внедрить в ядро — Open Source? Или «для вашего удобства мы внедрим в ядро код чтобы работать без каких либо ограничений. какой код? хороший! быстрый! удобный! отвечаем!
В соответствеии с EULA компания не несете ответственности за любые дыры в софте»shiner
Это науке не известно. Честно говоря, не знаю, что хуже. Но дроп на всякий случай выгрузил.
FoxCanFly
Торговля полным доступом на ПК любого пользователя — очень прибыльный бизнес. Спрос от рекламщиков до спецслужб.
sav1812
Ну, для спецслужб там АНБ подсистему безопасности Windows разрабатывало, помнится… :)
Свой, персональный, парадненький такой вход в систему.