security

How Thyrion protects your passwords

Thyrion can remember passwords for your sessions and type them for you. This page explains where they are kept, when they leave the vault, and what Thyrion can and cannot protect against. It describes what the code does, not what we hope it does.

The short version

The vault file

Wherevault.bin in Thyrion's data folder: ~/.local/share/com.thyrion.desktop/ on Linux, %APPDATA%\com.thyrion.desktop\ on Windows.
EncryptionAES-256-GCM. The file's header (format version and key settings) is authenticated too, so a changed header is rejected.
KeyDerived from your master password with Argon2id: 64 MiB of memory, 3 passes, a random 16-byte salt per vault. This makes guessing master passwords slow, even with the file in hand.
Each saveEncrypted again with a fresh random nonce, written to a new file and swapped in, so a crash can't leave half a vault.
PermissionsReadable by your user only (on Linux, 600, set when the file is created).

A vault file that asks for key settings far beyond Thyrion's own (for example a damaged or altered file) is refused before any work is done.

Locking and unlocking

When a password leaves the vault

Logging in to an SSH session

PuTTY's plink reads a login password from a file, not from its command line (where other programs could see it). Thyrion writes the password to a temporary file readable only by your user, starts plink, and deletes the file 5 seconds later; plink has read it within milliseconds. If Thyrion is killed in those seconds, the file is deleted the next time Thyrion starts. The SFTP browser does the same for psftp.

The password is briefly on disk in your temporary folder in this way. On an encrypted disk (BitLocker, LUKS) that is covered by the disk encryption.

Jump hosts

Thyrion answers only its own steps, in order, and stops if a password is refused or a step fails, so it never retries a stored password.

Enable passwords

With "send the enable password" on for a session, Thyrion types it only when you have just typed enable (or en, super) yourself, within the last 5 seconds, and the device answers Password:. What you typed is read from your keystrokes, not from what the device prints, so a device cannot fake it. An enable prompt is never answered with the login password.

Automatic console login (telnet and serial)

With "log in automatically" on, Thyrion answers the console's Username: and Password: prompts once per connection. It stops as soon as you run a command, so a password prompt from something you started (for example ssh from the console to another host) never gets the console's password.

"Send password" and copying

Export to KeePass (.kdbx)

The export asks for your master password and protects the .kdbx file with it. The file is written readable by your user only. Once exported, it is protected by the KeePass format and the password you chose, not by Thyrion.

What Thyrion does not protect against

Privacy

Thyrion connects only to the hosts you open sessions to. It sends nothing anywhere else unless you ask it to.

Code signing

Windows releases are to be signed through SignPath's program for open-source projects, from the first release after the project is accepted. Free code signing provided by SignPath.io, certificate by SignPath Foundation.

Reporting a vulnerability

Please report privately, not in a public issue. Anything that could expose passwords or keys counts.

  1. Open the repository's private vulnerability report form (Security tab → Report a vulnerability).
  2. Describe what an attacker could do, and how to reproduce it. Use placeholder hosts (192.0.2.10) and never include real passwords.

If that page isn't available, open an issue titled "Security contact" with no details, and the maintainer will get in touch to take the report privately. Expect a first reply within a week. Fixes go out in a new release, and the report is credited in its notes unless you'd rather not.

Only the latest release gets security fixes, so please update before reporting.

In scope

Out of scope

Download Thyrion

The full, authoritative version of this page is docs/PASSWORDS.md in the source repository.