@x12i/memorix-retrieval 1.34.0 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/catalox-seeds/inputs/entity-descriptors/assets.json +138 -0
  2. package/catalox-seeds/inputs/entity-descriptors/subnets.json +16 -1
  3. package/catalox-seeds/inputs/entity-descriptors/topology-zones.json +9 -1
  4. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities-groups.json +10 -2
  5. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities.json +57 -5
  6. package/catalox-seeds/inputs/graph-descriptors/asset-topology-vulnerabilities-graph.json +75 -0
  7. package/catalox-seeds/inputs/list-descriptors/assets-exploitability-decisions-list.json +4 -0
  8. package/catalox-seeds/inputs/list-descriptors/assets-potential-impact-decisions-list.json +16 -8
  9. package/catalox-seeds/inputs/manifest.json +4 -0
  10. package/catalox-seeds/inputs/memorix-catalog-ids.json +2 -1
  11. package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +715 -15
  12. package/dist/data/identity.d.ts +19 -1
  13. package/dist/data/identity.d.ts.map +1 -1
  14. package/dist/data/identity.js +41 -25
  15. package/dist/data/identity.js.map +1 -1
  16. package/dist/data/record-info.d.ts +1 -1
  17. package/dist/data/record-info.d.ts.map +1 -1
  18. package/dist/descriptors/catalog-ids.d.ts +1 -0
  19. package/dist/descriptors/catalog-ids.d.ts.map +1 -1
  20. package/dist/descriptors/catalog-ids.js +1 -0
  21. package/dist/descriptors/catalog-ids.js.map +1 -1
  22. package/dist/descriptors/descriptor-types.d.ts +3 -1
  23. package/dist/descriptors/descriptor-types.d.ts.map +1 -1
  24. package/dist/errors/issues.d.ts +2 -0
  25. package/dist/errors/issues.d.ts.map +1 -1
  26. package/dist/errors/issues.js.map +1 -1
  27. package/dist/explorer/collection-records.d.ts +2 -0
  28. package/dist/explorer/collection-records.d.ts.map +1 -1
  29. package/dist/explorer/collection-records.js +2 -3
  30. package/dist/explorer/collection-records.js.map +1 -1
  31. package/dist/explorer/raw-collection-records.d.ts +5 -0
  32. package/dist/explorer/raw-collection-records.d.ts.map +1 -1
  33. package/dist/explorer/raw-collection-records.js +15 -11
  34. package/dist/explorer/raw-collection-records.js.map +1 -1
  35. package/dist/graphs/build-graph-directory.d.ts +28 -0
  36. package/dist/graphs/build-graph-directory.d.ts.map +1 -0
  37. package/dist/graphs/build-graph-directory.js +253 -0
  38. package/dist/graphs/build-graph-directory.js.map +1 -0
  39. package/dist/graphs/build-graph-document.d.ts +13 -0
  40. package/dist/graphs/build-graph-document.d.ts.map +1 -0
  41. package/dist/graphs/build-graph-document.js +480 -0
  42. package/dist/graphs/build-graph-document.js.map +1 -0
  43. package/dist/graphs/fallback-graph-capabilities.d.ts +11 -0
  44. package/dist/graphs/fallback-graph-capabilities.d.ts.map +1 -0
  45. package/dist/graphs/fallback-graph-capabilities.js +243 -0
  46. package/dist/graphs/fallback-graph-capabilities.js.map +1 -0
  47. package/dist/graphs/index.d.ts +8 -0
  48. package/dist/graphs/index.d.ts.map +1 -0
  49. package/dist/graphs/index.js +7 -0
  50. package/dist/graphs/index.js.map +1 -0
  51. package/dist/graphs/infer-graph-descriptor.d.ts +17 -0
  52. package/dist/graphs/infer-graph-descriptor.d.ts.map +1 -0
  53. package/dist/graphs/infer-graph-descriptor.js +234 -0
  54. package/dist/graphs/infer-graph-descriptor.js.map +1 -0
  55. package/dist/graphs/load-graph-descriptor.d.ts +22 -0
  56. package/dist/graphs/load-graph-descriptor.d.ts.map +1 -0
  57. package/dist/graphs/load-graph-descriptor.js +97 -0
  58. package/dist/graphs/load-graph-descriptor.js.map +1 -0
  59. package/dist/graphs/record-access.d.ts +18 -0
  60. package/dist/graphs/record-access.d.ts.map +1 -0
  61. package/dist/graphs/record-access.js +142 -0
  62. package/dist/graphs/record-access.js.map +1 -0
  63. package/dist/graphs/types.d.ts +70 -0
  64. package/dist/graphs/types.d.ts.map +1 -0
  65. package/dist/graphs/types.js +17 -0
  66. package/dist/graphs/types.js.map +1 -0
  67. package/dist/index.d.ts +2 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +2 -1
  70. package/dist/index.js.map +1 -1
  71. package/dist/retrieval/fetch-list.d.ts.map +1 -1
  72. package/dist/retrieval/fetch-list.js +3 -1
  73. package/dist/retrieval/fetch-list.js.map +1 -1
  74. package/dist/retrieval/resolve-fields.d.ts.map +1 -1
  75. package/dist/retrieval/resolve-fields.js +7 -1
  76. package/dist/retrieval/resolve-fields.js.map +1 -1
  77. package/dist/retrieval/resolve-filters.d.ts +9 -1
  78. package/dist/retrieval/resolve-filters.d.ts.map +1 -1
  79. package/dist/retrieval/resolve-filters.js +17 -1
  80. package/dist/retrieval/resolve-filters.js.map +1 -1
  81. package/dist/retrieval/resolve-list-analytics.d.ts +2 -2
  82. package/dist/retrieval/resolve-list-analytics.d.ts.map +1 -1
  83. package/dist/retrieval/resolve-list-analytics.js.map +1 -1
  84. package/dist/retrieval/resolve-property-source.d.ts.map +1 -1
  85. package/dist/retrieval/resolve-property-source.js +10 -3
  86. package/dist/retrieval/resolve-property-source.js.map +1 -1
  87. package/dist/seeds/default-seed-spec.d.ts.map +1 -1
  88. package/dist/seeds/default-seed-spec.js +22 -1
  89. package/dist/seeds/default-seed-spec.js.map +1 -1
  90. package/dist/tests/fetch-list.test.js +28 -0
  91. package/dist/tests/fetch-list.test.js.map +1 -1
  92. package/dist/tests/graphs.test.d.ts +2 -0
  93. package/dist/tests/graphs.test.d.ts.map +1 -0
  94. package/dist/tests/graphs.test.js +202 -0
  95. package/dist/tests/graphs.test.js.map +1 -0
  96. package/dist/tests/identity.test.js +13 -1
  97. package/dist/tests/identity.test.js.map +1 -1
  98. package/dist/tests/infer-graph.test.d.ts +2 -0
  99. package/dist/tests/infer-graph.test.d.ts.map +1 -0
  100. package/dist/tests/infer-graph.test.js +19 -0
  101. package/dist/tests/infer-graph.test.js.map +1 -0
  102. package/dist/tests/resolve-filters.test.js +23 -1
  103. package/dist/tests/resolve-filters.test.js.map +1 -1
  104. package/package.json +10 -1
