Code Monkey home page Code Monkey logo

center-for-threat-informed-defense / attack-control-framework-mappings Goto Github PK

View Code? Open in Web Editor NEW
477.0 109.0 87.0 54.6 MB

🚨ATTENTION🚨 The NIST 800-53 mappings have migrated to the Center’s Mappings Explorer project. See README below. This repository is kept here as an archive.

Home Page: https://center-for-threat-informed-defense.github.io/mappings-explorer/external/nist/

License: Apache License 2.0

Python 100.00%
cti cyber-threat-intelligence mitre-attack cybersecurity nist800-53 security-controls ctid threat-informed-defense risk-management

attack-control-framework-mappings's People

Contributors

dependabot[bot] avatar emmanvg avatar iandavila avatar isaisabel avatar jonathanbaker avatar kgreenemitre avatar m3mike avatar markdavidson avatar mehaase avatar nickamon avatar stevenhardey avatar tiffb avatar unkempthenry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

attack-control-framework-mappings's Issues

PL-8 is mapped?

The readme files for rev 4 and rev 5 say that the PL family is not in scope. However, PL-8 is mapped to T1078 via M1013 and T1482 via M1047.

unannonated selection not working

When Right-Click on technique and unannotated is selecton it doesnt apply to all unannoated techniques.n How do i resolve this issues.

README clarity

As a visitor to the control mappings project repository, I want to be able to find out:

  • What the high level objective of this project is/was?
  • What STIX is and where I can read more about it?
  • Why the python scripts exist if the data is also on the repository (e.g, why I might want to extend the mappings)?

Error when running listMappings.py

I am seeing the error below. I ran the maky.py first and know the documents are there.

  1. Ran make.py
  2. Ran listMappings.py

(venv) josebarajas@Joses-MacBook-Pro attack-control-framework-mappings-master % python util/listMappings.py downloading ATT&CK data... /Users/josebarajas/git/aiqlabs/attack-control-framework-mappings-master/venv/lib/python3.8/site-packages/urllib3/connectionpool.py:979: InsecureRequestWarning: Unverified HTTPS request is being made to host 'raw.githubusercontent.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings warnings.warn( done loading controls framework... done loading mappings... Traceback (most recent call last): File "util/listMappings.py", line 81, in <module> df = mappingsToDF(attackdata, controls, mappings) File "util/listMappings.py", line 18, in mappingsToDF technique = attackbundle.get(mapping.target_ref)[0] TypeError: 'NoneType' object is not subscriptable

security baseline information is missing in NIST SP800-53 Rev 5 mappings

I noticed that the Rev 5 mappings are missing the extended properties that indicate what baseline the particular control is used in. There are available in the Rev 4 mappings. Upon closer examination, I noticed that the nist800-53-r5-controls.tsv document doesn't contain the column that list the security baselines in which the controls are part.

while I know that the security & privacy controls were moved from the NIST 800-53 Rev 5 document to the new NIST 800-53B document, they are still part of the spec. So, it seems they are not produced because the source document doesn't contain them (and the code to handle them has been removed).

Is there any plan to incorporate them back into this mapping?

subcontrol-of relationship between a control and an control enhancement appear to be missing in Rev 5

In searching the frameworks/nist800-53-r5/stix/nist800-53-r5-mappings.json I don't see any relationships defined between the control and the control's enhancements. For example, there is no subcontrol-of relationship between the course-of-action object representing the AC-2 "Account Management" control and its control enhancement AC-2(1) "Account Management | Automated System Account Management".

Is this a known limitation?

Create script to expand the regex mappings

As a developer of controls mappings, I want to be able to execute QA/QC processes on the full list of mappings — the regex-ified mappings, while useful for quick addition of new mappings, is not easy to read or comment on during QA/QC processes.

Build a script which will expand the regex-ified mappings into a full mapping spreadsheet. E.g:

controlID    techniqueID
AC-(1|2|3)    T1024

would expand into:

controlID    techniqueID
AC-1    T1024
AC-2    T1024
AC-3    T1024

Enable SSL certificate verification for requests

Currently, SSL verification is disabled for python requests.get() invocations to avoid firewall problems. SSL cert verification should be enabled before the public release of this repository.

Mapping Description Column

Hello,
First thank you for this work which is both needed and significant. I have two questions regarding the Mapping Description column in the speadsheets (r4 and r5):

  • What does it mean when it is empty?
  • The content otherwise seems to be the concatenation of the applicable SP 800-53 controls description. However in r5 i find "security assessment" which does not correspond to any control description. Is this a typo?

Thank you
Slim Bentami

Create layer directory

As a user of the control mappings repository, I want to be able to click a link to open any of the generated layer files in the navigator.


Generate a markdown list of generated layer files, where each item in the list is a link to the layer in the Navigator using the Navigator's Layer Link functionality.

MA-5 mapping

