-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdraft-morais-iotops-inxu-01.xml
1497 lines (1414 loc) · 69.3 KB
/
draft-morais-iotops-inxu-01.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version='1.0' encoding='utf-8'?>
<!-- This template is for creating an Internet Draft using xml2rfc,
which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc
xmlns:xi="http://www.w3.org/2001/XInclude"
category="std"
docName="draft-morais-iotops-inxu-00"
ipr="trust200902"
obsoletes=""
updates=""
submissionType="IETF"
xml:lang="en"
tocInclude="true"
tocDepth="4"
symRefs="true"
sortRefs="true"
version="3">
<!-- ***** FRONT MATTER ***** -->
<front>
<title abbrev="INXU">Intra-Network eXposure analyzer Utility Specification</title>
<!--<workgroup>IOT Operations Working Group</workgroup>-->
<seriesInfo name="Internet-Draft" value="draft-morais-iotops-inxu-00"/>
<author fullname="Sávyo Vinícius de Morais" initials="S.V." surname="Morais">
<organization>IFRN</organization>
<address>
<postal>
<street/>
<city>Natal</city>
<region/>
<code/>
<country>BR</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<author fullname="Claudio Miceli de Farias" initials="C.M." surname="Farias">
<organization>UFRJ</organization>
<address>
<postal>
<street/>
<city>Rio de Janeiro</city>
<region/>
<code/>
<country>BR</country>
</postal>
<email>[email protected]</email>
</address>
</author>
<date year="2022"/>
<!-- Meta-data Declarations -->
<area>Operations and Management</area>
<workgroup>IOT Operations Working Group</workgroup>
<keyword>MTD, INXU</keyword>
<abstract>
<t>
This document proposes the Intra-Network eXposure analyzer Utility (INXU) as a vulnerability management solution for IoT networks. The goal of INXU is to take advantage of the functions of the RFC 8520 to allow a Security Experts Team on protecting multiple heterogeneous IoT networks, even when there is a few or none private information of the networks.
</t>
<t>
INXU identifies and analyzes the capability of an IoT device being exploited by an well known malicious activity. We also propose the Malicious Traffic Description (MTD), a data-model to describe traffic related to malicious activities.
</t>
</abstract>
</front>
<middle>
<section numbered="true" toc="default">
<name>Introduction</name>
<t>
While more Internet of Things (IoT) devices are deployed, the vulnerability management process turns even more difficult. This is mostly caused by the high heterogeneity and density of the IoT systems and devices, and challenges security teams on keeping Firewall and Intrusion Detection/Prevention Systems (IDS/IPS) rules up to date.
</t>
<t>
In some way, the Manufacturer Usage Description (MUD) <xref target="RFC8520" format="default"/> provides an alternative protection by reducing the capability of an IoT device being exploited -- as vector or target -- by malicious activities over the Internet. MUD does this by providing means to automatically build an allow-list of the IoT devices in a network based on the device manufacturers specification of expected traffic. This improves devices security by reducing their threat surface by blocking traffic with unexpected nodes/protocols, but still allows attacks which exploit vulnerabilities into the allowed traffic.
</t>
<t>
Besides this lack, the implementation of the <xref target="RFC8520" format="default"/> provides information that can support the identification of well-known vulnerabilities, as mentioned in its specification. This can be done by combining the allow-lists provided by the MUD manager into a communication graph of the connected IoT devices. With the communication graph, we can compare the traffic allowed by MUD with signatures of well-known malicious activities to identify -- and potentially block -- exposure of vulnerabilities into the network.
</t>
<t>
Integrating this analysis in traditional IDS or IPS can improve their efficacy and cover the MUD lack, but they only apply for scenarios where there is a security management team, such as corporate, smart grid and industrial IoT networks. On the other hand, in scenarios where there is a high heterogeneity of devices and low (or none) specialized support, such as in Home IoT Networks and Smart Cities, the process for keeping the attack signatures updated is not that simple.
</t>
<t>
Therefore, envisioning to overcome this gap, this document proposes INXU (Intra Network eXposure analyzer Utility) as a security tool that takes advantage of the MUD-based network communication graph to prevent the exploitation of well-known vulnerabilities. To do this, INXU blocks threats on the Local Area Network (LAN) after identifying them by comparing the signature of well-known malicious activities with the traffic flow allowed by the MUD. In short words, while MUD builds allow-lists, INXU builds a blocklist on top of MUD's allow-lists.
</t>
<t>
The core component of INXU is Malicious Traffic Description (MTD), a document produced by a security specialist that describes ongoing malicious activities and well-known vulnerabilities and helps INXU find chains of connected IoT devices that can expose them to a threat. On top of MUD's threat surface reduction, INXU adds another security layer that enables protection against incidents not addressed or even caused by the manufacturers.
</t>
<t>
The MTD data model, as in MUD, abstracts network addresses to allow describing the traffic without the need to know the network's addressing schema or the connected devices. This resource allows creating portable descriptions of malicious traffic and protects the privacy in the LAN by not exposing private information to third parties in the security decision-making process. At the same time, it simplifies the sharing of knowledge about attacks between distinct networks.
</t>
<t>
Another relevant feature in INXU is its architecture that enables one Security Operation Center (SOC) to protect multiple distinct networks by sharing MTDs in a process similar to computer antivirus vaccines. This feature makes INXU a tool to protect LANs and the entire Internet ecosystem by making the operation of botnets and other attacks that affect the Internet's stability more difficult.
</t>
<section numbered="true" toc="default">
<name>Simple Example</name>
<t>
An Internet Service Provider (ISP) connects tens to hundreds of houses to the Internet. Each one of these homes contains a wide range of IoT devices connected in their internal networks, in diverse topologies, and with different usages by each end-user. By the variety of scenarios, these home networks potentially contain a few devices infected by a DDoS capable botnet.
</t>
<t>
Due to the attacks carried by this botnet, frequently the ISP has a considerable part of its traffic being consumed by DDoS attacks, and often the clients call helpdesk for problems with devices caused by the botnet. The ISP knows that the malware's infection occurs by a TCP/23 connection with a neighbour host, and the command and control occurs by a TCP/80 connection with a server located at mybotnet.example.com.
</t>
<t>
With this information, the ISP releases an MTD File describing this traffic, which can be used by its clients. In the home networks, the Customer Premises Equipment (CPE) collects the MTD File and compares it to the network communication graph provided by MUD, identifies exposures of vulnerabilities internally into the network, INXU evaluates the risk of the exposures and suggests blocks to prevent exploitations.
</t>
</section>
<section numbered="true" toc="default">
<name>Key Aspects</name>
<t>
This work in progress aims to propose a tool that reinforces IoT networks' security by taking advantage of the functions provided by the <xref target="RFC8520" format="default"/>. The specific contributions of INXU are listed below:
</t>
<ul spacing="normal">
<li>Simplify the process of sharing attack signatures that targets or exploits IoT systems;</li>
<li>Allow a small team of security specialists to protect multiple distinct IoT networks without expose the networks’ privacy;</li>
<li>Protect the Internet’s ecosystem by hindering distributed attacks that targets its infrastructure.</li>
</ul>
</section>
<section numbered="true" toc="default">
<name>INXU Intended Use</name>
<t>
The intended use for INXU is in the support of the vulnerability management of diverse heterogeneous IoT networks in scenarios where there is a small team of security specialists (e.g. Smart Cities). It is also intended to be used in scenarios where the end networks need their privacy kept, as Home IoT networks.
</t>
<t>
The deployment of INXU in networks populated by both IoT and general purpose devices is NOT RECOMMENDED. Due to the greater computing power and wider openness to other attacks, general purpose devices might expose the IoT network to unnecessary risk. Instead of having both types on the same sub-network, we recomend to isolate IoT devices in a separate sub-network as they announce their MUD URLs, and developers should take advantage of MUD's "controller" and "my-controller" hosts as application gateway between general purpose and IoT devices. In the case of needing a direct communication between the two categories, this could be specified with MUD's "local-networks" specification.
</t>
</section>
<section numbered="true" toc="default">
<name>Terminology</name>
<ul>
<li>INXU: Intra-Network eXposure analyzer Utility.</li>
<li>INXU Module: a system that crosses data from malicious activities and MUD’s allow-lists to identify and analyze the exposure of vulnerabilities in the connected IoT devices.</li>
<li>MTD: Malicious Traffic Description data model.</li>
<li>MTD File: a file that contains descriptions of traffic associated with malicious activities that targets or exploits IoT devices.</li>
<li>MTD Manager: a system that requests and receives the MTD File. It is responsible for verifying MUD File’s authenticity and integrity. The MTD Manager also requests the MTD File after it’s cache validity expires.</li>
<li>MTD URL: a URL, configured in the MTD Manager, that locates the MTD File provided by the SOC in charge to protect the client network.</li>
<li>MTD Server: a web server, managed by the SOC, that hosts the MTD File.</li>
</ul>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119" format="default"/><xref target="RFC8174" format="default"/> when, and only when, they appear in all capitals, as shown here.</t>
</section>
</section>
<section anchor="mtd" numbered="true" toc="default">
<name>The MTD Data Model</name>
<t>
The main aim of this data model is to enable describing malicious traffic so that distinct networks can interpret and implement security measures, no matter the connected IoT devices or network topology. Another feature addressed by this data model is allowing the association between the detected exposure and the malicious activity that exploits it, as well as the grouping of vulnerabilities related to the same malicious activity.
</t>
<t>
The MTD data model makes use of Access Control Lists (ACLs) <xref target="RFC8519" format="default"/> under YANG language <xref target="RFC7950" format="default"/> to describe the malicious traffic, addressing the classification feature. Furthermore, such as in MUD, there are available two network address abstractions to describe the traffic so that different networks can adapt the description to its context: one abstraction for addresses in the local networks, and the other for using domain names to hosts on the Internet. The data model also includes control fields that support the manageability of the MTD File, so the contained data can be categorized in control data and description data.
</t>
<t>
This data model covers the complete description of malicious activities from simple attacks with just a few ACE inputs to complex malware that exploits many different vulnerabilities and network resources. Furthermore, to prevent false-positive threat detections, the MTD data model allows inserting context information into the descriptions. The context information in the MTD data model plays the role of specifying the correlation between the described malicious traffic, determining the combinations of exposures that become a risk, and suggesting the action to be taken with each detected threat. This feature supports reducing false-positive detection, as a single traffic exposure may not represent a threat itself.
</t>
<t>
Basically the context information supports the categorization of a set of vulnerabilities as an effective threat or not. To incorporate the contextual information, we considered the statements listed below, which were assimilated from the IoTSec ontology in <xref target="Mozzaquatro2015" format="default"/>:
</t>
<ul>
<li>A Threat represents an effective risk if the exposure of one or more vulnerabilities can be exploited by an attacker;</li>
<li>A Vulnerability does not represent a risk by itself, as it can be hidden behind security mechanisms, such as blocking its exposure for potential attackers.</li>
</ul>
<t>
So, in short words, an asset is under threat only when an attacker can exploit one or more vulnerabilities to take advantage of it. Thus, merging the concepts from the ontology and the aims on MTD data model, this document considers the following statements:
</t>
<ul>
<li>
Each Access Control Entry (ACE) has an associated severity defined by the unsigned integer field named risk. When the exposure to the ACE is detected, its risk is considered part of its ACL's vulnerability classification;
</li>
<li>
Each ACL has alert-threshold and risk-threshold fields, both represented by unsigned integer values. When the sum of the exposed ACEs risks reaches the risk threshold, the exposure to the ACL is considered as a vulnerability;
</li>
<li>
Each malicious activity described contains a list of critical ACL sets. A malware or attack is classified as a threat when at least one set of critical ACLs contains all its ACLs classified as a vulnerability exposure. When one set's condition is satisfied, its associated action-to-take has to be triggered.
</li>
</ul>
<t>
The three possible actions to be taken are listed below:
</t>
<ul>
<li>
block-all: blocks all ACLs that expose vulnerabilities related to the description. Expected to be used when any traffic associated with the malware or attack threatens the IoT device;
</li>
<li>
block-attack: blocks all ACLs that expose vulnerabilities under the attack-traffic group. Expected to be used when only risky ACLs associated with attacks (isolated or in the context of a malware) threatens the IoT device;
</li>
<li>
block-not-attack: blocks all ACLs that expose vulnerabilities under the malware's not-attack-traffic group. Expected to be used when just blocking the operation traffic of a malware prevents exploitation.
</li>
</ul>
<section numbered="true" toc="default">
<name>The draft-inxu-mtd YANG Module</name>
<t>
A simplified graphical representation of the data models is used in this document. The meaning of the symbols in these diagrams is explained in <xref target="RFC8340" format="default"/>.
</t>
<artwork name="" type="" align="left" alt=""><![CDATA[
module: draft-inxu-mtd
+--rw mtd!
+--rw mtd-url inet:uri
+--rw last-update yang:date-and-time
+--rw mtd-signature? inet:uri
+--rw cache-validity? uint8
+--rw malicious-descriptions
+--rw malicious-list* [name]
+--rw name string
+--rw specific-devices* inet:uri
+--rw critical-acl-sets* [name]
| +--rw name string
| +--rw critical-acl-set* -> /acl:acls/acl/name
| +--rw action-to-take draft-inxu-mtd:action-to-take
+--rw to-device-attacks
| +--rw traffic-lists
| +--rw traffic-list* [name]
| +--rw name -> /acl:acls/acl/name
| +--rw specific-devices* inet:uri
+--rw from-device-attacks
| +--rw traffic-lists
| +--rw traffic-list* [name]
| +--rw name -> /acl:acls/acl/name
| +--rw specific-devices* inet:uri
+--rw to-device-not-attacks
| +--rw traffic-lists
| +--rw traffic-list* [name]
| +--rw name -> /acl:acls/acl/name
| +--rw specific-devices* inet:uri
+--rw from-device-not-attacks
+--rw traffic-lists
+--rw traffic-list* [name]
+--rw name -> /acl:acls/acl/name
+--rw specific-devices* inet:uri
augment /acl:acls/acl:acl/acl:aces/acl:ace/acl:matches:
+--rw mtd
+--rw local-networks? empty
augment /acl:acls/acl:acl/acl:aces/acl:ace:
+--rw risk? uint8
augment /acl:acls/acl:acl:
+--rw risk-threshold? uint8
+--rw alert-threshold? uint8
augment /acl:acls/acl:acl/acl:aces/acl:ace/acl:matches/acl:l4/acl:tcp/acl:tcp:
+--rw direction-initiated? mud:direction
augment /acl:acls/acl:acl/acl:aces/acl:ace/acl:matches/acl:l3/acl:ipv4/acl:ipv4:
+--rw src-dnsname? inet:host
+--rw dst-dnsname? inet:host
augment /acl:acls/acl:acl/acl:aces/acl:ace/acl:matches/acl:l3/acl:ipv6/acl:ipv6:
+--rw src-dnsname? inet:host
+--rw dst-dnsname? inet:host
]]></artwork>
</section>
<section numbered="true" toc="default">
<name>MTD Data Model Definition of Control Fields in the Root “mtd” Container</name>
<t>
Here we describe the leafs placed into the “mtd” root container that plays the role of controlling the operation of the MTD File.
</t>
<section numbered="true" toc="default">
<name>mtd-url</name>
<t>
Required field that stores the URL where the security authority hosts the MTD File.
</t>
</section>
<section numbered="true" toc="default">
<name>mtd-signature</name>
<t>
Optional field used to store a URL where the MTD File signature file can be found. It is applicable for offline authenticity verification of the file.
</t>
</section>
<section numbered="true" toc="default">
<name>last-update</name>
<t>
Required field that contains the timestamp information of the MTD File generation.
</t>
</section>
<section numbered="true" toc="default">
<name>cache-validity</name>
<t>
Optional field that contains the number of hours to the expiration of the MTD File, starting from “last-update”. This field supports integer values between 1 and 160, and if not defined, it is assumed to be 48 hours by the MTD Manager.
</t>
</section>
</section>
<section numbered="true" toc="default">
<name>MTD Data Model Definition of Traffic Description Fields in the Root “mtd” Container</name>
<t>
The traffic description fields are organized under the “malicious-descriptions” container. The description of a malicious activity allows the aggregation of different attacks, and also other not attack traffic that only turn into malicious when related to the malware operation. This aggregation is important for the security measures decision-making process, as sometimes only a traffic combination makes the threat effective or blocking just one type of traffic can almost disable it, such as the Mirai's Command and Control traffic.
</t>
<t>
The description of each leaf is detailed in the Sub-Sections below.
</t>
<section numbered="true" toc="default">
<name>traffic-list</name>
<t>
List type field to specify all the traffic in the same direction (incoming/outgoing) that is associated with one attack-traffic or not-attack-traffic.
</t>
<section numbered="true" toc="default">
<name>name</name>
<t>
Required string field with the name of the ACL that describes one attack-traffic or not-attack-traffic;
</t>
</section>
<section numbered="true" toc="default">
<name>specific-devices</name>
<t>
Optional list to specify the MUD URLs of the IoT devices affected by the described traffic. When this field is filled, INXU only considers the devices here listed as targets of these ACLs.
</t>
</section>
</section>
<section numbered="true" toc="default">
<name>malicious-descriptions</name>
<t>
List that holds the traffic description of all the malicious activities covered by the MTD File.
</t>
<section numbered="true" toc="default">
<name>name</name>
<t>
Required string field to uniquely name the described malicious activity.
</t>
</section>
<section numbered="true" toc="default">
<name>specific-devices</name>
<t>
Optional list to specify the MUD URLs of the IoT devices that can be affected by the malicious activity. When this field is filled, INXU only considers the devices here listed as affected by this malicious activity.
</t>
</section>
<section numbered="true" toc="default">
<name>critical-acl-sets</name>
<t>
List to specify all the sets of critical ACL and their respective actions to take when all listed ACLs get classified as risky.
</t>
<section numbered="true" toc="default">
<name>critical-acl-set</name>
<t>
List to specify a set of ACLs that, when all listed ACLs get classified as risky, represents a threat caused by the malicious activity.
</t>
</section>
<section numbered="true" toc="default">
<name>action-to-take</name>
<t>
Mandatory leaf to specify the action to be taken when the respective set of critical ACLs turns into a threat. The action can be “block-all”, “block-attack”, or “block-not-attack”.
</t>
</section>
</section>
<section numbered="true" toc="default">
<name>to-device-attacks</name>
<t>
Container that holds all the malicious activity's attack traffic targeting an IoT device on the LAN.
</t>
</section>
<section numbered="true" toc="default">
<name>from-device-attacks</name>
<t>
Container that holds all the malicious activity's attack traffic outgoing from an IoT device on the LAN.
</t>
</section>
<section numbered="true" toc="default">
<name>not-attack-traffic</name>
<t>
Container that holds the traffic not related to attacks, but that turns into malicious when in this context.
</t>
<section numbered="true" toc="default">
<name>to-device-not-attack-traffic</name>
<t>
List with all the ACLs that describe malicious not attack traffic targeting an IoT device on the LAN.
</t>
</section>
<section numbered="true" toc="default">
<name>from-device-not-attack-traffic</name>
<t>
List with all the ACLs that describe malicious not attack traffic outgoing from an IoT device on the LAN.
</t>
</section>
</section>
</section>
</section>
<section numbered="true" toc="default">
<name>Augmentation to the ACL Model</name>
<t>
This section describes the proposed augments to the ACL model. These augments are responsible for creating the abstraction for the traffic descriptions, enabling the portability of the knowledge to the different networks, and supporting the risk assessment of each vulnerability exposure.
</t>
<section numbered="true" toc="default">
<name>mtd:local-networks</name>
<t>
Optional leaf that, when present, means that the current ACE applies to any device on the local IP networks.
</t>
</section>
<section numbered="true" toc="default">
<name>direction-initiated</name>
<t>
Optional field incorporated from MUD to specify the TCP initiator.
</t>
</section>
<section numbered="true" toc="default">
<name>src-dnsname and dst-dnsname</name>
<t>
Optional field to enable the usage of DNS domain names to specify the remote host instead of using IPv4 or IPv6 addresses.
</t>
</section>
<section numbered="true" toc="default">
<name>risk</name>
<t>
Optional unsigned integer field to specify the risk associated with the exposure of the specified ACE. Its default value is 1.
</t>
</section>
<section numbered="true" toc="default">
<name>risk-threshold</name>
<t>
Optional unsigned integer field to specify the minimal ACL risk value to classify it as a vulnerability exposure. The ACL's risk value is calculated by the sum of all its child ACE exposures' risks. Its default value is 1.
</t>
</section>
<section numbered="true" toc="default">
<name>alert-threshold</name>
<t>
Optional unsigned integer field to specify the minimal ACL risk value to trigger an alert to the exposure. The ACL's risk value is calculated by the sum of all its child ACE exposures' risks. Its default value is 1.
</t>
</section>
</section>
<section numbered="true" toc="default">
<name>The MTD YANG Model</name>
<artwork align="left" name="" type="" alt=""><![CDATA[
<CODE BEGINS>file "[email protected]"
module draft-inxu-mtd{
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:draft-inxu-mtd";
prefix draft-inxu-mtd;
import ietf-yang-types {
prefix yang;
}
import ietf-access-control-list {
prefix acl;
}
import ietf-inet-types {
prefix inet;
}
import ietf-mud {
prefix mud;
}
import ietf-acldns {
prefix acldns;
}
organization "IETF IOTOPS (IOT Operations) Working Group";
contact
"WG Web: http://tools.ietf.org/wg/iotops/
WG List: [email protected]
Author: Sávyo Morais
Author: Claudio Farias
description
"This module is a data-model to describe malicious network
traffic.
This module is intended to be serialized via JSON and stored
as a file, as described in I-D draft-morais-iotops-inxu-01.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here.
Copyright (c) 2022 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of
I-D draft-morais-iotops-inxu-01; see the I-D itself for
full legal notices.";
revision 2022-05-15{
description
"Simplifying the data model to one single description of
malicious traffic.";
reference
"draft-morais-iotops-inxu-01: Intra-Network eXposure analyzer
Utility Specification";
}
typedef action-to-take {
description
"Type to specify the action to take when a threat is detected";
type enumeration {
enum "alert" {
value 0;
description
"Alert user about a risky exposure";
}
enum "block-not-attack" {
value 1;
description
"Block risky exposures of not-attack-traffic and warns uses
about attack-traffic alert exposures";
}
enum "block-attack" {
value 2;
description
"Block attack-traffic risky exposures and alert users about
the block";
}
enum "block-all" {
value 3;
description
"Block all risky exposures and alert users about the block";
}
}
}
container mtd {
presence "Enabled for this particular MTD URL";
description "MTD-related information";
uses mtd-groupig;
}
grouping mtd-groupig {
description
"This grouping is to create a set of definitions of
malicious traffic of malware and attacks.";
leaf mtd-url{
type inet:uri;
mandatory true;
description
"This is the MTD URL associated with the entry found
in a MTD File";
}
leaf last-update {
type yang:date-and-time;
mandatory true;
description
"This is intended to be set when the current MTD File is
generated. MTD Managers SHOULD NOT check for updates
between this time plus cache validity.";
}
leaf mtd-signature {
type inet:uri;
description
"A URI that resolves to a signature file to verify the
autenticity of the MTD File.";
}
leaf cache-validity {
type uint8 {
range "1..168";
}
units "hours";
default "48";
description
"The information retrieved from the MTD Server is
valid for these many hours, after which it should be
refreshed. MTD Manager implementations do not need to
discard MTD Files beyond this period.";
}
container malicious-descriptions {
description
"This container has the descriptions of the malware and
attacks that can exploit or target the devices";
uses malicious-list;
}
}
grouping traffic-lists {
description
"A grouping for acess lists of malicious traffic in the context
of malware or attacks.";
container traffic-lists {
description
"The access lists of the attack's malicious traffic
targeting or departing from the local IoT devices.";
list traffic-list {
key "name";
description
"Each entry on this list refers to an malicious
traffic defined by an ACL that should present the
overall network communication of the attack.";
leaf name {
type leafref{
path "/acl:acls/acl:acl/acl:name";
}
description
"The name of the ACL for this entry.";
}
leaf-list specific-devices {
type inet:uri;
description
"List of MUD URLs of specific devices
related with the vulnerability";
}
}
}
}
grouping malicious-list {
description
"A grouping for acess control lists of malicious traffic in the
context of malware or attacks.";
list malicious-list {
key "name";
description
"The access lists of the malware's or attack's malicious
traffic targeting or departing from the local IoT devices,";
leaf name {
type string;
description
"The unique name of the described malicious activity for
each entry.";
}
leaf-list specific-devices {
type inet:uri;
description
"List of MUD URLs of specific devices
related with the vulnerability";
}
list critical-acl-sets{
key "name";
description
"Each list entry represents a malicious activity's critical
set of risky ACL exposures, followed by the action to take
when a critical set be detected.";
leaf name {
type string;
description
"The critical ACL set name";
}
leaf-list critical-acl-set {
type leafref{
path "/acl:acls/acl:acl/acl:name";
}
description
"A list to specify a set of ACLs that, when all listed
ACLs get classified as risky, represents a threat caused
by the malicious activity";
}
leaf action-to-take {
type draft-inxu-mtd:action-to-take;
mandatory true;
description
"A leaf to specify the action to be taken when
the respective set of critical ACLs turns into
a threat.";
}
}
container to-device-attacks {
description
"The set of attack traffic performed by the
infected IoT device";
uses traffic-lists;
}
container from-device-attacks {
description
"The set of attack traffic performed targeting
the infected IoT device";
uses traffic-lists;
}
container to-device-not-attacks {
description
"The set of attack traffic performed by the
infected IoT device";
uses traffic-lists;
}
container from-device-not-attacks {
description
"The set of attack traffic performed targeting
the infected IoT device";
uses traffic-lists;
}
}
}
augment "/acl:acls/acl:acl/acl:aces/acl:ace/acl:matches" {
description
"adding abstraction to avoid the need of IP addresses.";
container mtd {
description
"MTD-specific match.";
leaf local-networks {
type empty;
description
"IP addresses will match this node if they are
considered local addresses. A local address may be
a list of locally defined prefixes and masks
that indicate a particular administrative scope.";
}
}
}
augment "/acl:acls/acl:acl/acl:aces/acl:ace" {
description
"Add the risk level information associated to the ACE";
leaf risk {
type uint8;
default "1";
description
"Represents risk level of a device being exploited
when exposes the device through traffic matching the
described ACE.";
}
}
augment "/acl:acls/acl:acl" {
description
"Add an acceptable risk threshold and an alert risk threshold
to the ACL";
leaf risk-threshold {
type uint8;
default "1";
description
"The acceptable risk threshold represents the minimum
risk value for the exposure be considered a risk.
The actual risk of an ACL is calculated by the sum of
all the ACEs that matched on the INXU Module analysis";
}
leaf alert-threshold {
type uint8;
default "1";
description
"The acceptable alert threshold represents the minimum
risk value for the exposure trigger an alert.
The actual risk of an ACL is calculated by the sum of
all the ACEs that matched on the INXU Module analysis";
}
}
augment "/acl:acls/acl:acl/acl:aces/acl:ace/acl:matches"
+ "/acl:l4/acl:tcp/acl:tcp" {
description
"Add direction-initiated";
leaf direction-initiated {
type mud:direction;
description
"This node matches based on which direction a
connection was initiated.";
}
}
augment "/acl:acls/acl:acl/acl:aces/acl:ace/acl:matches"
+ "/acl:l3/acl:ipv4/acl:ipv4" {
description
"Adding domain names to matching.";
uses acldns:dns-matches;
}
augment "/acl:acls/acl:acl/acl:aces/acl:ace/acl:matches"
+ "/acl:l3/acl:ipv6/acl:ipv6" {
description
"Adding domain names to matching.";
uses acldns:dns-matches;
}
deviation "/acl:acls/acl:acl/acl:aces/acl:ace/acl:actions" {
deviate not-supported;
description
"Field not used in this specification";
}
}
<CODE ENDS>
]]></artwork>
</section>
<section numbered="true" toc="default">
<name>MTD File Example</name>
<t>
This MTD file describes the traffic of an hipotetic variant of the Mirai botnet. In its attack model, this malware scans for other vulnerable devices in the same network, and its management services (Command and Control, Scan Report, and Loader) are placed in the network edge.
</t>
<artwork align="left" name="" type="" alt=""><![CDATA[
<CODE BEGINS>file "mirai-lan-variant.json"
{
"draft-inxu-mtd":"mtd",
"mtd-url":"https://example.com/mirai-lan-variant.json",
"last-update":"2022-05-15T18:17:00-03:00",
"malicious-descriptions":{
"malicious-list":[
{
"name":"Mirai-Example",
"critical-acl-sets":[
{
"name":"mirai-prevent-spread",
"critical-acl-set":
[
{"name":"mirai_infect_v4from"},
{"name":"mirai_infect_v4to"},
{"name":"mirai_scan_v4from"},
{"name":"mirai_scan_v4to"}
],
"action-to-take": "BLOCK_ATTACK"
},
{
"name":"mirai-prevet-cnc",
"critical-acl-set":
[
{"name":"mirai_cnc_v4from"},
{"name":"mirai_cnc_v4to"}
],
"action-to-take": "BLOCK_N_ATTACK"
},
{
"name":"mirai-prevet-minimal",
"critical-acl-set":
[
{"name":"mirai_cnc_v4from"},
{"name":"mirai_cnc_v4to"},
{"name":"mirai_infect_v4from"},
{"name":"mirai_infect_v4to"}
],
"action-to-take": "BLOCK_ALL"
},
],
"to-device-attacks": {
"traffic-lists": {
"traffic-list": [
{"name":"mirai_infect_v4to"},
{"name":"mirai_scan_v4to"}
]
}
},
"from-device-attacks": {
"traffic-lists": {
"traffic-list": [
{"name":"mirai_infect_v4from"},
{"name":"mirai_scan_v4from"}
]
}
},
"to-device-not-attacks": {
"traffic-lists": {
"traffic-list": [
{"name":"mirai_cnc_v4to"}
]
}
},
"from-device-not-attacks": {
"traffic-lists": {
"traffic-list": [
{"name":"mirai_cnc_v4from"}
]
}
},
}
]
},
"ietf-access-control-list:acls": {
"acl": [
{
"name":"mirai_infect_v4to",
"risk-threshold":11,
"type": "ipv4-acl-type",
"aces": {
"ace": [
{
"name":"infect_23_to",
"risk":10,
"matches":{
"ipv4":{
"ietf-acldns:dst-dnsname":"urn:ietf:params:\
mud:gateway",
"protocol":6
},
"tcp":{
"destination-port":{
"operator":"eq",
"port":23
}
}
}
},
{
"name":"infect_2323_to",
"risk":10,
"matches":{
"ipv4":{
"ietf-acldns:dst-dnsname":"urn:ietf:params:\
mud:gateway",
"protocol":6
},
"tcp":{
"destination-port":{
"operator":"eq",
"port":2323
}
}
}
},
{
"name":"bin_download_to",
"risk":1,
"matches":{
"ipv4":{
"ietf-acldns:dst-dnsname":"urn:ietf:params:\
mud:gateway",
"protocol":6
},
"tcp":{
"source-port":{
"operator":"eq",
"port":80
},
}
}
}
]
}
},
{
"name":"mirai_scan_v4to",
"risk-threshold":11,
"type": "ipv4-acl-type",
"aces": {
"ace": [
{
"name":"scan_23_to",
"risk":10,
"matches":{
"ietf-mud:mud":{
"local-networks":[ null ]
},
"ipv4":{
"protocol":6
},
"tcp":{
"source-port":{
"operator":"eq",
"port":23
},
}
}
},
{
"name":"scan_2323_to",
"risk":10,
"matches":{
"ietf-mud:mud":{
"local-networks":[ null ]
},
"ipv4":{
"protocol":6
},
"tcp":{
"source-port":{
"operator":"eq",
"port":2323
},
}
}
},
{
"name":"scan_report_to",
"risk":1,
"matches":{
"ipv4":{
"ietf-acldns:dst-dnsname":"urn:ietf:params:\