@@ -14,6 +14,16 @@
14
14
  "titleField": "entityName"
15
15
  }
16
16
  },
17
+ {
18
+ "catalogId": "memorix-graph-descriptors",
19
+ "name": "Memorix graph descriptors",
20
+ "catalogType": "memorix",
21
+ "sourceMode": "native",
22
+ "native": {
23
+ "itemIdField": "id",
24
+ "titleField": "title"
25
+ }
26
+ },
17
27
  {
18
28
  "catalogId": "lists",
19
29
  "name": "Memorix list descriptors",
@@ -93,6 +103,63 @@
93
103
  }
94
104
  }
95
105
  },
106
+ {
107
+ "catalogId": "memorix-graph-descriptors",
108
+ "descriptorVersion": "1",
109
+ "mode": "replace",
110
+ "descriptor": {
111
+ "catalogId": "memorix-graph-descriptors",
112
+ "label": "Memorix graph descriptors",
113
+ "sourceMode": "native",
114
+ "status": "active",
115
+ "capabilities": {
116
+ "canList": true,
117
+ "canGet": true,
118
+ "canCreate": true,
119
+ "canEdit": true,
120
+ "canDelete": true,
121
+ "canImport": true,
122
+ "canExport": true,
123
+ "canSync": false,
124
+ "canValidate": true,
125
+ "canViewReferences": true
126
+ },
127
+ "queryableFields": [
128
+ {
129
+ "key": "id",
130
+ "label": "Id",
131
+ "type": "string",
132
+ "indexed": true,
133
+ "filterable": true,
134
+ "listVisible": true,
135
+ "detailVisible": true
136
+ },
137
+ {
138
+ "key": "title",
139
+ "label": "Title",
140
+ "type": "string",
141
+ "indexed": true,
142
+ "filterable": true,
143
+ "listVisible": true,
144
+ "detailVisible": true
145
+ },
146
+ {
147
+ "key": "focusObjectType",
148
+ "label": "Focus object type",
149
+ "type": "string",
150
+ "indexed": true,
151
+ "filterable": true,
152
+ "listVisible": true,
153
+ "detailVisible": true
154
+ }
155
+ ],
156
+ "identity": {
157
+ "itemIdStrategy": "natural",
158
+ "itemIdField": "id",
159
+ "titleField": "title"
160
+ }
161
+ }
162
+ },
96
163
  {
97
164
  "catalogId": "lists",
98
165
  "descriptorVersion": "1",
@@ -217,6 +284,14 @@
217
284
  "canWrite": true
218
285
  }
