Search to Find Mappings
+Search for an ATT&CK object or a framework object to find all mappings associated with it.
+diff --git a/pyproject.toml b/pyproject.toml index 6be1cb27..cc20638b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ classifiers = [ repository = "https://github.com/center-for-threat-informed-defense/mappings-explorer" [tool.poetry.scripts] +build-mappings-explorer = "mappings_explorer.site_builder:main" mapex = "mappings_explorer.cli.cli:main" [tool.poetry.dependencies] @@ -31,6 +32,7 @@ mypy = "^1.2.0" pandas = "^2.1" openpyxl = "^3.1" ruff = "^0.0.289" +jinja2 = "^3.1.2" [tool.black] line-length = 88 diff --git a/src/mappings_explorer/site_builder.py b/src/mappings_explorer/site_builder.py new file mode 100644 index 00000000..c39984cb --- /dev/null +++ b/src/mappings_explorer/site_builder.py @@ -0,0 +1,15 @@ +from jinja2 import Environment, FileSystemLoader + + +def main(): + print("Creating site index") + templateLoader = FileSystemLoader(searchpath="./templates") + templateEnv = Environment(loader=templateLoader, autoescape=True) + TEMPLATE_FILE = "landing.html.j2" + template = templateEnv.get_template(TEMPLATE_FILE) + + template.stream(title="Mappings Explorer").dump("./output/index.html") + + +if __name__ == "__main__": + main() diff --git a/templates/_footer.html.j2 b/templates/_footer.html.j2 new file mode 100644 index 00000000..103629a5 --- /dev/null +++ b/templates/_footer.html.j2 @@ -0,0 +1,53 @@ + + diff --git a/templates/_mappings_project_section.html.j2 b/templates/_mappings_project_section.html.j2 new file mode 100644 index 00000000..c36ce603 --- /dev/null +++ b/templates/_mappings_project_section.html.j2 @@ -0,0 +1,115 @@ +
++The NIST 800-53 is a cybersecurity standard and compliance framework developed by the National Institute of Standards in Technology. It’s a continuously updated framework that tries to flexibly define standards, controls, and assessments based on risk, cost-effectiveness, and capabilities.
+
+ 300 Mappings + ATT&CK Versions 8.2, 9.0, 10.1 +
+ Learn More + ++++ The Vocabulary for Event Recording and Incident Sharing (VERIS) is a set of metrics designed to provide a common language for describing security incidents in a structured and repeatable manner. + VERIS targets this problem by helping organizations to collect useful incident-related information and to share that information - anonymously and responsibly - with others. +
+
+ 300 Mappings + ATT&CK Versions 9.0, 12.1 +
+ Learn More + ++++ CVE, short for Common Vulnerabilities and Exposures, is a list of publicly disclosed computer security flaws. When someone refers to a CVE, they mean a security flaw that's been assigned a CVE ID number. + CVEs help IT professionals coordinate their efforts to prioritize and address these vulnerabilities to make computer systems more secure. +
+ 300 Mappings + ATT&CK Versions 9.0 +
+ Learn More +++The NIST 800-53 is a cybersecurity standard and compliance framework developed by the National Institute of Standards in Technology. It’s a continuously updated framework that tries to flexibly define standards, controls, and assessments based on risk, cost-effectiveness, and capabilities.
+
+ 300 Mappings + ATT&CK Versions 8.2, 9.0, 10.1 +
+ Learn More + ++++ The Vocabulary for Event Recording and Incident Sharing (VERIS) is a set of metrics designed to provide a common language for describing security incidents in a structured and repeatable manner. + VERIS targets this problem by helping organizations to collect useful incident-related information and to share that information - anonymously and responsibly - with others. +
+
+ 300 Mappings + ATT&CK Versions 9.0, 12.1 +
+ Learn More + ++++ CVE, short for Common Vulnerabilities and Exposures, is a list of publicly disclosed computer security flaws. When someone refers to a CVE, they mean a security flaw that's been assigned a CVE ID number. + CVEs help IT professionals coordinate their efforts to prioritize and address these vulnerabilities to make computer systems more secure. +
+ 300 Mappings + ATT&CK Versions 9.0 +
+ Learn More +++The website will include an overview of the mappings projects, explaining what the mappings are for, who the target audience is, what uses they support, etc. It will provide the methodology and other important information behind each mapping project.
+
Search for an ATT&CK object or a framework object to find all mappings associated with it.
+`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `