Почему система разрешений Deno не защищает, а создаёт ложное чувство безопасности
I'm not a fan of Deno's security model (2024)
Автор разбирает модель безопасности Deno и показывает, что её флагманская система разрешений не изолирует процесс по-настоящему. Запросы прав выводятся в тот же терминал, которым управляет потенциально вредоносный код, а «разрешение запустить одну команду» легко обходится через PATH, LD_PRELOAD или настройки редактора вроде VIMINIT. Deno латает отдельные дыры, но корень проблемы — отсутствие реальной песочницы — остаётся. Вместо этого автор советует bwrap.
Deno process is not actually sandboxed, it only pretends it is.
- jFriedensreich
Я был фанатом deno, потому что они хотя бы попытались; дело не в том, что существовала альтернативная среда выполнения, которая правильно реализует разрешения, или что есть инструмент операционной системы, позволяющий асинхронные (!) разрешения с взаимодействием с пользователем. Нам действительно нужно простое в использовании, «продуктизированное», но по-настоящему открытое решение, которое позволяет приостанавливать любое программное обеспечение и оценивать политики для запуска, fs и сети и т.д., и может рассуждать на уровне процессов и контекста.
- ximm
И, насколько я могу судить, это точно та же модель безопасности, которая сейчас используется в OpenCode и подобных.
- hoppp
У Deno остался 1 год официальной поддержки...
Мне нравилась модель безопасности, потому что у них хотя бы что-то было, в отличие от node.
- phyzome
У меня на самом деле есть терминальная программа, которой иногда нужно запрашивать у пользователя конфиденциальные данные, потенциально после того, как были выведены данные злоумышленника. Я пытался понять, как мне с этим справиться!
Мой план был: закодировать в Unicode (с потерями), удалить управляющие символы и добавить визуальное обрамление. Что ещё стоит учесть? Есть ли стандартный подход? Я пока не проводил исследование по этому вопросу, но раз уж он здесь всплыл, думаю, кто-нибудь может знать.
(Это https://codeberg.org/timmc/breakmancer, если кому интересно.)
- kevin_thibedeau
> запрос разрешения «частично виден» (можно увидеть эмодзи)
Терминалы можно настроить так, чтобы эмодзи отображались в текстовой форме, где они становятся монохромными глифами, которые можно раскрашивать как обычный текст с помощью escape-последовательностей. Не стоит строить на этом свою модель безопасности.