219
286
  },
287
+ {
288
+ "appId": "memorix",
289
+ "catalogId": "memorix-graph-descriptors",
290
+ "access": {
291
+ "canRead": true,
292
+ "canWrite": true
293
+ }
294
+ },
220
295
  {
221
296
  "appId": "memorix",
222
297
  "catalogId": "lists",
@@ -329,6 +404,32 @@
329
404
  "item": true,
330
405
  "valueType": "array"
331
406
  },
407
+ "subnetCidr": {
408
+ "label": "Subnet CIDR",
409
+ "source": {
410
+ "contentType": "snapshots",
411
+ "path": "data.subnetCidrs.0"
412
+ },
413
+ "humanReadable": true,
414
+ "sortable": true,
415
+ "filterable": true,
416
+ "list": true,
417
+ "item": true,
418
+ "valueType": "string"
419
+ },
420
+ "subnetIp": {
421
+ "label": "Subnet IP",
422
+ "source": {
423
+ "contentType": "snapshots",
424
+ "path": "data.subnets.0.networkAddress"
425
+ },
426
+ "humanReadable": true,
427
+ "sortable": true,
428
+ "filterable": true,
429
+ "list": true,
430
+ "item": true,
431
+ "valueType": "string"
432
+ },
332
433
  "subnets": {
333
434
  "label": "Resolved Subnets",
334
435
  "source": {
@@ -727,6 +828,58 @@
727
828
  "list": true,
728
829
  "item": true,
729
830
  "valueType": "number"
831
+ },
832
+ "impactDecisionLabel": {
833
+ "label": "Impact Decision",
834
+ "source": {
835
+ "contentType": "decisions",
836
+ "path": "data.impactDecision.decision"
837
+ },
838
+ "humanReadable": true,
839
+ "sortable": true,
840
+ "filterable": true,
841
+ "list": true,
842
+ "item": true,
843
+ "valueType": "string"
844
+ },
845
+ "impactDecisionStatus": {
846
+ "label": "Impact Decision Status",
847
+ "source": {
848
+ "contentType": "decisions",
849
+ "path": "data.impactDecision.status"
850
+ },
851
+ "humanReadable": true,
852
+ "sortable": true,
853
+ "filterable": true,
854
+ "list": true,
855
+ "item": true,
856
+ "valueType": "string"
857
+ },
858
+ "impactDecisionRiskScore": {
859
+ "label": "Impact Decision Score",
860
+ "source": {
861
+ "contentType": "decisions",
862
+ "path": "data.impactDecision.riskScore"
863
+ },
864
+ "humanReadable": true,
865
+ "sortable": true,
866
+ "filterable": true,
867
+ "list": true,
868
+ "item": true,
869
+ "valueType": "number"
870
+ },
871
+ "impactDecisionUrgencyScore": {
872
+ "label": "Impact Urgency Score",
873
+ "source": {
874
+ "contentType": "decisions",
875
+ "path": "data.impactDecision.urgencyScore"
876
+ },
877
+ "humanReadable": true,
878
+ "sortable": true,
879
+ "filterable": true,
880
+ "list": true,
881
+ "item": true,
882
+ "valueType": "number"
730
883
  }
731
884
  },
732
885
  "associatedProperties": [
@@ -1058,6 +1211,136 @@
1058
1211
  "targetObjectType": "vulnerabilities"
1059
1212
  }
1060
1213
  },
