@@ -3418,11 +3418,11 @@ <h2>WoT Runtime</h2>
3418
3418
defines such an application-facing interface that follows the < a > Thing</ a > abstraction
3419
3419
and enables the deployment of behavior implementations during runtime through application scripts.
3420
3420
See < a href ="#native-impl "> </ a > for alternative APIs, which can also only be available during compile time.
3421
- In general, application logic should be executed in isolated execution environments
3422
- to prevent unauthorized access to the management aspects of the < a > WoT Runtime</ a > ,
3421
+ In general, application logic should be executed in sandboxed execution environments
3422
+ that prevent unauthorized access to the management aspects of the < a > WoT Runtime</ a > from the application code ,
3423
3423
in particular the < a > Private Security Data</ a > .
3424
- In multi-tenant < a > Servients</ a > , additional execution environment isolation is required for the different
3425
- tenants .
3424
+ In multi-tenant < a > Servients</ a > , different tenants should also be prevented from accessing each other's data
3425
+ without authorization .
3426
3426
</ p >
3427
3427
< p >
3428
3428
A < a > WoT Runtime</ a > needs to provide certain operations to manage the lifecycle of < a > Things</ a > ,
@@ -4104,10 +4104,6 @@ <h5>Thing Description Private Security Data Risk</h5>
4104
4104
< span class ="rfc2119-assertion " id ="arch-security-consideration-separate-security-data ">
4105
4105
There SHOULD be a strict separation of
4106
4106
< a > Public Security Metadata</ a > and < a > Private Security Data</ a > .</ span >
4107
- < span class ="rfc2119-assertion " id ="arch-security-consideration-public-metadata-only ">
4108
- < a > Producers</ a > of TDs and extensions meant to be used in TDs
4109
- MUST ensure that only < a > Public Security Metadata</ a >
4110
- is ever stored in TDs.</ span >
4111
4107
< span class ="rfc2119-assertion " id ="arch-security-consideration-auth-private-data ">
4112
4108
Authentication and authorization
4113
4109
SHOULD be established based on separately managed < a > Private Security Data</ a > .</ span >
@@ -4162,20 +4158,19 @@ <h2>WoT Scripting API Risks</h2>
4162
4158
mitigations.
4163
4159
</ p >
4164
4160
< p >
4165
- < span class ="rfc2119-assertion " id ="arch-security-consideration-other-programming-mechanisms ">
4166
4161
In general,
4167
4162
these risks and mitigations should also be applied to any system
4168
4163
that supports programmable behavior for WoT systems,
4169
- not just the < a > WoT Scripting API</ a > .</ span >
4164
+ not just the < a > WoT Scripting API</ a > .
4170
4165
</ p >
4171
4166
< section id ="sec-security-consideration-cross-script ">
4172
4167
< h5 > Cross-Script Security Risk</ h5 >
4173
4168
< p >
4174
4169
In basic WoT setups, all scripts running inside the
4175
4170
< a > WoT Runtime</ a > are considered trusted,
4176
4171
distributed by the manufacturer, and therefore there
4177
- is no strong need to perform strict isolation
4178
- between each running script instance . However,
4172
+ is no strong need to isolate
4173
+ script instances from each other . However,
4179
4174
depending on device capabilities, deployment use
4180
4175
case scenarios, and risk level it might be desirable
4181
4176
to do so. For example, if one script handles
@@ -4187,27 +4182,26 @@ <h5>Cross-Script Security Risk</h5>
4187
4182
example is mutual co-existence of different tenants
4188
4183
on a single WoT device. In this case each WoT
4189
4184
runtime instance will be hosting a different tenant,
4190
- and isolation between them is required.
4185
+ and preventing tenants from accessing each other's data
4186
+ without authorization will generally be needed.
4191
4187
</ p >
4192
4188
< dl >
4193
4189
< dt > Mitigation:</ dt >
4194
4190
< dd >
4195
4191
< span class ="rfc2119-assertion " id ="arch-security-consideration-isolation-sensitive ">
4196
4192
The < a > WoT Runtime</ a > SHOULD perform isolation of
4197
- script instances and their data in cases when
4193
+ script instances and their data from each other in cases when
4198
4194
scripts handle sensitive data.</ span >
4199
4195
< span class ="rfc2119-assertion " id ="arch-security-consideration-isolation-tenants ">
4200
4196
Similarly, the < a > WoT Runtime</ a >
4201
4197
implementation SHOULD perform isolation of < a > WoT
4202
- Runtime</ a > instances and their data if a WoT
4198
+ Runtime</ a > instances and their data from each other if a WoT
4203
4199
device has more than one tenant.</ span >
4204
- Such isolation
4205
- can be performed within the < a > WoT Runtime</ a >
4206
- using platform security mechanisms available on
4207
- the device. For more information see Sections
4208
- "WoT Servient Single-Tenant" and "WoT Servient
4209
- Multi-Tenant" of the < em > WoT Security and Privacy
4210
- Guidelines</ em > specification [[WOT-SECURITY]].
4200
+ In practice, isolation of scripts and runtime instances from each other
4201
+ can be accomplished by running all instances
4202
+ in a "sandboxed" environment that controls its access to the rest of the environment.
4203
+ For more information see Sections "WoT Servient Single-Tenant" and "WoT Servient
4204
+ Multi-Tenant" of the < em > WoT Security and Privacy Guidelines</ em > specification [[?WOT-SECURITY]].
4211
4205
</ dd >
4212
4206
</ dl >
4213
4207
</ section >
@@ -4299,14 +4293,15 @@ <h5>Security Credentials Storage Risk</h5>
4299
4293
In case
4300
4294
there are more than one tenant on a single
4301
4295
WoT-enabled device, a < a > WoT Runtime</ a >
4302
- implementation should guarantee isolation of
4303
- each tenant's provisioned security credentials.</ span >
4296
+ implementation SHOULD isolate
4297
+ each tenant's provisioned security credentials
4298
+ from other tenants.</ span >
4304
4299
< span class ="rfc2119-assertion " id ="arch-security-consideration-no-expose-cred ">
4305
- Additionally, in order to minimize a risk that
4300
+ In order to minimize a risk that
4306
4301
provisioned security credentials get
4307
4302
compromised, the < a > WoT Runtime</ a >
4308
4303
implementation SHOULD NOT expose any API for
4309
- scripts to query the provisioned security
4304
+ scripts to query provisioned security
4310
4305
credentials.</ span >
4311
4306
< span class ="rfc2119-assertion " id ="arch-security-consideration-limit-cred-access ">
4312
4307
Such credentials (or even better,
@@ -4571,12 +4566,13 @@ <h5>Thing Description Personally Identifiable
4571
4566
< span class ="rfc2119-assertion " id ="arch-privacy-consideration-dist-td-auth ">
4572
4567
Distribution mechanisms for TDs SHOULD ensure they are
4573
4568
only provided to authorized Consumers.</ span >
4574
- Note that the < a > WoT Discovery</ a > mechanism is designed to address this
4575
- specific issue , as long as it is used with authentication and access
4569
+ Note that the < a > WoT Discovery</ a > mechanism is designed to address these
4570
+ specific issues , as long as it is used with authentication and access
4576
4571
controls on exploration services.
4577
- < span class ="rfc2119-assertion " id ="arch-privacy-consideration-no-unness-info-td ">
4578
- Unnecessary information
4579
- SHOULD NOT be exposed in TDs whenever possible.</ span >
4572
+ <!--span class="rfc2119-assertion" id="arch-privacy-consideration-no-unness-info-td" -->
4573
+ As a general matter of policy,
4574
+ unnecessary information
4575
+ should not be exposed in TDs whenever possible.<!-- </span> -->
4580
4576
For example, explicit type and instance identifying information in TDs should
4581
4577
only be included if it is needed by the use case.
4582
4578
Even if required by the use case,
@@ -4605,25 +4601,29 @@ <h2>Access to Personally Identifiable Information</h2>
4605
4601
< dt > Mitigation:</ dt >
4606
4602
< dd >
4607
4603
< span class ="rfc2119-assertion " id ="arch-privacy-consideration-access-control-mandatory-person ">
4608
- Things returning data or metadata (such as TDs) associated with a person MUST use some form of access control.</ span >
4604
+ Things returning data or metadata (such as TDs) associated with a person SHOULD use some form of access control.</ span >
4609
4605
A special case of this is a < a > Thing Description Directory</ a > ,
4610
4606
as described in [[WOT-DISCOVERY]], which is a Thing that returns
4611
4607
Thing Descriptions as data. Such directory services are included
4612
4608
in the above statement and
4613
- required to use access control if the TDs describe Things associated with
4609
+ should use access control if the TDs describe Things associated with
4614
4610
identifiable people. In the case of services
4615
4611
returning Thing Descriptions, the following also applies:
4616
4612
< span class ="rfc2119-assertion " id ="arch-privacy-consideration-id-access-control-mandatory-immutable ">
4617
- Services returning Thing Descriptions with immutable IDs MUST use some form of access control.</ span >
4613
+ Services returning Thing Descriptions with immutable IDs SHOULD use some form of access control.</ span >
4618
4614
Specifically, in both of these situations, the < code > nosec</ code > security
4619
- scheme described in [[WOT-THING-DESCRIPTION]] cannot be used,
4615
+ scheme described in [[WOT-THING-DESCRIPTION]] should not be used,
4620
4616
as it provides no access control.
4621
4617
Following the principle that Thing Descriptions describing
4622
4618
Things associated with specific persons should be treated as
4623
4619
PII, even if they do not explictly contain it, this implies
4624
- that directories providing such TDs cannot use < code > nosec</ code > .
4625
- Again it should be noted that access controls are generally only
4626
- effective when secure transport is also available;
4620
+ that directories providing such TDs should use access control.
4621
+ Generally speaking,
4622
+ the only exceptions should be cases where access is controlled
4623
+ by another mechanism not described in the TD itself, such as a
4624
+ segmented network.
4625
+ Again it should also be noted that access controls are generally only
4626
+ effective when secure transport is also used;
4627
4627
see < a href ="#sec-security-consideration-secure-transport "> </ a > .
4628
4628
Use of access controls without secure transport, at best,
4629
4629
only discourages casual access by unauthorized parties.
0 commit comments