Releases: mal-lang/coreLang
Version 1.0.0
Version 0.8.0
This is meant to be the last pre-release version of coreLang, unless something unpredictable occurs.
All of the changes introduced by this version have come about as a result of the code review.
Warning: Since the code refactoring work resulted in renaming and removing a lot of attack steps this release will likely break most of the old models.
Here is an overview of the updates in this release:
- a lot of refactoring, the details of which can be found in #91.
- merge the three vulnerabilities files into a single one.
- removed
NetworkClientAccessassociation betweenApplicationsandNetworksbecause it felt out of place. If the modeller wants that level of detail they should useConnectionRuleseven if they are not essential to the scenario. - rework how read, write, and delete on
ApplicationsimpactDatathey are hosting, sending, or receiving to be uniform and clearer. Read also had a small bug that was fixed. - remove
accessattack step onData, it is too vague, access should describe the type of access, such as: read, delete, write. - have
specificAccesson anApplicationrequire write privileges onreceivedDatato be able to perform a respond connect attack. - remove
Originassociation betweenDataandSoftwareProductsince there was some redundancy due to the fact thatSoftwareProductextendsInformation. See #98 for more details. - introduce
inherentUserInteractionforSoftwareVulnerabilitiesthat require user interaction in case the user may trigger the interaction without additional attacker actions(i.e. social engineering). See #99 for more details.
Version 0.7.0
This new version of coreLang comes with the following changes:
- Refactor the codebase into five separate files, one for each category of assets
- Rework
DataAccess,Read,Write, andDeleteattack steps to follow the same pattern as the rest of the language and only propagate via themselves and one level at time whenDatacontain otherData. - Introduce
Dependenceassociation betweenDataandApplicationsto represent circumstances where modifying a particular set ofDatacan give the attacker control over theApplication(FullAccess) and denying them would prevent theApplicationfrom performing its tasks(Deny). - Have
Usersspread malware to otherHardwaresystems that they have access to in order to depict worm malware replication. This change also introduced theNoRemovableMediaUsagedefence on theUserwhich is enabled by default to not confuse the modeller if they are are not interested in these aspects. - Split network connectivity into two separate components
InspectedandUninspectedtraffic. The inspection is payload inspection specifically.- Uninspected communications do not impose any limitations on the attacker's activities.
- Inspected communications carry some limitations. Such as, preventing the attacker from exploiting
SoftwareVulnerabilities, and limitingReverseReach(which in turn is needed to maximise the impact ofUnsafeUserActivityand preventExtractonData).
- Have
Dataencryption viaCredentialsbypassPayloadInspectiononConnectionRulesthat we know can be used to transfer theData. - Minor fixes, improvements, date updates, and typo corrections.
Version 0.6.0
This new version of coreLang comes with the following changes:
- Introduce more bypasses of defences:
- Add bypasses for the
SupplyChainAuditandHardwareModificationsProtectiondefences on theHardwareasset. - Add bypasses for the
Effectivenessdefence on theIDPSasset. - Add bypasses for the
SupplyChainAuditdefence on theApplicationasset. - Add bypasses for the
SecurityAwarenessdefence on theUserasset. - Add bypasses for the
RestrictedandPayloadInspectiondefences on theConnectionRuleasset. - Rework some of the existing bypass attack steps on the
Networkasset.
- Add bypasses for the
- Rework
IAMObjectabstract asset to extend theInformationasset.- Add attack steps to represent the impacts of an attacker manipulating the access control privileges defined by the
IAMObjectassets. - This was implemented as part of the conversation regarding how the
IAMObjectsubassets(Identity,Group, andPrivileges) can be used to represent directory/domain policy entries in the a directory/domain policy service. - Move the
Subprivilegesassociation to theIAMObjectfrom theGroupandIdentityassets, this way the behaviour is homogeneous andPrivilegescan form hierarchies too.
- Add attack steps to represent the impacts of an attacker manipulating the access control privileges defined by the
- Rework
DenyandWriteonCredentials.- Have
WriteonCredentialslead toAssumeas the logic is that the credentials are overwritten for the authentication mechanism, and not simply a file containing credentials. - Have
DenyonCredentialslead toLockouton the associatedIdentityif all of theCredentialsassets that are associated have been denied.
- Have
LockoutaGroupif all of its memberIdentitieshave suffered aLockout.- Assume by default that
Credentialsare weak if theIdentityasset is not connected orUserasset is not connected to theIdentityassociated with theCredentials. - Rename some of the social engineering attack steps on the
Applicationasset for more clarity. - Bypass
IDPSonDenyas well, not only onFullAccess. - Minor fixes, improvements and typo corrections.
Version 0.5.1
Same as version 0.5.0, but the System.svg file was renamed to Hardware.svg. Required by the SOCCRATES project.
Version 0.5.0
This new version of coreLang comes with the following changes:
- Rework and expand IAM assets:
- Introduce
IAMOBjectabstract asset that coalesces the common behaviour of IAM assets(Identity,Group, andPrivileges). - Introduce account management association that allows
IAMObjectsmanage otherIAMObjects. An attacker can leverage this by gaining access to the managed roles if they are able to compromise any of the managers.
- Introduce
- Rework how data replication functions:
- Individual disruptions to distinct replicas are registered normally on
Dataassets, the replication itself is now represented on theInformationasset impact steps(deny, delete, write). - Update
SoftwareProductto extendInformationso that it can also make use of the replica association withData.
- Individual disruptions to distinct replicas are registered normally on
- Rework how hardware and physical zones are represented in coreLang:
- Rework the
Systemasset into theHardwareasset that is simpler and only represents, as the name suggests, the hardware components on whichApplicationsare run. - Introduce
HardwareVulnerabilityasset that functions analogously to theSoftwareVulnerability, but is slightly simpler. PhysicalZonescan now include bothNetworkandHardwareassets and they can overlap.Userscan be associated withHardwareandPhysicalZonesthat they have physical access to.
- Rework the
- Reindent and refactor some of the existing code:
- Introduce attempt-successful-impact design pattern for the relevant impact attack steps(
read,modify,deny,reverseReach,useVulnerability, andapplicationRespondConnectThroughData) on theApplicationasset. - Remove
eavesdropandmanInTheMiddleattack steps onDataand have theNetworktrigger the appropriate impact attack steps instead.
- Introduce attempt-successful-impact design pattern for the relevant impact attack steps(
- Remove
UnknownSoftwareVulnerabilityasset. - Minor fixes and typo corrections.
Version 0.4.0
This new version of coreLang comes with the following major changes:
- Rework how unsafe user actions are implemented:
- Introduce logic to represent autonomous(where the attacker cannot reach or be reached, but has deployed through other means) malicious code.
- Simplify privileges logic(remove high/low distinction when it comes to unsafe user actions). Privileges are presented via the
Identityasset that is now automatically compromised when a social engineering attack occurs. - Remove unforced unsafe user activity. This was deemed extraneous and was leading to orphan attack graphs that couldn't properly be represented in the visualisation tools.
- Remove many attack steps(
eavesdrop,manInTheMiddle,transmit, andtransmitResponse) from theConnectionRuleasset. The idea is to utilise connection rules more like virtual assets that specify connectivity rather than elements that themselves transmit the data. - Introduce
SendDataandReceiveDataassociations betweenDataandApplicationassets to more easily represent directionality in data flows. - Introduce
IDPS(Intrusion Detection and Prevention System) asset that can be associated with anApplicationto protect it from malicious actions. - Introduce credentials hashing association between
Credentialsassets. - Remove
authenticateddefence on theDataasset and replace it with a signing association that is analogous to theCredentials-Dataencryption relationship. This allows the attacker to also break authentication if they are able to attain theCredentialsused for signing. - Changed deny on
Applicationto occur when all of the networking assets(ConnectionRulesandNetworks) associated with it have been denied. This was done to match the current info strings and git commit messages, it is not seen as a solved issue, see #66. - Remove reverse takeover attack steps as they are now covered by unsafe user actions instead.
- Writing
Credentialsleads to them becoming compromised, the idea being that the attacker overrides them for the authentication mechanism. - Minor documentation and comments updates.
As per usual, due to the the nature of the changes it is assumed that most previous models would no longer be compatible with this version.
Version 0.3.0
This new version of coreLang brings some breaking changes related to how the Credentials are modelled.
- Introduce security awareness defence on the User asset to represent the
possibility that the user performs unsafe actions. - Introduce malicious removable media attack on the User that propagates via
System assets. - Introduce
ConditionalAuthenticationassociation between Credentials assets
that can be used to represent multi-factor authentication. - Introduce
Replicaassociation between Data and Information assets to
represent information that is replicated across multiple data assets. Can be
used to implement data backups. - Fix data in transit to be written and deleted only if accessible via an
outgoing/bidirectional connection. - Fix
Filtereddefence on the ConnectionRule asset. RenameDisabledand
Filtereddefences on the ConnectionRule asset toRestrictedand
PayloadInspection, respectively. - Fix software supply chain attacks and introduce hardware supply chain
attacks on System. - Minor documentation improvements and typo fixes.
- Various other smaller fixes.
Version 0.2.0
This new version of coreLang bring some breaking changes related to how the Vulnerabilities and Exploit are modeled.
- An abstract Vulnerability asset exists.
- The two previously used assets (i.e. Vulnerability and Exploit) are now merged in one "SoftwareVulnerability" asset.
- The "UnknownSoftwareVulnerability" asset should be used to model unknown vulnerabilities (such as zero-days) associated with software.
- The new Vulnerability system is aligned with CVSS v3.1.
- The CVSS properties of a vulnerability to model, are now configurable as defenses on that new asset.
- The separation of Manual and Automatic Vulnerabilities is no longer needed.
P.S. A big thank you to @andrewbwm for those changes!
Version 0.1.1
Many improvements and enhancements, including but not limited to:
- Introduction of uni-directional connectionRules for the Application assets, using two new associations.
- A new "ClientAccess" association for Applications and Networks.
- Two new defenses were added: Credentials.notDisclosed (describes the situation where a password is leaked out in the wild) and User.noPasswordReuse (describes the situation where the user is reusing passwords among identities).
- Added some defenses on multiple assets: Identity.disable, Application.disable, ConnectionRule.filtered. Added also a new asset, called Privileges, that groups privileges between Identities.
- A lot of bugfixes!
- Code rework in a lot of parts and updated documentation.
Note: The .jar file attached on this release is ready to be used in securiCAD.
This is the last release before the next "breaking changes" version that will be released soon.