1214
+ "graph": {
1215
+ "node": {
1216
+ "kind": "ipAddress",
1217
+ "directoryFields": [
1218
+ "ipAddress",
1219
+ "hostType",
1220
+ "zones"
1221
+ ],
1222
+ "contentLenses": [
1223
+ "snapshot",
1224
+ "analysis",
1225
+ "decisions"
1226
+ ],
1227
+ "ui": {
1228
+ "icon": "server"
1229
+ }
1230
+ },
1231
+ "edgeTemplates": [
1232
+ {
1233
+ "id": "asset-topology-associated",
1234
+ "source": {
1235
+ "kind": "associatedArray",
1236
+ "key": "associatedTopology"
1237
+ },
1238
+ "edges": [
1239
+ {
1240
+ "type": "containedIn",
1241
+ "from": {
1242
+ "source": "concept"
1243
+ },
1244
+ "to": {
1245
+ "source": "itemField",
1246
+ "field": "cidr",
1247
+ "kind": "cidr"
1248
+ },
1249
+ "toObjectType": "subnets",
1250
+ "toKind": "cidr",
1251
+ "when": {
1252
+ "itemFieldExists": "cidr"
1253
+ }
1254
+ },
1255
+ {
1256
+ "type": "inZone",
1257
+ "from": {
1258
+ "source": "itemField",
1259
+ "field": "cidr",
1260
+ "kind": "cidr"
1261
+ },
1262
+ "to": {
1263
+ "source": "itemField",
1264
+ "field": "zone",
1265
+ "kind": "zoneName"
1266
+ },
1267
+ "toObjectType": "topology-zones",
1268
+ "toKind": "zoneName",
1269
+ "when": {
1270
+ "itemFieldExists": "zone"
1271
+ }
1272
+ },
1273
+ {
1274
+ "type": "reachableFrom",
1275
+ "from": {
1276
+ "source": "itemArrayField",
1277
+ "field": "reachableFromZones",
1278
+ "kind": "zoneName"
1279
+ },
1280
+ "to": {
1281
+ "source": "itemField",
1282
+ "field": "zone",
1283
+ "kind": "zoneName"
1284
+ },
1285
+ "toObjectType": "topology-zones",
1286
+ "toKind": "zoneName",
1287
+ "when": {
1288
+ "itemFieldExists": "zone"
1289
+ }
1290
+ },
1291
+ {
1292
+ "type": "pathBridge",
1293
+ "from": {
1294
+ "source": "literal",
1295
+ "kind": "zoneName",
1296
+ "value": "OUTSIDE"
1297
+ },
1298
+ "to": {
1299
+ "source": "itemField",
1300
+ "field": "zone",
1301
+ "kind": "zoneName"
1302
+ },
1303
+ "toObjectType": "topology-zones",
1304
+ "toKind": "zoneName",
1305
+ "synthesizePath": {
1306
+ "titleTemplate": "{from} → {to}"
1307
+ },
1308
+ "when": {
1309
+ "itemFieldExists": "zone",
1310
+ "itemArrayIncludes": {
1311
+ "field": "reachableFromZones",
1312
+ "value": "OUTSIDE"
1313
+ }
1314
+ }
1315
+ }
1316
+ ]
1317
+ },
1318
+ {
1319
+ "id": "asset-vulnerabilities-by-ip",
1320
+ "source": {
1321
+ "kind": "queryByField",
1322
+ "objectType": "vulnerabilities",
1323
+ "sourcePath": "data.assetIp",
1324
+ "targetPath": "data.assetIp",
1325
+ "limit": 50
1326
+ },
1327
+ "edges": [
1328
+ {
1329
+ "type": "affectsAsset",
1330
+ "from": {
1331
+ "source": "relatedConcept"
1332
+ },
1333
+ "to": {
1334
+ "source": "concept"
1335
+ },
1336
+ "toObjectType": "vulnerabilities",
1337
+ "toKind": "hostVulnerability",
1338
+ "neighbor": "from"
1339
+ }
1340
+ ]
1341
+ }
1342
+ ]
1343
+ },
1061
1344
  "schemaVersion": "memorix.objectTypeDescriptor.v2",
1062
1345
  "objectType": "assets"
1063
1346
  }
@@ -1657,10 +1940,163 @@
1657
1940
  }
1658
1941
  },
1659
1942
  "relations": {},
