Да, для проприетарных драйверов существует концепция "песочницы". Это называется пользовательскими драйверами.
Если вы запускаете код внутри ядра, он имеет доступ ко всему, поэтому его невозможно изолировать. (Невозможно в отношении системы Linux - эта система могла бы работать на виртуальной машине, а затем виртуальная машина выполняла бы «песочницу».)
Драйверы Userland возможны для некоторых видов периферийных устройств. Например, некоторые периферийные USB-устройства могут управляться из пользовательской среды через libusb и usbfs . Файловые системы могут быть реализованы в пользовательском пространстве через FUSE .
Учитывая, что вредоносный драйвер для периферийного устройства обычно может использовать свой доступ к периферийному устройству для доступа к остальной части системы (например, путем настройки периферийного устройства для DMA и, таким образом, доступа к произвольной памяти), нет Нет смысла пытаться изолировать драйвер.Если вы не доверяете водителю, не используйте его.
Можно выполнить некоторую песочницу, запустив драйвер внутри виртуальной машины и настроив гипервизор, чтобы разрешить виртуальной машине доступ только к определенному периферийному устройству. Это полезно только в том случае, если само периферийное устройство имеет доступ только к определенной части памяти, что можно сделать с помощью IOMMU (конечно, IOMMU должен оставаться под контролем гипервизора). Не все системы поддерживают такую песочницу - опять же, если вы не доверяете периферийным устройствам, зачем они вам нужны на вашем компьютере?