---
title: Ubuntu Frame Security
description: Canonical makes open source secure, reliable and easy to use, providing
  support for Ubuntu and a portfolio of enterprise-grade technologies. Founded in
  2004, Canonical operates globally with team members in over 80 countries.
url: https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md
---

*Submit*

# Ubuntu Frame Security

This document aims to explain a number of aspects of security in the context of the Ubuntu Frame snap ecosystem (Frame itself, [ubuntu-frame-osk](https://snapcraft.io/ubuntu-frame-osk) and [ubuntu-frame-vnc](https://snapcraft.io/ubuntu-frame-vnc)).

**Contents:**

* [Threat model](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#heading--threat-model)
* [Cryptography](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#heading--cryptography)
* [Hardening](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#heading--hardening)

---

## [Threat model](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#heading--threat-model)

We ran threat modelling for Mir itself (the [display server library](https://mir-server.io/) underpinning Frame) based on this snap stack, and maintain that documented there:

<https://canonical-mir.readthedocs-hosted.com/stable/explanation/security/>

## [Cryptography](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#heading--cryptography)

There is no cryptography used in Frame itself or the On-Screen Keyboard snap. No direct dependency on en/decryption, hashing or digital signatures.

The VNC snap is built on top of [wayvnc](https://github.com/any1/wayvnc), which has cryptographic features (password authentication, transport encryption) and that is handled through [gnutls](https://gnutls.org/) as [packaged and maintained in Ubuntu](https://packages.ubuntu.com/source/gnutls28). See [remote access documentation](https://canonical-com-2934.demos.haus/mir/docs/how-to-use-remote-assistance-with-ubuntu-frame#heading--remote-access) for more information.

## [Hardening](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#heading--hardening)

### [Virtual Terminals](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#p-117679-virtual-terminals)

To prevent users from switching between [virtual terminals](https://en.wikipedia.org/wiki/Virtual_console), you can disable it in Ubuntu Frame’s configuration:

Mir version 2.22:

This feature is only available with version `*-mir2.22` onward

```
$ snap set ubuntu-frame config=vt-switching=false
```

### [`console-conf`](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#p-117679-console-conf)

Avoid [`console-conf`](https://documentation.ubuntu.com/core/how-to-guides/image-creation/add-console-conf/) in your model to avoid presenting a “configure” screen in Ubuntu Core.

### [`getty`](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#p-117679-getty)

To disable login prompts, you can mask the `getty@.service`. It’s easiest to achieve through [`cmdline.extra`](https://documentation.ubuntu.com/core/how-to-guides/manage-ubuntu-core/modify-kernel-options/#adding-static-parameters-from-the-gadget) in the gadget snap:

```
# cmdline.extra
systemd.mask=getty@.service
```

### [Snap connections](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#p-117679-snap-connections)

Review the snap connections between snaps on the system and disconnect those not essential to your deployment:

```
$ snap connections
Interface            Plug                           Slot                  Notes
# ... some examples
content[gpu-2404]    ubuntu-frame:gpu-2404          mesa-2404:gpu-2404    -
hardware-observe     ubuntu-frame:hardware-observe  :hardware-observe     -
opengl               ubuntu-frame:opengl            :opengl               -
wayland              -                              ubuntu-frame:wayland  -
```

Refer to [Snap interface](https://snapcraft.io/docs/interfaces) and [Frame snap interfaces](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-snap-interfaces) documentation for more information.

### [Wayland extensions](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#p-117679-wayland-extensions)

Avoid adding extensions to the ones allowed by `add-wayland-extensions`, as some of them may allow clients reading the screen contents or input events.

Refer to [Frame configuration reference](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-configuration-options#heading--snap-configuration-config) and the [wayland-protocols](https://gitlab.freedesktop.org/wayland/wayland-protocols/) repository for more information.

### [VNC authentication](https://canonical-com-2934.demos.haus/mir/docs/ubuntu-frame-security?format=md#p-117679-vnc-authentication)

If using the VNC snap, It is recommended that you enable password authentication to avoid unauthorized access to the VNC socket on `localhost:5900`.

Refer to [ubuntu-frame-vnc configuration reference](https://canonical-com-2934.demos.haus/mir/docs/how-to-use-remote-assistance-with-ubuntu-frame#heading--authentication) for more information.

---

[Previous

Explanation](https://canonical-com-2934.demos.haus/mir/docs/explanation)
[Next

Where does Ubuntu Frame work?](https://canonical-com-2934.demos.haus/mir/docs/where-does-ubuntu-frame-work)

Last updated 1 year, 3 months ago. [Help improve this document in the forum](https://discourse.ubuntu.com/t/ubuntu-frame-security/47128).