1943
+ "graph": {
1944
+ "node": {
1945
+ "kind": "cidr",
1946
+ "directoryFields": [
1947
+ "cidr",
1948
+ "zone"
1949
+ ],
1950
+ "contentLenses": [
1951
+ "snapshot",
1952
+ "analysis"
1953
+ ],
1954
+ "ui": {
1955
+ "icon": "network"
1956
+ }
1957
+ },
1958
+ "edgeTemplates": [
1959
+ {
1960
+ "id": "subnet-path-facts",
1961
+ "source": {
1962
+ "kind": "pathFacts",
1963
+ "key": "possiblePaths"
1964
+ },
1965
+ "edges": []
1966
+ }
1967
+ ]
1968
+ },
1660
1969
  "schemaVersion": "memorix.objectTypeDescriptor.v2",
1661
1970
  "objectType": "subnets"
1662
1971
  }
1663
1972
  },
1973
+ {
1974
+ "catalogId": "memorix-object-type-descriptors",
1975
+ "scope": {
1976
+ "domains": [
1977
+ "network",
1978
+ "vulnerabilities"
1979
+ ],
1980
+ "agents": [
1981
+ "neo"
1982
+ ]
1983
+ },
1984
+ "data": {
1985
+ "id": "topology-zones",
1986
+ "defaultListDescriptorId": "topology-zones-main-list",
1987
+ "defaultItemDescriptorId": "topology-zone-detail-item",
1988
+ "target": "entity",
1989
+ "collectionPrefix": "topology-zones",
1990
+ "identity": {
1991
+ "allowedIdFields": [
1992
+ "recordId"
1993
+ ],
1994
+ "requiredExactlyOne": true,
1995
+ "defaultIdField": "recordId",
1996
+ "conceptIdentifier": {
1997
+ "kind": "zoneName",
1998
+ "path": "concept.identifier.zoneName"
1999
+ }
2000
+ },
2001
+ "defaults": {
2002
+ "canonicalContentType": "snapshots",
2003
+ "dataRoot": "data",
2004
+ "effectiveDatePath": "capturedAt",
2005
+ "fallbackEffectiveDatePaths": []
2006
+ },
2007
+ "contentTypes": {
2008
+ "snapshots": {
2009
+ "postfix": "snapshots",
2010
+ "collection": "topology-zones-snapshots",
2011
+ "isCanonical": true
2012
+ },
2013
+ "analysis": {
2014
+ "postfix": "analysis",
2015
+ "collection": "topology-zones-analysis",
2016
+ "isCanonical": false
2017
+ },
2018
+ "core": {
2019
+ "postfix": "core",
2020
+ "collection": "topology-zones-core",
2021
+ "isCanonical": false
2022
+ }
2023
+ },
2024
+ "properties": {
2025
+ "name": {
2026
+ "label": "Zone Name",
2027
+ "source": {
2028
+ "contentType": "snapshots",
2029
+ "path": "data.name"
2030
+ },
2031
+ "humanReadable": true,
2032
+ "sortable": true,
2033
+ "filterable": true,
2034
+ "list": true,
2035
+ "item": true,
2036
+ "valueType": "string"
2037
+ },
2038
+ "zoneClass": {
2039
+ "label": "Zone Class",
2040
+ "source": {
2041
+ "contentType": "snapshots",
2042
+ "path": "data.zoneClass"
2043
+ },
2044
+ "humanReadable": true,
2045
+ "sortable": true,
2046
+ "filterable": true,
2047
+ "list": true,
2048
+ "item": true,
2049
+ "valueType": "string"
2050
+ },
2051
+ "apparentRole": {
2052
+ "label": "Apparent Role",
2053
+ "source": {
2054
+ "contentType": "analysis",
2055
+ "path": "data.apparentRole"
2056
+ },
2057
+ "humanReadable": true,
2058
+ "sortable": false,
2059
+ "filterable": true,
2060
+ "list": false,
2061
+ "item": true,
2062
+ "valueType": "string"
2063
+ },
2064
+ "shortAnalysis": {
2065
+ "label": "Short Analysis",
2066
+ "source": {
2067
+ "contentType": "analysis",
2068
+ "path": "data.shortAnalysis"
2069
+ },
2070
+ "humanReadable": true,
2071
+ "sortable": false,
2072
+ "filterable": false,
2073
+ "list": false,
2074
+ "item": true,
2075
+ "valueType": "string"
2076
+ }
2077
+ },
2078
+ "associatedProperties": [],
2079
+ "processing": {},
2080
+ "relations": {},
2081
+ "graph": {
2082
+ "node": {
2083
+ "kind": "zoneName",
2084
+ "directoryFields": [
2085
+ "name"
2086
+ ],
2087
+ "contentLenses": [
2088
+ "snapshot",
2089
+ "analysis"
2090
+ ],
2091
+ "ui": {
2092
+ "icon": "shield"
2093
+ }
2094
+ }
2095
+ },
2096
+ "schemaVersion": "memorix.objectTypeDescriptor.v2",
2097
+ "objectType": "topology-zones"
2098
+ }
2099
+ },
1664
2100
  {
1665
2101
  "catalogId": "memorix-object-type-descriptors",
1666
2102
  "scope": {
@@ -2136,8 +2572,8 @@
2136
2572
  "contentType": "analysis",
2137
2573
  "path": "data.impact"
2138
2574
  },
2139
- "humanReadable": false,
2140
- "list": false,
2575
+ "humanReadable": true,
2576
+ "list": true,
2141
2577
  "item": true,
2142
2578
  "valueType": "object"
2143
2579
  },
