summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SECURITY.md60
1 files changed, 60 insertions, 0 deletions
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..3f71b6f1c
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,60 @@
+# Security Policy
+
+Thank you for taking the time to investigate the security of Deno. The security
+of Deno is our topmost priority. We appreciate investigative work into system
+security by well-intentioned, ethical security researchers. If you discover a
+vulnerability, however small, we would like to know about it to address it with
+appropriate measures as quickly as possible. This document outlines the method
+we use to work with the security research community to address runtime security.
+
+## Reporting a vulnerability
+
+Please email findings to engineering@deno.com. We strive to resolve all problems
+as quickly as possible, and are more than happy to play an active role in
+publication of writeups after the problem is resolved.
+
+Try to include as much information as possible in the initial email, so we can
+quickly address the issue.
+
+**Please do not open security issues in the public issue tracker.**
+
+### Please do the following
+
+- Do not take advantage of the vulnerability or problem you have discovered.
+- Do not publish or reveal the problem until it has been resolved.
+- Do not use attacks on physical security or applications of third parties.
+- Do provide sufficient information to reproduce the problem, so we will be able
+ to resolve it as quickly as possible. Usually, a list of steps to follow, and
+ the vulnerable Deno version is enough. More complex vulnerabilities may
+ require further explanation.
+
+### Our commitment to you
+
+- If you act in accordance with this policy, we will not take legal action
+ against you in regard to your report.
+- We will handle your report with strict confidentiality, and not pass on your
+ personal details to third parties without your permission.
+
+## Security Model
+
+The following paragraphs outline the rough security model for Deno. The model
+may change slightly over time, but in general the model is as follows:
+
+- All JavaScript run in Deno is considered untrusted, so permissions are thus
+ never enforced in JavaScript.
+- All JavaScript run in a single Deno process is considered to be part of the
+ same program and is not isolated from itself. This means that Deno does not
+ guarantee that values set by one JS module will be inaccessible to another, or
+ that a value set in one web worker can not be accessed by another.
+- All runtime I/O is considered to be privileged and must always be guarded by a
+ runtime permission. This includes filesystem access, network access, etc.
+- Users should not be able to self-escalate their permissions without explicit
+ consent.
+- I/O required to build an initial static module graph should always follow the
+ permissions of its parent. If there is no parent, all permissions are granted.
+ As an example, this means that the initial static module graph that is
+ constructed when doing `deno run`, does not have any permission restrictions.
+ However, the module graph constructed as the result of loading a web worker or
+ dynamic import will be restricted to the permissions of the caller (the main
+ worker most likely).
+- We consider the V8 VM to be a secure sandbox.