Skip to content

Commit 0f1ee26

Browse files
committed
docs: state plainly that plugins run as trusted code
Add a danger admonition to the Plugins page (and a one-liner in the config reference): a plugin runs in the airnode process with its env, filesystem, and signing key — no sandbox; `onBeforeSign` plugins effectively share signing-key authority. `config:` is a configuration mechanism, not a security boundary — only run plugins you'd trust with the private key.
1 parent 10918b4 commit 0f1ee26

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

book/docs/config/plugins.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ startup** — a missing or malformed value (a typo'd URL, an absent required key
4848
than surfacing at first-request time. If a plugin exports no schema, the shape is the plugin's own responsibility; if a
4949
plugin doesn't accept config at all and you give it some, it's ignored with a warning.
5050

51+
`config` is a configuration mechanism, not a sandbox: plugins still run as trusted code inside the airnode process. See
52+
[Plugins → trust](/docs/plugins) before adding one.
53+
5154
## Source resolution
5255

5356
The `source` path is resolved relative to the config file's directory, not the working directory. This means the same

book/docs/plugins.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ sidebar_position: 9
88
Plugins extend Airnode's request processing pipeline. They can reject requests, modify parameters, transform responses,
99
alter encoded data, and observe events -- all without modifying the core node.
1010

11+
:::danger Plugins run as trusted code
12+
13+
A plugin runs **inside the airnode process** with the airnode's full privileges -- its environment variables, its
14+
filesystem, and its signing key. There is no sandbox. An `onBeforeSign` plugin can substitute the exact bytes the
15+
airnode signs, so it effectively shares signing-key authority (the airnode logs a `SECURITY:` warning at startup listing
16+
any such plugins). The `config:` block (below) is for clean configuration -- explicit, validated, no implicit
17+
`process.env` grubbing -- **not** a security boundary.
18+
19+
**Only run plugins you would trust with your private key.** Pin and review plugin sources the same way you protect the
20+
key itself; when running third-party plugins, prefer real environment variables or a secret manager over an on-disk
21+
`.env` (a plugin can read files the airnode can reach).
22+
23+
:::
24+
1125
## Hook overview
1226

1327
Six hooks fire at specific points in the pipeline:

0 commit comments

Comments
 (0)