@@ -2181,6 +2617,8 @@
2181
2617
  "path": "data.exploitability.exploitability"
2182
2618
  },
2183
2619
  "humanReadable": true,
2620
+ "sortable": true,
2621
+ "filterable": true,
2184
2622
  "list": true,
2185
2623
  "item": true,
2186
2624
  "valueType": "string"
@@ -2425,14 +2863,14 @@
2425
2863
  "displayName": "Vulnerability",
2426
2864
  "description": "Security-impacting scanner result (severity low/medium/high/critical).",
2427
2865
  "kind": "product-narrative",
2428
- "visibility": "user"
2866
+ "visibility": "internal"
2429
2867
  },
2430
2868
  "is-finding": {
2431
2869
  "label": "Is finding",
2432
2870
  "displayName": "Informational finding",
2433
2871
  "description": "Informational scanner result (severity none/unknown).",
2434
2872
  "kind": "product-narrative",
2435
- "visibility": "user"
2873
+ "visibility": "internal"
2436
2874
  },
2437
2875
  "has-analysis": {
2438
2876
  "label": "Has analysis",
@@ -2468,7 +2906,7 @@
2468
2906
  "label": "Has triage decision",
2469
2907
  "displayName": "Triaged",
2470
2908
  "kind": "rollup",
2471
- "visibility": "user"
2909
+ "visibility": "internal"
2472
2910
  },
2473
2911
  "has-breach-vector": {
2474
2912
  "label": "Breach vector",
@@ -2563,6 +3001,75 @@
2563
3001
  "targetObjectType": "vulnerabilities-groups"
2564
3002
  }
2565
3003
  },
3004
+ "graph": {
3005
+ "node": {
3006
+ "kind": "hostVulnerability",
3007
+ "directoryFields": [
3008
+ "assetIp",
3009
+ "severity",
3010
+ "vulnerabilityName"
3011
+ ],
3012
+ "contentLenses": [
3013
+ "snapshot",
3014
+ "discovery",
3015
+ "analysis",
3016
+ "decisions"
3017
+ ],
3018
+ "ui": {
3019
+ "icon": "alert-triangle"
3020
+ }
3021
+ },
3022
+ "edgeTemplates": [
3023
+ {
3024
+ "id": "vuln-in-group",
3025
+ "source": {
3026
+ "kind": "queryByField",
3027
+ "objectType": "vulnerabilities-groups",
3028
+ "sourcePath": "data.vulnerabilityName",
3029
+ "targetPath": "data.name",
3030
+ "limit": 5
3031
+ },
3032
+ "edges": [
3033
+ {
3034
+ "type": "inGroup",
3035
+ "from": {
3036
+ "source": "concept"
3037
+ },
3038
+ "to": {
3039
+ "source": "relatedConcept"
3040
+ },
3041
+ "toObjectType": "vulnerabilities-groups",
3042
+ "toKind": "pluginId",
3043
+ "neighbor": "to"
3044
+ }
3045
+ ]
3046
+ },
3047
+ {
3048
+ "id": "vuln-group-by-plugin",
3049
+ "source": {
3050
+ "kind": "queryByField",
3051
+ "objectType": "vulnerabilities-groups",
3052
+ "sourcePath": "data.pluginId",
3053
+ "targetPath": "data.pluginId",
3054
+ "limit": 5
3055
+ },
3056
+ "edges": [
3057
+ {
3058
+ "type": "inGroup",
3059
+ "from": {
3060
+ "source": "concept"
3061
+ },
3062
+ "to": {
3063
+ "source": "relatedConcept"
3064
+ },
3065
+ "toObjectType": "vulnerabilities-groups",
3066
+ "toKind": "pluginId",
3067
+ "neighbor": "to"
3068
+ }
3069
+ ]
3070
+ }
3071
+ ]
3072
+ },
2566
3073
  "schemaVersion": "memorix.objectTypeDescriptor.v2",