MA-5 Maintenance Personnel is mapped to T1606 Forge Web Credentials in in the ATT&CK v10.1 mapping to 800-53 v5. MA controls are out of scope.

Broken download links

Regex causing unintended mappings of control enhancements

Some of the regex mappings for both Revision 4 and Revision 5 are formatted such that they accidentally map to control enhancements when they should not.

For instance, AC-6|CM-7 will map to all control enhancements of AC-6 because the parser will match the AC-6 side to AC-6 (1), AC-6 (2), and so on. The parser usually avoids this by automatically putting start and end-of-string markers (^ and $ respectively) around the expression. However, in cases where an OR is specified such as the example above it will still match on substrings, causing bugs such as the mapping of enhancements.

The fix in this case is to surround all of ORs like the one above in parentheses so that the start and end-of-string markers apply as intended to the whole expression.

The following are the affected lines for Revision 4 and Revision 5:

attack-control-framework-mappings/frameworks/nist800-53-r4/input/nist800-53-r4-mappings.tsv

| LINE# | REGEX 
|-------|--------------
| 1205  | CM-2|AC-4
| 1206  | CM-2|AC-4
| 1217  | IA-9|SC-20|CM-10
| 1221  | AC-17|CM-7
| 1222  | AC-17|CM-7
| 1223  | AC-6|CM-7
| 1224  | AC-6|SI-7
| 1225  | AC-6|CM-5
| 1227  | AC-6|SI-7
| 1233  | AC-6|CM-5
| 1234  | AC-6|CM-5

attack-control-framework-mappings/frameworks/nist800-53-r5/input/nist800-53-r5-mappings.tsv

| LINE# | REGEX 
|-------|--------------
| 296   | AC-17|CM-7
| 297   | AC-17|CM-7
| 298   | AC-6|CM-7
| 299   | AC-6|SI-7
| 300   | AC-6|CM-5
| 302   | AC-6|SI-7
| 308   | AC-6|CM-5
| 309   | AC-6|CM-5
| 1188  | CM-2|AC-4
| 1189  | CM-2|AC-4
| 1220  | IA-9|SC-20|CM-10

Equivalency with MITRE mitigations

Hello,

Is the set of NIST controls mitigating a given technique/sub technique to be understood as equivalent to the set of MITRE mitigations mitigating the same technique/sub technique?

I have so far assumed that the set of MITRE mitigations mitigating a given technique/sub technique when implemented will effectively mitigate it as best possible. So my question is really about figuring out if the same is true if one implements the set of NIST controls instead.

Have you considered mapping control to control instead which would help somewhat with this question?

Many thanks in advance,

Slim

Lock stix2 to use v2.0

Instead of specifying stix2.Bundle(relationships, spec_version="2.0"), import the entire stix2 library as from stix2.v20 import Bundle. This will allow us to upgrade to STIX2.1 by simply changing v20 to v21.

Allow for mixed domains and versions

Currently, make.py builds everything using the default arguments, which therefore requires that all control framework mappings apply to the the same domain and ATT&CK version. We should add a file to each framework (required by make.py) called config.json which defines the following:

  • The control framework identifier (for the source_name field of external references)
  • The ATT&CK domain
  • The ATT&CK version

This will also increase the machine-readability and organization of the contents of this repository, and help fulfill #14.

Add status information to the readme for each framework

The readme for each framework needs to include basic status information like:

  • version / last updated info
  • scope of the mappings - is this a complete mapping or partial. if partial, why is it partial. Details of this can be explained in the methodology as it is applied to the framework.

Problems Installing things

I am trying to install whatever I need to run listMappings.py on my Mac. I seem to be stuck (please keep in mind I don't so this much so I could be messing something up). I followed the Install instruction as best I could but when I run python3 make.py. I get the following (it seems to be complaining about something called "pandas" and "stix2" where do I get these):

Traceback (most recent call last):
  File "parse.py", line 4, in <module>
    from parse_controls import parse_controls
  File "/Users/admin/0-Files/CTID/frameworks/nist800-53-r4/parse_controls.py", line 1, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'
Traceback (most recent call last):
  File "mappingsToHeatmaps.py", line 3, in <module>
    from stix2 import Filter, MemoryStore
ModuleNotFoundError: No module named 'stix2'
Traceback (most recent call last):
  File "substitute.py", line 1, in <module>
    from stix2.v20 import Bundle
ModuleNotFoundError: No module named 'stix2'
Traceback (most recent call last):
  File "parse.py", line 4, in <module>
    from parse_controls import parse_controls
  File "/Users/admin/0-Files/CTID/frameworks/nist800-53-r5/parse_controls.py", line 1, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'
Traceback (most recent call last):
  File "mappingsToHeatmaps.py", line 3, in <module>
    from stix2 import Filter, MemoryStore
ModuleNotFoundError: No module named 'stix2'
Traceback (most recent call last):
  File "substitute.py", line 1, in <module>
    from stix2.v20 import Bundle
ModuleNotFoundError: No module named 'stix2'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.