Skip to content

Commit b8dc551

Browse files
authored
Improve Security and Privacy section (#586)
Improve Security and Privacy section
1 parent b73b57e commit b8dc551

File tree

1 file changed

+87
-13
lines changed

1 file changed

+87
-13
lines changed

index.html

Lines changed: 87 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4352,17 +4352,16 @@ <h3>Parsing content</h3>
43524352
<section> <h2 id="security">Security and Privacy</h2>
43534353
<section> <h3>Chain of trust</h3>
43544354
<p>
4355-
Web sites and applications using Web NFC are not trusted.
4356-
This means that the user needs to be made aware of what NFC functionality
4357-
a web page intends to do. Implementations need to
4358-
make sure that when the user authorizes a method of this API, only
4359-
that action is run, without side effects, and exactly in the context and
4360-
the number of times the user allows the execution of NFC related
4361-
operations, according to the algorithmic steps detailed in this
4362-
specification.
4355+
Implementations need to make sure that when the user authorizes a method which is part of the Web NFC API, only that action is run, without side effects.
43634356
</p>
43644357
<p>
4365-
Web NFC does not sign <a>NFC content</a>. In order to protect the
4358+
By default, NDEF doesn't provide any way to make the content trusted
4359+
beyond allowing tags to be made permanently read-only after writing
4360+
data to them. This can even be done from a factory setting.
4361+
</p>
4362+
<p>
4363+
Data written by the use of this API is not signed or encrypted automatically,
4364+
which follows existing native NFC APIs. In order to protect the
43664365
integrity and authenticity of NDEF messages, the NFC Forum introduced
43674366
[[NDEF-SIGNATURE]]. Using <a>NDEF signature</a> and
43684367
key management is the responsibility of the application.
@@ -4381,6 +4380,81 @@ <h3>Parsing content</h3>
43814380
[[RFC2048]] and [[RFC2046]].
43824381
</p>
43834382
</section>
4383+
<section> <h3>Things that users should be made aware of when using NFC</h3>
4384+
<p>
4385+
This section details some of the things that users ought to be aware
4386+
of when using NFC. It is recommendated that implementations help educate
4387+
the users of given facts before or when related NFC actions are performed.
4388+
</p>
4389+
<h4>Data that is read is shared with site</h4>
4390+
<p>
4391+
When a site has access to read NFC content, then the data of the scanned
4392+
tags is shared with the site, in a similar way to uploading files and images.
4393+
As with any site, it is up to the user whether to trust that the site handles this data properly and in the
4394+
intended manner.
4395+
</p>
4396+
<h4>A site may modify and overwrite data of tags that are not made read-only</h4>
4397+
<p>
4398+
Deployed NFC solutions, like tags in stores etc, should always be made
4399+
read-only in order to ensure they are not modified by mistake or as part
4400+
of a malicious act.
4401+
</p>
4402+
<p>
4403+
Private tags and stickers are often unlocked (writable) from the factory
4404+
and the user should be aware that such tags might be overwritten/modified
4405+
by scanning them.
4406+
</p>
4407+
<h4>Reading a fixed (e.g. mounted) tag may expose reading location</h4>
4408+
<p>
4409+
A fixed tag may encode its ID or location in the data, meaning that reading
4410+
it exposes that information to the site that knows the physical location of the tag, which then can deduct the location
4411+
the read took place. That combined with being logged into a service, can
4412+
share your location data with the site.
4413+
</p>
4414+
<p>
4415+
Data written is readable by other apps and sites with granted read access
4416+
Any NDEF data on a tag can be read by any app or web site with the proper
4417+
access, so if that is not intended then the data should be encrypted in a
4418+
secure manner that only who is supposed to read it can.
4419+
</p>
4420+
<h4>Multiple tags may be within the reading field at the same time</h4>
4421+
<p>
4422+
NFC can only read one tag at the time, but multiple tags can be detected
4423+
and one of the tags can be selected as the tag to communicate with.
4424+
</p>
4425+
<p>
4426+
Use cases for this could be having multiple smart cards (NFC based) in
4427+
your wallet and not wanting to take the card out.
4428+
</p>
4429+
<p>
4430+
This is mostly useful for payment cards and travel cards that are read
4431+
by external hardware and thus not a use-case for Web NFC. For Web NFC,
4432+
we do not allow reading when there are multiple tags available, preventing the following attack vector.
4433+
</p>
4434+
<p>
4435+
There is an attack vector, where someone places another malicious NFC
4436+
tag/sticker on top of a legitimate tag, in order to load the wrong
4437+
app/site, or inject wrong data into the right app/site. They can
4438+
do so by cloning the data of the original tag and modifying it -
4439+
either by changing the URL to load a malicious app/site, or by
4440+
changing the data to inject malicious data in the right app/site.
4441+
Example: the tag is supposed to take you to <a href="https://example.com">https://example.com</a> but is modified
4442+
to take you to <a href="https://exаmple.com">https://exаmple.com</a> (that is with a Cyrillic а) - it looks legitimate
4443+
and you might now to giving sensitive data to a malicious site.
4444+
</p>
4445+
<p>
4446+
Loading web sites from a tag is outside the scope of Web NFC, but it
4447+
is recommended for user agents to not auto load URLs when multiple
4448+
tags are available due to the above attack vector.
4449+
</p>
4450+
<p>
4451+
By disallowing reading when there are multiple tags available, Web
4452+
NFC protects well against injecting wrong/malicious data into a site
4453+
as shielding the existing NFC tag is quite difficult as it requires
4454+
ferrite shielding which is quite visible. Metal interferes with the
4455+
magnetic field and makes tags not readable.
4456+
</p>
4457+
</section>
43844458

43854459
<section class="informative"> <h2>Assets</h2>
43864460
<div>
@@ -4429,17 +4503,17 @@ <h3>Parsing content</h3>
44294503
and attack vectors.
44304504
</li>
44314505
<li>
4432-
<strong>Malicious NFC tag creator</strong>: same as malicious web page
4433-
owner, but it has a possibility to create, delete or modify the NFC
4506+
<strong>Malicious NFC tag creator</strong>: same as above, but with the
4507+
additional possibility to create, delete or modify the NFC
44344508
tags locally.
44354509
As a result can compromise integrity of user device, cause data
44364510
injection, redirect to malicious web page, phishing user location,
44374511
causing side actions such as installing applications, trigger
44384512
automated dispatching or other actions.
44394513
</li>
44404514
<li>
4441-
<strong>Malicious man-in-the-middle (MITM) user</strong>: any MITM
4442-
style attack between Web NFC implementation and an <a>NFC adapter</a>
4515+
<strong>Compromised device or user agent: man-in-the-middle (MITM) attack</strong>:
4516+
any MITM style attack between Web NFC implementation and an <a>NFC adapter</a>
44434517
in a user device, including attempts to interact with a web site using
44444518
Web NFC by presenting modified or replayed NDEF records.
44454519
</li>

0 commit comments

Comments
 (0)