2567
3074
  "objectType": "vulnerabilities"
2568
3075
  }
@@ -2906,8 +3413,8 @@
2906
3413
  "contentType": "analysis",
2907
3414
  "path": "data.impact"
2908
3415
  },
2909
- "humanReadable": false,
2910
- "list": false,
3416
+ "humanReadable": true,
3417
+ "list": true,
2911
3418
  "item": true,
2912
3419
  "valueType": "object"
2913
3420
  },
@@ -3002,6 +3509,24 @@
3002
3509
  "targetObjectType": "vulnerabilities"
3003
3510
  }
3004
3511
  },
3512
+ "graph": {
3513
+ "node": {
3514
+ "kind": "pluginId",
3515
+ "directoryFields": [
3516
+ "name",
3517
+ "severity",
3518
+ "pluginId",
3519
+ "cveId"
3520
+ ],
3521
+ "contentLenses": [
3522
+ "snapshot",
3523
+ "analysis"
3524
+ ],
3525
+ "ui": {
3526
+ "icon": "bug"
3527
+ }
3528
+ }
3529
+ },
3005
3530
  "schemaVersion": "memorix.objectTypeDescriptor.v2",
3006
3531
  "objectType": "vulnerabilities-groups"
3007
3532
  }
@@ -3213,6 +3738,169 @@
3213
3738
  "objectType": "content-documents"
3214
3739
  }
3215
3740
  },
