Use Markdown-native markup for internal links.
https://gerrit.googlesource.com/gitiles/+/HEAD/Documentation/markdown.md#named-anchors Bug: None Change-Id: I346a14fd96020282d466be463023b1d6f110c77e Reviewed-on: https://chromium-review.googlesource.com/c/1453549 Commit-Queue: Chris Palmer <palmer@chromium.org> Reviewed-by: Robert Sesek <rsesek@chromium.org> Cr-Commit-Position: refs/heads/master@{#629372}
This commit is contained in:
docs/security
@ -32,7 +32,7 @@ trust ourselves to parse it successfully or fail safely. (But see
|
||||
|
||||
Obviously, any arbitrary peer on the Internet is an untrustworthy source without
|
||||
some evidence of trustworthiness (which includes at least [a strong assertion of
|
||||
the source's identity](#verifying-trustworthiness-source)).
|
||||
the source's identity](#verifying-the-trustworthiness-of-a-source)).
|
||||
|
||||
_Unsafe implementation languages_ are languages that lack
|
||||
[memory safety](https://en.wikipedia.org/wiki/Memory_safety), including at least
|
||||
@ -82,7 +82,6 @@ of launching a utility process to parse an untrustworthy input is [Safe
|
||||
Browsing's ZIP
|
||||
analyzer](https://cs.chromium.org/chromium/src/chrome/common/safe_browsing/zip_analyzer.h).
|
||||
|
||||
<a href="verifying-trustworthiness-source"></a>
|
||||
### Verifying The Trustworthiness Of A Source
|
||||
|
||||
If you can be sure that the input comes from a trustworthy source, it can be OK
|
||||
@ -93,8 +92,7 @@ source" meets all of these criteria:
|
||||
* peer's keys are [pinned in Chrome](https://cs.chromium.org/chromium/src/net/http/transport_security_state_static.json?sq=package:chromium&g=0); and
|
||||
* peer is operated by a business entity that Chrome should trust (e.g. an [Alphabet](https://abc.xyz) company).
|
||||
|
||||
<a name="Normalization"></a>
|
||||
### Normalization
|
||||
### Normalization {#normalization}
|
||||
|
||||
You can 'defang' a potentially-malicious input by transforming it into a
|
||||
_normal_ or _minimal_ form, usually by first transforming it into a format with
|
||||
|
@ -16,8 +16,7 @@ in a controlled manner (e.g., with a ```__debugBreak```) when memory is
|
||||
exhausted or in other exceptional circumstances.
|
||||
|
||||
|
||||
<a name="TOC-Critical-severity"></a>
|
||||
## Critical severity
|
||||
## Critical severity {#TOC-Critical-severity}
|
||||
|
||||
Critical severity issues allow an attacker run arbitrary code on the underlying
|
||||
platform with the user's privileges.
|
||||
@ -44,8 +43,7 @@ Note that the individual bugs that make up the chain will have lower severity
|
||||
ratings.
|
||||
|
||||
|
||||
<a name="TOC-High-severity"></a>
|
||||
## High severity
|
||||
## High severity {#TOC-High-severity}
|
||||
|
||||
High severity vulnerabilities allow an attacker to execute code in the context
|
||||
of, or otherwise impersonate other origins. Bugs which would normally be
|
||||
@ -81,8 +79,7 @@ compromised renderer ([377392](https://crbug.com/377392)).
|
||||
interaction, such as granting a permission ([455735](https://crbug.com/455735)).
|
||||
|
||||
|
||||
<a name="TOC-Medium-severity"></a>
|
||||
## Medium severity
|
||||
## Medium severity {#TOC-Medium-severity}
|
||||
|
||||
Medium severity bugs allow attackers to read or modify limited amounts of
|
||||
information, or are not harmful on their own but potentially harmful when
|
||||
@ -122,8 +119,7 @@ mitigating factors ([265221](https://crbug.com/265221)).
|
||||
interaction, such as dragging an object ([303772](https://crbug.com/303772)).
|
||||
|
||||
|
||||
<a name="TOC-Low-severity"></a>
|
||||
## Low severity
|
||||
## Low severity {#TOC-Low-severity}
|
||||
|
||||
Low severity vulnerabilities are usually bugs that would normally be a higher
|
||||
severity, but which have extreme mitigating factors or highly limited scope.
|
||||
|
@ -167,8 +167,7 @@ features](https://developers.google.com/web/updates/2018/02/meltdown-spectre).
|
||||
(There is [an open bug to add a CORB evaluator to
|
||||
Lighthouse](https://bugs.chromium.org/p/chromium/issues/detail?id=806070).)
|
||||
|
||||
<a name="multiple-origins-within-a-siteinstance"></a>
|
||||
##### Multiple Origins Within A `SiteInstance`
|
||||
##### Multiple Origins Within A `SiteInstance` {#multiple-origins-within-a-siteinstance}
|
||||
|
||||
A *site* is defined as the effective TLD + 1 DNS label (“eTLD+1”) and the URL
|
||||
scheme. This is a broader category than the origin, which is the scheme, entire
|
||||
@ -314,8 +313,7 @@ Additionally, the mitigations typically come with a performance cost, and we may
|
||||
ultimately roll some or all of them back. Some potential mitigations are so
|
||||
expensive that it is impractical to deploy them.
|
||||
|
||||
<a name="attenuating-clocks"></a>
|
||||
### Attenuating Clocks
|
||||
### Attenuating Clocks {#attenuating-clocks}
|
||||
|
||||
Exploiting Spectre requires a clock. We don’t believe it’s possible to
|
||||
eliminate, coarsen, or jitter all explicit and implicit clocks in the Open Web
|
||||
|
@ -86,8 +86,7 @@ For example, canonicalization converts `https://ExAmPle.com:443/one/%2e./Tw%2fo/
|
||||
|
||||
Do not attempt to write your own canonicalizer.
|
||||
|
||||
<a name="simplify"></a>
|
||||
### Simplify URLs Whenever Possible
|
||||
### Simplify URLs Whenever Possible {#simplify}
|
||||
|
||||
* [Do NOT display the username and password components](https://url.spec.whatwg.org/#url-rendering) of URLs (e.g., `https://user:password@example.com/`) anywhere the user is making a security decision.
|
||||
|
||||
@ -177,7 +176,7 @@ Chrome’s [`FormatURLForSecurityDisplay`](https://cs.chromium.org/chromium/src/
|
||||
|
||||
* Wrap the URL in U+202A ... U+202C, so that it is forced to appear in a LTR paragraph. The URL standard (both [RFC 3987](https://www.ietf.org/rfc/rfc3987.txt) and https://url.spec.whatwg.org) mandate that URLs are displayed in LTR paragraphs, no matter what they contain.
|
||||
|
||||
<a id="sneakyunicode"></a>
|
||||
<a name="sneakyunicode"></a>
|
||||
#### Sneaky Unicode Characters
|
||||
|
||||
An attacker may abuse whitespace and line-wrapping characters in order to push the display of their true origin out of view. Such characters should be banned or displayed in %-escaped form.
|
||||
@ -274,13 +273,15 @@ A **homograph** (or **homoglyph**) **attack** occurs when an attacker uses looka
|
||||
|
||||
**International Domain Names** is a mechanism for using Unicode characters for hostnames. Under the covers, the Unicode labels are encoded using **[punycode](https://tools.ietf.org/html/rfc3492)** and prefixed with **xn--**. The browser may display the label in Unicode, or in the underlying punycode form. Users are not expected to be able to decode the punycode form: display in this form is intended to foil spoofing attempts.
|
||||
|
||||
<a id="label"></a>A **[label](https://en.wikipedia.org/wiki/DNS_label#Parts_of_a_domain_name)** is a single component of a [domain name](https://en.wikipedia.org/wiki/Domain_name) string, delimited by periods. For instance, "*www*", “*microsoft*”, and “*com*” are the three labels in the domain name “*www.microsoft.com*”.
|
||||
<a name="label"></a>
|
||||
A **[label](https://en.wikipedia.org/wiki/DNS_label#Parts_of_a_domain_name)** is a single component of a [domain name](https://en.wikipedia.org/wiki/Domain_name) string, delimited by periods. For instance, "*www*", “*microsoft*”, and “*com*” are the three labels in the domain name “*www.microsoft.com*”.
|
||||
|
||||
A **plain hostname** is an unqualified, single-label hostname like "*payroll*", which typically refers to a server on a local intranet.
|
||||
|
||||
A **[Public Suffix](https://publicsuffix.org/)** is the suffix portion of a FQDN under which independent entities may register subdomains. For example, *ltd.co.im* is a Public Suffix. A Public Suffix contains one or more labels. Sometimes the term "[effective TLD](https://wiki.mozilla.org/Gecko:Effective_TLD_List)" is used as a synonym.
|
||||
|
||||
<a id="registrabledomain"></a>The **registrable domain** is the public suffix plus one additional label. Sometimes eTLD+1 is used as a synonym.
|
||||
<a name="registrabledomain"></a>
|
||||
The **registrable domain** is the public suffix plus one additional label. Sometimes eTLD+1 is used as a synonym.
|
||||
|
||||
## A Caveat on Security Sensitive Surfaces
|
||||
|
||||
@ -338,4 +339,4 @@ Chromium's open-source [Trickuri](https://github.com/chromium/trickuri) tool is
|
||||
|
||||
* [Chromium’s URL Formatter Component (C++)](https://cs.chromium.org/chromium/src/components/url_formatter/url_formatter.cc)
|
||||
|
||||
* [URL interop issues across specs](https://github.com/bagder/docs/blob/master/URL-interop.md)
|
||||
* [URL interop issues across specs](https://github.com/bagder/docs/blob/master/URL-interop.md)
|
||||
|
Reference in New Issue
Block a user