You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/main/mal/coreLang.mal
+51-81Lines changed: 51 additions & 81 deletions
Original file line number
Diff line number
Diff line change
@@ -65,10 +65,8 @@ category ComputeResources {
65
65
| fullAccess {C,I,A}
66
66
user info: "Full access on a system allows the compromise or legitimate access on everything/all the privillges of the system: identities, applications, data, etc."
67
67
-> sysExecutedApps.fullAccess,
68
-
highPrivSysIds.assume,
69
-
lowPrivSysIds.assume,
70
-
highPrivSysGroups.compromiseGroup,
71
-
lowPrivSysGroups.compromiseGroup,
68
+
highPrivSysIAMs.attemptAssume,
69
+
lowPrivSysIAMs.attemptAssume,
72
70
sysData.attemptAccess
73
71
74
72
& specificAccess
@@ -293,8 +291,7 @@ category ComputeResources {
293
291
modify,
294
292
deny,
295
293
appExecutedApps.fullAccess, // Gain access on all applications executed by this (host) application
296
-
executionPrivIds.assume, // Assume also the execution privilege identities of this application
297
-
executionPrivGroups.compromiseGroup,
294
+
executionPrivIAMs.attemptAssume, // Assume also the execution privilege identities of this application
298
295
containedData.attemptAccess, // and access on all the contained data
299
296
sentData.attemptRead, // Both Data sent and received can be read
300
297
receivedData.attemptRead,
@@ -743,78 +740,70 @@ category DataResources {
743
740
744
741
category IAM {
745
742
746
-
asset Identity
747
-
user info: "An identity models an IAM identity that should then be associated with privileges on other instances."
748
-
developer info: "An identity can be visualised as a group of assumable roles that can be associated with many credentials."
743
+
abstract asset IAMObject
744
+
user info: "An IAM object represents the base logic shared by all assets used for Identity and Access Management roles(Identity, Group, Privileges)."
749
745
{
750
746
# disabled [Disabled]
751
-
user info: "It should be used to model the probability that the identity is actually not existing."
747
+
user info: "It should be used to model the probability that the IAM object does not actually exist."
752
748
-> successfulAssume
753
749
754
750
| attemptAssume
755
-
user info: "Attempt to assume the identity."
751
+
user info: "Attempt to assume the privileges associated with the IAM object. If disabled this will not be possible."
756
752
-> successfulAssume
757
753
758
754
& successfulAssume @hidden
759
-
developer info: "Intermediate attack step to model the requirements for identity assume."
755
+
developer info: "Intermediate attack step to model the requirements for the assume attack step."
760
756
-> assume
761
757
762
-
| assume {C,I,A}
763
-
user info: "After authentication or compromise of an account/identity, assume its privileges."
764
-
developer info: "This is both legitimate and illegitimate access! Also assume all the privileges of the parent identities (on the above level/inherited by this identity) because those represent the group of (inherited) roles."
user info: "When an attacker is able to assume an IAM asset the privileges associated with it can always be exploited, other behaviour is asset specific."
user info: "A privileges asset can be associated with an identity to group a set of given privileges on Applications and Data."
771
+
asset Identity extends IAMObject
772
+
user info: "An identity models an IAM identity that should then be associated with privileges on other instances."
773
+
developer info: "An identity can be visualised as a group of assumable roles that can be associated with many credentials."
780
774
{
781
-
# disabled [Disabled]
782
-
user info: "It should be used to model the probability that the set of privileges is actually not existing."
783
-
-> assume
784
-
785
-
| attemptAssume
786
-
user info: "Attempt to assume the privileges. If disabled this will not be possible."
787
-
-> assume
775
+
| assume @Override {C,I,A}
776
+
user info: "After authentication or compromise of an account/identity, assume its privileges."
777
+
developer info: "This is both legitimate and illegitimate access! Also assume all the privileges of the parent identities (on the above level/inherited by this identity) because those represent the group of (inherited) roles."
778
+
+> parentId.attemptAssume,
779
+
memberOf.attemptAssume,
780
+
identityPrivileges.attemptAssume
781
+
}
788
782
789
-
& assume
790
-
-> execPrivApps.authenticate,
791
-
highPrivApps.authenticate,
792
-
lowPrivApps.specificAccessAuthenticate,
793
-
readPrivData.identityAttemptRead,
794
-
writePrivData.identityAttemptWrite,
795
-
deletePrivData.identityAttemptDelete
783
+
asset Privileges extends IAMObject
784
+
user info: "A privileges asset can be associated with an identity to group a set of given privileges on Applications and Data."
785
+
{
786
+
| assume @Override {C,I,A}
787
+
user info: "After authentication or compromise of an account/identity, assume its privileges."
788
+
developer info: "Assume identity/group the privileges are associated with since the privileges are simply an extension of it."
789
+
+> privilegeIdentities.attemptAssume,
790
+
privilegeGroups.attemptAssume
796
791
}
797
792
798
-
asset Group
793
+
asset Group extends IAMObject
799
794
user info: "A group is a way to group together identities and/or groups. This allows the expression of hierarchical IAM (structured inheritance)."
800
795
modeler info: "Groups can be used instead of nested identities to make the model more intuitive and clearer to understand."
801
796
{
802
-
| compromiseGroup {C}
797
+
| assume @Override {C,I,A}
803
798
user info: "If an identity of a group is compromised then the whole group (i.e. all other privileges of the group) should be considered as compromised. Furthermore, the parent groups should also be considered compromised."
804
799
developer info: "The parent groups should be compromised because all the privileges of the parent groups are inherited on the children groups but lower children groups should not be compromised because lower levels might have inherited plus additional privileges."
user info: "Every application executes on a system with privileges of a specified identity on the system. If the application is compromised then the privileges should be compromised."
user info: "High privilege application access on an Application results in the (full) access/compromise of the application and all the child applications."
user info: "Low privilege application access on an Application allows only the local interaction with the application and all the specified privileges."
1284
-
// And the same for Groups
1285
-
Group [executionPrivGroups] * <-- ExecutionPrivilegeAccess --> * [execPrivApps] Application
1286
-
user info: "An application can execute on a system with privileges of a specified group. If the application is compromised then the group privileges should be compromised."
1287
-
Group [highPrivAppGroups] * <-- HighPrivilegeApplicationAccess --> * [highPrivApps] Application
1288
-
user info: "High privilege application access on an Application results in the compromise of all the child applications."
1289
-
Group [lowPrivAppGroups] * <-- LowPrivilegeApplicationAccess --> * [lowPrivApps] Application
1290
-
user info: "Low privilege application access on an Application allows only the local interaction with the application."
1291
1268
// Finally, Access control on data
1292
-
Identity [readingIds] * <-- ReadPrivileges --> * [readPrivData] Data
1293
-
Identity [writingIds] * <-- WritePrivileges --> * [writePrivData] Data
1294
-
Identity [deletingIds] * <-- DeletePrivileges --> * [deletePrivData] Data
1295
-
// And again for Groups
1296
-
Group [readingGroups] * <-- ReadPrivileges --> * [readPrivData] Data
1297
-
Group [writingGroups] * <-- WritePrivileges --> * [writePrivData] Data
1298
-
Group [deletingGroups] * <-- DeletePrivileges --> * [deletePrivData] Data
1269
+
IAMObject [readingIAMs] * <-- ReadPrivileges --> * [readPrivData] Data
1270
+
IAMObject [writingIAMs] * <-- WritePrivileges --> * [writePrivData] Data
1271
+
IAMObject [deletingIAMs] * <-- DeletePrivileges --> * [deletePrivData] Data
0 commit comments