3741
+ {
3742
+ "catalogId": "memorix-graph-descriptors",
3743
+ "scope": {
3744
+ "domains": [
3745
+ "network",
3746
+ "vulnerabilities"
3747
+ ],
3748
+ "agents": [
3749
+ "neo"
3750
+ ]
3751
+ },
3752
+ "data": {
3753
+ "id": "asset-topology-vulnerabilities-graph",
3754
+ "title": "Asset topology & vulnerabilities",
3755
+ "focusObjectType": "assets",
3756
+ "maxDepth": 2,
3757
+ "includeEdgeTemplates": [
3758
+ "asset-topology-associated",
3759
+ "asset-vulnerabilities-by-ip",
3760
+ "vuln-in-group",
3761
+ "vuln-group-by-plugin"
3762
+ ],
3763
+ "tiers": [
3764
+ {
3765
+ "id": "topology",
3766
+ "label": "Topology",
3767
+ "objectTypes": [
3768
+ "assets",
3769
+ "subnets",
3770
+ "topology-zones"
3771
+ ]
3772
+ },
3773
+ {
3774
+ "id": "vulnerabilities",
3775
+ "label": "Vulnerabilities",
3776
+ "objectTypes": [
3777
+ "vulnerabilities",
3778
+ "vulnerabilities-groups"
3779
+ ]
3780
+ }
3781
+ ],
3782
+ "nodes": [
3783
+ {
3784
+ "objectType": "assets",
3785
+ "tier": "topology"
3786
+ },
3787
+ {
3788
+ "objectType": "subnets",
3789
+ "tier": "topology"
3790
+ },
3791
+ {
3792
+ "objectType": "topology-zones",
3793
+ "tier": "topology"
3794
+ },
3795
+ {
3796
+ "objectType": "vulnerabilities-groups",
3797
+ "tier": "vulnerabilities"
3798
+ },
3799
+ {
3800
+ "objectType": "vulnerabilities",
3801
+ "tier": "vulnerabilities"
3802
+ }
3803
+ ],
3804
+ "directory": {
3805
+ "defaultObjectTypes": [
3806
+ "assets",
3807
+ "subnets",
3808
+ "topology-zones",
3809
+ "vulnerabilities",
3810
+ "vulnerabilities-groups"
3811
+ ],
3812
+ "searchFields": [
3813
+ "title",
3814
+ "identifierKey"
3815
+ ],
3816
+ "narrativeFiltersByObjectType": {
3817
+ "assets": [
3818
+ {
3819
+ "key": "has-vulnerabilities",
3820
+ "label": "Has vulnerabilities"
3821
+ },
3822
+ {
3823
+ "key": "has-no-vulnerabilities",
3824
+ "label": "No vulnerabilities"
3825
+ },
3826
+ {
3827
+ "key": "is-triaged",
3828
+ "label": "Is triaged"
3829
+ },
3830
+ {
3831
+ "key": "has-lateral-movement-risk",
3832
+ "label": "Lateral movement risk"
3833
+ },
3834
+ {
3835
+ "key": "has-critical-predicted-impact",
3836
+ "label": "Critical predicted impact"
3837
+ },
3838
+ {
3839
+ "key": "has-high-or-critical-exploitability",
3840
+ "label": "High or critical exploitability"
3841
+ }
3842
+ ],
3843
+ "vulnerabilities": [
3844
+ {
3845
+ "key": "has-critical-severity",
3846
+ "label": "Critical severity"
3847
+ },
3848
+ {
3849
+ "key": "has-high-severity",
3850
+ "label": "High severity"
3851
+ },
3852
+ {
3853
+ "key": "has-medium-severity",
3854
+ "label": "Medium severity"
3855
+ },
3856
+ {
3857
+ "key": "has-breach-vector",
3858
+ "label": "Breach vector"
3859
+ }
3860
+ ],
3861
+ "vulnerabilities-groups": [
3862
+ {
3863
+ "key": "has-critical-severity",
3864
+ "label": "Critical severity"
3865
+ },
3866
+ {
3867
+ "key": "has-high-severity",
3868
+ "label": "High severity"
3869
+ },
3870
+ {
3871
+ "key": "has-medium-severity",
3872
+ "label": "Medium severity"
3873
+ },
3874
+ {
3875
+ "key": "has-low-severity",
3876
+ "label": "Low severity"
3877
+ }
3878
+ ],
3879
+ "subnets": [
3880
+ {
3881
+ "key": "has-assets",
3882
+ "label": "Has assets"
3883
+ },
3884
+ {
3885
+ "key": "has-possible-paths",
3886
+ "label": "Has possible paths"
3887
+ }
3888
+ ],
3889
+ "topology-zones": [
3890
+ {
3891
+ "key": "has-analysis",
3892
+ "label": "Has analysis"
3893
+ }
3894
+ ]
3895
+ }
3896
+ },
3897
+ "ui": {
3898
+ "icon": "network",
3899
+ "group": "network",
3900
+ "order": 10
3901
+ }
3902
+ }
3903
+ },
3216
3904
  {
3217
3905
  "catalogId": "lists",
3218
3906
  "scope": {
@@ -3480,6 +4168,8 @@
3480
4168
  },
3481
4169
  "filters": [],
3482
4170
  "fields": [
4171
+ "ipAddress",
4172
+ "hostName",
3483
4173
  "decisionOverviewSummary",
3484
4174
  "decisionOverviewDetailedAnalysis",
3485
4175
  "decisionLabel",
@@ -3490,6 +4180,8 @@
3490
4180
  "extensions": [],
3491
4181
  "includeRelations": [],
3492
4182
  "allowedSorts": [
4183
+ "ipAddress",
4184
+ "hostName",
3493
4185
  "decisionRiskScore",
3494
4186
  "decisionUrgencyScore",
3495
4187
  "decisionStatus",
@@ -3525,21 +4217,29 @@
3525
4217
  },
3526
4218
  "filters": [],
3527
4219
  "fields": [
4220
+ "ipAddress",
4221
+ "hostName",
4222
+ "potentialImpactLevel",
4223
+ "potentialImpactConfidence",
4224
+ "impactDecisionLabel",
4225
+ "impactDecisionStatus",
4226
+ "impactDecisionRiskScore",
4227
+ "impactDecisionUrgencyScore",
3528
4228
  "decisionOverviewSummary",
3529
- "decisionOverviewDetailedAnalysis",
3530
- "decisionLabel",
3531
- "decisionStatus",
3532
- "decisionRiskScore"
4229
+ "decisionOverviewDetailedAnalysis"
3533
4230
  ],
3534
4231
  "extensions": [],
3535
4232
  "includeRelations": [],
3536
4233
  "allowedSorts": [
3537
- "decisionRiskScore",
3538
- "decisionStatus",
3539
- "decisionLabel"
4234
+ "ipAddress",
4235
+ "hostName",
4236
+ "impactDecisionRiskScore",
4237
+ "impactDecisionStatus",
4238
+ "impactDecisionLabel",
4239
+ "potentialImpactLevel"
3540
4240
  ],
3541
4241
  "defaultSort": {
3542
- "property": "decisionRiskScore",
4242
+ "property": "impactDecisionRiskScore",
3543
4243
  "direction": "desc"
3544
4244
  },
3545
4245
  "allowSortDrivenLeadingOverride": false