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
NetworkClientAccess
association betweenApplications
andNetworks
because it felt out of place. If the modeller wants that level of detail they should useConnectionRules
even if they are not essential to the scenario. - rework how read, write, and delete on
Applications
impactData
they are hosting, sending, or receiving to be uniform and clearer. Read also had a small bug that was fixed. - remove
access
attack step onData
, it is too vague, access should describe the type of access, such as: read, delete, write. - have
specificAccess
on anApplication
require write privileges onreceivedData
to be able to perform a respond connect attack. - remove
Origin
association betweenData
andSoftwareProduct
since there was some redundancy due to the fact thatSoftwareProduct
extendsInformation
. See #98 for more details. - introduce
inherentUserInteraction
forSoftwareVulnerabilities
that 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
Data
Access
,Read
,Write
, andDelete
attack steps to follow the same pattern as the rest of the language and only propagate via themselves and one level at time whenData
contain otherData
. - Introduce
Dependence
association betweenData
andApplications
to represent circumstances where modifying a particular set ofData
can give the attacker control over theApplication
(FullAccess
) and denying them would prevent theApplication
from performing its tasks(Deny
). - Have
Users
spread malware to otherHardware
systems that they have access to in order to depict worm malware replication. This change also introduced theNoRemovableMediaUsage
defence on theUser
which 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
Inspected
andUninspected
traffic. 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 ofUnsafeUserActivity
and preventExtract
onData
).
- Have
Data
encryption viaCredentials
bypassPayloadInspection
onConnectionRules
that 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
SupplyChainAudit
andHardwareModificationsProtection
defences on theHardware
asset. - Add bypasses for the
Effectiveness
defence on theIDPS
asset. - Add bypasses for the
SupplyChainAudit
defence on theApplication
asset. - Add bypasses for the
SecurityAwareness
defence on theUser
asset. - Add bypasses for the
Restricted
andPayloadInspection
defences on theConnectionRule
asset. - Rework some of the existing bypass attack steps on the
Network
asset.
- Add bypasses for the
- Rework
IAMObject
abstract asset to extend theInformation
asset.- Add attack steps to represent the impacts of an attacker manipulating the access control privileges defined by the
IAMObject
assets. - This was implemented as part of the conversation regarding how the
IAMObject
subassets(Identity
,Group
, andPrivileges
) can be used to represent directory/domain policy entries in the a directory/domain policy service. - Move the
Subprivileges
association to theIAMObject
from theGroup
andIdentity
assets, this way the behaviour is homogeneous andPrivileges
can form hierarchies too.
- Add attack steps to represent the impacts of an attacker manipulating the access control privileges defined by the
- Rework
Deny
andWrite
onCredentials
.- Have
Write
onCredentials
lead toAssume
as the logic is that the credentials are overwritten for the authentication mechanism, and not simply a file containing credentials. - Have
Deny
onCredentials
lead toLockout
on the associatedIdentity
if all of theCredentials
assets that are associated have been denied.
- Have
Lockout
aGroup
if all of its memberIdentities
have suffered aLockout
.- Assume by default that
Credentials
are weak if theIdentity
asset is not connected orUser
asset is not connected to theIdentity
associated with theCredentials
. - Rename some of the social engineering attack steps on the
Application
asset for more clarity. - Bypass
IDPS
onDeny
as 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
IAMOBject
abstract asset that coalesces the common behaviour of IAM assets(Identity
,Group
, andPrivileges
). - Introduce account management association that allows
IAMObjects
manage 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
Data
assets, the replication itself is now represented on theInformation
asset impact steps(deny, delete, write). - Update
SoftwareProduct
to extendInformation
so 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
System
asset into theHardware
asset that is simpler and only represents, as the name suggests, the hardware components on whichApplications
are run. - Introduce
HardwareVulnerability
asset that functions analogously to theSoftwareVulnerability
, but is slightly simpler. PhysicalZones
can now include bothNetwork
andHardware
assets and they can overlap.Users
can be associated withHardware
andPhysicalZones
that 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 theApplication
asset. - Remove
eavesdrop
andmanInTheMiddle
attack steps onData
and have theNetwork
trigger the appropriate impact attack steps instead.
- Introduce attempt-successful-impact design pattern for the relevant impact attack steps(
- Remove
UnknownSoftwareVulnerability
asset. - 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
Identity
asset 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 theConnectionRule
asset. The idea is to utilise connection rules more like virtual assets that specify connectivity rather than elements that themselves transmit the data. - Introduce
SendData
andReceiveData
associations betweenData
andApplication
assets to more easily represent directionality in data flows. - Introduce
IDPS
(Intrusion Detection and Prevention System) asset that can be associated with anApplication
to protect it from malicious actions. - Introduce credentials hashing association between
Credentials
assets. - Remove
authenticated
defence on theData
asset and replace it with a signing association that is analogous to theCredentials
-Data
encryption relationship. This allows the attacker to also break authentication if they are able to attain theCredentials
used for signing. - Changed deny on
Application
to occur when all of the networking assets(ConnectionRules
andNetworks
) 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
Credentials
leads 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
ConditionalAuthentication
association between Credentials assets
that can be used to represent multi-factor authentication. - Introduce
Replica
association 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
Filtered
defence on the ConnectionRule asset. RenameDisabled
and
Filtered
defences on the ConnectionRule asset toRestricted
and
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.