Skip to content
This repository was archived by the owner on Apr 13, 2025. It is now read-only.

Commit 55acf4d

Browse files
committed
Mention in the security considerations that other dashboards can access the plaintext password
1 parent 57b5739 commit 55acf4d

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

docs/getting_started/security_considerations.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ The first part consist of our security claims and the second part describes how
99
## Security claims
1010

1111
These claims all assume that you use a good strong password and take care of it properly.
12-
Also a secure base layer is assumed here. Security Bugs bugs in node.js/V8, your browser or your operating system are possible and can comprimise your private data in nodecg-io. Possible malware or e.g. keyloggers on your computer may also compromise this security model.
12+
Also a secure base layer is assumed here. Security Bugs bugs in node.js/V8, your browser or your operating system are possible and can compromise your private data in nodecg-io. Possible malware or e.g. keyloggers on your computer may also compromise this security model.
1313

1414
1. No service configuration is accessible to someone with only filesystem access.
1515

1616
- A exception to this is a nodecg-io install with automatic login as the password is stored in plain text.
1717

18-
2. No bundle will be able to access your plain text password.
18+
2. All loaded bundles may be able to access your plain text password if they have a dashboard.
1919
3. All loaded bundles may change nodecg-io settings like deleting instances
2020
4. All loaded bundles may access all your configurations and passwords.
2121

@@ -25,6 +25,8 @@ Also a secure base layer is assumed here. Security Bugs bugs in node.js/V8, your
2525

2626
- It is highly recommended to configure NodeCG to use HTTPS when using untrusted networks (e.g. the internet, open wifi if your NodeCG port is not firewalled)
2727

28+
TL;DR don't use untrusted bundles and use HTTPS if your NodeCG run inside an untrusted network.
29+
2830
## Implementation
2931

3032
1. The configuration is stored encrypted only in a NodeCG replicant. If someone reads the persistent value of the replicant from the filesystem the configuration cannot be read because it is encrypted using your chosen password.
@@ -34,13 +36,13 @@ Also a secure base layer is assumed here. Security Bugs bugs in node.js/V8, your
3436
- AES block cipher mode: CBC
3537
- Padding scheme: PKCS7
3638

37-
2. When you enter your password inside the dashboard it is used to derive a encryption key using argon2id. Only this encryption key is ever transmitted and leaves the browser tab. Therefore other bundles can listen to the communication but it only contains the derived encryption key, not your plain text password.
39+
2. When you enter your password inside the dashboard it is used to derive a encryption key using argon2id. Only this encryption key is ever transmitted and leaves the browser tab. Therefore other bundles can listen to the communication but it only contains the derived encryption key, not your plain text password. However bundles with a dashboard are inside the same browser tab as the nodecg-io dashboard and can therefore access all elements of the nodecg-io dashboard using the DOM and including your plain text password.
3840

3941
- Argon2id options:
4042
- Memory size: 37 MiB
4143
- Iteration count: 2
4244
- Parallelism: 1
4345

4446
3. Bundles can listen to the login message from the dashboard to get the encryption key. This can be used to send authenticate messages to the nodecg-io-core bundle to add/delete instances, change service instance assignments and do everything that is possible in the dashboard.
45-
4. As mentionted in 3 all bundles can get the encryption key. The encrypted configuration is stored in a replicant which can be accessed by all bundles as well. Using these two any bundle could decrypt the configuration and have access to it.
47+
4. As mentioned in 3 all bundles can get the encryption key. The encrypted configuration is stored in a replicant which can be accessed by all bundles as well. Using these two any bundle could decrypt the configuration and have access to it.
4648
5. Same as in 3, everyone intercepting network traffic can intercept the encryption key that gets send to the core using NodeCG messages.

0 commit comments

Comments
 (0)