diff --git a/README.md b/README.md index dd72888..04222bb 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The plugin is designed to keep the LLM grounded in MCP tools and server-side con ## Features - **Author workflow**: Create CALDERA abilities and adversaries from an operator prompt while using available MCP server tools. -- **Plan and Execute workflow**: Select or upload CTI/STIX, build an adversary from the observed techniques, run the CALDERA operation against available agents, and summarize detection coverage. +- **Plan and Execute workflow**: Select or upload CTI/STIX, build an adversary from the observed techniques, run the CALDERA operation against available agents, and report which techniques it covered. - **CTI ingest pipeline**: Upload raw CTI in HTML, PDF, plaintext, or Markdown and produce STIX 2.1 bundles for retrieval and planning. - **STIX selection for planning**: Pick generated STIX bundles from the Plan and Execute workspace. Selecting STIX automatically enables CTI retrieval for that run. - **Model and CTI/RAG profiles**: Configure the chat model, API base, API key, temperature, token budget, and tool-call budget. CTI/RAG can use the chat model by default or a saved profile when it needs a different endpoint. @@ -68,9 +68,45 @@ The CTI ingest workflow stages raw CTI files, runs extraction, and displays gene
-### CTI Pipeline Fidelity +### What the pipeline produces -The CTI pipeline extracts structure from STIX and related observables, including hosts, identities, user accounts, domains, software, ATT&CK platform hints, and CVE references. These become CALDERA facts so an operation runs against values the report actually named, not placeholders. +A threat report tells you **what** to run. Your environment tells you **where**. + +The pipeline extracts ATT&CK techniques, the named threat actor, and file +hash observables, and nothing else. It does not extract hosts, accounts, domains, services or +software, and does not turn them into CALDERA facts. Those describe the +report's victim, not your estate; CALDERA discovers facts about your hosts +at runtime, which is why the abilities that use them carry `has_agent_copy` +and `no_backwards_movement` requirements. + +The one insertion point into core CALDERA is the adversary profile: + +``` +upload report(s) -> clean -> IR -> ATT&CK techniques -> STIX bundle + | + "build an adversary from this and run it" v + build_adversary attack-pattern -> ability.technique_id -> Adversary + + unmatched_techniques + platform_excluded + run_operation Adversary + your agents + runtime-discovered facts +``` + +### Known limits + +- **Extraction quality.** Scored against the committed measuring stick with + `tests/test_pipeline_score.py`: precision 0.83, F1 0.89. That fixture names + its technique ids explicitly, so its recall is an upper bound, not a field + estimate. Recall on prose-only reports is materially lower, and fusing + several reports on the same actor is the cheapest way to raise it. +- **No detection scoring.** The `detections` plugin does not ship in this + repository, so nothing here scores an operation against SIEM rules. +- **Platform matching is coarse.** `build_adversary` knows which platforms + your agents run, not whether a Windows agent is domain-joined. It reports + the gap in `platform_excluded` rather than closing it. +- **Fusion does not check identity.** Fusing bundles for two different + actors merges them into one profile without complaint. +- **Operations are not agent-scoped.** `run_operation` runs against the whole + `red` group; the `agent_paws` argument is not honoured by core's operation + schema. ## Installation @@ -79,7 +115,7 @@ Install MCP like a standard CALDERA plugin. 1. Clone or copy this repository into the CALDERA plugin directory: ```bash -git clone https://gitlab.mitre.org/caldera/caldera-mcp.git plugins/mcp +git clone https://github.com/mitre/mcp.git plugins/mcp ``` 2. Add `mcp` to your CALDERA plugin list in `conf/local.yml`. Keep local configuration in `conf/local.yml`; do not commit that file. @@ -92,25 +128,39 @@ plugins: - mcp ``` -3. Optional integrations can be enabled by adding their plugins as well: +3. Install plugin requirements from the CALDERA virtual environment: -```yaml -plugins: - - magma - - sandcat - - stockpile - - detections - - mcp +```bash +source venv/bin/activate +pip install -r plugins/mcp/requirements.txt ``` -4. Install plugin requirements from the CALDERA virtual environment: +4. Install the spaCy model. pip cannot do this from `requirements.txt`: ```bash -source venv/bin/activate -pip install -r plugins/mcp/requirements.txt +python -m spacy download en_core_web_lg +``` + + Install poppler as well, which supplies `pdftotext`. Without it the + pipeline still ingests TXT, MD and HTML, and PDF uploads report the + missing dependency rather than failing silently: + +```bash +brew install poppler # macOS +apt install poppler-utils # Debian/Ubuntu ``` -5. Copy `.env.example` to `.env` and set the LLM endpoint and credential. Both are required; nothing ships in `conf/default.yml`. + To run the test suite, also install the dev requirements: + +```bash +pip install -r plugins/mcp/requirements-dev.txt +``` + +5. Copy `.env.example` to `.env` and set the LLM endpoint and credential. + Both are optional: with neither set, IR extraction falls back to a + deterministic offline extractor. That extractor trades roughly 15 to 20 + percent of recall for sub-second processing, so configure a model when + extraction quality matters. ```bash cp plugins/mcp/.env.example plugins/mcp/.env @@ -164,12 +214,14 @@ Use Upload CTI to stage raw reports, run CTI extraction, and produce STIX 2.1 bu Use Plan and Execute for CTI-driven operations. The workflow can: - Read selected STIX bundles and CTI/RAG context. -- Extract hosts, operating systems, domains, users, and software. -- Turn those into a CALDERA fact source so operations run on values the report named. -- Build and run the CALDERA operation. -- Summarize operator-review gaps and detection coverage. +- Fuse several bundles describing the same actor into one. +- Build an adversary from the observed techniques, previewing it first. +- Run the CALDERA operation against agents that have checked in. +- Report which techniques had no matching ability, and which had one that + no live agent can run. -The workflow should report missing evidence rather than inventing hosts, users, domains, or services. +The CTI names techniques, not your estate. The workflow reports a gap +rather than answering a question about your environment from a report. ## Configuration @@ -184,28 +236,32 @@ MCP supports saved endpoint profiles in the UI. Profiles can carry: - Maximum tool calls - Maximum tokens -CTI/RAG model settings can use the chat endpoint by default or a separate saved profile when CTI extraction benefits from a different model. +CTI and RAG share the chat endpoint. Extraction differs from chat only in its generation settings, which the CTI Extraction Model panel edits. ### Local Settings Prefer environment variables for local values, and keep `conf/default.yml` limited to safe defaults. -To pin values on disk instead, set them in `conf/local.yml`. That file is overlaid onto `conf/default.yml` key by key, so it only needs the keys it changes. - -The `llm` block sits at the top level of the file: +To pin values on disk instead, create `conf/local.yml`. That file is a **sparse overlay**, not a full config: it is deep-merged onto `conf/default.yml` key by key, so it needs only the keys it changes. A file containing one key is valid and complete. ```yaml llm: model: openai/gpt-oss-120b api_base: https://api.example.com/v1 - api_base_env: MCP_LLM_API_BASE - api_key_env: MCP_LLM_API_KEY - temperature: 0.5 - max_tool_calls: 5 - max_tokens: 24000 + offline: false + +cti: + timeout: 120 + offline: false ``` -A value set here outranks the environment variable named beside it, so leave `api_base` empty to keep resolving it from `MCP_LLM_API_BASE`. The `cti` block takes the same shape and may name a different variable if CTI extraction should reach a separate endpoint. +Three rules that are easy to trip over: + +- **`cti` layers over `llm`, but only for its own generation settings.** A workload profile may set `top_p`, `timeout`, `stream`, `offline` and `embed_model`. Everything else belongs to `llm`: the connection (`provider`, `model`, `api_base`, credentials, `ssl_verify`), and `temperature` and `max_tokens`, which two panels display and so are stored once. Anything else under `cti` is dropped and logged, and `set_config` rejects it outright. +- **Precedence differs by field.** `api_key` resolves environment-first and is never read from this file. `api_base` resolves yaml-first, so a value here beats `MCP_LLM_API_BASE`; leave it empty to keep using the variable. +- **A key with no value is `null`, and null overrides.** A bare `llm:` heading wipes the shipped block rather than falling through to it. Omit the block instead. + +The GUI's **Global Model Config** panel writes the connection to the `llm` profile in `conf/local.yml`, so it configures every workload including CTI extraction. Only fields you change are written, so a value still coming from `MCP_LLM_API_BASE` is left alone rather than pinned to disk. The API key is the exception: it stays in `localStorage` and rides each request, and `set_config` strips credentials before writing. ## API Surface @@ -220,6 +276,10 @@ The plugin exposes MCP workflow APIs through CALDERA's aiohttp server. The UI us - Run CTI pipeline steps. - Read run history and transcripts. +The CTI pipeline MCP server exposes five tools: `cti_pipeline_ingest_cti`, +`cti_pipeline_fuse`, `cti_pipeline_build_adversary`, +`cti_pipeline_run_operation` and `cti_pipeline_wait_for_agents`. + When adding new UI functionality, prefer extending the existing MCP API routes instead of creating separate side channels. ## Architecture diff --git a/app/capabilities/rag.py b/app/capabilities/rag.py index f1e3a47..f7f6ee6 100644 --- a/app/capabilities/rag.py +++ b/app/capabilities/rag.py @@ -34,7 +34,7 @@ def __init__( if stix_bundle_path: self.load_stix_bundle(stix_bundle_path) - def load_stix_bundle(self, stix_bundle_path: str, embed_model: str = 'openai/text-embedding-3-small'): + def load_stix_bundle(self, stix_bundle_path: str, embed_model: str | None = None): """Load STIX bundle from file path and build embeddings.""" try: with open(stix_bundle_path, 'r') as f: @@ -45,7 +45,7 @@ def load_stix_bundle(self, stix_bundle_path: str, embed_model: str = 'openai/tex except json.JSONDecodeError: raise ValueError(f"Invalid JSON in STIX bundle: {stix_bundle_path}") - def initialize_from_bundles(self, stix_bundles: List[dict], embed_model: str = 'openai/text-embedding-3-small'): + def initialize_from_bundles(self, stix_bundles: List[dict], embed_model: str | None = None): """Initialize the RAG service with multiple STIX bundles and create retriever.""" all_corpus = [] all_adv_step = {} @@ -56,7 +56,19 @@ def initialize_from_bundles(self, stix_bundles: List[dict], embed_model: str = ' self.corpus = all_corpus self.adv_step = all_adv_step - + + if not self.corpus: + # Embeddings() raises numpy AxisError on an empty corpus, and the + # caller swallows it and silently runs without CTI grounding. + # Bundles with no attack-pattern and no threat-actor are the + # normal way to get here. search_cti_title handles search=None. + self.search = None + self.log.warning( + "[RAG] No attack-pattern or threat-actor objects in the " + "selected STIX; CTI retrieval is unavailable for this run" + ) + return + self.log.info("Initializing embeddings and retriever for STIX corpus") embedder_kwargs = {"api_key": self.api_key} if self.api_base: @@ -77,10 +89,7 @@ def extract_text_chunks(self, stix_bundle: dict) -> tuple[List[str], Dict[str, s adv_step = {} for obj in stix_bundle.get("objects", []): - if obj.get("type") in [ - "attack-pattern", "malware", "tool", "threat-actor", - "intrusion-set", "identity", "indicator", "report" - ]: + if obj.get("type") in ["attack-pattern", "threat-actor"]: name = obj.get("name", "") description = obj.get("description", "") @@ -160,18 +169,7 @@ def get_context_for_task(self, task: str) -> Dict[str, any]: } -# Legacy functions for backward compatibility -def search_cti_title(query: str) -> list[str]: - """Legacy function - use RAGService instead.""" - if 'global_rag_service' in globals(): - return global_rag_service.search_cti_title(query) - return ["RAG service not initialized"] -def search_cti_data_by_title(name: str) -> str: - """Legacy function - use RAGService instead.""" - if 'global_rag_service' in globals(): - return global_rag_service.search_cti_data_by_title(name) - return "RAG service not initialized" # --------------------------------------------------------------------------- @@ -184,7 +182,6 @@ def search_cti_data_by_title(name: str) -> str: # capability registry, this declaration is dormant; the legacy code path in # mcp_svc still wires RAG into runs directly. -import os import asyncio from pathlib import Path @@ -253,7 +250,7 @@ async def _enrich(prompt: str, settings: dict) -> dict: settings keys (all optional): rag_files list of filenames under plugins/mcp/data/ topk int, defaults to 5 - embed_model str, defaults to openai/text-embedding-3-small + embed_model str, falls back to the chat model when unset api_key str, embedding key fallback (mcp_svc fills this with the resolved chat-LLM key when the caller does not override it via embed_api_key) @@ -271,7 +268,15 @@ async def _enrich(prompt: str, settings: dict) -> dict: embed_api_key = settings.get("embed_api_key") or settings.get("api_key") or "" embed_api_base = settings.get("embed_api_base") or settings.get("api_base") or None ssl_verify = settings.get("ssl_verify") - embed_model = settings.get("embed_model") or "openai/text-embedding-3-small" + # An undeclared embedding model falls back to the chat model. A deployment + # pointing at its own gateway has no reason to reach for an OpenAI model + # name it never chose, and that name would be sent to that gateway. + embed_model = settings.get("embed_model") or settings.get("model") + if not embed_model: + raise ValueError( + "No embedding model: set embed_model, or a model on the global " + "LLM profile for it to inherit." + ) topk = int(settings.get("topk") or 5) base_dir = Path(__file__).resolve().parent.parent.parent / "data" diff --git a/app/cti_ingest_svc.py b/app/cti_ingest_svc.py index d5c1213..a3fbbc3 100644 --- a/app/cti_ingest_svc.py +++ b/app/cti_ingest_svc.py @@ -3,28 +3,21 @@ Logging is preserved verbatim for debug capture via: python3 cti_ingest_svc.py --base-dir data --step all 2>&1 | tee -a debug_mitre.log -| Step | Description | -| ------------- | -------------------------------------- | -| Raw → Clean | Normalize source material | -| Clean → IR | LLM extraction of entities & behaviors | -| NLP Layers | Improve IR quality | -| MITRE | Map behaviors to ATT&CK | -| Relationships | Build entity graph | -| Validation | Ensure graph correctness | -| Outputs | Persist IR + summary | -| Scenario | (Optional) Narrative generation | +| Step | Description | +| ------------ | ---------------------------------------------- | +| raw-to-clean | Normalize source material | +| debug-ir | Stop after IR extraction | +| stage2 | IR -> STIX bundle only | +| all | Everything, in order | ''' import argparse -import asyncio -import json, re import shutil from enum import Enum from pathlib import Path from plugins.mcp.app.cti_pipeline_stage1 import ( - ensure_dirs, step_raw_to_clean, step_parse_to_ir ) @@ -70,20 +63,14 @@ def run_stage(self, base_dir: Path, step: str): step_raw_to_clean(base_dir) case "debug-ir": - step_parse_to_ir(base_dir, stop_after="ir") - - case "debug-mitre": - step_parse_to_ir(base_dir, stop_after="mitre") - - case "debug-relationships": - step_parse_to_ir(base_dir, stop_after="relationships") + step_parse_to_ir(base_dir, stop_after="ir", only=self.selected) case "stage2": self.run_stage2(base_dir) case "all": step_raw_to_clean(base_dir) - step_parse_to_ir(base_dir) + step_parse_to_ir(base_dir, only=self.selected) # Only run Stage 2 if IR exists ir_dir = base_dir / "outputs_ir" / "complete" @@ -121,12 +108,25 @@ def status(self): } def finalize_run(self, base_dir: Path, selected: list[str]): + """Retire the reports this run actually processed. + + This moved everything in uploads/ and never read its own argument, so + a report the operator did not select was retired having never been + cleaned or extracted. list_cti_raw stamps a literal "processed" on + that directory, so it then rendered green. + + An empty selection still means everything, matching the convention + step_parse_to_ir uses for the same reason. + """ uploads = base_dir / "raw" / "uploads" processed = base_dir / "raw" / "processed" processed.mkdir(parents=True, exist_ok=True) + names = set(selected or []) for f in uploads.iterdir(): + if names and f.name not in names: + continue shutil.move(str(f), processed / f.name) @staticmethod diff --git a/app/cti_pipeline_stage1.py b/app/cti_pipeline_stage1.py index c5ce6dc..3e7404d 100644 --- a/app/cti_pipeline_stage1.py +++ b/app/cti_pipeline_stage1.py @@ -29,43 +29,23 @@ import asyncio import time import os -import shutil +import traceback from pathlib import Path -from concurrent.futures import ProcessPoolExecutor, as_completed +from concurrent.futures import as_completed # ============================================================= # Core Utilities # ============================================================= -from plugins.mcp.app.utilities.cti_raw_cleaner import clean_raw_directory +from plugins.mcp.app.utilities.cti_raw_cleaner import clean_raw_directory, clean_stem from plugins.mcp.app.utilities.cti_parsing import extract_ir, render_ir_summary from plugins.mcp.app.utilities.cti_mitre_extract import extract_mitre_techniques, convert_sets -from plugins.mcp.app.utilities.cti_taxonomy_loader import build_normalized_attack_patterns -from plugins.mcp.app.utilities.cti_entity_validator import validate_entities, repair_entities - -from plugins.mcp.app.utilities.cti_relationships import ( - normalize_and_qualify_behaviors, - extract_all_relationships, - REL_REJECTIONS, +from plugins.mcp.app.utilities.cti_taxonomy_loader import ( + build_normalized_attack_patterns, + load_mitre_taxonomy, ) -from plugins.mcp.app.utilities.cti_linguistics import extract_dynamic_techniques, extract_commands, extract_hashes -from plugins.mcp.app.utilities.cti_extract_users import extract_users -from plugins.mcp.app.utilities.cti_extract_hosts import ( - extract_hosts, - hosts_to_infrastructure_entries, -) -from plugins.mcp.app.utilities.cti_extract_domains import extract_domains -from plugins.mcp.app.utilities.cti_extract_software import extract_software -from plugins.mcp.app.utilities.cti_extract_services import ( - extract_services, - services_to_infrastructure_entries, -) -from plugins.mcp.app.utilities.cti_ae_library_loader import ( - _extract_file_paths as extract_file_paths, - _extract_registry as extract_registry_keys, - _extract_subnets as extract_network_subnets, -) +from plugins.mcp.app.utilities.cti_linguistics import extract_hashes from plugins.mcp.app.utilities.cti_technique_grounding import ( ground_techniques, detect_platforms, @@ -80,8 +60,6 @@ # ============================================================= from plugins.mcp.app.utilities.nlp.cti_nlp_enhancements import clean_ir_nlp_layer1 -from plugins.mcp.app.utilities.nlp.cti_semantic_enrichment import clean_ir_nlp_layer2 -from plugins.mcp.app.utilities.nlp.cti_behavior_expansion import recover_nominalized_behaviors # ============================================================= # Directory Constants @@ -95,18 +73,6 @@ OUTPUTS_IR_DIR = "outputs_ir" IMAGES_DIR_NAME = "images" - -def _preload_thread_shared_nlp_resources(): - """Load lazy NLTK corpora before Stage 1 worker threads touch them.""" - try: - from nltk.corpus import stopwords, wordnet # type: ignore - - wordnet.ensure_loaded() - wordnet.synsets("network") - stopwords.words("english") - except Exception as e: - print(f"[WARN] NLTK pre-load skipped: {e}") - # ============================================================= # Directory Setup # ============================================================= @@ -160,9 +126,10 @@ def move_raw_to_processed(raw_path: Path, processed_dir: Path): # Stage 1.2 — Clean → IR (PARALLEL) # ============================================================= -def step_parse_to_ir(base_dir: Path, stop_after: str | None = None): +def step_parse_to_ir(base_dir: Path, stop_after: str | None = None, + only: list[str] | None = None): """ - Process all cleaned TXT files into IR + relationships + MITRE. + Process all cleaned TXT files into IR + MITRE techniques. Parallelism: • One OS process per file @@ -181,6 +148,15 @@ def step_parse_to_ir(base_dir: Path, stop_after: str | None = None): final_dir.mkdir(parents=True, exist_ok=True) files = list(clean_dir.glob("*.txt")) + + # clean/ is never emptied, so it holds every report ever ingested. Without + # this, selecting one row re-ran LLM extraction over the whole corpus while + # the UI reported one file. An empty selection still means everything, which + # is what the CLI and a full re-run want. + if only: + wanted = {clean_stem(name) for name in only} + files = [f for f in files if f.stem in wanted] + if not files: print("[!] No clean files found.") return @@ -188,7 +164,6 @@ def step_parse_to_ir(base_dir: Path, stop_after: str | None = None): workers = max(1, (os.cpu_count() or 4) - 2) else: workers = 1 - _preload_thread_shared_nlp_resources() # Stage1 work is LLM/IO-bound, not CPU-bound: each file makes # remote calls to the LLM gateway, downloads embeddings, reads @@ -218,15 +193,21 @@ def step_parse_to_ir(base_dir: Path, stop_after: str | None = None): for path in files } raw_uploads, raw_processed, _, _, _ = ensure_dirs(base_dir) + succeeded = 0 + failures = [] for fut in as_completed(futures): clean_path = futures[fut] raw_path = None for p in raw_uploads.iterdir(): - if p.is_file() and p.stem == clean_path.stem: + # Matching on the bare stem paired report.md with the clean + # file report.txt actually produced from report.txt, so the + # wrong raw file was moved to processed. + if p.is_file() and clean_stem(p.name) == clean_path.stem: raw_path = p break try: fut.result() + succeeded += 1 print(f"[OK] {clean_path.name}") # MOVE RAW INPUT ONLY AFTER SUCCESS @@ -234,10 +215,18 @@ def step_parse_to_ir(base_dir: Path, stop_after: str | None = None): move_raw_to_processed(raw_path, raw_processed) except Exception as e: + failures.append((clean_path.name, e)) print(f"[ERR] {clean_path.name}: {e}") + print(traceback.format_exc()) elapsed = time.perf_counter() - start_time - print(f"\n[STAGE1] completed in {elapsed:.2f}s") + print(f"\n[STAGE1] completed {succeeded}, failed {len(failures)} in {elapsed:.2f}s") + + # Callers keyed off the IR directory being empty, which reported a + # missing-IR error rather than the exception that actually stopped the run. + if failures and not succeeded: + name, exc = failures[0] + raise RuntimeError(f"Stage 1 failed for all {len(failures)} files; {name}: {exc}") from exc # ============================================================= # Per-File Pipeline @@ -255,13 +244,9 @@ async def process_file( Steps: 1. IR extraction / resume 2. NLP Layer 1 cleanup - 3. Behavior normalization & qualification - 4. Relationship extraction - 5. Entity validation - 6. MITRE ATT&CK mapping - 7. Final JSON + analyst summary output + 3. MITRE ATT&CK mapping + 4. Final JSON + analyst summary output """ - REL_REJECTIONS.clear() print(f"\n[*] Processing {path.name}") text = path.read_text(errors="ignore") @@ -279,51 +264,13 @@ async def process_file( pre_beh = len(ir.get("behaviors", [])) ir = clean_ir_nlp_layer1(ir, text) - recovered = recover_nominalized_behaviors(text) - if recovered: - seen = {(b.get("verb"), b.get("object")) for b in ir["behaviors"]} - for b in recovered: - key = (b.get("verb"), b.get("object")) - if key not in seen: - ir["behaviors"].append(b) - seen.add(key) - if len(ir["behaviors"]) < pre_beh: raise RuntimeError("NLP Layer 1 removed behaviors (forbidden)") - # --------------------------------------------------------- - # 3. Behavior qualification - # --------------------------------------------------------- - normalized, qualified = normalize_and_qualify_behaviors(ir) - ir["behaviors"] = normalized - ir["qualified_behaviors"] = qualified - - high_conf = [b for b in qualified if b.get("confidence", 0) >= 0.5] - low_conf = [b for b in qualified if b.get("confidence", 0) < 0.5] - - # --------------------------------------------------------- - # 4. Relationships - # --------------------------------------------------------- - raw_relationships = await extract_all_relationships( - text, ir, high_conf - ) or [] - ir["relationships"] = rag_safe_relationships(raw_relationships) - ir["low_confidence_behaviors"] = low_conf - # --------------------------------------------------------- # Commands Extraction (Linguistic) # --------------------------------------------------------- - commands = extract_commands(text) - if commands: - for m in ir.get("malware", []): - if m.get("name", "").lower() in text.lower(): - _merge_commands(m, commands) - - for t in ir.get("tools", []): - if t.get("name", "").lower() in text.lower(): - _merge_commands(t, commands) - # --------------------------------------------------------- # Hash Extraction (File Observables) # --------------------------------------------------------- @@ -337,183 +284,29 @@ async def process_file( if key not in seen: ir["hashes"].append(h) - # --------------------------------------------------------- - # User-account Extraction (AE-plan tables + inline prose) - # --------------------------------------------------------- - ir.setdefault("user_accounts", []) - users = extract_users(text) - if users: - seen_users = {(u["username"].lower(), (u.get("domain") or "").lower()) - for u in ir["user_accounts"]} - for u in users: - key = (u["username"].lower(), (u.get("domain") or "").lower()) - if key not in seen_users: - ir["user_accounts"].append(u) - seen_users.add(key) # --------------------------------------------------------- - # Software + Version Extraction (AE-plan tooling tables + - # filename-with-extension hits + ATT&CK-gated bare tokens) - # - # Distinct from ir["tools"]: ir["tools"] stays scoped to - # ATT&CK-known offensive software, while ir["software"] is the - # broader observed-software list -- INCLUDING versions and - # non-ATT&CK entries -- so consumers can match concrete binaries. - # - # Pure ontology-driven: ATT&CK name_index for admission, OSV.dev - # + nvdlib for optional external validation (gated behind - # use_external_apis=False here; CI/unit tests stay offline). + # 3. MITRE ATT&CK # --------------------------------------------------------- - ir.setdefault("software", []) - try: - # Load the ATT&CK taxonomy lazily so software classification can - # tag each candidate with attack_id / software_kind. The full - # taxonomy is loaded again below for the MITRE technique pass - # (step 6); both calls share the same on-disk bundle but the - # extra parse is cheap relative to the rest of Stage 1. - try: - from plugins.mcp.app.utilities.cti_taxonomy_loader import load_mitre_taxonomy as _ldtax - _sw_taxonomy = _ldtax() - except Exception as _e: - print(f"[SOFTWARE-EXTRACT][WARN] taxonomy unavailable: {_e}") - _sw_taxonomy = None - sw_entries = extract_software(text, taxonomy=_sw_taxonomy, - use_external_apis=False) - except Exception as e: - print(f"[SOFTWARE-EXTRACT][WARN] {e}") - sw_entries = [] - if sw_entries: - seen_sw = { - (s.get("name", "").lower(), (s.get("version") or "").lower()) - for s in ir["software"] - } - for s in sw_entries: - key = (s["name"].lower(), (s.get("version") or "").lower()) - if key in seen_sw: - continue - ir["software"].append(s) - seen_sw.add(key) - print(f"[SOFTWARE-EXTRACT] added {len(sw_entries)} software entries") + techniques, lookup = build_normalized_attack_patterns() - # --------------------------------------------------------- - # Named-Host + IP Extraction (AE-plan tables + freeform prose) - # - # Recovers structured named hosts -- hostname/IP/role/OS -- which - # the LLM IR step routinely flattens to generic "Internet-facing - # RDP server" infrastructure entries. Pure ontology-driven: spaCy - # NER, IPv4 regex, RFC 1123 hostnames, STIX infra-type-ov role - # vocab + ATT&CK technique-name hints. No hostname->role tables. - # --------------------------------------------------------- - ir.setdefault("infrastructure", []) + # Steps 3.5 and 3.6 below need the full taxonomy rather than the + # normalized attack patterns. try: - # Reuse the spaCy pipeline already loaded by cti_linguistics - # (loaded once per worker process) for PROPN-aware hostname - # candidate ranking. Fall back to regex-only if unavailable. - try: - from plugins.mcp.app.utilities.cti_linguistics import nlp as _nlp - except Exception: - _nlp = None - named_hosts = extract_hosts(text, nlp=_nlp) + taxonomy = load_mitre_taxonomy() except Exception as e: - print(f"[HOST-EXTRACT][WARN] {e}") - named_hosts = [] - if named_hosts: - new_entries = hosts_to_infrastructure_entries(named_hosts) - # Dedup by (hostname-lower, ip) against any existing infra entries. - seen_infra = set() - for inf in ir["infrastructure"]: - if isinstance(inf, dict): - key = ( - (inf.get("name") or "").strip().lower(), - (inf.get("ip") or "").strip(), - ) - seen_infra.add(key) - for e in new_entries: - key = (e["name"].lower(), e.get("ip", "")) - if key in seen_infra: - continue - ir["infrastructure"].append(e) - seen_infra.add(key) - print(f"[HOST-EXTRACT] added {len(new_entries)} named hosts") - - # --------------------------------------------------------- - # Service / Application Extraction (NEW: cti_extract_services) - # - # CTI reports name application-level services (Active Directory, - # RDP, SMB, SQL Server, Exchange, KVM, NetBNMBackup, ...). The - # extractor admits each candidate ONLY when one of these - # ontology sources backs it: - # * IANA service registry (Python stdlib socket / /etc/services) - # * MITRE ATT&CK data-source vocabulary + technique-name - # phrase harvesting (Server Message Block, Remote Desktop - # Protocol, ...) - # Each service is added to ir["services"] AND mirrored into - # ir["infrastructure"] so stage2 emits a STIX infrastructure SDO. - # --------------------------------------------------------- - ir.setdefault("services", []) - try: - # Reuse taxonomy loaded above for the software pass. - services = extract_services(text, taxonomy=_sw_taxonomy) - except Exception as e: - print(f"[SERVICE-EXTRACT][WARN] {e}") - services = [] - if services: - seen_services = { - (s.get("name") or "").strip().lower() - for s in ir["services"] - } - for s in services: - key = (s.get("name") or "").strip().lower() - if key in seen_services: - continue - ir["services"].append(s) - seen_services.add(key) - # Mirror into infrastructure[] so the stage2 builder - # produces STIX `infrastructure` SDOs. - svc_infra_entries = services_to_infrastructure_entries(services) - seen_infra = { - ((inf.get("name") or "").strip().lower(), - (inf.get("ip") or "").strip()) - for inf in ir.get("infrastructure", []) - if isinstance(inf, dict) - } - for e in svc_infra_entries: - key = (e["name"].lower(), e.get("ip", "")) - if key in seen_infra: - continue - ir["infrastructure"].append(e) - seen_infra.add(key) - print(f"[SERVICE-EXTRACT] added {len(services)} services " - f"({len(svc_infra_entries)} infra entries)") - - # --------------------------------------------------------- - # 5. Entity validation - # --------------------------------------------------------- - ir = await validate_entities(ir, destructive=False) - ir = repair_entities(ir) - - # --------------------------------------------------------- - # 6. MITRE ATT&CK - # --------------------------------------------------------- - techniques, lookup = build_normalized_attack_patterns() - ir = clean_ir_nlp_layer2(ir, {"attack_patterns": techniques}) - - ling = await extract_dynamic_techniques( - text, - techniques, - ir.get("qualified_behaviors", []), - limit=25, - ) + print(f"[TAXONOMY][WARN] {e}") + taxonomy = None mitre = extract_mitre_techniques( text, - qualified, + ir.get("behaviors", []), techniques, lookup, ) # --------------------------------------------------------- - # 6.5 Explicit-anchor technique grounding (NEW) + # 3.5 Explicit-anchor technique grounding # # Walk a set of STRUCTURAL ANCHORS (binary names, system # commands, narrative phrases) and resolve each to an ATT&CK @@ -527,7 +320,7 @@ async def process_file( # T1059.001). # --------------------------------------------------------- try: - grounded = ground_techniques(text, taxonomy=_sw_taxonomy) + grounded = ground_techniques(text, taxonomy=taxonomy) except Exception as e: print(f"[TECHNIQUE-GROUND][WARN] {e}") grounded = [] @@ -536,13 +329,17 @@ async def process_file( seen = set() merged = [] - for t in ir.get("attack_patterns", []) + ling + mitre + grounded: + # The linguistic source is deliberately absent: measured on the committed + # BlackCat stick it contributed 21 false positives and zero true + # positives, including three revoked ATT&CK ids, because it emits + # techniques with no platforms key that the filter then keeps. + for t in ir.get("attack_patterns", []) + mitre + grounded: if isinstance(t, dict) and t.get("id") and t["id"] not in seen: seen.add(t["id"]) merged.append(t) # --------------------------------------------------------- - # 6.6 Platform-attestation filter + # 3.6 Platform-attestation filter # # Drop techniques whose `x_mitre_platforms` doesn't overlap # the platform set attested in the source text. Stops @@ -551,7 +348,7 @@ async def process_file( # from ATT&CK's `x_mitre_platforms` walks. # --------------------------------------------------------- try: - attested = detect_platforms(text, taxonomy=_sw_taxonomy) + attested = detect_platforms(text, taxonomy=taxonomy) if attested: before = len(merged) merged = filter_techniques_by_platform(merged, attested) @@ -574,82 +371,15 @@ async def process_file( ir["attack_patterns"] = merged # --------------------------------------------------------- - # 6b. Domain Extraction (AD signal) - # - # Pulls Windows AD / DNS domain names out of the cleaned prose. - # Ontology-grounded: regex + spaCy ORG NER, gated by ATT&CK - # technique IDs whose canonical names imply AD (T1003.006, T1558.*, - # T1078.002, T1069.002, T1087.002, T1018, T1482, T1484, T1098.007, - # T1207, T1556.001, T1550.002/3). No hardcoded CTI->domain map. - # --------------------------------------------------------- - ir.setdefault("domains", []) - try: - ap_ids = [ - ap.get("id") for ap in ir.get("attack_patterns", []) - if isinstance(ap, dict) and ap.get("id") - ] - domains = extract_domains(text, attack_pattern_ids=ap_ids, nlp=None) - except Exception as e: - print(f"[DOMAIN-EXTRACT][WARN] {e}") - domains = [] - if domains: - seen_domains = { - (d.get("name") or "").lower() for d in ir["domains"] - } - for d in domains: - key = (d.get("name") or "").lower() - # Allow multiple synthetic entries only if they have non-empty - # signal sets that differ (defensive — shouldn't happen). - if key and key in seen_domains: - continue - ir["domains"].append(d) - if key: - seen_domains.add(key) - print(f"[DOMAIN-EXTRACT] added {len(domains)} domain entries") - - # --------------------------------------------------------- - # 6c. Observable Surface Extraction - # - # Reuse the generic AE-library parsers for first-class observables - # that matter as operation facts: filesystem paths, - # and Windows registry keys/values. These helpers are structural - # regex extractors, not scenario-specific lists; Stage 2 turns the - # resulting IR fields into STIX SCOs. - # --------------------------------------------------------- - observable_extractors = ( - ("network_subnets", extract_network_subnets), - ("file_paths", extract_file_paths), - ("registry_keys", extract_registry_keys), - ) - for field, extractor in observable_extractors: - ir.setdefault(field, []) - try: - values = extractor(text) - except Exception as e: - print(f"[OBSERVABLE-EXTRACT][WARN] {field}: {e}") - values = [] - if not values: - continue - seen = {str(v).strip().lower() for v in ir[field] if str(v).strip()} - added = 0 - for value in values: - sval = str(value).strip() - if not sval: - continue - key = sval.lower() - if key in seen: - continue - ir[field].append(sval) - seen.add(key) - added += 1 - if added: - print(f"[OBSERVABLE-EXTRACT] added {added} {field}") - - # --------------------------------------------------------- - # 7. Output + # 4. Output # --------------------------------------------------------- final = convert_sets(ir) - final["provenance"] = ir.get("provenance") + provenance = dict(ir.get("provenance") or {}) + # Which extractor actually produced the IR. The model can be configured and + # still return nothing, in which case the deterministic extractor ran and + # crediting the model would be wrong. + provenance["extractor"] = ir.get("extractor", "unknown") + final["provenance"] = provenance (final_dir / f"{path.stem}.json").write_text( json.dumps(final, indent=2), encoding="utf-8", @@ -674,10 +404,16 @@ def process_one_file_sync(path, ir_dir, final_dir, stop_after): • Executes the async pipeline via asyncio.run() """ - # Load spaCy per worker (MANDATORY) + # The model is not on PyPI under its own name, so pip alone does not + # supply it. This check existed but its body was `pass`, so the real + # failure was an OSError raised from inside spacy.load, several frames + # deep in a worker, naming nothing the operator could act on. import spacy if not spacy.util.is_package("en_core_web_lg"): - pass + raise RuntimeError( + "spaCy model en_core_web_lg is not installed. Run: " + "python -m spacy download en_core_web_lg" + ) asyncio.run(process_file(path, ir_dir, final_dir, stop_after)) @@ -720,54 +456,6 @@ async def load_or_extract_ir(path: Path, text: str, ir_dir: Path) -> dict: print(f"[IR] Extracted {path.stem}") return ir -def _merge_commands(entity, commands): - existing = {c["command"] for c in entity.get("x_cti_commands", [])} - for c in commands: - if c["command"] not in existing: - entity.setdefault("x_cti_commands", []).append(c) - -def rag_safe_relationships(rels: list[dict], min_conf: float = 0.55) -> list[dict]: - """ - Filter relationships for RAG suitability. - - Constraints: - • confidence ≥ min_conf - • source_context ∈ {behavior, sentence} - """ - return [ - r for r in rels - if r.get("confidence", 0.0) >= min_conf - and r.get("source_context") in {"behavior", "sentence"} - ] - -def prepare_raw_uploads(base_dir: Path, selected: list[dict]): - uploads = base_dir / "raw" / "uploads" - inbox = base_dir / "raw" / "inbox" - processed = base_dir / "raw" / "processed" - SUPPORTED_EXTS = {".html", ".htm", ".pdf", ".txt", ".md"} - - - uploads.mkdir(parents=True, exist_ok=True) - for item in selected: - name = item["name"] - location = item["location"] - src_root = inbox if location == "inbox" else processed - src = src_root / name - if not src.exists(): - continue - - if src.is_file(): - _copy_if_needed(src, uploads / src.name) - - elif src.is_dir(): - for f in src.rglob("*"): - if f.suffix.lower() in SUPPORTED_EXTS: - _copy_if_needed(f, uploads / f.name) - -def _copy_if_needed(src: Path, dst: Path): - if dst.exists(): - return - shutil.copy2(src, dst) diff --git a/app/cti_pipeline_stage2.py b/app/cti_pipeline_stage2.py index dbc4e7b..3cc248c 100644 --- a/app/cti_pipeline_stage2.py +++ b/app/cti_pipeline_stage2.py @@ -15,52 +15,30 @@ data/outputs_stix/debug/.ir.json (IR copy) data/outputs_stix/debug/.ir.pretty.txt (IR pretty summary) data/outputs_stix/debug/.conversion.log (step-by-step log) - data/outputs_stix/debug/.relationships.json (relationship debug) data/outputs_stix/debug/.validation.txt (validation issues) data/outputs_stix/debug/.metrics.json (quality metrics) data/outputs_stix/debug/.audit.json (full audit trail) """ -import argparse import json from pathlib import Path -import uuid import datetime -from nltk.corpus import wordnet as wn # ----------------- Imports from utilities ----------------- -from plugins.mcp.app.utilities.cti_linguistics import normalize_behavior_text from plugins.mcp.app.utilities.cti_stix_builders import ( make_bundle, - make_malware, - make_tool, make_threat_actor, - make_infrastructure, make_attack_pattern, - make_observed_data, - make_relationship, - make_identity, - make_user_account, - make_software, - make_ipv4_addr, - make_file_path, - make_windows_registry_key, ) -from plugins.mcp.app.utilities.cti_taxonomy_loader import ( - load_mitre_taxonomy, - lookup_name, - lookup_attack_id -) +from plugins.mcp.app.utilities.cti_taxonomy_loader import load_mitre_taxonomy from plugins.mcp.app.utilities.cti_stix_validation import validate_bundle from plugins.mcp.app.utilities.cti_stix_report_writer import render_stix_report -from plugins.mcp.app.utilities.cti_defend_enricher import enrich_stix_bundle_with_defend from plugins.mcp.app.utilities.cti_mitre_extract import hashes_to_stix_observed_data -from plugins.mcp.app.utilities.llm_client import get_llm_provenance # ----------------------------------------------------------- @@ -75,12 +53,7 @@ OUTPUTS_IR_DIR = "outputs_ir/complete" OUTPUTS_STIX_DIR = "outputs_stix" DEBUG_DIR = "debug" -OUTPUTS_CAD_DIR = "outputs_cad" - -def get_d3fend_root(mcp_root: Path | None = None) -> Path: - """Return the existing D3FEND CAD asset directory.""" - return (mcp_root or root_dir) / "app" / "utilities" / "D3fend_CAD" def log(msg): @@ -112,40 +85,22 @@ def load_ir(path: Path) -> dict: def compute_metrics(ir: dict, bundle: dict) -> dict: """Generate transformation quality metrics.""" return { - "timestamp": datetime.datetime.utcnow().isoformat() + "Z", + "timestamp": datetime.datetime.now(datetime.UTC).isoformat().replace("+00:00", "Z"), "input_counts": { - "malware": len(ir.get("malware", [])), - "tools": len(ir.get("tools", [])), "threat_actors": len(ir.get("threat_actors", [])), - "infrastructure": len(ir.get("infrastructure", [])), "attack_patterns": len(ir.get("attack_patterns", [])), "behaviors": len(ir.get("behaviors", [])), - "relationships": len(ir.get("relationships", [])), - "domains": len(ir.get("domains", [])), - "user_accounts": len(ir.get("user_accounts", [])), - "software": len(ir.get("software", [])), + "hashes": len(ir.get("hashes", [])), }, "output_counts": { "total_stix_objects": len(bundle.get("objects", [])), - "relationships": len([ - o for o in bundle.get("objects", []) - if o.get("type") == "relationship" - ]), "attack_patterns": len([ o for o in bundle.get("objects", []) if o.get("type") == "attack-pattern" ]), - "identities": len([ - o for o in bundle.get("objects", []) - if o.get("type") == "identity" - ]), - "user_accounts": len([ - o for o in bundle.get("objects", []) - if o.get("type") == "user-account" - ]), - "software": len([ + "threat_actors": len([ o for o in bundle.get("objects", []) - if o.get("type") == "software" + if o.get("type") == "threat-actor" ]), } } @@ -169,42 +124,12 @@ def convert_ir_to_stix(ir: dict, debug: dict, taxonomy: dict) -> dict: """ stix_objects = [] - name_to_id = {} debug["conversion_steps"] = [] - debug["relationship_debug"] = [] # Helper for logging def log(msg): debug["conversion_steps"].append(msg) - log(f"[DEBUG] Processing {len(ir.get('attack_patterns', []))} TTPs, " - f"{len(ir.get('relationships', []))} relationships") - - - # ------- Malware ------- - # Pass the loaded MITRE ATT&CK taxonomy so the builder enriches each - # object with x_mitre_platforms, x_mitre_aliases, malware_types, - # external_references — pure ontology lookup (no static malware->OS - # tables). Misses degrade gracefully to IR-only output. - for m in ir.get("malware", []): - obj = make_malware(m, taxonomy) - log(f"Malware → {m.get('name')} → {obj['id'] if obj else 'SKIPPED'} " - f"platforms={obj.get('x_mitre_platforms') if obj else None}") - if obj: - stix_objects.append(obj) - name_to_id[obj["name"].lower()] = obj["id"] - for alias in obj.get("aliases", []): - name_to_id[alias.lower()] = obj["id"] - - # ------- Tools ------- - for t in ir.get("tools", []): - obj = make_tool(t, taxonomy) - log(f"Tool → {t.get('name')} → {obj['id'] if obj else 'SKIPPED'} " - f"platforms={obj.get('x_mitre_platforms') if obj else None}") - if obj: - stix_objects.append(obj) - name_to_id[obj["name"].lower()] = obj["id"] - for alias in obj.get("aliases", []): - name_to_id[alias.lower()] = obj["id"] + log(f"[DEBUG] Processing {len(ir.get('attack_patterns', []))} TTPs") # ------- Threat Actors ------- for ta in ir.get("threat_actors", []): @@ -212,165 +137,6 @@ def log(msg): log(f"Threat Actor → {ta.get('name')} → {obj['id'] if obj else 'SKIPPED'}") if obj: stix_objects.append(obj) - name_to_id[obj["name"].lower()] = obj["id"] - for alias in obj.get("aliases", []): - name_to_id[alias.lower()] = obj["id"] - - # ------- Infrastructure ------- - # Pass the full attack_patterns list AND the taxonomy so - # make_infrastructure can derive kill_chain_phases via three signals: - # 1) IR APs with explicit 'tactic' (post-enrichment) - # 2) IR APs with explicit kill_chain_phases - # 3) IR APs carrying a technique id resolved against ATT&CK - # attack_id_index (pure ontology lookup; no static T1xxx tables). - _ir_aps = ir.get("attack_patterns", []) - # IR relationships drive per-infra `kill_chain_phases` scoping - # inside make_infrastructure (see gap #6 in - # /tmp/blackcat-pipeline-vs-measuring-stick.md). Without this the - # builder falls back to the legacy "every related AP's phases on - # every infra" union (12 KCPs each on BlackCat) instead of the - # measuring-stick-target 1-3 phases per infra. - _ir_relationships = ir.get("relationships", []) or [] - # Track infrastructure objects so we can later emit located-at edges - # to domain identities. - infra_objs_for_locating: list[dict] = [] - for inf in ir.get("infrastructure", []): - obj = make_infrastructure( - inf, - related_attack_patterns=_ir_aps, - taxonomy=taxonomy, - relationships=_ir_relationships, - ) - log(f"Infrastructure → {inf.get('name')} → {obj['id'] if obj else 'SKIPPED'} " - f"types={obj.get('infrastructure_types') if obj else None} " - f"kcp={len(obj.get('kill_chain_phases', [])) if obj else 0} " - f"ip={obj.get('x_cti_ip') if obj else None} " - f"os={obj.get('x_cti_target_os') if obj else None} " - f"role={obj.get('x_cti_role') if obj else None}") - if obj: - stix_objects.append(obj) - name_to_id[obj["name"].lower()] = obj["id"] - for alias in obj.get("aliases", []): - name_to_id[alias.lower()] = obj["id"] - if obj.get("x_cti_ip"): - infra_objs_for_locating.append(obj) - - # ------- Domains (NEW IR field) ------- - # cti_extract_domains emits dicts shaped - # {name, type, confidence, signals, evidence}. Each becomes a STIX - # 2.1 identity SDO. AD-typed entries are emitted with - # identity_class="organization" and an x_cti_signals list carrying - # the ATT&CK technique IDs that triggered the AD classification. - # The identity IDs are recorded in domain_name_to_id so the - # downstream user-account / infrastructure located-at edges can - # resolve their target_ref. - domain_name_to_id: dict[str, str] = {} # lowercased domain name -> identity-- id - for d in ir.get("domains", []) or []: - if not isinstance(d, dict): - continue - # AD / unknown / dns-only — every one becomes an identity SDO; - # the type slug rides as x_cti_domain_type for downstream - # consumers. - obj = make_identity(d, identity_class="organization") - log(f"Identity (domain) → {d.get('name')} → " - f"{obj['id'] if obj else 'SKIPPED'} " - f"type={obj.get('x_cti_domain_type') if obj else None} " - f"signals={obj.get('x_cti_signals') if obj else None}") - if obj: - stix_objects.append(obj) - domain_name_to_id[obj["name"].lower()] = obj["id"] - # Also register in name_to_id so a freeform IR relationship - # could reference the domain by name. - name_to_id.setdefault(obj["name"].lower(), obj["id"]) - - # ------- User Accounts (NEW IR field) ------- - # cti_extract_users emits dicts shaped {username, domain, password, - # privilege, account_type, evidence, confidence}. Each becomes a - # STIX 2.1 user-account SCO. Passwords are dropped by default - # (keep_credential=False) per the no-secrets-in-bundle rule; the - # SCO instead carries x_cti_password_provenance ∈ - # {absent, redacted, source}. - user_account_objs: list[dict] = [] - for u in ir.get("user_accounts", []) or []: - if not isinstance(u, dict): - continue - obj = make_user_account(u, keep_credential=False) - log(f"User-Account → {u.get('username')} → " - f"{obj['id'] if obj else 'SKIPPED'} " - f"acct_type={obj.get('account_type') if obj else None} " - f"domain={obj.get('x_cti_domain') if obj else None} " - f"pw_prov={obj.get('x_cti_password_provenance') if obj else None}") - if obj: - stix_objects.append(obj) - user_account_objs.append(obj) - - # ------- Software (NEW IR field) ------- - # cti_extract_software emits dicts shaped {name, version, source, - # purl, software_kind, attack_id, cve_refs, evidence, confidence}. - # Each becomes a STIX 2.1 `software` SCO with version and PURL. - for sw in ir.get("software", []) or []: - if not isinstance(sw, dict): - continue - obj = make_software(sw, taxonomy=taxonomy) - log(f"Software → {sw.get('name')} v={sw.get('version')} → " - f"{obj['id'] if obj else 'SKIPPED'} " - f"kind={obj.get('x_cti_software_kind') if obj else None} " - f"attack_id={obj.get('x_cti_attack_id') if obj else None} " - f"purl={obj.get('x_cti_purl') if obj else None}") - if obj: - stix_objects.append(obj) - name_to_id.setdefault(obj["name"].lower(), obj["id"]) - - # ------- located-at relationships ------- - # For each user-account whose x_cti_domain matches a domain identity - # SDO in this bundle, emit a (user-account)->[located-at]->(identity) - # SRO. STIX 2.1 §5.5 lists "located-at" as a spec relationship type; - # we use it here to bind cyber-observables (the SCO) to their - # organizational anchor (the identity SDO). - for ua in user_account_objs: - dom = (ua.get("x_cti_domain") or "").strip().lower() - if not dom: - continue - identity_id = domain_name_to_id.get(dom) - if not identity_id: - continue - rel = make_relationship("located-at", ua["id"], identity_id) - if rel: - rel["x_cti_confidence"] = ua.get("x_cti_confidence") - rel["x_cti_status"] = "concrete" - rel["x_cti_target_role"] = "identity" - rel["x_cti_evidence"] = ua.get("x_cti_evidence") - stix_objects.append(rel) - log(f"Relationship → user-account {ua['user_id']} " - f"--[located-at]--> identity {dom} → {rel['id']}") - - # For each infrastructure object with an IP and a domain identity - # present in the bundle, emit a (infrastructure)->[located-at]-> - # (identity) SRO. When >1 domain is in the bundle we attempt to - # match by FQDN suffix on the infra `name`; otherwise we link to - # the single domain identity. - if infra_objs_for_locating and domain_name_to_id: - for infra in infra_objs_for_locating: - target_identity = None - iname_low = (infra.get("name") or "").lower() - for dom_low, ident_id in domain_name_to_id.items(): - # Suffix-match: hostname "srv.contoso.com" -> domain "contoso.com" - if dom_low and ( - iname_low.endswith("." + dom_low) or iname_low == dom_low - ): - target_identity = ident_id - break - if target_identity is None and len(domain_name_to_id) == 1: - target_identity = next(iter(domain_name_to_id.values())) - if target_identity is None: - continue - rel = make_relationship("located-at", infra["id"], target_identity) - if rel: - rel["x_cti_status"] = "inferred" - rel["x_cti_target_role"] = "identity" - stix_objects.append(rel) - log(f"Relationship → infrastructure {infra.get('name')} " - f"--[located-at]--> identity → {rel['id']}") # ------- TTPs / ATT&CK ------- for ttp in ir.get("attack_patterns", []): @@ -388,7 +154,6 @@ def log(msg): log(f"TTP → {label} → {obj['id'] if obj else 'SKIPPED'}") if obj: stix_objects.append(obj) - name_to_id[obj["name"].lower()] = obj["id"] # ------- Hashes (Observed Data) ------- if ir.get("hashes"): @@ -396,180 +161,6 @@ def log(msg): stix_objects.extend(hash_objects) log(f"Observed-Data → {len(hash_objects)} file hash observables created") - # ------- Observable SCOs ------- - observable_builders = ( - ("network_subnets", make_ipv4_addr, "IPv4/CIDR observable"), - ("file_paths", make_file_path, "file path observable"), - ("registry_keys", make_windows_registry_key, "registry key observable"), - ) - for field, builder, label in observable_builders: - seen_values = set() - emitted = 0 - for raw_value in ir.get(field, []) or []: - value = str(raw_value).strip() - if not value: - continue - key = value.lower() - if key in seen_values: - continue - seen_values.add(key) - obj = builder(value) - if not obj: - continue - obj["x_cti_source_field"] = field - stix_objects.append(obj) - emitted += 1 - if emitted: - log(f"Observable SCO → {emitted} {label}(s) from {field}") - - # ------- Observed Data ------- - for obs in ir.get("qualified_behaviors", ir.get("behaviors", [])): - if isinstance(obs, dict): - behavior_text = obs.get("normalized") or obs.get("description") or "" - else: - behavior_text = obs - - if not behavior_text.strip(): - log("Observed-Data → SKIPPED (empty after IR normalization)") - continue - - norm_text = normalize_behavior_text(behavior_text) - - # obj = make_observed_data(norm_text) - # if not obj: - # continue - - # if isinstance(obs, dict): - # if "confidence" in obs: - # obj["x_cti_confidence"] = obs["confidence"] - # if "evidence" in obs: - # obj["x_cti_evidence"] = obs["evidence"] - # # Preserve execution-ready metadata for MCP RAG / AE / IaC - # if "x_cti_configuration" in obs: - # obj["x_cti_configuration"] = obs["x_cti_configuration"] - # if "x_cti_sequence" in obs: - # obj["x_cti_sequence"] = obs["x_cti_sequence"] - - # stix_objects.append(obj) - - # ------------------------------------------------------- - # Build relationships - # ------------------------------------------------------- - for rel in ir.get("relationships", []): - # New Stage-1 schema (primary): - # { "source": "...", "relationship": "...", "target": "..." } - # Backwards-compatible fallbacks for legacy runs. - - src_name = ( - rel.get("source") - or rel.get("src") - or rel.get("entity1") - or "" - ).lower().strip() - - dst_name = ( - rel.get("target") - or rel.get("dst") - or rel.get("entity2") - or "" - ).lower().strip() - - raw_rel = ( - rel.get("relationship") - or rel.get("rel") - or rel.get("relation") - or "" - ) - - entry = {"src": src_name, "dst": dst_name, "raw_rel": raw_rel} - if not raw_rel: - entry["status"] = "SKIPPED (empty verb)" - debug["relationship_debug"].append(entry) - continue - - - if not src_name or not dst_name or not raw_rel: - entry["status"] = "SKIPPED (missing fields)" - debug["relationship_debug"].append(entry) - continue - - # ------------------------------------------------------- - # Relationship resolution (lossless, uncertainty-aware) - # ------------------------------------------------------- - - status = rel.get("status", "concrete") - target_role = rel.get("target_role", "unknown") - confidence = rel.get("confidence", 0.5) - evidence = rel.get("evidence", []) - # --------------------------------------------------------------------------- - - src_id = name_to_id.get(src_name) - dst_id = name_to_id.get(dst_name) - - # --- Handle unresolved TARGET without dropping --- - if not dst_id: - placeholder_name = f"abstract-{target_role}-{dst_name or 'target'}" - - if placeholder_name.lower() not in name_to_id: - placeholder_obj = ( - make_infrastructure({ - "name": placeholder_name, - "description": "Abstract relationship target derived from CTI text", - "confidence": confidence, - "x_cti_status": status, - "x_cti_evidence": evidence, - "x_cti_target_role": target_role, - }) - if target_role == "infrastructure" - else { - "type": "x-cti-artifact", - "spec_version": "2.1", - "id": new_stix_id("x-cti-artifact"), - "name": placeholder_name, - "confidence": confidence, - "x_cti_status": status, - "x_cti_evidence": evidence, - "x_cti_target_role": target_role, - "x_cti_artifact_kind": "configuration-object", - } - ) - - stix_objects.append(placeholder_obj) - name_to_id[placeholder_name.lower()] = placeholder_obj["id"] - - dst_id = name_to_id[placeholder_name.lower()] - - - # --- Handle unresolved SOURCE (cannot recover safely) --- - if not src_id: - entry["status"] = "SKIPPED (unresolved source)" - debug["relationship_debug"].append(entry) - continue - - # ------------------------------------------------------- - # Relationship creation (Stage-1 semantics preserved) - # ------------------------------------------------------- - - stix_rel = raw_rel.strip().lower().replace(" ", "-") - - rel_obj = make_relationship(stix_rel, src_id, dst_id) - - if rel_obj: - # Preserve Stage-1 semantics explicitly - rel_obj["x_cti_confidence"] = rel.get("confidence") - rel_obj["x_cti_status"] = rel.get("status", "concrete") - rel_obj["x_cti_target_role"] = rel.get("target_role") - rel_obj["x_cti_evidence"] = rel.get("evidence") - - stix_objects.append(rel_obj) - entry["status"] = f"CREATED ({rel_obj['x_cti_status']})" - else: - entry["status"] = "SKIPPED (failed creation)" - - - - debug["relationship_debug"].append(entry) - # ------------------------------------------------------- # Final STIX Bundle # ------------------------------------------------------- @@ -577,14 +168,20 @@ def log(msg): if not provenance: raise ValueError("Missing provenance in IR (rerun Stage-1 to regenerate IR with provenance)") - model = provenance.get("model") - provider = provenance.get("provider") + # provenance is built from config whether or not the model was reached, so + # crediting it unconditionally stamped the configured model onto bundles + # that spaCy produced end to end. Stage 1 records which extractor actually + # ran; only the LLM path earns the attribution. + extractor = ir.get("extractor") + used_llm = extractor == "llm" + model = provenance.get("model") if used_llm else None + provider = provenance.get("provider") if used_llm else None bundle = make_bundle( stix_objects, model=model, provider=provider, - config=provenance, + config={**provenance, "extractor": extractor} if extractor else provenance, ) debug["bundle_id"] = bundle["id"] @@ -597,11 +194,9 @@ def log(msg): def run_phase2(base_dir: Path): outputs_ir = base_dir / OUTPUTS_IR_DIR outputs_stix = base_dir / OUTPUTS_STIX_DIR - outputs_cad = base_dir / OUTPUTS_CAD_DIR debug_dir = outputs_stix / DEBUG_DIR outputs_stix.mkdir(parents=True, exist_ok=True) - outputs_cad.mkdir(parents=True, exist_ok=True) # Load MITRE taxonomy once taxonomy = load_mitre_taxonomy() @@ -651,8 +246,6 @@ def run_phase2(base_dir: Path): write_debug_file(debug_dir / f"{stem}.metrics.json", metrics) # Write relationship debug - write_debug_file(debug_dir / f"{stem}.relationships.json", - debug.get("relationship_debug", [])) # Write conversion log write_debug_file(debug_dir / f"{stem}.conversion.log", @@ -665,16 +258,8 @@ def run_phase2(base_dir: Path): "metrics": metrics, "validation_errors": errors, "conversion_log": debug.get("conversion_steps", []), - "relationship_debug": debug.get("relationship_debug", []), } - audit["unresolved_entities"] = [ - r for r in debug.get("relationship_debug", []) - if "unresolved" in r.get("status", "") - ] - - audit["object_count_before_bundle"] = len(bundle.get("objects", [])) - audit["object_count_after_bundle"] = len(bundle.get("objects", [])) - + audit["object_count"] = len(bundle.get("objects", [])) write_debug_file(debug_dir / f"{stem}.audit.json", audit) @@ -690,92 +275,6 @@ def run_phase2(base_dir: Path): log(f" → wrote {stem}.stix.txt") - # ------------------------------------------------------- - # Write CAD Graph Preview for Visualizer Testing - # ------------------------------------------------------- - defense_root = get_d3fend_root() - try: - enriched_bundle, ontology_info = enrich_stix_bundle_with_defend(bundle, defense_root) - except FileNotFoundError as e: - log(f"[D3FEND] Skipping enrichment (missing assets): {e}") - ontology_info = {} - log(" → performed D3FEND enrichment") - log("ontology_info keys:") - log(", ".join(ontology_info.keys())) - if "cad_graph" in ontology_info: - cad_out = outputs_cad / f"{stem}.cad.json" - with cad_out.open("w", encoding="utf-8") as f: - json.dump(ontology_info["cad_graph"], f, indent=2) - - log(f" → wrote {cad_out.name} (CAD Graph Preview)") - else: - log(" [!] No CAD graph returned from enrichment.") - - # ------------------------------------------------------- - # STDOUT log: ontology modules + mappings + schema used - # ------------------------------------------------------- - log("\n===== D3FEND ENRICHMENT DEBUG =====") - if ontology_info: - modules = ontology_info.get("ontology_modules", []) - log(f"[Ontology] Loaded {len(modules)} ontology_modules:") - for m in modules: - log(f" - {m}") - log(f"\n[CAD Schema] {ontology_info.get('cad_schema')}") - - log("\n[Dynamic D3FEND Class Mappings]:") - for k, v in ontology_info.get("mappings_used", {}).items(): - log(f" {k:20s} → {v}") - else: - log("[D3FEND] Enrichment skipped — ontology assets not available") - log("===== END D3FEND ENRICHMENT DEBUG =====\n") - - -# ----------------------------------------------------------- -# STIX → CAD Enrichment Only Runner -# ----------------------------------------------------------- -def run_stix_to_cad_only(base_dir: Path): - outputs_stix = base_dir / OUTPUTS_STIX_DIR - outputs_cad = base_dir / OUTPUTS_CAD_DIR - - outputs_stix.mkdir(parents=True, exist_ok=True) - outputs_cad.mkdir(parents=True, exist_ok=True) - - log("[+] Running STIX → CAD enrichment only") - - # Only process raw STIX bundles, not CAD output - stix_files = sorted(outputs_stix.glob("*.stix.json")) - if not stix_files: - log("[!] No .stix.json files found in outputs_stix/.") - return - - defense_root = get_d3fend_root() - - for stix_file in stix_files: - log(f" [*] Enriching {stix_file.name}") - - with stix_file.open("r", encoding="utf-8") as f: - bundle = json.load(f) - enriched_bundle, ontology_info = enrich_stix_bundle_with_defend(bundle, defense_root) - - stem = stix_file.name.replace(".stix.json", "") - # Write CAD graph - if "cad_graph" in ontology_info: - cad_out = outputs_cad / f"{stem}.cad.json" - with cad_out.open("w", encoding="utf-8") as f: - json.dump(ontology_info["cad_graph"], f, indent=2) - log(f" → wrote {cad_out.name} (CAD Graph)") - else: - log(" [!] No CAD graph returned.") - -def is_physical_or_protocol(noun: str) -> bool: - synsets = wn.synsets(noun, pos=wn.NOUN) - return any(s.lexname() in {"noun.artifact", "noun.communication"} for s in synsets) - -def new_stix_id(stix_type: str) -> str: - """ - Generate a valid STIX 2.1 ID using UUIDv4. - """ - return f"{stix_type}--{uuid.uuid4()}" diff --git a/app/discovery/servers.py b/app/discovery/servers.py index f70d0ea..2b4aebe 100644 --- a/app/discovery/servers.py +++ b/app/discovery/servers.py @@ -55,13 +55,14 @@ def discover_mcp_servers(plugins_root: Path) -> dict: # the defaults baked in below. cti_pipeline_path = plugins_root / "mcp" / "mcp_server.py" if cti_pipeline_path.exists(): + # Only reached when the server's own MCP_METADATA could not be read. + # Restating its description here is how this copy came to advertise a + # deploy step that no longer exists, so say only what is still true + # when the metadata is unavailable. cti_metadata = _safe_load_metadata(cti_pipeline_path) or { "display_name": "CTI Pipeline", "default_enabled": False, - "description": ( - "CTI ingest -> STIX -> adversary -> " - "-> operation -> detection-validation tools." - ), + "description": "CTI pipeline tools. Server metadata unavailable.", } registry["cti_pipeline"] = { "path": cti_pipeline_path, diff --git a/app/dspy_env.py b/app/dspy_env.py index f9bfc15..fa7ae1a 100644 --- a/app/dspy_env.py +++ b/app/dspy_env.py @@ -20,6 +20,14 @@ import os import dspy +# dspy parks a lazy proxy at sys.modules["numpy"], and thinc's Cython +# _import_array() cannot see through it, so spaCy fails to import. A bare +# `import numpy` only rebinds the proxy; the attribute access is what forces +# the real module. Every path that reaches spaCy imports dspy_env first. +import numpy as _numpy + +_ = _numpy.ndarray + ENV_MODEL = "DSPY_MODEL" ENV_API_KEY = "DSPY_API_KEY" @@ -30,10 +38,13 @@ ENV_TIMEOUT = "DSPY_TIMEOUT" ENV_SSL_VERIFY = "DSPY_SSL_VERIFY" +# Last-resort fallbacks when a setting reaches here unset. Kept equal to +# conf/default.yml so the subprocess cannot run on different numbers from the +# ones the UI displays. _DEFAULTS = { "model": "gpt-4o", - "temperature": 0.5, - "max_tokens": 10000, + "temperature": 0.0, + "max_tokens": 24000, } _LM_CONFIGURED = False @@ -181,7 +192,16 @@ def __init__(self): self.create_full_command = dspy.ChainOfThought(CreateFullCommand) def forward(self, description: str, platform: str): - identified_technologies = self.identify_technologies(description=description, platform=platform) - ranked_approaches = self.rank_approaches(description=description, technologies=identified_technologies) - full_command = self.create_full_command(technologies=identified_technologies, approaches=ranked_approaches) - return full_command.command + # Each step returns a Prediction, not the field. Passing the whole + # object into a list[str] input made DSPy stringify the prediction, + # reasoning included, into the next prompt: the ranker saw a paragraph + # of prose where it declared a list, and warned on every call. + technologies = self.identify_technologies( + description=description, platform=platform + ).technologies + approaches = self.rank_approaches( + description=description, technologies=technologies + ).approaches + return self.create_full_command( + technologies=technologies, approaches=approaches + ).command diff --git a/app/mcp_api.py b/app/mcp_api.py index 424b1b7..cbb087a 100644 --- a/app/mcp_api.py +++ b/app/mcp_api.py @@ -7,12 +7,24 @@ import yaml import shutil import asyncio -import subprocess from pathlib import Path -from datetime import datetime +from datetime import datetime, timezone + +from app.service.auth_svc import for_all_public_methods, check_authorization from plugins.mcp.app.config import llm_defaults -from plugins.mcp.app.utilities.llm_client import load_config, reload_config +from plugins.mcp.app.utilities.llm_client import ( + LLM_OVERRIDABLE, + LLM_PROFILES, + WORKLOAD_OVERRIDABLE, + deep_merge, + layered_profile, + load_config, + reload_config, + resolve_env_indirection, + unwrap_config_envelope, +) +from plugins.mcp.app.utilities.cti_raw_cleaner import clean_stem from plugins.mcp.app.utilities.paths import get_mcp_data_dir, get_mcp_root from plugins.mcp.app.cti_ingest_svc import CTIIngestService @@ -20,8 +32,11 @@ # come back from llm_defaults() which already applies its own fallbacks; # the RAG-specific defaults stay here because they belong to the capability # rather than the LLM provider. +# +# rag_embed_model has no literal default: an undeclared embedding model falls +# back to the configured chat model, since a deployment pointing at its own +# gateway has no reason to reach for an OpenAI model name it never chose. _RAG_DEFAULTS = { - "rag_embed_model": "openai/text-embedding-3-small", "rag_topk": 5, } @@ -30,7 +45,36 @@ # Matched by name rather than listed: the UI keeps growing key fields # (embed_api_key, plan_api_key, cti_rag_api_key) and a list keeps missing them. # api_key_env names a variable, not a value, so it is kept. -_SECRET_KEY_NAME = re.compile(r"api_?key", re.IGNORECASE) +# Widened past api_key: a gateway credential also arrives as an Authorization +# or x-api-key header, and the llm section used to accept any key at all, so +# all three reached the file in plaintext. +# max_tokens contains "token" and is a generation setting, not a credential, +# so the token alternative excludes it explicitly. Dropping it silently is +# worse than not matching a credential, because the operator sees a saved +# value vanish with no error. +_SECRET_KEY_NAME = re.compile( + r"(api[-_]?key|authorization|bearer|(? bool: @@ -45,10 +89,23 @@ def _without_secrets(value): return [_without_secrets(v) for v in value] return value +# Caldera gates plugin routes per handler, not with a middleware: auth_svc.apply +# only installs the session and security machinery, and check_authorization is +# what calls check_permissions. Without this every route here was reachable +# unauthenticated, including the ones that delete files and rewrite local.yml. +# McpGUI in this same plugin already carries it, as do access, gameboard and +# human. Every public method on this class is a registered route. +@for_all_public_methods(check_authorization) class McpAPI: def __init__(self, services): self.services = services + # check_authorization reaches for self.auth_svc on the instance. + self.auth_svc = services.get("auth_svc") + # Outcome of the most recent CTI run. cti_run returns as soon as the + # work is scheduled, so this is the only thing the browser can poll to + # learn that a run failed. + self._cti_run = {"state": "idle", "step": None, "files": [], "error": None} self.mcp_svc = services.get("mcp_svc") self.log = logging.getLogger("plugins.mcp") self.log.info("[MCP] Initialized McpAPI") @@ -222,10 +279,12 @@ async def defaults(self, request): "fields_locked": cfg.get("fields_locked") or {}, } for key, fallback in _RAG_DEFAULTS.items(): - if key == "rag_embed_model": - payload[key] = cfg.get(key) or cfg.get("embed_model") or fallback - else: - payload[key] = cfg.get(key, fallback) + payload[key] = cfg.get(key, fallback) + payload["rag_embed_model"] = ( + cfg.get("rag_embed_model") + or cfg.get("embed_model") + or cfg.get("model") + ) return web.json_response(payload) except Exception as e: self.log.error(f"[MCP] Error fetching defaults: {e}") @@ -328,7 +387,7 @@ async def upload_rag(self, request): target_path = base_dir / filename if target_path.exists(): - ts = datetime.utcnow().strftime("%Y%m%d_%H%M%S") + ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") stem = Path(filename).stem suffix = Path(filename).suffix filename = f"{stem}_{ts}{suffix}" @@ -366,7 +425,7 @@ async def list_rag(self, request): files.append({ "filename": p.name, "size": stat.st_size, - "modified": datetime.utcfromtimestamp(stat.st_mtime).isoformat() + "Z" + "modified": datetime.fromtimestamp(stat.st_mtime, timezone.utc).isoformat().replace("+00:00", "Z") }) except Exception: continue @@ -486,7 +545,17 @@ async def get_run_detail(self, request): # CTI vue async def cti_run(self, request): try: - data = await request.json() + try: + data = await request.json() + except Exception: + return web.json_response( + {"error": "Body must be JSON"}, status=400 + ) + if not isinstance(data, dict): + return web.json_response( + {"error": "Body must be a JSON object"}, status=400 + ) + files = data.get("files") step = data.get("step", "all") @@ -495,6 +564,20 @@ async def cti_run(self, request): {"error": "Missing files list"}, status=400 ) + # Every name is joined onto a Path below, so a non-string element + # raises TypeError and surfaces as a 500. The upload handlers pass + # their filenames through basename; this one never did, so a name + # with a separator escaped the uploads directory. + if not all(isinstance(f, str) and f.strip() for f in files): + return web.json_response( + {"error": "files must be a list of non-empty strings"}, + status=400 + ) + if any(f != os.path.basename(f) for f in files): + return web.json_response( + {"error": "files must be bare filenames"}, + status=400 + ) uploads = self.base_dir / "raw" / "uploads" processed = self.base_dir / "raw" / "processed" @@ -503,7 +586,10 @@ async def cti_run(self, request): processed.mkdir(parents=True, exist_ok=True) # 1️⃣ Rehydrate selected items (for re-runs) - svc = CTIIngestService() + # The selection has to reach the service: clean/ accumulates, so + # without it Stage 1 re-extracts every report ever ingested while + # the browser reports the count the operator picked. + svc = CTIIngestService(selected=files) uploads_dir = self.base_dir / "raw" / "uploads" processed_dir = self.base_dir / "raw" / "processed" @@ -520,13 +606,44 @@ async def cti_run(self, request): # 2️⃣ Run pipeline (NON-BLOCKING) loop = asyncio.get_running_loop() - loop.run_in_executor( + future = loop.run_in_executor( None, svc.run_stage, self.base_dir, step ) + self._cti_run = { + "state": "running", "step": step, "files": files, "error": None, + } + + # run_stage re-raises after marking FAILED. Without retrieving the + # result the exception dies with the future, so a run that failed + # immediately looked identical to one still working: no log line, + # and the file stuck on "pending" forever. The outcome is recorded + # here too, because the service instance is local to this request + # and the browser has nothing else to poll. + def _report(fut): + exc = fut.exception() + if exc is None: + self._cti_run = { + "state": "complete", "step": step, "files": files, + "error": None, + } + self.log.info(f"[MCP] CTI pipeline finished: step={step}") + else: + self._cti_run = { + "state": "failed", "step": step, "files": files, + "error": f"{type(exc).__name__}: {exc}", + } + self.log.error( + f"[MCP] CTI pipeline failed: step={step} files={files}", + exc_info=exc, + ) + + future.add_done_callback(_report) + self.log.info(f"[MCP] CTI pipeline started: step={step} files={files}") + return web.json_response({ "status": "started", "files": files, @@ -552,11 +669,14 @@ async def upload_stix_cti(self, request): self.base_dir.mkdir(parents=True, exist_ok=True) - rag_dir = self.base_dir / "stix_cti" + # Same directory the four read handlers and the pipeline use. + # Uploading to stix_cti made every bundle invisible to list, + # get, download and delete. + rag_dir = self.base_dir / "outputs_stix" rag_dir.mkdir(parents=True, exist_ok=True) target_path = rag_dir / filename if target_path.exists(): - ts = datetime.utcnow().strftime("%Y%m%d_%H%M%S") + ts = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") target_path = rag_dir / f"{target_path.stem}_{ts}.json" data = await part.read() @@ -585,15 +705,16 @@ async def list_stix_cti(self, request): for p in stix_dir.glob("*.json"): stat = p.stat() - # ⬇️ READ BUNDLE METADATA SAFELY model = None provider = None + extractor = None try: with p.open("r", encoding="utf-8") as f: bundle = json.load(f) model = bundle.get("x_cti_model") provider = bundle.get("x_cti_provider") + extractor = (bundle.get("x_cti_config") or {}).get("extractor") except Exception: # Do NOT fail listing if one file is malformed pass @@ -601,9 +722,11 @@ async def list_stix_cti(self, request): files.append({ "filename": p.name, "size": stat.st_size, - "modified": datetime.utcfromtimestamp(stat.st_mtime).isoformat() + "Z", + "modified": datetime.fromtimestamp(stat.st_mtime, timezone.utc).isoformat().replace("+00:00", "Z"), + # Absent on an offline bundle, which credits no model. "model": model, "provider": provider, + "extractor": extractor, }) self.log.info(f"[MCP] listing stix cti files: {files}") @@ -615,20 +738,49 @@ async def list_stix_cti(self, request): return web.json_response({"error": str(e)}, status=500) async def delete_stix_cti(self, request): - data = await request.json() - files = data.get("files", []) - stix_dir = self.base_dir /"outputs_stix" + try: + data = await request.json() + except Exception: + return web.json_response({"error": "Body must be JSON"}, status=400) + + files = (data or {}).get("files", []) + if not isinstance(files, list) or not all(isinstance(f, str) for f in files): + return web.json_response( + {"error": "files must be a list of strings"}, status=400 + ) + + stix_dir = self.base_dir / "outputs_stix" + stix_root = stix_dir.resolve() + deleted = [] for fname in files: - p = stix_dir / fname - if p.exists() and p.is_file(): - p.unlink() + # This used to join the name and unlink whatever existed, so any + # path resolving to a file was deletable. download_stix_cti twelve + # lines below already had the right guard. + target = (stix_dir / fname).resolve() + if stix_root not in target.parents: + continue + try: + if target.is_file(): + target.unlink() + deleted.append(fname) + except OSError as e: + self.log.error(f"[MCP] could not delete {fname}: {e}") - return web.json_response({"deleted": files}) + # Report what actually went, not what was asked for. + return web.json_response({"deleted": deleted}) async def upload_cti_raw(self, request): try: - reader = await request.multipart() + # multipart() raises KeyError('Content-Type') rather than a 4xx + # when the header is absent, which reached the client as a 500. + try: + reader = await request.multipart() + except Exception: + return web.json_response( + {"error": "Expected a multipart/form-data upload"}, + status=400 + ) file_part = None async for part in reader: if part.name == "file": @@ -652,16 +804,10 @@ async def upload_cti_raw(self, request): self.log.info(f"[MCP] Uploaded CTI input: {input_path}") - # 2️⃣ Kick off pipeline (Stage 1 + 2) - # subprocess.Popen( - # ["python", "app/cti_ingest_svc.py", "--base-dir", "data"], - # stdout=subprocess.DEVNULL, - # stderr=subprocess.DEVNULL, - # ) - print(" starting cti ingest subprocess ") - + # Staging only. Extraction runs from the Run Pipeline button, + # which posts to /plugin/mcp/cti/run. return web.json_response({ - "status": "CTI ingest started", + "status": "staged", "file": filename }) @@ -679,7 +825,13 @@ async def list_cti_raw(self, request): seen = set() def file_status(p: Path) -> str: - ir_path = ir_complete / f"{p.stem}.json" + """Processed means an IR exists and is no older than the file. + + The listing used to stamp a literal "processed" on everything + in that directory, so a report that was never selected, never + cleaned and never extracted still rendered green. + """ + ir_path = ir_complete / f"{clean_stem(p.name)}.json" if not ir_path.exists(): return "pending" return ( @@ -688,7 +840,7 @@ def file_status(p: Path) -> str: else "pending" ) - def collect(dir_path: Path, status_for_files: str | None): + def collect(dir_path: Path): out = [] if not dir_path.exists(): return out @@ -706,7 +858,7 @@ def collect(dir_path: Path, status_for_files: str | None): "name": c.name, "size": c.stat().st_size, "type": "file", - "status": status_for_files, + "status": file_status(c), }) out.append({ "name": p.name, @@ -719,18 +871,22 @@ def collect(dir_path: Path, status_for_files: str | None): # ------------------------- # FILE # ------------------------- + if p.name in seen: + continue + seen.add(p.name) out.append({ "name": p.name, "type": "file", "size": p.stat().st_size, - "status": status_for_files, + # Computed, not assumed from which directory it sits in. + "status": file_status(p), }) return out # uploads first, processed second (UI expectation) - items.extend(collect(uploads_dir, "pending")) - items.extend(collect(processed_dir, "processed")) + items.extend(collect(uploads_dir)) + items.extend(collect(processed_dir)) return web.json_response({"items": items}) @@ -752,11 +908,16 @@ async def delete_cti_raw(self, request): deleted = [] def try_delete(base: Path, name: str) -> bool: + if not isinstance(name, str) or not name.strip(): + return False + target = (base / name).resolve() base_resolved = base.resolve() - # hard safety: no traversal - if base_resolved not in target.parents and target != base_resolved: + # Containment. The base directory itself was previously + # admitted, so an empty name resolved to it and the rmtree + # below removed the whole uploads or processed directory. + if base_resolved not in target.parents: return False if target.exists(): @@ -806,11 +967,111 @@ async def get_stix_cti(self, request): except Exception as e: return web.json_response({"error": str(e)}, status=500) + async def cti_status(self, request): + """Outcome of the most recent CTI run. + + cti_run schedules the work and returns immediately, so without this + a failure only ever reached the server log and the row in the UI + stayed on 'pending' indefinitely. + """ + return web.json_response(self._cti_run) + + async def view_cti_raw(self, request): + """Return an uploaded report as text for the preview modal. + + A PDF is not readable as-is, so the extracted text from data/clean is + preferred when the pipeline has already produced it, and pdftotext runs + on demand otherwise. That keeps a pending PDF viewable without making + the operator run the pipeline just to see what they uploaded. + """ + try: + try: + data = await request.json() + except Exception: + return web.json_response({"error": "Body must be JSON"}, status=400) + + filename = (data or {}).get("filename") + if not filename or not isinstance(filename, str): + return web.json_response({"error": "Missing filename"}, status=400) + + # A nested upload is addressed as "/", so basename is + # too strict here. resolve() collapses any .. before the parents + # check, which is what actually contains the read to the root. + uploads = self.base_dir / "raw" / "uploads" + processed = self.base_dir / "raw" / "processed" + target = None + for root in (uploads, processed): + candidate = (root / filename).resolve() + if root.resolve() in candidate.parents and candidate.is_file(): + target = candidate + break + if target is None: + return web.json_response({"error": "File not found"}, status=404) + + suffix = target.suffix.lower() + if suffix == ".pdf": + clean = self.base_dir / "clean" / f"{clean_stem(target.name)}.txt" + if clean.is_file(): + text = clean.read_text(encoding="utf-8", errors="replace") + else: + # Same missing-poppler case the cleaner handles: name the + # dependency rather than letting FileNotFoundError read as + # the report being absent. + try: + proc = await asyncio.create_subprocess_exec( + "pdftotext", "-layout", str(target), "-", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + ) + except FileNotFoundError: + return web.json_response( + {"error": "pdftotext not found. Install poppler to " + "preview PDF reports."}, + status=501, + ) + out, err = await proc.communicate() + if proc.returncode != 0: + return web.json_response( + {"error": f"Could not read PDF: {err.decode()[:200]}"}, + status=500, + ) + text = out.decode("utf-8", errors="replace") + else: + text = target.read_text(encoding="utf-8", errors="replace") + + return web.json_response({ + "filename": filename, + "kind": suffix.lstrip("."), + "size": target.stat().st_size, + "text": text, + }) + + except Exception as e: + self.log.error(f"[MCP] view_cti_raw failed: {e}") + return web.json_response({"error": str(e)}, status=500) + async def get_config(self, request): try: cfg = load_config() + + # The panel used to layer the profiles itself, in JavaScript, over + # this raw yaml. It duplicated the allowlist and skipped env + # resolution, so it displayed "not set" for an endpoint that came + # from MCP_LLM_API_BASE while extraction dialled it correctly. + # Resolve it here, where the rule already lives. + resolved = {} + # Every LLM profile, declared or not: an absent workload profile + # inherits the connection, and the panel has to show that. + for profile in sorted(LLM_PROFILES): + resolved[profile] = _without_secrets( + resolve_env_indirection(layered_profile(cfg, profile)) + ) + self.log.info("[MCP] get_config returning effective config") - return web.json_response({"config": cfg}) + return web.json_response({ + "config": _without_secrets(cfg), + "resolved": resolved, + }) except Exception as e: self.log.error(f"[MCP] get_config failed: {e}") return web.json_response({"error": str(e)}, status=500) @@ -828,6 +1089,98 @@ async def set_config(self, request): status=400 ) + payload = unwrap_config_envelope(data) + + # llm_client dispatches on an exact provider string and raises + # "Unsupported model provider" otherwise. Catching it here names + # the field while the operator is still looking at it, rather + # than failing on every document at extraction time. + invalid = [ + f"{section}.provider={cfg['provider']!r}" + for section, cfg in payload.items() + if isinstance(cfg, dict) and cfg.get("provider") + and cfg["provider"] not in _VALID_PROVIDERS + ] + if invalid: + return web.json_response({ + "error": f"unsupported provider: {', '.join(invalid)}. " + f"Valid: {', '.join(sorted(_VALID_PROVIDERS))}" + }, status=400) + + unknown = sorted(set(payload) - _KNOWN_SECTIONS) + if unknown: + return web.json_response({ + "error": f"unknown config section: {', '.join(unknown)}. " + f"Valid: {', '.join(sorted(_KNOWN_SECTIONS))}." + }, status=400) + + # The reader drops any connection key on a workload profile, so + # accepting one here and answering "saved" persists a setting that + # will never be read. Refuse it while the operator is still looking + # at the field, and name the profile that does own it. The llm + # profile has its own allowlist: it used to take any key, so an + # Authorization header or an mlflow host landed in the file. + def _allowed(section): + if section in _SECTION_OVERRIDABLE: + return _SECTION_OVERRIDABLE[section] + return LLM_OVERRIDABLE if section == "llm" else WORKLOAD_OVERRIDABLE + + # A credential-named key is stripped by _without_secrets below + # rather than refused, so an older cached bundle that still posts + # api_key can save the rest of its payload instead of failing + # outright. Everything else outside the allowlist is a structural + # mistake worth naming. + misplaced = [ + f"{section}.{key}" + for section, cfg in payload.items() + if isinstance(cfg, dict) + for key in sorted(cfg) + if key not in _allowed(section) and not _is_secret(key) + ] + if misplaced: + return web.json_response({ + "error": f"not settable here: {', '.join(misplaced)}. " + f"The connection belongs to 'llm'; a workload " + f"profile may set " + f"{', '.join(sorted(WORKLOAD_OVERRIDABLE))}. " + f"Credentials belong in plugins/mcp/.env." + }, status=400) + + bind = (payload.get("mlflow") or {}).get("host") + if bind is not None and str(bind) not in _LOOPBACK_HOSTS: + return web.json_response({ + "error": f"mlflow.host {bind!r} would expose the tracking " + f"server, which holds every logged prompt and " + f"response, on a non-loopback interface. Edit " + f"conf/local.yml directly if that is intended." + }, status=400) + + # fields_locked is the lock itself. Writable, it unlocks itself, + # so it is editable only by hand in conf/local.yml. + locked_write = [ + section for section, cfg in payload.items() + if isinstance(cfg, dict) and "fields_locked" in cfg + ] + if locked_write: + return web.json_response({ + "error": "fields_locked cannot be set over the API; " + "edit conf/local.yml directly." + }, status=400) + + # Honour the lock this endpoint used to ignore entirely. + effective = load_config() + blocked = [ + f"{section}.{key}" + for section, cfg in payload.items() + if isinstance(cfg, dict) + for key in sorted(cfg) + if ((effective.get(section) or {}).get("fields_locked") or {}).get(key) + ] + if blocked: + return web.json_response({ + "error": f"locked by conf/local.yml: {', '.join(blocked)}" + }, status=400) + conf_dir = self.root_dir / "conf" conf_dir.mkdir(exist_ok=True) @@ -836,15 +1189,26 @@ async def set_config(self, request): # 1️⃣ Load existing local.yml if present if local_path.exists(): with local_path.open("r", encoding="utf-8") as f: - existing = yaml.safe_load(f) or {} + existing = unwrap_config_envelope(yaml.safe_load(f) or {}) else: existing = {} - # 2️⃣ Update only provided top-level keys + # 2️⃣ Merge the provided keys into each section. # Example payload: { "cti": {...} } or { "llm": {...} } - for section, cfg in data.items(): + # get_config hands back {"config": cfg}, so a client that edits + # what it read posts that envelope straight back. + # + # This assigned the section outright, so a partial payload erased + # every key it did not mention. The CTI panel posts four keys, so + # one Save deleted a hand-pinned model, api_base or ssl_verify. + # Removing a key is still a file edit; a POST only ever adds or + # updates. + for section, cfg in payload.items(): if isinstance(cfg, dict): - existing[section] = cfg + current = existing.get(section) + existing[section] = ( + deep_merge(current, cfg) if isinstance(current, dict) else cfg + ) # 3️⃣ Scrub secrets from the whole file, not just the posted # sections, so a save also clears a key an earlier build wrote. @@ -866,59 +1230,6 @@ async def set_config(self, request): self.log.error(f"[MCP] Failed to save config: {e}") return web.json_response({"error": str(e)}, status=500) - # ===== AE end-to-end workflow runner ===== - - async def run_ae_end_to_end(self, request): - """POST /plugin/mcp/workflows/run-ae-end-to-end. - - Invokes the in-process ``ae-e2e`` workflow directly (bypassing the - DSPy / LM pipeline used by /plugin/mcp/execute). Runs every stage to - completion in the request handler and returns the final state dict so - callers can show stage statuses without polling /status. - - Request body (all optional except cti_source for fresh runs): - { - "cti_source": "raw/uploads/report.pdf", - "dry_run": false, - "start_stage": "cti", - "only_stage": null, - "checkpoint_path": "/tmp/e2e_full_vision_state.json", - "elk_url": "http://192.168.66.1:9200", - "kibana_url": "http://192.168.66.1:5601", - "adversary_slug": "alphv_blackcat", - "agents_timeout": 600, - "operation_timeout": 1800, - "cti_timeout": 900 - } - """ - try: - data = await request.json() if request.body_exists else {} - except Exception as e: - return web.json_response( - {"error": f"invalid JSON body: {e}"}, status=400, - ) - if not isinstance(data, dict): - return web.json_response( - {"error": "request body must be a JSON object"}, status=400, - ) - - # ae-e2e is intentionally not registered in the workflow registry — - # it duplicates plan_execute's card in the UI. The endpoint bypasses - # the registry and instantiates AEEndToEndWorkflow directly with our - # services dict (workflow.run requires it). - try: - from plugins.mcp.app.workflows.ae_e2e import AEEndToEndWorkflow - workflow = AEEndToEndWorkflow(self.services) - result = await workflow.run(**data) - return web.json_response(result) - except TypeError as e: - return web.json_response( - {"error": f"bad workflow arguments: {e}"}, status=400, - ) - except Exception as e: - self.log.exception("[MCP] ae-e2e workflow failed") - return web.json_response({"error": str(e)}, status=500) - async def download_stix_cti(self, request): try: data = await request.json() diff --git a/app/mcp_server.py b/app/mcp_server.py index d25cd98..c26acf1 100644 --- a/app/mcp_server.py +++ b/app/mcp_server.py @@ -1,21 +1,24 @@ import os from mcp.server.fastmcp import FastMCP -from pydantic import BaseModel +from typing import Optional + import requests from datetime import datetime -import time import collections import uuid import sys from pathlib import Path -from dspy_env import CreateCommand - _REPO_ROOT = Path(__file__).resolve().parents[3] if str(_REPO_ROOT) not in sys.path: sys.path.insert(0, str(_REPO_ROOT)) -from plugins.mcp.app.config import caldera_connection, _normalise_api_url +# Both of these have to come after the path insert above. The first was a bare +# "from dspy_env import" sitting before it, which resolved only when sys.path[0] +# happened to be this directory, so importing this module any other way failed +# with ModuleNotFoundError. +from plugins.mcp.app.dspy_env import CreateCommand # noqa: E402 +from plugins.mcp.app.config import caldera_connection, _normalise_api_url # noqa: E402 MCP_METADATA = { "display_name": "CALDERA Core", @@ -169,7 +172,7 @@ def get_adversaries(): @mcp.tool(name="core_get_adversary_by_ability_id") -def get_adversary_by_ability_id(ability_id: str, ability_name: str = None): +def get_adversary_by_ability_id(ability_id: str, ability_name: Optional[str] = None): """ Filters all Caldera adversaries by the specifies ability id or ability name. """ @@ -329,7 +332,7 @@ def create_adversary(name: str, description: str, atomic_ordering: list): adversary_id = str(uuid.uuid4()) return caldera_request.make_post_request( - f"adversaries", + "adversaries", { "adversary_id": adversary_id, "name": name, @@ -346,16 +349,22 @@ def create_operation(operation_name: str, adversary_name: str): Args: operation_name: Name for the operation - adversary_id: ID of the adversary to use for this operation + adversary_name: Name of the adversary to use for this operation Returns: - The response from the Caldera API or None if adversary details cannot be fetched + The response from the Caldera API, or an error dict when the + adversary cannot be found. """ req = caldera_request.make_get_request("adversaries") - found_adversaries = [] - for adversary in req: - if adversary["name"] == adversary_name: - found_adversaries.append(adversary) + if not isinstance(req, list): + return {"error": "could not list adversaries", "response": req} + + found_adversaries = [ + a for a in req + if isinstance(a, dict) and a.get("name") == adversary_name + ] + if not found_adversaries: + return {"error": f"no adversary named {adversary_name!r}"} adversary_details = found_adversaries[0] @@ -375,9 +384,12 @@ def create_operation(operation_name: str, adversary_name: str): }, "objective": "495a9828-cab1-44dd-a0ca-66e58177d8cc", }, - "planner_id": "aaa7c857-37a0-4c4a-85f7-4e9f7f30e31a", - "source_id": "ed32b9c3-9593-4c33-b0db-e2007315096b", - "objective_id": "495a9828-cab1-44dd-a0ca-66e58177d8cc", + # setup_operation pops 'planner' and 'source' as nested dicts and + # OperationSchema discards every other key, so the *_id spellings + # this used to send were dropped and Caldera silently fell back to + # its own defaults. + "planner": {"id": "atomic"}, + "source": {"id": "basic"}, "state": "paused", "autonomous": 1, "auto_close": False, @@ -407,8 +419,8 @@ def create_windows_ability( command_description: str, tactic: str, technique_name: str, - technique_id: str = None, - payloads: list = None, + technique_id: Optional[str] = None, + payloads: Optional[list] = None, ): """ Create a new windows ability with the specified parameters. @@ -473,8 +485,8 @@ def create_linux_ability( command_description: str, tactic: str, technique_name: str, - technique_id: str = None, - payloads: list = None, + technique_id: Optional[str] = None, + payloads: Optional[list] = None, ): """ Create a new linux ability with the specified parameters. diff --git a/app/mcp_svc.py b/app/mcp_svc.py index 039fa3c..24bd70a 100644 --- a/app/mcp_svc.py +++ b/app/mcp_svc.py @@ -12,6 +12,7 @@ from plugins.mcp.app.mlflow_run import ( RunTracker, reconcile_orphaned_runs as _reconcile_orphaned_runs, + summarize_exception, ) @@ -45,32 +46,6 @@ def _scrub_secrets(text: str) -> str: return _SECRET_RE.sub("sk-***", str(text or "")) -def _leaf_exceptions(exc: BaseException) -> list[BaseException]: - if isinstance(exc, BaseExceptionGroup): - leaves = [] - for child in exc.exceptions: - leaves.extend(_leaf_exceptions(child)) - return leaves - return [exc] - - -def _summarize_exception(exc: BaseException) -> str: - leaves = _leaf_exceptions(exc) - if not leaves: - return _scrub_secrets(str(exc)) - primary = leaves[-1] - summary = _scrub_secrets(str(primary)).strip() or primary.__class__.__name__ - if "failure to get a peer from the ring-balancer" in summary: - return ( - "LLM provider unavailable: the AI Platform model gateway returned " - "'failure to get a peer from the ring-balancer' after retries." - ) - if "Incorrect API key provided" in summary: - return ( - "LLM authentication failed: the configured API key was rejected by " - "the selected provider." - ) - return summary _LEGACY_TYPE_MAP = { @@ -395,8 +370,12 @@ async def execute(self, focus: str = None, prompt: str = "", model_config: dict if not rag_cfg.get("api_base"): rag_cfg["api_base"] = resolved_lm.get("api_base", "") if not rag_cfg.get("embed_model"): + # Last rung is the chat model: one endpoint, one model, unless + # a deployment explicitly names a separate embedding model. rag_cfg["embed_model"] = ( - resolved_lm.get("embed_model") or resolved_lm.get("rag_embed_model") + resolved_lm.get("embed_model") + or resolved_lm.get("rag_embed_model") + or resolved_lm.get("model") ) if rag_cfg.get("ssl_verify") is None: rag_cfg["ssl_verify"] = resolved_lm.get("ssl_verify") @@ -589,7 +568,7 @@ async def _run_execution(self, workflow, prompt, run_id, lm_obj, ) except Exception as e: - error_summary = _summarize_exception(e) + error_summary = summarize_exception(e) self.log.error(f"[MCP] Execution failed: {error_summary}") tracker.set_tag("stage", "error") tracker.set_tag("status", "error") diff --git a/app/mlflow_run.py b/app/mlflow_run.py index bc3929f..ccf1edb 100644 --- a/app/mlflow_run.py +++ b/app/mlflow_run.py @@ -13,11 +13,73 @@ """ import logging +import re from mlflow.tracking import MlflowClient log = logging.getLogger("plugins.mcp") +_SECRET_RE = re.compile(r"\bsk-[A-Za-z0-9_-]{8,}\b") + + +def _scrub_secrets(text: str) -> str: + return _SECRET_RE.sub("sk-***", str(text or "")) + + +def _leaf_exceptions(exc: BaseException) -> list[BaseException]: + if isinstance(exc, BaseExceptionGroup): + leaves = [] + for child in exc.exceptions: + leaves.extend(_leaf_exceptions(child)) + return leaves + return [exc] + + +def summarize_exception(exc: BaseException) -> str: + """The innermost cause, scrubbed, rather than the group that wraps it. + + An MCP stdio session fails inside nested anyio task groups, so the + exception that reaches a caller stringifies as "unhandled errors in a + TaskGroup (1 sub-exception)". MLflow params are immutable, so whichever + handler logged first won, and that string is what History displayed + instead of the provider error that actually stopped the run. + """ + leaves = _leaf_exceptions(exc) + if not leaves: + return _scrub_secrets(str(exc)) + primary = leaves[-1] + summary = _scrub_secrets(str(primary)).strip() or primary.__class__.__name__ + if "failure to get a peer from the ring-balancer" in summary: + return ( + "LLM provider unavailable: the AI Platform model gateway returned " + "'failure to get a peer from the ring-balancer' after retries." + ) + # Providers word this three ways for the same cause, and none of them say + # where the name is set. + bad_model = re.search( + r"[Tt]he model [`'\"]?([\w./:-]+)[`'\"]? (?:does not exist|is not available)", + summary, + ) + if bad_model: + return ( + f"Model not available: the provider has no {bad_model.group(1)}. " + f"Set a model it serves in Global Model Config, or in llm.model " + f"in conf/local.yml." + ) + busy = re.search(r"[`'\"]?([\w./:-]+)[`'\"]? is temporarily at capacity", summary) + if busy: + return ( + f"Model busy: the provider has no free slot for {busy.group(1)}. " + f"Retry, or pick another model." + ) + + if "Incorrect API key provided" in summary: + return ( + "LLM authentication failed: the configured API key was rejected by " + "the selected provider." + ) + return summary + # mlflow rejects an oversized value outright. Truncating keeps a completed # run from being recorded as failed just because its reasoning was long. _MAX_TAG_CHARS = 5000 diff --git a/app/utilities/D3fend_CAD/D3fend_CAD_Graph_Schema.json b/app/utilities/D3fend_CAD/D3fend_CAD_Graph_Schema.json deleted file mode 100644 index ca0a897..0000000 --- a/app/utilities/D3fend_CAD/D3fend_CAD_Graph_Schema.json +++ /dev/null @@ -1,259 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "D3FEND CAD Graph Schema", - "type": "object", - "properties": { - "meta": { - "type": "object", - "title": "Meta", - "properties": { - "title": { - "type": "string" - }, - "authors": { - "type": "array", - "items": { - "type": "string" - } - }, - "orgs": { - "type": "array", - "items": { - "type": "string" - } - }, - "description": { - "type": "string" - }, - "article": { - "type": "string" - }, - "d3fend_version": { - "type": "string" - }, - "cad_schema_version": { - "type": "number" - }, - "published_date": { - "type": "string", - "format": "date-time" - }, - "references": { - "type": "array", - "items": { - "type": "string" - } - }, - "settings": { - "type": "object", - "properties": {}, - "required": [] - } - }, - "required": [ - "title", - "authors", - "description", - "article", - "d3fend_version", - "cad_schema_version", - "published_date" - ], - "additionalProperties": false - }, - "nodes": { - "type": "array", - "items": { - "type": "object", - "title": "CADNode", - "properties": { - "id": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "event-node", - "attack-node", - "countermeasure-node", - "artifact-node", - "agent-node", - "vulnerability-node", - "condition-node", - "note-node", - "thing-node" - ] - }, - "position": { - "type": "object", - "title": "Position", - "properties": { - "x": { - "type": "number" - }, - "y": { - "type": "number" - } - }, - "required": [ - "x", - "y" - ], - "additionalProperties": false - }, - "data": { - "type": "object", - "title": "NodeData", - "properties": { - "label": { - "type": "string" - }, - "sequence": { - "type": "string" - }, - "d3f_class": { - "type": "string" - }, - "user_properties": { - "type": "array", - "items": { - "type": "array", - "title": "UserProperty", - "items": { - "type": "string", - "default": "" - } - } - } - }, - "required": [ - "label", - "sequence", - "user_properties" - ], - "additionalProperties": false - }, - "origin": { - "type": "array", - "items": { - "type": "number" - } - }, - "measured": { - "type": "object", - "title": "Measured", - "properties": { - "width": { - "type": "number" - }, - "height": { - "type": "number" - } - }, - "required": [ - "width", - "height" - ], - "additionalProperties": false - }, - "selected": { - "type": "boolean" - }, - "dragging": { - "type": "boolean" - }, - "width": { - "type": "number" - }, - "height": { - "type": "number" - } - }, - "required": [ - "id", - "type", - "position", - "data", - "origin", - "measured", - "selected", - "dragging" - ] - } - }, - "edges": { - "type": "array", - "items": { - "type": "object", - "title": "Edge", - "properties": { - "type": { - "type": "string" - }, - "data": { - "type": "object", - "title": "EdgeData", - "properties": { - "label": { - "type": "string" - }, - "d3f_property": { - "type": "string" - } - }, - "required": [ - "label" - ], - "additionalProperties": false - }, - "markerEnd": { - "type": "object", - "title": "MarkerEnd", - "properties": { - "type": { - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - "source": { - "type": "string" - }, - "sourceHandle": { - "type": "string" - }, - "target": { - "type": "string" - }, - "targetHandle": { - "type": "string" - }, - "id": { - "type": "string" - }, - "selected": { - "type": "boolean" - } - }, - "required": [ - "source", - "sourceHandle", - "target", - "targetHandle", - "id", - "selected" - ], - "additionalProperties": false - } - } - }, - "required": [ - "meta", - "nodes", - "edges" - ], - "additionalProperties": false -} \ No newline at end of file diff --git a/app/utilities/D3fend_CAD/ensure_CAD_ontology_files.py b/app/utilities/D3fend_CAD/ensure_CAD_ontology_files.py deleted file mode 100644 index 47e7547..0000000 --- a/app/utilities/D3fend_CAD/ensure_CAD_ontology_files.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python3 -""" -Standalone D3FEND ontology fetch/update utility. - -Automatically: - - Clones or updates the d3fend GitHub repository - - Locates ontology .ttl files regardless of folder layout - - Locates mappings directory - - Locates CAD schema -""" - -import argparse -import subprocess -from pathlib import Path - -D3FEND_GIT_URL = "https://github.com/d3fend/d3fend-ontology.git" - - -def find_file(root: Path, patterns): - """Return first file matching any pattern below a directory.""" - if isinstance(patterns, str): - patterns = [patterns] - - for pattern in patterns: - matches = list(root.rglob(pattern)) - if matches: - return matches[0] - return None - - -def ensure_ontology_files(ontology_root: Path): - """ - Ensures the d3fend ontology is cloned and returns paths to: - - ALL TTL ontology modules under src/ontology/ - - mappings directory - - CAD schema - """ - - repo_dir = ontology_root / "d3fend-ontology" - - if repo_dir.exists(): - print("[D3FEND] Updating existing repository...") - subprocess.run(["git", "-C", str(repo_dir), "pull"], check=False) - else: - print("[D3FEND] Cloning ontology repository...") - subprocess.run(["git", "clone", D3FEND_GIT_URL, str(repo_dir)], check=True) - - # Correct modern repo structure - src_ontology_dir = repo_dir / "src" / "ontology" - mappings_dir = src_ontology_dir / "mappings" - cad_schema = repo_dir / "cad" / "schema" / "cad.schema.json" - - # Collect ALL TTL ontology files - ttl_files = list(src_ontology_dir.rglob("*.ttl")) - - if not ttl_files: - raise FileNotFoundError( - f"No TTL ontology files found under {src_ontology_dir}" - ) - - if not cad_schema.exists(): - raise FileNotFoundError(f"Missing CAD schema: {cad_schema}") - - if not mappings_dir.exists(): - raise FileNotFoundError(f"Missing mappings directory: {mappings_dir}") - - print(f"[D3FEND] Loaded {len(ttl_files)} ontology TTL modules.") - - return { - "ontology_modules": ttl_files, - "mappings": mappings_dir, - "cad_schema": cad_schema, - } - -def main(): - parser = argparse.ArgumentParser(description="Fetch and validate the D3FEND ontology + CAD schema") - parser.add_argument( - "--ontology-root", - type=Path, - default=Path("./ontology"), - help="Directory where the D3FEND ontology repo will be stored." - ) - - args = parser.parse_args() - args.ontology_root.mkdir(parents=True, exist_ok=True) - - result = ensure_ontology_files(args.ontology_root) - - print("\n[D3FEND] Ontology and CAD schema ready.") - for k, v in result.items(): - print(f" {k}: {v}") - - -if __name__ == "__main__": - main() diff --git a/app/utilities/D3fend_CAD/ontology/LICENSE.md b/app/utilities/D3fend_CAD/ontology/LICENSE.md deleted file mode 100644 index c895315..0000000 --- a/app/utilities/D3fend_CAD/ontology/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 The MITRE Corporation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/app/utilities/D3fend_CAD/ontology/README.md b/app/utilities/D3fend_CAD/ontology/README.md deleted file mode 100644 index b30e4f8..0000000 --- a/app/utilities/D3fend_CAD/ontology/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# D3FEND Ontology - -This repository holds the necessary content to produce the D3FEND ontology distribution. - -- > If you are looking for the latest release of the ontology, please find it [here](https://d3fend.mitre.org/resources/ontology/). - -- > If you are interested in contributing to this project, please see our [contribution guidelines](CONTRIBUTING.md). - -## Overview - -> **Note:** if you are looking for the latest D3FEND ontology release please find it [here](https://d3fend.mitre.org/resources/ontology/). - -The basic workflow is to edit the `d3fend-protege.ttl` file, save your changes, then simply -run `make all` in this directory. This is designed to accommodate both plain text editing -and Protege Ontology IDE modifications. - -When making changes with a text editor please avoid introducing unsubstantial changes -to many lines in the file. This enables efficient code reviews. - -> **Note**: before sending a merge request changes to `src/ontology/d3fend-protege.ttl` please always run `make pre-commit` **before** you commit changes or will will not be able to accept the request. :eyes: You can run this automatically (and only against staged files) every commit with `make pre-commit-install`. - -## System Dependencies - -Building the D3FEND ontology distribution must be done in a posix-like environment, e.g. Redhat Linux or macOS. -The following packages must be installed: - -- make -- java 15.0.1, other versions may work however -- python 3.9 -- python pipenv package with `pipenv` in your PATH - -## Building - -The Makefile has all the necessary targets (commands) needed to build the D3FEND ontology. -Once your system dependencies are installed, run `make install-deps`, then you can run -`make all` to build the ontology. - -> In order to run `make build/d3fend.csv`, you need to be -running a d3fend-backend server, this is not yet released. - -## Directories - -|Directory |Purpose | -|-------------------|-------------------------------------------------| -|dist/ |Holds distributable ontology files resulting from a build (`make all`).| -|build/ |Holds intermediate files used in build workflow.| -|reports/ |Holds reports generated by report and test targets.| -|src/queries/ |Holds queries and report profiles necessary to update ontology and generate reports.| -|src/ontology/ |Holds the base ontology which is used during the build process to create the distribution.| - -## Files - -These files are located in the src, build, or dist directories. - -> Note: some files are created when `make all` is executed. - -|File |Purpose | -|---------------------------|-------------------------------------------------| -|d3fend-protege.ttl |Downloaded D3FEND ontology from webprotege.owl (renamed to match this name).| -|d3fend.{ttl,owl,json} |D3FEND ontology distribution files.| -|d3fend-public.owl |Temp merge of original web protege ontology and restrictions as object property assertions.| -|d3fend-res-as-prop.owl |Temp file containing *just* restrictions as object property assertions between class puns.| -|d3fend-full.owl |Final inference-enhanced copy with KBs for use in SPARQL end point. This is what is loaded into production Blazegraph.| -|d3fend-architecture.owl |File of architectural elements extracted by a filter-architecture-* target.| -|d3fend.csv |Tabular form of defensive tactics and techniques trees.| -|d3fend-prefixes.json |D3FEND ontology context information / namespace prefixes in JSON-LD format; usable by ROBOT and RDFLib.| -|annotations.ttl |Not currently used; stub of alternative file-based means to add ontology header (see ROBOT documentation).| - -## Developer Notes - -- Ontology version is specified in `Makefile` as `D3FEND_VERSION` -- Ontology style guide/conventions [here](./CONVENTIONS.md) (work in progress). - -## Build with docker - -If you have docker and docker-compose, you can build a distribution -in the dist/ folder running - -```bash -docker-compose up d3fend-ontology -``` - -### SSL Certificates in Docker - -If you have custom SSL certificates needed to fetch packages and dependencies from the internet, make a directory `.local` in this project root and place your certificates in `.local/` as `.pem` or `.crt`. The docker build will install the certificates if it finds them there. - - -## NOTICE - -Use of the MITRE D3FEND™ Knowledge Graph and website is subject to the Terms of Use. Use of the MITRE D3FEND website is subject to the MITRE D3FEND Privacy Policy. MITRE D3FEND is funded by the National Security Agency (NSA) Cybersecurity Directorate and managed by the National Security Engineering Center (NSEC), which is operated by The MITRE Corporation. MITRE D3FEND; and the MITRE D3FEND logo are trademarks of The MITRE Corporation. MITRE ATT&CK® and ATT&CK® are registered trademarks of The MITRE Corporation. MITRE ATT&CK content is subject to the MITRE ATT&CK terms of use. - -## NOTICE - -This software was produced for the U. S. Government under Basic Contract No. W56KGU-18-D-0004, and is subject to the Rights in Noncommercial Computer Software and Noncommercial Computer Software Documentation Clause 252.227-7014 (FEB 2012) © 2022 The MITRE Corporation. - -## NOTICE - -MITRE hereby grants express written permission to use, reproduce, distribute, modify, and otherwise leverage this software to the extent permitted by the licensed terms provided in the LICENSE.md file included with this project. - -## NOTICE - -© The MITRE Corporation - -Approved for Public Release; Distribution Unlimited #21-3978 and #23-1207. diff --git a/app/utilities/D3fend_CAD/ontology/extensions/cci/CCI_Mapping.xlsx b/app/utilities/D3fend_CAD/ontology/extensions/cci/CCI_Mapping.xlsx deleted file mode 100644 index a1c1ef6..0000000 Binary files a/app/utilities/D3fend_CAD/ontology/extensions/cci/CCI_Mapping.xlsx and /dev/null differ diff --git a/app/utilities/D3fend_CAD/ontology/extensions/cci/README.md b/app/utilities/D3fend_CAD/ontology/extensions/cci/README.md deleted file mode 100644 index a6e0c2a..0000000 --- a/app/utilities/D3fend_CAD/ontology/extensions/cci/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Correlation Control Indicator (CCI) mappings to D3FEND - -Generates a set of facts for the CCIs, mapping them to D3FEND -techniques as part of building the extensions. To correct or customize -these, modify the accompanying spreadsheet. The repeating reference -columns are related to NIST mappings and provide more context, but -these should not be modified or relied on; instead, reference the CCI -List .xml data. - -See [CCI Downloads](https://public.cyber.mil/stigs/cci/) - -Future Potential Work: Process the U_CCI_List.xml available at DoD -Cyber Exchange to also include CCI->NIST mappings. Currently out of -scope. diff --git a/app/utilities/D3fend_CAD/ontology/extensions/cci/create_cci_mappings.py b/app/utilities/D3fend_CAD/ontology/extensions/cci/create_cci_mappings.py deleted file mode 100644 index 5c3ce8e..0000000 --- a/app/utilities/D3fend_CAD/ontology/extensions/cci/create_cci_mappings.py +++ /dev/null @@ -1,153 +0,0 @@ -import numpy as np -import pandas # requires openpyxl in environment to do read_excel -from owlready2 import default_world - -""" This Python script reads the public ontology file and a mapping -file and writes out .ttl file with mappings that may be -appended to the public ontology. """ - -default_world.get_ontology( - "build/d3fend-public.owl" -).load() # Only needed for defensive technique lookups -d3fend_world = default_world - -relation_map = { - "broader": "d3f:broader", - "narrower": "d3f:narrower", - "exactly": "d3f:exactly", - "same": "d3f:exactly", # off-label usage of same; treat as exactly - np.nan: "d3f:related", # If undefined in spreadsheet, use most general match :related - "": "d3f:related", -} # If undefined in spreadsheet, use most general match :related - -d3fend_technique_query = """ -prefix : - -SELECT ?x -WHERE {{ ?x :d3fend-id '{}' . }} -""" - - -# > get_d3fend_technique_name('D3-AL') -# d3fend.AccountLocking -def get_d3fend_technique_name(d3fend_id): - query = d3fend_technique_query.format(d3fend_id) - raw_result = d3fend_world.sparql(query) - # print(raw_result) - result = list(raw_result) # owlready2 sparql query to lookup technique name; could cache - if result and result[0] and result[0][0]: - # print("{} -> {}\n".format(d3fend_id, result)) - return result[0][0].name # .namespace, .iri - else: - # print("{} -> found nothing!\n".format(d3fend_id)) - return None - - -def get_cci_iri(cci_id): - return cci_id # pass through for now - - -# Use when adding CCI mappings to NIST controls, but if doing that, -# remember to use XML data for those NIST reference mappings, tying to -# CCI XML data from DoD Cyber Exchange, as the spreadsheet isn't -# faithful table mapping of that XML:/e -# https://dl.dod.cyber.mil/wp-content/uploads/stigs/zip/U_CCI_List.zip) -def get_sp800_53_control_iri_name(version, control_id): - """Formats IRI for a NIST SP800-53 control by removing spaces and brackets and embedding the release version""" - control_iri_name = control_id.replace(" ", "") - control_iri_name = control_iri_name.replace(")", "") - control_iri_name = control_iri_name.replace("(", "_") - control_iri_name = "NIST_SP800-53_R{}_{}".format(str(version), control_iri_name) - return control_iri_name - - -def write_cci_mappings( - f, - publishdate, - control_id, - contributor, - status, - definition, - relation, - techniques_string, - cci_catalog_prefix="CCICatalog", - cci_catalog_version_date="2022-04-05", -): - """Writes mappings for one row in frame (spreadsheet.) to .ttl""" - if status != "deprecated": - # Comes in as pandas.Timestamp, which is fine for d3f:published, which is xsd:dateTime - # publishdate = publishdate.date() # If using as xsd:date - publishdate = str(publishdate).replace( - " ", "T" - ) # default not quite ISO; not quite xsd:dateTime worthy - if contributor == "DISA FSO": - contributor_iri_name = ( - "DISA_FSO" # Fix the typos in original data with double spaces - ) - else: - contributor_iri_name = contributor.replace(" ", "_") - # print('<{}>, <{}>, <{}>, <{}>, <{}>, <{}>, <{}>, <{}>\n'. - # format(type(publishdate), publishdate, control_id, contributor, status, - # definition, relation, techniques_string)) - control_iri_name = get_cci_iri(control_id) + "_v" + cci_catalog_version_date - cci_catalog_iri = cci_catalog_prefix + "_v" + cci_catalog_version_date - # Write individual representing NIST control and provide annotation and data properties - f.write("d3f:{} a d3f:CCIControl ;\n".format(control_iri_name)) - f.write(" d3f:member-of d3f:{} ;\n".format(cci_catalog_iri)) - f.write(' rdfs:label "{}" ;\n'.format(control_id)) - f.write(' d3f:published "{}"^^xsd:dateTime ;\n'.format(publishdate)) - f.write(" d3f:contributor d3f:{} ;\n".format(contributor_iri_name)) - f.write(' d3f:definition "{}" .\n'.format(definition)) - f.write( - "d3f:{} d3f:has-member d3f:{} .\n".format(cci_catalog_iri, control_iri_name) - ) - # Write relations of this control to D3FEND countermeasures mapped in mapping file. - if isinstance(relation, str): - relation = ( - relation.lower() - ) # make lower for robust matching, but not if nan - if relation: # np.nan or non-empty string - d3fend_relation = relation_map[relation] - if d3fend_relation: # If we can understand relation, do mappings - for technique in techniques_string.split( - "|" - ): # Get multiple defensive techniques - technique = technique.strip() # Trim it - if technique: # if non-empty - technique_iri_name = get_d3fend_technique_name(technique) - if technique_iri_name: # if we got a good lookup, do it. - f.write( - "d3f:{} {} d3f:{} .\n".format( - control_iri_name, - d3fend_relation, - technique_iri_name, - ) - ) - f.write("\n") - - -df = pandas.read_excel(io="extensions/cci/CCI_Mapping.xlsx", sheet_name="U_CCI_List") - -df = df[~df["D3FEND"].isnull()] -# dataframe as read treats str 'NA' and np.nan the same; but if that -# changes, pull NA string fields explicitly -df = df[~df["D3FEND"].str.contains("NA")] -df = df[~df["D3FEND"].str.contains("TBD")] -df = df[~df["D3FEND"].str.contains("Duplicate")] -df = df[~df["D3FEND"].str.contains("Review")] - -with open("build/cci-to-d3fend-mapping.ttl", "w") as f: - df.apply( - lambda x: write_cci_mappings( - f, - # no versioning on CCI data; pub date instead; versions are on NIST pubs - x["publishdate"], # Just the date, no time - x["_id"], # this is the CCI-nnnnnn formated id - x["contributor"], # DISA-FSO or DISA-FSP - x["status"], # deprecated or draft (dump deprecated) - x["definition"], - x["Relation"], - x["D3FEND"], - ), - axis=1, - ) diff --git a/app/utilities/D3fend_CAD/ontology/extensions/cwe/README.md b/app/utilities/D3fend_CAD/ontology/extensions/cwe/README.md deleted file mode 100644 index a9fba21..0000000 --- a/app/utilities/D3fend_CAD/ontology/extensions/cwe/README.md +++ /dev/null @@ -1,71 +0,0 @@ - -# CWE -> D3FEND Converter - -This directory holds a Makefile and documents the steps necessary to all CWE to Original add of Top-25 CWEs to d3fend-protege.ttl. - -- This only converts the Research Concepts View (aka Graph) of CWE into a D3FEND taxonomy for CWE Weaknesses. - -- Future work will be required to extend this capability for ongoing CWE updates - -## How to use - -To accomplish add in of CWE tree structure for the Research Concepts View (aka View 1000, Research Concepts Graph), here are the manual steps: - -1. `cd extensions/cwe/` - - (i.e., go to the directory in which this README.md is located.) - -2. `make install-deps` - - This will install the # Add all CWE to Original add of Top-25 CWEs to d3fend-protege.ttl - -To accomplish add in of CWE tree structure for CWE-1000 / Research -Concepts View (aka Graph), here are the manual steps. - -3. `make all` - -4. Review diffs to d3fend-protege.ttl manually. _Example: First time use, the Top 25 classes already present were direct subclasses of Weakness but this was no longer wanted given entire taxonomy with intermediate clases were available; statements were already there and deletions may be required_. - -## Notes on RML and YARRRML technology - -### RML and YARRML Introduction - -RML is a declarative language for converting non-linked data formats into linked data. RML is encoded in Turtle. It allows extraction and tranformation steps that includes inputs from relational databases, csv, json, and xml files. It is an extension of R2RML, which had a focus on relational data. - -YARRRML is an effort to provide a more concise, and easier-to-use language for the same kinds of data transformation, where YARRRML is converted into RML and then used with RML engines. - -The introduction of YARRRML as an implementation appears to be by the [RML.io](https://rml.io/) group. The [YARRRML Parser](https://github.com/RMLio/yarrrml-parser) and [YARRRML Mapper](https://github.com/RMLio/rmlmapper-java) were developed by the group and ultimately were used for translating the CWE XML catalog file into the CWE Research Concept taxonomy of D3FEND classes representing CWE weaknesses. - -### Alternative Implementations - -Depending on the needs, YARRRML and RML alternatives exist. Capabilities vary and cross-compatibility is not assured. - -The Python-based [Morph KGC](https://github.com/morph-kgc/morph-kgc) (and [kglab](https://github.com/DerwenAI/kglab/), which embeds it) can use YARRRML directly to directly perform knowledge graph construction. They also support .ttl as an output serialization format. However, the Morph KGC team has categorized the ability to use parent references in XPath as [an enhancement rather than a bug](https://github.com/morph-kgc/morph-kgc/issues/98), which is unfortunate since RML.io's implementation and the [CARML](https://github.com/carml/carml-jar) implementation do handle parent path references in Xpath and the [RML spec](https://rml.io/specs/rml/) _[not sure what specification is considered canonical other than one on RML.io cite]_ seems to indicate this should be possible. Intermediate RML can be generated directly in the Morph KGC with the code block: - -``` -rml_mapping = morph_kgc.mapping.load_yarrrml() -rml_mapping.serialize(destination="morph-kgc.rml.ttl`) -``` - -However, the resulting RML file did not work with other RML mapping engines. - -CARML does not offer pre-built jars though appeared to be compatible with YARRRML Parser code. - -Yatter did not work for RML examples tried. But minimal use, so may work out well later. - -### Learning Resources - -The [RML spec](https://rml.io/specs/rml/) has many examples. - -The recommendations for YARRRRML users suggested in Section 9.1 of the paper ["Path-based and triplication approaches to mapping data into RDF: -usability analysis and recommendations"](https://www.semantic-web-journal.net/system/files/swj3348.pdf) are very helpful in debugging YARRRML. - -[Matey](https://rml.io/yarrrml/matey/) is live page is available for experimentning with YARRRML, but error messages are suppressed for some operations. - -The many pitfalls for new users of YARRRML are noted by the ShEXML creators in their paper ["ShExML: improving the usability of heterogeneous data mapping languages for first-time users"](https://pubmed.ncbi.nlm.nih.gov/33816968/) - - -### Non-RML approaches - -- [ShExML](https://github.com/herminiogg/ShExML) -- Python code with other RDF libraries diff --git a/app/utilities/D3fend_CAD/ontology/extensions/cwe/cwe-yarrrml.yaml b/app/utilities/D3fend_CAD/ontology/extensions/cwe/cwe-yarrrml.yaml deleted file mode 100644 index 646070e..0000000 --- a/app/utilities/D3fend_CAD/ontology/extensions/cwe/cwe-yarrrml.yaml +++ /dev/null @@ -1,49 +0,0 @@ -prefixes: - d3f: http://d3fend.mitre.org/ontologies/d3fend.owl# - xsd: http://www.w3.org/2001/XMLSchema# - rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# - rdfs: http://www.w3.org/2000/01/rdf-schema# - owl: http://www.w3.org/2002/07/owl# - grel: http://users.ugent.be/~bjdmeest/function/grel.ttl# - -sources: - cwe-pillar-source: - access: "cwec_latest.xml" - referenceFormulation: xpath - iterator: "/Weakness_Catalog/Weaknesses/Weakness[@Abstraction = 'Pillar']" - cwe-source: - access: "cwec_latest.xml" - referenceFormulation: xpath - iterator: "/Weakness_Catalog/Weaknesses/Weakness[@Status != 'Deprecated']" - cwe-rel-source: - access: "./cwec_latest.xml" - referenceFormulation: xpath - iterator: "/Weakness_Catalog/Weaknesses/Weakness/Related_Weaknesses/Related_Weakness[@Nature = 'ChildOf' and @View_ID='1000']" - -mappings: - Pillar: - sources: cwe-pillar-source - s: d3f:CWE-$(./@ID) - po: - - [rdfs:subClassOf, d3f:Weakness~iri] - - Weakness: - sources: cwe-source - s: d3f:CWE-$(./@ID) - po: - - [d3f:cwe-id, "CWE-$(./@ID)"] - - [rdfs:label, "$(./@Name)"] - - p: d3f:definition - o: - function: grel:string_replace - parameters: - - [grel:valueParameter, $(Description)] - - [grel:p_string_find, "/\\s+/"] - - [grel:p_string_replace, " "] - - [d3f:synonym, "$(./Alternate_Terms/Alternate_Term/Term)"] - - RelatedWeakness: - sources: cwe-rel-source - s: d3f:CWE-$(./../../@ID) - po: - - [rdfs:subClassOf, d3f:CWE-$(./@CWE_ID)~iri] diff --git a/app/utilities/D3fend_CAD/ontology/extensions/nist/README.md b/app/utilities/D3fend_CAD/ontology/extensions/nist/README.md deleted file mode 100644 index 38f97e5..0000000 --- a/app/utilities/D3fend_CAD/ontology/extensions/nist/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# NIST Control mappings to D3FEND - -Generates a set of facts for NIST 800-53 r5 controls, mapping them to -D3FEND techniques as part of building the extensions. To correct or -customize these, modify the accompanying spreadsheet. diff --git a/app/utilities/D3fend_CAD/ontology/extensions/nist/create_nist_mappings.py b/app/utilities/D3fend_CAD/ontology/extensions/nist/create_nist_mappings.py deleted file mode 100644 index 68564a7..0000000 --- a/app/utilities/D3fend_CAD/ontology/extensions/nist/create_nist_mappings.py +++ /dev/null @@ -1,123 +0,0 @@ -import numpy as np -import pandas # requires openpyxl to do read_excel -from owlready2 import default_world - -""" This Python script reads the public ontology file and a mapping -file and writes out .ttl file with mappings that may be -appended to the public ontology. """ - -default_world.get_ontology( - "build/d3fend-public.owl" -).load() # Only needed for defensive technique lookups -d3fend_world = default_world - -relation_map = { - "broader": "d3f:broader", - "narrower": "d3f:narrower", - "exactly": "d3f:exactly", - "same": "d3f:exactly", # off-label usage of same; treat as exactly - np.nan: "d3f:related", # If undefined in spreadsheet, use most general match :related - "": "d3f:related", -} # If undefined in spreadsheet, use most general match :related - -d3fend_technique_query = """ -prefix : - -SELECT ?x -WHERE {{ ?x :d3fend-id '{}' . }} -""" - - -# > get_d3fend_technique_name('D3-AL') -# d3fend.AccountLocking -def get_d3fend_technique_name(d3fend_id): - query = d3fend_technique_query.format(d3fend_id) - result = list( - d3fend_world.sparql(query) - ) # owlready2 sparql query to lookup technique name; could cache - # print("{} -> {}\n".format(d3fend_id, result)) - if result and result[0] and result[0][0]: - return result[0][0].name # .namespace, .iri - else: - return None - - -def get_cci_iri(cci_id): - return cci_id - - -def get_sp800_53_control_iri_name(version, control_id): - """Formats IRI for a NIST SP 800-53 control by removing spaces and brackets and embedding the release version""" - control_iri_name = control_id.replace(" ", "") - control_iri_name = control_iri_name.replace(")", "") - control_iri_name = control_iri_name.replace("(", "_") - control_iri_name = "NIST_SP_800-53_R{}_{}".format(str(version), control_iri_name) - return control_iri_name - - -def write_nist_control_mappings( - f, - version, - control_id, - control_name, - relation, - techniques_string, - nist_catalog_iri="NIST_SP_800-53_R5", -): - """Writes mappings for one row in frame (spreadsheet.) to .ttl""" - version = str(version) - # print('<{}>, <{}>, <{}>\n'.format(control_id, relation, techniques_string)) - control_iri_name = get_sp800_53_control_iri_name(version, control_id) - # Write individual representing NIST control and provide annotation and data properties - f.write("d3f:{} a d3f:NISTControl ;\n".format(control_iri_name)) - f.write(" d3f:member-of d3f:{} ;\n".format(nist_catalog_iri)) - f.write(' rdfs:label "{}" ;\n'.format(control_id)) - f.write(' d3f:control-name "{}" .\n'.format(control_name)) - f.write( - "d3f:{} d3f:has-member d3f:{} .\n".format(nist_catalog_iri, control_iri_name) - ) - # Write relations of this control to D3FEND countermeasures mapped in mapping file. - if isinstance(relation, str): - relation = relation.lower() # make lower for robust matching, but not if nan - if relation: # np.nan or non-empty string - d3fend_relation = relation_map[relation] - if d3fend_relation: # If we can understand relation, do mappings - for technique in techniques_string.split( - "|" - ): # Get multiple defensive techniques - technique = technique.strip() # Trim it - if technique: # if non-empty - technique_iri_name = get_d3fend_technique_name(technique) - if technique_iri_name: # if we got a good lookup, do it. - f.write( - "d3f:{} {} d3f:{} .\n".format( - control_iri_name, d3fend_relation, technique_iri_name - ) - ) - f.write("\n") - - -# Corrected D3-LIC to D3-DLIC -df = pandas.read_excel( - io="extensions/nist/sp800-53r5-control-catalog-d3fend-mapping.xlsx", - sheet_name="SP 800-53 Revision 5--d3fend", -) -techniques_column = "D3FEND Techniques" # Corrected typo 'qes'->'ques' on column name original in spreadsheet - -df = df[~df[techniques_column].isnull()] -# dataframe as read treats str 'NA' and np.nan the same; but if that -# changes, pull NA string fields explicitly -df = df[~df[techniques_column].str.contains("NA")] - -with open("build/sp800-53r5-control-to-d3fend-mapping.ttl", "w") as f: - df.apply( - lambda x: write_nist_control_mappings( - f, - "5", - x["Control Identifier"], - x["Control (or Control Enhancement) Name"], - x["Relation"], - x[techniques_column], - ), - axis=1, - ) diff --git a/app/utilities/D3fend_CAD/ontology/extensions/nist/sp800-53r5-control-catalog-d3fend-mapping.xlsx b/app/utilities/D3fend_CAD/ontology/extensions/nist/sp800-53r5-control-catalog-d3fend-mapping.xlsx deleted file mode 100644 index 055b5d9..0000000 Binary files a/app/utilities/D3fend_CAD/ontology/extensions/nist/sp800-53r5-control-catalog-d3fend-mapping.xlsx and /dev/null differ diff --git a/app/utilities/D3fend_CAD/ontology/src/ontology/d3fend-protege.ttl b/app/utilities/D3fend_CAD/ontology/src/ontology/d3fend-protege.ttl deleted file mode 100644 index 72f4cb7..0000000 --- a/app/utilities/D3fend_CAD/ontology/src/ontology/d3fend-protege.ttl +++ /dev/null @@ -1,41615 +0,0 @@ -@prefix : . -@prefix dcterms: . -@prefix owl: . -@prefix rdf: . -@prefix rdfs: . -@prefix skos: . -@prefix xsd: . - - a owl:Ontology ; - rdfs:comment "Use of the D3FEND Knowledge Graph, and the associated references from this ontology are subject to the Terms of Use. D3FEND is funded by the National Security Agency (NSA) Cybersecurity Directorate and managed by the National Security Engineering Center (NSEC) which is operated by The MITRE Corporation. D3FEND™ and the D3FEND logo are trademarks of The MITRE Corporation. This software was produced for the U.S. Government under Basic Contract No. W56KGU-18-D0004, and is subject to the Rights in Noncommercial Computer Software and Noncommercial Computer Software Documentation Clause 252.227-7014 (FEB 2012) Copyright 2022 The MITRE Corporation." ; - dcterms:description "D3FEND is a framework which encodes a countermeasure knowledge base as a knowledge graph. The graph contains the types and relations that define key concepts in the cybersecurity countermeasure domain and the relations necessary to link those concepts to each other. Each of these concepts and relations are linked to references in the cybersecurity literature." ; - dcterms:license "MIT" ; - dcterms:title "D3FEND™ - A knowledge graph of cybersecurity countermeasures" . - -### Object Properties - -:abuses a owl:ObjectProperty ; - rdfs:label "abuses" ; - skos:altLabel "misapplies", - "misuses" ; - rdfs:subPropertyOf :uses ; - rdfs:isDefinedBy ; - :definition "x abuses y: The entity x applies an artifact y to a wrong thing or person; x applies y badly or incorrectly." . - -:access-mediated-by a owl:ObjectProperty ; - rdfs:label "access-mediated-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :mediates-access-to ; - :definition "x access-mediated-by y: The entity or resource x has its access regulated, controlled, or facilitated by entity y, which acts as an intermediary or gatekeeper to enforce access control policies." . - -:accessed-by a owl:ObjectProperty ; - rdfs:label "accessed-by" ; - rdfs:subPropertyOf :associated-with, - :may-be-accessed-by ; - owl:inverseOf :accesses ; - :definition "x accessed-by y: The entity or resource x is accessed by entity y." . - -:accesses a owl:ObjectProperty ; - rdfs:label "accesses" ; - rdfs:subPropertyOf :associated-with, - :may-access ; - rdfs:isDefinedBy ; - :definition "x accesses y: An subject x takes the action of reading from, writing into, or executing the stored information in the object y. Reads, writes, and executes are specific cases of accesses." . - -:addressed-by a owl:ObjectProperty ; - rdfs:label "addressed-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :addresses ; - :definition "x addressed-by y: Relates a resource x (e.g., network host, peripheral device, disk sector, a memory cell or other logical or physical entity) to a discrete address y in an address space that points to it." . - -:addresses a owl:ObjectProperty ; - rdfs:label "addresses" ; - skos:altLabel "points-to" ; - rdfs:subPropertyOf :associated-with ; - :definition "x addresses y: Relates a pointer x to a digital artifact y located in the address space to which x points. The address space is part of some digital store, whether it be in memory, an image, or a persistent storage device." ; - rdfs:seeAlso , - ; - :todo "For inference, If an object has a pointer (but is not a pointer itself), does it point to the target object of the pointer? i.e., an image might hold a pointer pointing to some global address space, does the image itself point-to the address space? Would we assert that directly ever or only infer it?" . - -:adds a owl:ObjectProperty ; - rdfs:label "adds" ; - rdfs:subPropertyOf :associated-with, - :may-add ; - :definition "x adds y: The subject x adds a data object y, such as a file, to some other digital artifact, such as a directory. Examples include an agent or technique adding a record to a database. or a domain entry to a DNS server." . - -:analyzes a owl:ObjectProperty ; - rdfs:label "analyzes" ; - rdfs:subPropertyOf :associated-with, - :detects ; - rdfs:isDefinedBy ; - :definition "x analyzes y: The subject x break down object y into components or essential features, assessing y by quantitative methods, qualitative methods, or both. Usually the analysis is done in terms of some model or framework." . - -:associated-with a owl:ObjectProperty ; - rdfs:label "associated-with" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x associated-with y: The subject x and object y are associated in some way. This is the most general definite relationship in d3fend (i.e., most general relationship that is not prefixed by 'may-'.)" ; - rdfs:seeAlso . - -:attached-to a owl:ObjectProperty ; - rdfs:label "attached-to" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x attached-to y: A subject x is joined in close association to an object y." ; - rdfs:seeAlso :connects . - -:attack-may-be-countered-by a owl:ObjectProperty ; - rdfs:label "attack-may-be-countered-by" ; - rdfs:subPropertyOf :may-be-tactically-associated-with . - -:authenticates a owl:ObjectProperty ; - rdfs:label "authenticates" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :definition "x authenticates y: The subject x establishes the authenticity of some y. This relation indicates an authentication event has occurred." . - -:authorizes a owl:ObjectProperty ; - rdfs:label "authorizes" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :comment "Consider adding certificates (verb sense) specialization of authorizes for authorizations by certificate." ; - :definition "x authorizes y: A subject x grants authorization or clearance for an agent y to use an object. This relation indicates an authorization event has occurred." ; - rdfs:seeAlso . - -:blocks a owl:ObjectProperty ; - rdfs:label "blocks" ; - rdfs:subPropertyOf :counters, - :filters ; - rdfs:isDefinedBy ; - :definition "x blocks y: The entity x blocks off the use of digital artifact y by reference to a block or allow list (or both.)" . - -:broader a owl:ObjectProperty ; - rdfs:label "broader" ; - rdfs:subPropertyOf :semantic-relation ; - :definition "x broader y: The entity x represents a more general or inclusive concept than entity y." . - -:broader-transitive a owl:ObjectProperty ; - rdfs:label "broader-transitive" ; - rdfs:subPropertyOf :semantic-relation ; - :definition "x broader-transitive y: The entity x represents a more general concept than entity y, including indirect or hierarchical relationships where x encompasses y through intermediate entities." . - -:carried-by a owl:ObjectProperty ; - rdfs:label "carried-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :carries ; - :definition "x carried-by y: The information entity x is dependent upon the entity y for its storage, transport, or communication. Entity y serves as the necessary bearer or link from which x can be recovered or interpreted." . - -:carries a owl:ObjectProperty ; - rdfs:label "carries" ; - rdfs:subPropertyOf :associated-with ; - :comment "Related to BFO_0000101" ; - :definition "x carries y: The entity x serves as the bearer or link for information y, enabling y to be stored, transported, or communicated such that y can be recovered or interpreted from x" . - -:caused-by a owl:ObjectProperty ; - rdfs:label "caused-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :causes ; - rdfs:isDefinedBy ; - :definition "x caused-by y: The event or action x occurs as a consequence of event or action y." . - -:causes a owl:ObjectProperty ; - rdfs:label "causes" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x causes y: The event or action x brings about event or action y as a consequence." . - -:communicates-with a owl:ObjectProperty, - owl:SymmetricProperty ; - rdfs:label "communicates-with" ; - rdfs:subPropertyOf :associated-with ; - :definition "x communicates-with y: x and y exchange signals or data bidirectionally, enabling mutual awareness, coordination, or interaction." . - -:configures a owl:ObjectProperty ; - rdfs:label "configures" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - :definition "x configures y: The entity x sets the operational parameters of entity y, determining how y will operate." . - -:connected-to a owl:ObjectProperty ; - rdfs:label "connected-to" ; - rdfs:subPropertyOf :associated-with ; - :definition "x connected-to y: The subject x shares a direct physical or logical link with object y such that communication is possible between them without intermediate routing." . - -:connects a owl:ObjectProperty ; - rdfs:label "connects" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x connects y: The subject x joins system y by means of communication equipment (to some other system, typically the adversary-targeted host)." ; - :todo "x connects y to z is a complete capture of the action, but requires and event to reify that. y connected-to z could be relation for the state after the event \"x connects y to z\". But there is also the likely need to model the sense of x connects y to z, where x is the communications equipment (might be a simple cable) and y and z are the systems being connected." . - -:contained-by a owl:ObjectProperty, - owl:TransitiveProperty ; - rdfs:label "contained-by" ; - rdfs:subPropertyOf :associated-with, - :may-be-contained-by ; - owl:inverseOf :contains ; - :definition "x contained-by y: The entity x exists within or is physically or logically enclosed by entity y." . - -:contains a owl:ObjectProperty, - owl:TransitiveProperty ; - rdfs:label "contains" ; - rdfs:subPropertyOf :associated-with, - :may-contain ; - rdfs:isDefinedBy ; - :comment """d3fend uses 'contains' for the more ontologically traditional term 'has-part' and thus is transitive. The concept of containment in other ontologies (e.g., SUMO and OBO's RO) may refer the containment of an object within a space or object defining a space, or may express the containment of subintervals or subsequences of intervals or sequences, respectively. - -Moving forward different distinctions of kinds of has-part (contains) relationships may prove useful or even necessary. Deferred for future releases""" ; - :definition "x contains y: A core relation that holds between a whole x and its part y. Equivalent to relational concept 'has part' and thus transitive." . - -:controlled-by a owl:ObjectProperty ; - rdfs:label "controlled-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :controls ; - :definition "x controlled-by y: x's operation or behavior is directed or regulated by y." . - -:controls a owl:ObjectProperty ; - rdfs:label "controls" ; - rdfs:subPropertyOf :associated-with ; - :definition "x controls y: x directs or regulates y's operational state, behavior, or function." . - -:copies a owl:ObjectProperty ; - rdfs:label "copies" ; - rdfs:subPropertyOf :creates ; - rdfs:isDefinedBy ; - :definition "x copies y: An technique or agent x reproduces or makes and exact copy of some digital artifact y." . - -:copy-of a owl:ObjectProperty ; - rdfs:label "copy-of" ; - rdfs:subPropertyOf :associated-with ; - :definition "x copy-of y: The subject x is a duplicate of the object y." . - -:counters a owl:ObjectProperty ; - rdfs:label "counters" ; - rdfs:subPropertyOf :may-counter . - -:created-by a owl:ObjectProperty ; - rdfs:label "created-by" ; - rdfs:subPropertyOf :associated-with, - :may-be-created-by ; - owl:inverseOf :creates ; - :definition "x created-by y: The entity x is brought into existence, developed, or generated by entity y." . - -:creates a owl:ObjectProperty ; - rdfs:label "creates" ; - rdfs:subPropertyOf :associated-with, - :may-create ; - rdfs:isDefinedBy ; - :definition "x creates y: The subject x bring into existence an object y. Some technique or agent x creates a persistent digital artifact y (as opposed to production of a consumable or transient object.); i.e., bring forth or generate" ; - rdfs:seeAlso :produces . - -:d3fend-general-object-property a owl:ObjectProperty ; - rdfs:label "d3fend-general-object-property" ; - rdfs:subPropertyOf :d3fend-object-property . - -:d3fend-kb-object-property a owl:ObjectProperty ; - rdfs:label "d3fend-kb-object-property" ; - rdfs:subPropertyOf :d3fend-object-property ; - :definition "x d3fend-kb-object-property y: The object y is a d3fend knowledge base object property. These properties allow the linkage of knowledge and information supporting and illustrating the d3fend model." . - -:d3fend-object-property a owl:ObjectProperty ; - rdfs:label "d3fend-object-property" . - -:d3fend-process-object-property a owl:ObjectProperty ; - rdfs:label "d3fend-process-object-property" ; - rdfs:subPropertyOf :d3fend-object-property . - -:d3fend-tactical-verb-property a owl:ObjectProperty ; - rdfs:label "d3fend-tactical-verb-property" ; - rdfs:subPropertyOf :d3fend-object-property . - -:d3fend-use-case-object-property a owl:ObjectProperty ; - rdfs:subPropertyOf :d3fend-object-property . - -:deceives a owl:ObjectProperty ; - rdfs:label "deceives" ; - rdfs:subPropertyOf :counters . - -:deceives-with a owl:ObjectProperty ; - rdfs:label "deceives-with" ; - rdfs:subPropertyOf :d3fend-tactical-verb-property ; - :definition "x deceives-with y: The entity x misleads or manipulates another entity using y as a tool, method, or mechanism to create false perceptions or understanding." . - -:decodes a owl:ObjectProperty ; - rdfs:label "decodes" ; - rdfs:subPropertyOf :associated-with ; - :definition "x decodes y: Entity x transforms data y to a different form, usually through decompression." . - -:deletes a owl:ObjectProperty ; - rdfs:label "deletes" ; - rdfs:subPropertyOf :evicts, - :modifies ; - rdfs:isDefinedBy ; - :definition "x deletes y: A technique or agent x wipes out the digitally or magnetically recorded information of digital object y." . - -:dependent a owl:ObjectProperty ; - rdfs:label "dependent" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x dependent y: A dependent y is an entity that requires the fulfillment of the requirements specified in dependency x." . - -:depends-on a owl:ObjectProperty ; - rdfs:label "depends-on" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :has-dependent ; - rdfs:isDefinedBy ; - :definition "x depends-on y: The entity x is contingent on y being available; x relies on y." ; - rdfs:seeAlso . - -:detects a owl:ObjectProperty ; - rdfs:label "detects" ; - rdfs:subPropertyOf :counters, - :d3fend-tactical-verb-property ; - :definition "x detects y: The entity x discovers the presence, occurrence, or state of entity y through observation or measurement." . - -:disables a owl:ObjectProperty ; - rdfs:label "disables" ; - rdfs:subPropertyOf :evicts, - :may-disable, - :modifies ; - rdfs:isDefinedBy ; - :definition "x disables y: The technique or agent x makes an entity y unable to perform its actions or capabilities." . - -:drives a owl:ObjectProperty ; - rdfs:label "drives" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x drives y: The device driver x causes a system component y to function by controlling it." ; - rdfs:seeAlso . - -:employed-by a owl:ObjectProperty ; - rdfs:label "employed-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :employs ; - rdfs:isDefinedBy ; - :definition "x employed-by y: An entity x is put into service by a technique or agent y. Inverse of y employs x." . - -:employs a owl:ObjectProperty ; - rdfs:label "employs" ; - rdfs:subPropertyOf :associated-with ; - :definition "x employs y: The entity x makes purposeful use of entity y to perform a function." . - -:enabled-by a owl:ObjectProperty ; - rdfs:label "enabled-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :enables ; - rdfs:isDefinedBy ; - :definition "x enabled-by y: A top level technique y enables a tactic x, that is, the property indicates that a technique y is used to put a particular tactic x into action. In other words, y renders x capable or able for some task. Inverse of enables." . - -:enables a owl:ObjectProperty ; - rdfs:label "enables" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x enables y: A top level technique x enables a tactic y, that is, the property indicates that a technique x is used to put a particular tactic y into action. In other words, x renders y capable or able for some task." . - -:encodes a owl:ObjectProperty ; - rdfs:label "encodes" ; - rdfs:subPropertyOf :associated-with ; - :definition "x encodes y: Entity x transforms data y to a different form, usually through compression." . - -:encrypts a owl:ObjectProperty ; - rdfs:label "encrypts" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :definition "x encrypts y: The entity x converts the ordinary representation of a digital artifact y into a secret code." . - -:end a owl:ObjectProperty ; - rdfs:label "end" ; - rdfs:subPropertyOf :d3fend-process-object-property . - -:enforces a owl:ObjectProperty ; - rdfs:label "enforces" ; - rdfs:subPropertyOf :associated-with ; - :definition "x enforces y: Technique x forces entity y to be compliant with a law, rule, or obligation." . - -:enumerates a owl:ObjectProperty ; - rdfs:label "enumerates" ; - rdfs:subPropertyOf :reads ; - :definition "x enumerates y: The subject x takes the action of reading from a digital source y to acquire data and create a list of its contents." . - -:erases a owl:ObjectProperty ; - rdfs:label "erases" ; - rdfs:subPropertyOf :associated-with ; - :definition "x erases y: A technique x removes recorded data from storage device y creating space for new data." . - -:evaluated-by a owl:ObjectProperty ; - rdfs:label "evaluated-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :evaluates ; - :definition "x evaluated-by y: The entity x is assessed and analyzed by entity y." . - -:evaluates a owl:ObjectProperty ; - rdfs:label "evaluates" ; - rdfs:subPropertyOf :associated-with, - :may-evaluate ; - :definition "x evaluates y: The entity x systematically assesses entity y to judge its state, quality, or risk." . - -:evicts a owl:ObjectProperty ; - rdfs:label "evicts" ; - rdfs:subPropertyOf :counters, - :d3fend-tactical-verb-property, - :may-evict ; - :definition "x evicts y: The entity x forcibly removes entity y from the environment or resource where y was residing." . - -:exactly a owl:ObjectProperty ; - rdfs:label "exactly" ; - rdfs:subPropertyOf :semantic-relation ; - :definition "x exactly y: The entity x is identical to or fully corresponds to entity y." . - -:excises a owl:ObjectProperty ; - rdfs:label "excises" ; - rdfs:subPropertyOf :associated-with ; - :definition "x excises y: Technique x removes a section of entity y." . - -:executed-by a owl:ObjectProperty ; - rdfs:label "executed-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :executes ; - :definition "x executed-by y: The entity or function x is carried out, performed, or run by entity y." . - -:executes a owl:ObjectProperty ; - rdfs:label "executes" ; - rdfs:subPropertyOf :accesses, - :may-execute, - :runs ; - rdfs:isDefinedBy ; - :definition "x executes y: The subject x takes the action of carrying out (executing) y, which is a single software module, function, or instruction." . - -:extends a owl:ObjectProperty ; - rdfs:label "extends" ; - rdfs:subPropertyOf :modifies ; - rdfs:isDefinedBy ; - :definition "x extends y: The entity x extend the scope or range or area of entity y, especially in the sense of widen the range of applications." . - -:filters a owl:ObjectProperty ; - rdfs:label "filters" ; - rdfs:subPropertyOf :associated-with, - :isolates ; - rdfs:isDefinedBy ; - :definition "x filters y: An technique or agent x removes some specified set of of entities from the content of a digital artifact y, by passing an artifact's content through a filter. A filter is a device that removes something from whatever passes through it." ; - rdfs:seeAlso , - . - -:forges a owl:ObjectProperty ; - rdfs:label "forges" ; - rdfs:subPropertyOf :creates ; - :definition "x forges y: An technique or agent x counterfeits a digital artifact y, such as a fake credential, with the intent to deceive." ; - rdfs:seeAlso . - -:fork a owl:ObjectProperty ; - rdfs:label "fork" ; - rdfs:subPropertyOf :d3fend-process-object-property . - -:hardens a owl:ObjectProperty ; - rdfs:label "hardens" ; - rdfs:subPropertyOf :counters, - :d3fend-tactical-verb-property ; - :definition "x hardens y: The entity x fortifies entity y to reduce its weaknesses so y can better withstand attack or failure." . - -:has-account a owl:ObjectProperty ; - rdfs:label "has-account" ; - rdfs:subPropertyOf :owns ; - :definition "x has-account y: The subject x has ownership or possession of some account y." ; - rdfs:seeAlso . - -:has-agent a owl:ObjectProperty ; - rdfs:label "has-agent" ; - rdfs:subPropertyOf :has-participant ; - :definition "x has-agent y: The event x occurs because agent y actively carries it out." . - -:has-audience a owl:ObjectProperty ; - rdfs:label "has-audience" ; - rdfs:subPropertyOf :d3fend-use-case-object-property . - -:has-contribution a owl:ObjectProperty ; - rdfs:label "has-contribution" ; - rdfs:subPropertyOf :d3fend-kb-object-property . - -:has-contributor a owl:ObjectProperty ; - rdfs:label "has-contributor" ; - rdfs:subPropertyOf :d3fend-kb-object-property . - -:has-dependent a owl:ObjectProperty ; - rdfs:label "has-dependent" ; - rdfs:subPropertyOf :associated-with ; - :definition "x has-dependent y: The entity x is relied upon or required by entity y." . - -:has-goal a owl:ObjectProperty ; - rdfs:label "has-goal" ; - rdfs:subPropertyOf :d3fend-use-case-object-property . - -:has-input a owl:ObjectProperty ; - rdfs:label "has-input" ; - rdfs:subPropertyOf :has-participant ; - rdfs:domain :Event ; - rdfs:range :Artifact ; - owl:inverseOf :input-of ; - :definition "x has-input y: An event x has input y iff y is an artifact that is present at the start of x, provides material or information required for x to begin, and during x either y's state is altered or the information content it bears is realized." ; - rdfs:seeAlso , - . - -:has-location a owl:ObjectProperty ; - rdfs:label "has-location" ; - skos:altLabel "located_in" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x has-location y: The entity x is situated in a particular spot or position y." ; - rdfs:seeAlso . - -:has-mediator a owl:ObjectProperty ; - rdfs:label "has-mediator" ; - rdfs:subPropertyOf :has-participant ; - :definition "x has-mediator y: The entity x relies on or is facilitated by entity y." . - -:has-member a owl:ObjectProperty ; - rdfs:label "has-member" ; - rdfs:subPropertyOf :d3fend-kb-object-property ; - owl:inverseOf :member-of . - -:has-output a owl:ObjectProperty ; - rdfs:label "has-output" ; - rdfs:subPropertyOf :has-participant ; - rdfs:domain :Event ; - rdfs:range :Artifact ; - owl:inverseOf :output-of ; - :definition "x has-output y: An event x has output y iff y is an artifact that is present at the end of x, was not present in the same state at the start of x, and whose presence at the end is required for x to be considered complete; the change in state may arise either from a transformation of y itself or from the realization of the information content y bears." ; - rdfs:seeAlso , - . - -:has-participant a owl:ObjectProperty ; - rdfs:label "has-participant" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :participates-in ; - rdfs:isDefinedBy ; - :definition "x has-participant y: The event x involves an object y as a participant, indicating that y plays some role in the event, whether actively, passively, or otherwise." . - -:has-prerequisite a owl:ObjectProperty ; - rdfs:label "has-prerequisite" ; - rdfs:subPropertyOf :d3fend-use-case-object-property . - -:has-procedure a owl:ObjectProperty ; - rdfs:label "has-procedure" ; - rdfs:subPropertyOf :d3fend-general-object-property . - -:has-recipient a owl:ObjectProperty ; - rdfs:label "has-recipient" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x has_recipient y: An agent y is the intended recipient and decoder of the information contained in communication x." ; - rdfs:seeAlso , - . - -:has-sender a owl:ObjectProperty ; - rdfs:label "has-sender" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x has_sender y: An agent y is the sender and encoder of the information contained in communication x." ; - rdfs:seeAlso . - -:has-weakness a owl:ObjectProperty ; - rdfs:label "has-weakness" ; - rdfs:subPropertyOf :may-have-weakness ; - owl:inverseOf :weakness-of ; - :definition "x has-weakness y: The entity x exhibits a condition y that could, in some circumstances, lead to a vulnerability." . - -:hides a owl:ObjectProperty ; - rdfs:label "hides" ; - rdfs:subPropertyOf :associated-with ; - rdfs:range :DigitalArtifact ; - :definition "x hides y: A technique or operation x conceals the digital artifact y." . - -:identified-by a owl:ObjectProperty ; - rdfs:label "identified-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :identifies ; - :definition "x identified-by y: The entity x is recognized or described by entity y." . - -:identifies a owl:ObjectProperty ; - rdfs:label "identifies" ; - rdfs:subPropertyOf :associated-with ; - :definition "x identifies y: The entity x recognizes or brings attention to entity y, making it distinct or clear through naming, description, or discovery." . - -:impairs a owl:ObjectProperty ; - rdfs:label "impairs" ; - rdfs:subPropertyOf :associated-with ; - :definition "x impairs y: The entity or action x hinders entity y by reducing its normal function, capacity, or availability." . - -:implemented-by a owl:ObjectProperty ; - rdfs:label "implemented-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :implements ; - :definition "x implemented-by y: The entity x is realized or brought into operation by entity y." . - -:implements a owl:ObjectProperty ; - rdfs:label "implements" ; - rdfs:subPropertyOf :associated-with ; - :definition "x implements y: The entity x realize entity y by putting its design or specification into effect." . - -:initiates a owl:ObjectProperty ; - rdfs:label "initiates" ; - rdfs:subPropertyOf :associated-with ; - :definition "x initiates y: The entity or action x starts or triggers entity or function y, bringing it into action." . - -:injects a owl:ObjectProperty ; - rdfs:label "injects" ; - rdfs:subPropertyOf :executes ; - :definition "x injects y: The subject x takes the action of exploiting a security flaw by introducing (injecting) y, which is code or data that will change the course of execution or state of a computing process to an alternate course or state. Typically code injection is associated with adversaries intending the alternate course to facilitate a malevolent purpose; however, code injection can be unintentional or the intentions behind it may be good or benign." ; - rdfs:seeAlso , - ; - :todo "We use injects for IPC as well as more ordinary injection attacks, hence \"execution or state\" phrasing. Might distinguish after discussion and investigation." . - -:input-of a owl:ObjectProperty ; - rdfs:label "input-of" ; - rdfs:subPropertyOf :participates-in ; - rdfs:domain :Artifact ; - rdfs:range :Event ; - :definition "x input-of y: An artifact x is input of an event y iff x participates at the start of y, provides the material or information required for y to begin, and during y either x's state is altered or the information content it bears is realized." ; - rdfs:seeAlso . - -:installs a owl:ObjectProperty ; - rdfs:label "installs" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x installs y: An entity x sets up a digital artifact y for subsequent use. For example, an installation program can install application software." . - -:instructed-by a owl:ObjectProperty ; - rdfs:label "instructed-by" ; - rdfs:subPropertyOf :associated-with ; - :definition "x instructed-by y: A subject x takes machine instructions from object y." . - -:instructs a owl:ObjectProperty ; - rdfs:label "instructs" ; - rdfs:subPropertyOf :associated-with ; - :definition "x instructs y: A subject x delivers machine instructions to object y." . - -:interprets a owl:ObjectProperty ; - rdfs:label "interprets" ; - rdfs:subPropertyOf :executes, - :may-interpret ; - :definition "x interprets y: The subject x interprets the executable script y. The sense of interprets is here 'Parse the source code and perform its behavior directly.'" ; - rdfs:seeAlso . - -:inventoried-by a owl:ObjectProperty ; - rdfs:label "inventoried-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :inventories ; - :definition "x inventoried-by y: The entity x is cataloged, recorded, or tracked by entity y." . - -:inventories a owl:ObjectProperty ; - rdfs:label "inventories" ; - rdfs:subPropertyOf :associated-with ; - :definition "x inventories y: The entity x systematically discovers entity y and records its presence and key details for tracking." . - -:invoked-by a owl:ObjectProperty ; - rdfs:label "invoked-by" ; - rdfs:subPropertyOf :associated-with, - :may-be-invoked-by ; - owl:inverseOf :invokes ; - :definition "x invoked-by y: The entity x is called, triggered, or activated by entity y." . - -:invokes a owl:ObjectProperty ; - rdfs:label "invokes" ; - skos:altLabel "calls" ; - rdfs:subPropertyOf :executes, - :may-invoke ; - rdfs:isDefinedBy ; - :definition "x invokes y: The subject x invokes a system service y by use of an instruction object y that interrupts the program being executed and passes control to the operating system to perform that operation." ; - rdfs:seeAlso ; - :todo "Calls in Wordnet can be function call or system / supervisor call; we may want to make this distinction in future. So far, we have always used this in the second sense (system call.)" . - -:isolates a owl:ObjectProperty ; - rdfs:label "isolates" ; - rdfs:subPropertyOf :associated-with, - :d3fend-tactical-verb-property ; - rdfs:isDefinedBy ; - :definition "x isolates y: The technique or agent x sets digital artifact y apart from other digital artifacts, sequestering y." . - -:kb-reference a owl:ObjectProperty ; - rdfs:label "kb-reference" ; - skos:altLabel "has-technique-reference" ; - rdfs:subPropertyOf :d3fend-kb-object-property ; - owl:inverseOf :kb-reference-of . - -:kb-reference-of a owl:ObjectProperty ; - rdfs:label "kb-reference-of" ; - skos:altLabel "kb-is-example-of" ; - rdfs:subPropertyOf :d3fend-kb-object-property ; - rdfs:range :CyberTechnique ; - :definition "x kb-is-example-of y: The reference x is an example of technique y." . - -:limits a owl:ObjectProperty ; - rdfs:label "limits" ; - skos:altLabel "cutoff" ; - rdfs:subPropertyOf :restricts ; - rdfs:isDefinedBy ; - :definition "x limits y: An entity x specifies a designated limit beyond which some entity y cannot function or must be terminated." ; - rdfs:seeAlso . - -:loaded-by a owl:ObjectProperty ; - rdfs:label "loaded-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :loads ; - :definition "x loaded-by y: The entity x is brought into memory by entity y." . - -:loads a owl:ObjectProperty ; - rdfs:label "loads" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x loads y: The technique or process x transfers a software from a storage y to a computer's memory for subsequent execution." . - -:manages a owl:ObjectProperty ; - rdfs:label "manages" ; - skos:altLabel "oversees", - "supervises" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x manages y: The technique or agent x watches and directs the use of a digital artifact y." . - -:mapped-by a owl:ObjectProperty ; - rdfs:label "mapped-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :maps ; - :definition "x mapped-by y: The entity x is linked to another entity by entity y." . - -:maps a owl:ObjectProperty ; - rdfs:label "maps" ; - rdfs:subPropertyOf :may-map ; - :definition "x maps y: The entity x discovers and records how entity y is arranged and interconnected." . - -:may-access a owl:ObjectProperty ; - rdfs:label "may-access" ; - rdfs:subPropertyOf :may-be-associated-with ; - owl:inverseOf :may-be-accessed-by ; - :definition "x may-access y: They entity x may access the thing y; that is, 'x accesses y' may be true." . - -:may-add a owl:ObjectProperty ; - rdfs:label "may-add" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-add y: They entity x may add the thing y; that is, 'x adds y' may be true." . - -:may-be-accessed-by a owl:ObjectProperty ; - rdfs:label "may-be-accessed-by" ; - rdfs:subPropertyOf :may-be-associated-with . - -:may-be-associated-with a owl:ObjectProperty ; - rdfs:label "may-be-associated-with" ; - rdfs:subPropertyOf :d3fend-object-property ; - :comment "Any relationship intended to relate subjects to d3f:DigitalArtifacts is expected to be a subproperty of this object property." ; - :definition "x may-be-associated-with y: The subject x and object y may be associated in some way." ; - rdfs:seeAlso . - -:may-be-contained-by a owl:ObjectProperty, - owl:TransitiveProperty ; - rdfs:label "may-be-contained-by" ; - rdfs:subPropertyOf :may-be-associated-with ; - owl:inverseOf :may-contain . - -:may-be-created-by a owl:ObjectProperty ; - rdfs:label "may-be-created-by" ; - rdfs:subPropertyOf :may-be-associated-with ; - owl:inverseOf :may-create . - -:may-be-deceived-by a owl:ObjectProperty ; - rdfs:label "may-be-deceived-by" ; - rdfs:subPropertyOf :attack-may-be-countered-by ; - owl:inverseOf :may-deceive ; - :pref-label "may be deceived by" . - -:may-be-detected-by a owl:ObjectProperty ; - rdfs:label "may-be-detected-by" ; - rdfs:subPropertyOf :attack-may-be-countered-by ; - owl:inverseOf :may-detect ; - :pref-label "may be detected by" . - -:may-be-evicted-by a owl:ObjectProperty ; - rdfs:label "may-be-evicted-by" ; - rdfs:subPropertyOf :attack-may-be-countered-by ; - owl:inverseOf :may-evict ; - :pref-label "may be evicted by" . - -:may-be-hardened-against-by a owl:ObjectProperty ; - rdfs:label "may-be-hardened-against-by" ; - rdfs:subPropertyOf :attack-may-be-countered-by ; - owl:inverseOf :may-harden ; - :pref-label "may be hardened against by" . - -:may-be-invoked-by a owl:ObjectProperty ; - rdfs:label "may-be-invoked-by" ; - rdfs:subPropertyOf :may-be-associated-with ; - owl:inverseOf :may-invoke . - -:may-be-isolated-by a owl:ObjectProperty ; - rdfs:label "may-be-isolated-by" ; - rdfs:subPropertyOf :attack-may-be-countered-by ; - owl:inverseOf :may-isolate ; - :pref-label "may be isolated by" . - -:may-be-modified-by a owl:ObjectProperty ; - rdfs:label "may-be-modified-by" ; - rdfs:subPropertyOf :may-be-associated-with ; - owl:inverseOf :may-modify . - -:may-be-tactically-associated-with a owl:ObjectProperty ; - rdfs:label "may-be-tactically-associated-with" ; - rdfs:subPropertyOf :may-be-associated-with ; - :comment "Most/all of these properties are (will be) realized via inference over chain property path axioms and atomic assertions. Promote this to regular comment once definitions no longer in comments." ; - :definition "x may-be-tactically-associated-with y: the defensive action x may be a tactic that counters offensive action y." ; - :todo "Needs name change... With the right name change to better capture definition can keep this definition" . - -:may-be-weakness-of a owl:ObjectProperty ; - rdfs:label "may-be-weakness-of" ; - rdfs:subPropertyOf :may-be-associated-with ; - rdfs:domain :Weakness ; - rdfs:range :Artifact ; - owl:inverseOf :may-have-weakness . - -:may-contain a owl:ObjectProperty, - owl:TransitiveProperty ; - rdfs:label "may-contain" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "to potentially have as contents or constituent parts; comprise; include." . - -:may-counter a owl:ObjectProperty ; - rdfs:label "may-counter" ; - rdfs:subPropertyOf :may-be-associated-with . - -:may-counter-attack a owl:ObjectProperty ; - rdfs:label "may-counter-attack" ; - rdfs:subPropertyOf :may-be-tactically-associated-with . - -:may-create a owl:ObjectProperty ; - rdfs:label "may-create" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-create y: They entity x may create the entity y; that is, 'x creates y' may be true." . - -:may-deceive a owl:ObjectProperty ; - rdfs:label "may-deceive" ; - rdfs:subPropertyOf :may-counter-attack ; - :pref-label "may deceive" . - -:may-detect a owl:ObjectProperty ; - rdfs:label "may-detect" ; - rdfs:subPropertyOf :may-counter-attack ; - :pref-label "may detect" . - -:may-disable a owl:ObjectProperty ; - rdfs:label "may-disable" ; - rdfs:subPropertyOf :may-evict . - -:may-evaluate a owl:ObjectProperty ; - rdfs:label "may-evaluate" ; - rdfs:subPropertyOf :may-be-associated-with . - -:may-evict a owl:ObjectProperty ; - rdfs:label "may-evict" ; - rdfs:subPropertyOf :may-counter, - :may-counter-attack ; - :pref-label "may evict" . - -:may-execute a owl:ObjectProperty ; - rdfs:label "may-execute" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may execute y: The subject x might take the action of carrying out (executing) y, which is a single software module, function, or instruction." . - -:may-harden a owl:ObjectProperty ; - rdfs:label "may-harden" ; - rdfs:subPropertyOf :may-counter-attack ; - :pref-label "may harden" ; - :todo "Need to identify verbs for hardening, don't want modifies o modified-by patterns as these are evictions." . - -:may-have-weakness a owl:ObjectProperty ; - rdfs:label "may-have-weakness" ; - rdfs:subPropertyOf :may-be-associated-with ; - rdfs:domain :Artifact ; - rdfs:range :Weakness . - -:may-interpret a owl:ObjectProperty ; - rdfs:label "may-interpret" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-interpret y: They entity x may interpret the thing y; that is, 'x interprets y' may be true." . - -:may-invoke a owl:ObjectProperty ; - rdfs:label "may-invoke" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-invoke y: They entity x may invoke the thing y; that is, 'x invokes y' may be true." . - -:may-isolate a owl:ObjectProperty ; - rdfs:label "may-isolate" ; - rdfs:subPropertyOf :may-counter-attack ; - :pref-label "may isolate" ; - :todo "There are some d3f isolation techniques H b P I and E T and M A C that use isolates directly which is different sense that this tactial isolates/may-isolates." . - -:may-map a owl:ObjectProperty ; - rdfs:label "may-map" ; - rdfs:subPropertyOf :may-be-associated-with . - -:may-modify a owl:ObjectProperty ; - rdfs:label "may-modify" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-modify y: They entity x may modify the thing y; that is, 'x modifies y' may be true." . - -:may-produce a owl:ObjectProperty ; - rdfs:label "may-produce" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-produce y: They entity x may produce the thing y; that is, 'x produces y' may be true." . - -:may-query a owl:ObjectProperty ; - rdfs:label "may-query" ; - rdfs:subPropertyOf :may-be-associated-with . - -:may-run a owl:ObjectProperty ; - rdfs:label "may-run" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-run y: They entity x may run the thing y; that is, 'x runs y' may be true." . - -:may-transfer a owl:ObjectProperty ; - rdfs:label "may-transfer" ; - rdfs:subPropertyOf :may-be-associated-with ; - :definition "x may-transfer y: They entity x might send the thing y; that is, 'x transfers y' may be true." . - -:mediates-access-to a owl:ObjectProperty ; - rdfs:label "mediates-access-to" ; - rdfs:subPropertyOf :associated-with ; - :definition "x mediates-access-to y: The entity x controls and brokers requests to reach entity y, enforcing the access rules that allow or deny it." . - -:member-of a owl:ObjectProperty ; - rdfs:label "member-of" ; - rdfs:subPropertyOf :d3fend-kb-object-property . - -:modified-by a owl:ObjectProperty ; - rdfs:label "modified-by" ; - rdfs:subPropertyOf :associated-with, - :may-be-modified-by ; - owl:inverseOf :modifies ; - :definition "x modified-by y: The entity x is changed by entity y." . - -:modifies a owl:ObjectProperty ; - rdfs:label "modifies" ; - skos:altLabel "alters" ; - rdfs:subPropertyOf :accesses, - :associated-with, - :may-modify ; - rdfs:isDefinedBy ; - :definition "x modifies y: A technique or agent x causes a digital object y to change; become different; or undertake a transformation. Afterwards, the data or state held by a digital object is changed." . - -:modifies-part a owl:ObjectProperty ; - rdfs:label "modifies-part" ; - rdfs:subPropertyOf :may-modify ; - owl:propertyChainAxiom ( - :modifies - :contains ) ; - :definition "x modifies-part y: The entity x modifies a part of y. [Note: This is a rolification property for the rule 'if one modifies a part of a whole, they modify the whole.' Reasoning for this and similar semantics to come are under evaluation and not part of current d3fend inferences.]" . - -:monitors a owl:ObjectProperty ; - rdfs:label "monitors" ; - rdfs:subPropertyOf :associated-with, - :detects ; - rdfs:isDefinedBy ; - :definition "x monitors y: The technique or agent x keep tabs on; keeps an eye on; or keep the digital artifact y under surveillance." . - -:narrower a owl:ObjectProperty ; - rdfs:label "narrower" ; - rdfs:subPropertyOf :semantic-relation ; - :definition "x narrower y: The entity x represents a more specific or focused concept than entity y." . - -:narrower-transitive a owl:ObjectProperty ; - rdfs:label "narrower-transitive" ; - rdfs:subPropertyOf :semantic-relation ; - :definition "x narrower-transitive y: The entity x represents a more specific concept than entity y, including indirect or hierarchical relationships where x is a subset of y through intermediate entities." . - -:neutralizes a owl:ObjectProperty ; - rdfs:label "neutralizes" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :definition "x neutralizes y: The technique x makes the execution of actions of y ineffective by preventing or counterbalancing the effect of y." . - -:next a owl:ObjectProperty ; - rdfs:label "next" ; - rdfs:subPropertyOf :d3fend-process-object-property . - -:obfuscates a owl:ObjectProperty ; - rdfs:label "obfuscates" ; - rdfs:subPropertyOf :evicts, - :modifies ; - rdfs:isDefinedBy ; - :definition "x obfuscates y: The technique x makes the digital artifact y unclear or obscure. Typically obfuscation is a way to hide a digital artifact from discovery, use, or both." ; - rdfs:seeAlso . - -:operates a owl:ObjectProperty ; - rdfs:label "operates" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy "oewn-01513459-v" ; - :definition "x operates y: The entity x enables, activates, or controls the functioning or behavior of object y (operated entity), typically in accordance with the design or intended use of the operated entity." . - -:originates-from a owl:ObjectProperty ; - rdfs:label "originates-from" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x originates-from y: The digital event or artifact x began its network transit from a physical location y." . - -:output-of a owl:ObjectProperty ; - rdfs:label "output-of" ; - rdfs:subPropertyOf :participates-in ; - rdfs:domain :Artifact ; - rdfs:range :Event ; - :definition "x output-of y: An artifact x is output of an event y iff x must be present when y concludes, was absent in the same state when x began, and y counts as complete only when x is available at its end." ; - rdfs:seeAlso . - -:owns a owl:ObjectProperty ; - rdfs:label "owns" ; - skos:altLabel "possesses" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x owns y: The subject x has ownership or possession of some object y." ; - rdfs:seeAlso . - -:participates-in a owl:ObjectProperty ; - rdfs:label "participates-in" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x participates-in y: The object x takes part in the event y, signifying that x contributes to or is affected by the event’s occurrence in some way." . - -:powered-by a owl:ObjectProperty ; - rdfs:label "powered-by" ; - rdfs:subPropertyOf :depends-on ; - owl:inverseOf :powers ; - :definition "x powered-by y: x obtains its essential energy or force from y to perform its function or remain active." . - -:powers a owl:ObjectProperty ; - rdfs:label "powers" ; - rdfs:subPropertyOf :has-dependent ; - :definition "x powers y: x furnishes y with the energy or force required for y's functionality or operation." . - -:preceded-by a owl:ObjectProperty ; - rdfs:label "preceded-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :precedes ; - rdfs:isDefinedBy ; - :definition "x preceded-by y: The event or action x occurs after event or action y in time." . - -:precedes a owl:ObjectProperty ; - rdfs:label "precedes" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x precedes y: The event or action x occurs before event or action y in time." . - -:process-ancestor a owl:ObjectProperty, - owl:TransitiveProperty ; - rdfs:label "process-ancestor" ; - rdfs:subPropertyOf :process-property ; - :definition "x process-ancestor y: The process y is a process ancestor of process x, indicating one or more process creation events were conducted were started at process y and subsequently created process x." . - -:process-image-path a owl:ObjectProperty ; - rdfs:label "process-image-path" ; - skos:altLabel "processImagePath" ; - rdfs:subPropertyOf :process-property ; - :definition "x process-image-path y: The filepath y is the process image path for the process x, indicating the path to the resource from which the process's image was loaded." . - -:process-parent a owl:ObjectProperty ; - rdfs:label "process-parent" ; - skos:altLabel "processParent" ; - rdfs:subPropertyOf :process-ancestor ; - :definition "x process-parent y: The process y created the process x (directly) with a create process event." . - -:process-property a owl:ObjectProperty ; - rdfs:label "process-property" ; - rdfs:subPropertyOf :associated-with ; - :definition "x process-property y: Process x has the a process-property y. This is generalization for specific process object properties." . - -:process-user a owl:ObjectProperty ; - rdfs:label "process-user" ; - skos:altLabel "processUser" ; - rdfs:subPropertyOf :process-property ; - :definition "x process-user y: The process x has been executed by the user y." . - -:produced-by a owl:ObjectProperty ; - rdfs:label "produced-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :produces ; - :definition "x produced-by y: The entity x is created by entity y." . - -:produces a owl:ObjectProperty ; - rdfs:label "produces" ; - skos:altLabel "outputs" ; - rdfs:subPropertyOf :associated-with, - :may-produce ; - rdfs:isDefinedBy ; - :definition "x produces y: The subject entity x or process produces a data object y, which may be discrete digital object or a stream (e.g., a stream such as network traffic.)" ; - rdfs:seeAlso :creates ; - :todo "Make definition of produces more generic to match sense of Product Developer produces Product (so generalize to any object really, not just computery digital stuff.)" . - -:provider a owl:ObjectProperty ; - rdfs:label "provider" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x provider y: A provider y is an entity that supplies a service, system, or data resources to a dependent entity x." ; - rdfs:seeAlso . - -:quarantines a owl:ObjectProperty ; - rdfs:label "quarantines" ; - rdfs:subPropertyOf :associated-with ; - :definition "x quarantines y: Technique x moves entity y to a place of isolation." . - -:queries a owl:ObjectProperty ; - rdfs:label "queries" ; - rdfs:subPropertyOf :associated-with, - :may-query ; - :definition "x queries y: The entity x requests information or data from entity y." . - -:reads a owl:ObjectProperty ; - rdfs:label "reads" ; - rdfs:subPropertyOf :accesses ; - :definition "x reads y: The subject x takes the action of reading from a digital source y to acquire data and placing it into volatile memory for processing." ; - rdfs:seeAlso , - . - -:receives a owl:ObjectProperty ; - rdfs:label "receives" ; - rdfs:subPropertyOf :associated-with ; - :definition "x receives y: The subject x acquires object y from a communication medium and transfers y into its local context for storage or processing." . - -:recorded-in a owl:ObjectProperty ; - rdfs:label "recorded-in" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :records ; - :definition "x recorded-in y: The event x is documented, logged, or otherwise preserved within the digital artifact y, which stores or encodes relevant data about the event." . - -:records a owl:ObjectProperty ; - rdfs:label "records" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x records y: The digital artifact x makes a record of events y; set down in permanent form." ; - rdfs:seeAlso ; - :todo "a log doesn't summarize an event, it records it; it logs it in the sense of holding the records; it contains it in sense of a record in a historical list of records, maybe---but if we model loggers we might want to reserve 'log' to say they 'log' the event. The chronological order of the log events (log event records to be exact) would suggest 'chronicles' but that verb might be too twee for first D3FEND release." . - -:regenerates a owl:ObjectProperty ; - rdfs:label "regenerates" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :definition "x regenerates y: The entity x discards the current digital artifact y and creates a new version that serves the same function." . - -:related a owl:ObjectProperty ; - rdfs:label "related" ; - rdfs:subPropertyOf :semantic-relation ; - rdfs:isDefinedBy skos:related ; - :definition "x related y: x has a symmetric associative relation to y." . - -:restores a owl:ObjectProperty ; - rdfs:label "restores" ; - rdfs:subPropertyOf :associated-with ; - :definition "x restores y: The entity x returns entity y to its known-good or previous state." . - -:restricted-by a owl:ObjectProperty ; - rdfs:label "restricted-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :restricts ; - :definition "x restricted-by y: The entity x is limited, constrained, or regulated by entity y." . - -:restricts a owl:ObjectProperty ; - rdfs:label "restricts" ; - rdfs:subPropertyOf :associated-with, - :isolates ; - rdfs:isDefinedBy ; - :definition "x restricts y: An entity x bounds the use of entity y." . - -:resume a owl:ObjectProperty ; - rdfs:label "resume" ; - rdfs:subPropertyOf :d3fend-process-object-property ; - rdfs:isDefinedBy ; - :definition "The agent or technique x continues a previous action on entity y. Usually occurs after suspension on y." . - -:resumes a owl:ObjectProperty ; - rdfs:label "resumes" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "The agent or technique x continues a previous action on entity y. Usually occurs after suspension on y." . - -:runs a owl:ObjectProperty ; - rdfs:label "runs" ; - rdfs:subPropertyOf :associated-with, - :may-run ; - :definition "x runs y: To carry out a process or program y, as on a computer or a machine x; where y may be a large software assembly or a specific module or instruction. Examples: \"run a new program on the Mac\"; \"the computer runs the application software\"." ; - rdfs:seeAlso . - -:semantic-relation a owl:ObjectProperty ; - rdfs:label "semantic-relation" ; - rdfs:subPropertyOf :associated-with ; - :definition "x semantic-relation y: The entity x is conceptually or meaningfully connected to entity y." . - -:signed-by a owl:ObjectProperty ; - rdfs:label "signed-by" ; - rdfs:subPropertyOf :validated-by ; - owl:inverseOf :signs ; - :definition "x signed-by y: The digital artifact x includes a signature generated by the entity y, certifying the authenticity and integrity of x. This relationship indicates that x has undergone a validation process by y, using cryptographic measures to ensure that x is trustworthy and unaltered since the signing by y." . - -:signs a owl:ObjectProperty ; - rdfs:label "signs" ; - rdfs:subPropertyOf :validates ; - :definition "x signs y: The entity x applies a digital signature to the digital artifact y, thereby asserting its validity, integrity, and authenticity. Typically, this involves cryptographic techniques to securely bind the signature to y, ensuring that y's contents have not been altered and are authentic as endorsed by x." . - -:spoofs a owl:ObjectProperty ; - rdfs:label "spoofs" ; - rdfs:subPropertyOf :associated-with, - :deceives-with ; - :definition "x spoofs y: The technique x creates a fake instance of a digital artifact y; that is, y is a decoy, fake, or counterfeit." ; - rdfs:seeAlso , - . - -:start a owl:ObjectProperty ; - rdfs:label "start" ; - rdfs:subPropertyOf :d3fend-process-object-property . - -:strengthens a owl:ObjectProperty ; - rdfs:label "strengthens" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :definition "x strengthens y: The technique x make digital artifact y resistant (to harm or misuse.)" . - -:summarizes a owl:ObjectProperty ; - rdfs:label "summarizes" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x summarizes y: The sensor x summarizes a set y of events concerning digital artifacts over time." . - -:suspends a owl:ObjectProperty ; - rdfs:label "suspends" ; - rdfs:subPropertyOf :evicts ; - rdfs:isDefinedBy ; - :definition "x suspends y: The agent or technique x pauses entity y." . - -:terminates a owl:ObjectProperty ; - rdfs:label "terminates" ; - rdfs:subPropertyOf :associated-with, - :evicts ; - rdfs:isDefinedBy ; - :definition "x terminates y: The technique x brings to an end or halt to some activity y." ; - rdfs:seeAlso ; - :synonym "aborts" . - -:transmits a owl:ObjectProperty ; - rdfs:label "transmits" ; - skos:altLabel "sends" ; - rdfs:subPropertyOf :associated-with ; - :definition "x transmits y: The subject x actively emits object y onto a communication medium, rendering y observable and available for reception on that medium." . - -:unloads a owl:ObjectProperty ; - rdfs:label "unloads" ; - rdfs:subPropertyOf :evicts ; - :definition "x unloads y: The technique or artifact performs the action of unloading some artifact (applications, kernel modules, or hardware drivers, etc.) from a computer's memory." . - -:unmounts a owl:ObjectProperty ; - rdfs:label "unmounts" ; - rdfs:subPropertyOf :associated-with ; - :definition "x unmounts y: An operation x removes the access via computer system's file system the availability of files and directories on a storage artifact y. Unmounts reverse or undo prior mount operations." ; - rdfs:seeAlso . - -:updates a owl:ObjectProperty ; - rdfs:label "updates" ; - rdfs:subPropertyOf :hardens, - :modifies ; - :definition "x updates y: The technique x updates the software for component y." . - -:use-limits a owl:ObjectProperty ; - rdfs:label "use-limits" ; - rdfs:subPropertyOf :limits ; - :definition "x use-limits y: An entity x specifies a designated number of uses beyond which some entity y cannot function or must be terminated." ; - rdfs:seeAlso . - -:used-by a owl:ObjectProperty ; - rdfs:label "used-by" ; - rdfs:subPropertyOf :associated-with ; - owl:inverseOf :uses ; - :definition "x used-by y: is inverse of y uses x." . - -:uses a owl:ObjectProperty ; - rdfs:label "uses" ; - rdfs:subPropertyOf :associated-with ; - rdfs:isDefinedBy ; - :definition "x uses y: An entity x puts into service a resource or implement y; makes y work or employ for a particular purpose or for its inherent or natural purpose." . - -:validated-by a owl:ObjectProperty ; - rdfs:label "validated-by" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - :definition "x validated-by y: The digital artifact x has its authenticity and correctness confirmed or verified by the technique, operation, or agent y." . - -:validates a owl:ObjectProperty ; - rdfs:label "validates" ; - rdfs:subPropertyOf :associated-with, - :hardens ; - rdfs:isDefinedBy ; - :definition "x validates y: The technique x proves the digital artifact y is valid; that is, x shows or confirms the validity of y." . - -:verifies a owl:ObjectProperty ; - rdfs:label "verifies" ; - rdfs:subPropertyOf :analyzes, - :associated-with ; - rdfs:isDefinedBy ; - :definition "x verifies y: A technique x confirms the truth of a digital artifact y." ; - rdfs:seeAlso , - , - ; - :todo "verifies and validates both share common parent confirms ala Wordnet (they are siblings). Might be useful parent, but leave out until it is clear it is helpful. Wordnet 'checks' might also be in play here, though in our world spec of verifies as in http://wordnet-rdf.princeton.edu/id/00665271-v, or is that checks more like validates? Eschewing altLabel 'checks' for either for now." . - -:weakness-of a owl:ObjectProperty ; - rdfs:label "weakness-of" ; - rdfs:subPropertyOf :may-be-weakness-of . - -:writes a owl:ObjectProperty ; - rdfs:label "writes" ; - rdfs:subPropertyOf :accesses ; - :definition "x writes y: The subject x takes the action of writing to a digital artifact y to store data and placing it into persistent memory for later reference." ; - rdfs:seeAlso . - -### Annotation Properties - -:attack-id a owl:AnnotationProperty ; - rdfs:label "attack-id" ; - rdfs:subPropertyOf :attack-kb-annotation ; - rdfs:domain :OffensiveTechnique ; - rdfs:range xsd:string ; - :definition "x attack-id y: The offensive technique x has the att&ck unique id of y." ; - :todo "Drop as annotation and merge any as attack-technique-id data property. Reason: The unique id of a technique may be needed even for OWL 2 DL reasoning as it is the surrogate identity key (and the primary key) for all ATT&CK techniques." . - -:attack-kb-annotation a owl:AnnotationProperty ; - rdfs:label "attack-kb-annotation" ; - rdfs:subPropertyOf :d3fend-annotation ; - rdfs:domain :OffensiveTechnique ; - :definition "x attack-kb-annotation y: The offensive technique x has the kb annotation of y." . - -:comment a owl:AnnotationProperty ; - rdfs:label "comment" ; - rdfs:subPropertyOf :d3fend-private-annotation ; - :definition "x comment y: The d3fend object x a d3fend team specific comment y. Not for use external to the MITRE development team." . - -:cwe-id a owl:AnnotationProperty ; - rdfs:label "cwe-id" ; - rdfs:subPropertyOf :cwe-kb-annotation . - -:cwe-kb-annotation a owl:AnnotationProperty ; - rdfs:label "cwe-kb-annotation" ; - rdfs:subPropertyOf :d3fend-annotation . - -:d3fend-annotation a owl:AnnotationProperty ; - rdfs:label "d3fend-annotation" ; - :definition "x d3fend-annotation y: The d3fend object x has the annotation y." . - -:d3fend-catalog-annotation-property a owl:AnnotationProperty ; - rdfs:label "d3fend-catalog-annotation-property" ; - skos:altLabel "d3fend-vendor-registry-annotation-property" ; - rdfs:subPropertyOf :d3fend-annotation . - -:d3fend-display-annotation a owl:AnnotationProperty ; - rdfs:label "d3fend-display-annotation" ; - rdfs:subPropertyOf :d3fend-annotation . - -:d3fend-kb-annotation-property a owl:AnnotationProperty ; - rdfs:label "d3fend-kb-annotation-property" ; - rdfs:subPropertyOf :d3fend-annotation ; - :definition "x d3fend-kb-annotation-property y: The entity x had the d3fend kb annotation y." ; - :todo "Move all subproperties under d3fend-kb-data-property and drop this (d3fend-kb-annotation-property) property definition." . - -:d3fend-kb-reference-annotation a owl:AnnotationProperty ; - rdfs:label "d3fend-kb-reference-annotation" ; - rdfs:subPropertyOf :d3fend-kb-annotation-property ; - rdfs:domain :TechniqueReference ; - rdfs:range xsd:string ; - :definition "x d3fend-kb-data-property y: The reference x has the data property y." ; - :todo "Move subproperties under d3fend-kb-data-property and rename this d3fend-kb-reference-property definition." . - -:d3fend-private-annotation a owl:AnnotationProperty ; - rdfs:label "d3fend-private-annotation" ; - rdfs:subPropertyOf :d3fend-annotation ; - :definition "x d3fend-private-annotation: The d3fend object x has the internal comment or tracking property y. Not for use external to the MITRE development team." . - -dcterms:description a owl:AnnotationProperty . - -dcterms:license a owl:AnnotationProperty . - -dcterms:title a owl:AnnotationProperty . - -:definition a owl:AnnotationProperty ; - rdfs:label "definition" ; - rdfs:subPropertyOf :d3fend-annotation ; - rdfs:isDefinedBy ; - :comment "Intended d3fend equivalent to http://purl.obolibrary.org/obo/IAO_0000115; will take over from use of rdfs:comment to hold definition." ; - :definition "x definition y: The d3fend object x has the definition y." ; - :todo "Will port rdfs:comment entries that have been definitions to d3f:definition to free up comments for non-definitional expansions and commentary." . - -:description a owl:AnnotationProperty ; - rdfs:label "description"@en ; - rdfs:subPropertyOf :d3fend-catalog-annotation-property ; - rdfs:isDefinedBy ; - :definition "A statement that represents something in words." . - -:display-baseurl a owl:AnnotationProperty ; - rdfs:label "display-baseurl" ; - rdfs:subPropertyOf :d3fend-display-annotation ; - :definition "A base string to use as prefix to create a full URL for an entity. The baseurl must end in a forward slash: /" . - -:display-order a owl:AnnotationProperty ; - rdfs:label "display-order" ; - rdfs:subPropertyOf :d3fend-display-annotation ; - :definition "x display-order y: An object x should be displayed in ordinal position y when placed or listed in a d3fend display with other objects of its kind." ; - :todo "This should be an annotation property." . - -:display-priority a owl:AnnotationProperty ; - rdfs:label "display-priority" ; - rdfs:subPropertyOf :d3fend-display-annotation . - -:draft a owl:AnnotationProperty ; - rdfs:label "draft" ; - rdfs:subPropertyOf :d3fend-private-annotation . - -:kb-abstract a owl:AnnotationProperty ; - rdfs:label "kb-abstract" ; - rdfs:subPropertyOf :d3fend-kb-reference-annotation ; - rdfs:domain :TechniqueReference ; - rdfs:range xsd:string ; - :definition "x kb-abstract y: The reference x has the abstract y." . - -:kb-article a owl:AnnotationProperty ; - rdfs:label "kb-article" ; - rdfs:subPropertyOf :d3fend-kb-reference-annotation ; - rdfs:domain :Technique ; - rdfs:range xsd:string ; - :definition "The technique x has the kb-article y, where y is written in Markdown." ; - :todo "make a d3fend-kb-data-property" . - -:kb-author a owl:AnnotationProperty ; - rdfs:label "kb-author" ; - rdfs:subPropertyOf :d3fend-kb-reference-annotation ; - rdfs:domain :TechniqueReference ; - rdfs:range xsd:string ; - :definition "x kb-author y: The reference x has some author y." ; - :todo "Eventually would be best to resolve these to Person instances in KB. This might be kept as kb-author-string. Also, we might choose to drop kb- prefix on many of these.", - "make a d3fend-kb-data-property" . - -:kb-mitre-analysis a owl:AnnotationProperty ; - rdfs:label "kb-mitre-analysis" ; - rdfs:subPropertyOf :d3fend-kb-annotation-property ; - rdfs:domain :TechniqueReference ; - rdfs:range xsd:string ; - :definition "x kb-mitre-analysis y: The reference x has the mitre d3fend analysis y." ; - :todo "make a d3fend-kb-data-property" . - -:kb-organization a owl:AnnotationProperty ; - rdfs:label "kb-organization" ; - rdfs:subPropertyOf :d3fend-kb-annotation-property ; - :definition "x kb-organization y: The reference x was created or owned by the organization y." ; - :todo "Eventually would be best to resolve these to Organization instances in KB. This might be kept as kb-organization-string. Also, we might choose to drop kb- prefix on many of these.", - "make a d3fend-kb-data-property" . - -:label a owl:AnnotationProperty ; - rdfs:label "label"@en ; - rdfs:subPropertyOf rdfs:label . - -:pref-label a owl:AnnotationProperty ; - rdfs:label "pref-label" ; - rdfs:subPropertyOf :d3fend-annotation ; - :definition "x pref-label y: The preferred display value for x is y in d3fend tools." . - -rdfs:isDefinedBy a owl:AnnotationProperty ; - rdfs:label "isDefinedBy" . - -rdfs:label a owl:AnnotationProperty . - -rdfs:seeAlso a owl:AnnotationProperty . - -:release-date a owl:AnnotationProperty ; - rdfs:label "release-date" ; - rdfs:subPropertyOf :d3fend-annotation, - owl:versionInfo ; - :definition "x release-date y: The object x has the release-date y." ; - :todo "remove and place info in versionInfo on ontology annotations header" . - -skos:altLabel a owl:AnnotationProperty . - -skos:example a owl:AnnotationProperty . - -skos:prefLabel a owl:AnnotationProperty . - -:synonym a owl:AnnotationProperty ; - rdfs:label "synonym" ; - rdfs:subPropertyOf :d3fend-annotation ; - :definition "an equivalent term." . - -:todo a owl:AnnotationProperty ; - rdfs:label "todo" ; - rdfs:subPropertyOf :d3fend-private-annotation ; - :definition "x todo y: The d3fend object x has a todo annotation y specific to the d3fend team. These may serve as a guide to implementing a low-level change; before work commences should be reflected in the tasks/issues. Not for use external to the MITRE development team." . - -### Data Properties - -:archived-at a owl:DatatypeProperty ; - rdfs:label "archived-at"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property ; - rdfs:range xsd:anyURI ; - :comment "schema.org's archivedAt vice schema.org notion of url, previously has-link" . - -:attack-kb-data-property a owl:DatatypeProperty ; - rdfs:label "attack-kb-data-property" ; - skos:altLabel "attack-kb-property" . - -:available a owl:DatatypeProperty ; - rdfs:label "date available"@en ; - rdfs:subPropertyOf :date ; - rdfs:range xsd:dateTime ; - :comment "d3f:available casts the dcterms:available rdf Property as a DatatypeProperty." ; - :definition "Date that the resource became or will become available." . - -:capec-id a owl:DatatypeProperty ; - rdfs:label "capec-id" ; - rdfs:subPropertyOf :d3fend-kb-data-property ; - :definition "Unique identifier for a CAPEC technique, i.e. a common attack pattern identified by the pattern CAPEC-[number]." . - -:comments a owl:DatatypeProperty, - owl:FunctionalProperty ; - rdfs:label "comments" ; - rdfs:subPropertyOf :d3fend-catalog-data-property ; - rdfs:range xsd:string ; - :definition "x comments y: x claim has provider comments y." . - -:confidence a owl:DatatypeProperty ; - rdfs:label "confidence" ; - rdfs:subPropertyOf :d3fend-catalog-data-property . - -:control-name a owl:DatatypeProperty ; - rdfs:label "control-name" ; - rdfs:subPropertyOf :d3fend-external-control-data-property ; - :definition "The control (or control enhancement) name." . - -:created a owl:DatatypeProperty ; - rdfs:label "date created"@en ; - rdfs:subPropertyOf :date ; - rdfs:range xsd:dateTime ; - :comment "d3f:created casts dcterms:created rdf Property as a DatatypeProperty." ; - :definition "Date of creation of the resource." . - -:d3fend-artifact-data-property a owl:DatatypeProperty ; - rdfs:label "d3fend-artifact-data-property" ; - rdfs:subPropertyOf :d3fend-data-property ; - rdfs:domain :DigitalArtifact ; - :definition "x d3fend-artifact-data-property y: The artifact x has the data property y." . - -:d3fend-catalog-data-property a owl:DatatypeProperty ; - rdfs:label "d3fend-catalog-data-property" ; - skos:altLabel "d3fend-vendor-registry-data-property"@en ; - rdfs:subPropertyOf :d3fend-data-property . - -:d3fend-comment a owl:DatatypeProperty ; - rdfs:label "d3fend-comment" ; - rdfs:subPropertyOf :d3fend-kb-data-property ; - :definition "x d3fend-comment y: The entity x has an D3FEND team written a public note about entity y." . - -:d3fend-data-property a owl:DatatypeProperty ; - rdfs:label "d3fend-data-property" . - -:d3fend-display-property a owl:DatatypeProperty ; - rdfs:label "d3fend-display-property" ; - rdfs:subPropertyOf :d3fend-data-property ; - :definition "x d3fend-display-property y: An object x should be displayed using the display property y, when it applies." ; - :todo "This should be an annotation property." . - -:d3fend-external-control-data-property a owl:DatatypeProperty ; - rdfs:label "d3fend-external-control-data-property" ; - rdfs:subPropertyOf :d3fend-data-property . - -:d3fend-id a owl:DatatypeProperty ; - rdfs:label "d3fend-id" ; - rdfs:subPropertyOf :d3fend-kb-data-property ; - :definition "Unique identifier for a D3FEND technique. D3-[Acronym]." . - -:d3fend-kb-data-property a owl:DatatypeProperty ; - rdfs:label "d3fend-kb-data-property" ; - rdfs:subPropertyOf :d3fend-data-property ; - :definition "x d3fend-kb-data-property y: The d3fend knowledge base object x has a data property y; e.g., a string capturing a particular aspect or section of a knowledge base article." . - -:date a owl:DatatypeProperty ; - rdfs:label "date"@en ; - rdfs:subPropertyOf :d3fend-data-property ; - rdfs:range xsd:dateTime ; - :comment "d3f:date casts the dcterms:date rdf Property as a DatatypeProperty." ; - :definition "A point or period of time associated with an event in the lifecycle of the resource." ; - rdfs:seeAlso . - -:expectation-rating a owl:DatatypeProperty ; - rdfs:label "expectation-rating" ; - rdfs:subPropertyOf :d3fend-catalog-data-property . - -:has-link a owl:DatatypeProperty ; - rdfs:label "has-link" ; - rdfs:subPropertyOf :d3fend-kb-data-property ; - rdfs:range xsd:anyURI ; - :definition "x has-link y: The d3fend analysis x has the link y." . - -:identifier a owl:DatatypeProperty ; - rdfs:label "identifier"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property ; - rdfs:range xsd:string . - -:issued a owl:DatatypeProperty ; - rdfs:label "date issued"@en ; - rdfs:subPropertyOf :date ; - rdfs:range xsd:dateTime ; - :comment "d3f:issued casts the dcterms:issued rdf Property as a DatatypeProperty." ; - :definition "Date of formal issuance of the resource." . - -:kb-reference-title a owl:DatatypeProperty ; - rdfs:label "kb-reference-title" ; - rdfs:subPropertyOf :d3fend-kb-data-property ; - rdfs:range xsd:string ; - :definition "x kb-reference-title y: The d3fend knowledge base reference x has the reference title string y." . - -:modified a owl:DatatypeProperty ; - rdfs:label "date modified"@en ; - rdfs:subPropertyOf :date ; - rdfs:range xsd:dateTime ; - :comment "d3f:modified casts the dcterms:modified rdf Property as a DatatypeProperty." ; - :definition "Date on which the resource was changed." . - -:name a owl:DatatypeProperty ; - rdfs:label "name"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property . - -:operating-system a owl:DatatypeProperty ; - rdfs:label "operating-system"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property ; - rdfs:range xsd:string ; - :definition "x operating-system y: The product x is supported on operating system y." . - -:process-command-line-arguments a owl:DatatypeProperty ; - rdfs:label "process-command-line-arguments" ; - rdfs:subPropertyOf :process-data-property ; - :definition "x process-command-line-arguments y: The process x has the process command line arguments data y." . - -:process-data-property a owl:DatatypeProperty ; - rdfs:label "process-data-property" ; - rdfs:subPropertyOf :d3fend-artifact-data-property ; - :definition "x process-data-property y: The process x has the data property y." . - -:process-environmental-variables a owl:DatatypeProperty ; - rdfs:label "process-environmental-variables" ; - skos:altLabel "process-environmental-variable" ; - rdfs:subPropertyOf :process-data-property ; - :definition "x process-environment-variables y: The process x has the process environmental variables data y." . - -:process-identifier a owl:DatatypeProperty ; - rdfs:label "process-identifier" ; - rdfs:subPropertyOf :process-data-property ; - :definition "x process-identifier y: The process x has the process identifier y." . - -:process-security-context a owl:DatatypeProperty ; - rdfs:label "process-security-context" ; - rdfs:subPropertyOf :process-data-property ; - rdfs:domain :Process ; - :definition "x process-security-context y: The process x has the process security context data y." . - -:published a owl:DatatypeProperty ; - rdfs:label "date published"@en ; - rdfs:subPropertyOf :date ; - rdfs:range xsd:dateTime ; - :definition "Date of publication of the resource." . - -:rating a owl:DatatypeProperty, - owl:FunctionalProperty ; - rdfs:label "rating" ; - rdfs:subPropertyOf :d3fend-catalog-data-property . - -:risk-impact a owl:DatatypeProperty ; - rdfs:label "risk-impact" ; - rdfs:subPropertyOf :d3fend-data-property ; - rdfs:range [ a rdfs:Datatype ; - owl:onDatatype xsd:integer ; - owl:withRestrictions ( - [ xsd:maxInclusive 5 ] - [ xsd:minInclusive 1 ] ) ] ; - rdfs:isDefinedBy ; - :definition "Risk impact rating, expressed on a numeric scale from 1 (lowest impact) to 5 (highest impact) in the context of a 5x5 risk matrix. Impact is used here as a synonym for consequence, another popular term used in risk analysis." . - -:risk-likelihood a owl:DatatypeProperty ; - rdfs:label "risk-likelihood" ; - rdfs:subPropertyOf :d3fend-data-property ; - rdfs:range [ a rdfs:Datatype ; - owl:onDatatype xsd:integer ; - owl:withRestrictions ( - [ xsd:maxInclusive 5 ] - [ xsd:minInclusive 1 ] ) ] ; - rdfs:isDefinedBy ; - :definition "Risk likelihood rating, expressed on a numeric scale from 1 (lowest likelihood) to 5 (highest likelihood) in the context of a 5x5 risk matrix." . - -:stage a owl:DatatypeProperty, - owl:FunctionalProperty ; - rdfs:label "stage" ; - rdfs:subPropertyOf :d3fend-catalog-data-property . - -:text a owl:DatatypeProperty ; - rdfs:label "text"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property ; - :definition "The text of the document (i.e., terms of license.)" . - -:title a owl:DatatypeProperty ; - rdfs:label "title"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property ; - rdfs:range xsd:string ; - :comment "d3f:title casts dcterms:title rdf Property as a DatatypeProperty." ; - :definition "A name given to the resource." . - -:valid a owl:DatatypeProperty ; - rdfs:label "date valid"@en ; - rdfs:subPropertyOf :date ; - rdfs:range xsd:dateTime ; - :comment "d3f:valid casts dcterms:valid rdf Property as a DatatypeProperty." ; - :definition "Date (often a range) of validity of a resource." . - -:version a owl:DatatypeProperty, - owl:FunctionalProperty ; - rdfs:label "version"@en ; - rdfs:subPropertyOf :d3fend-catalog-data-property, - :d3fend-external-control-data-property ; - rdfs:range [ a rdfs:Datatype ; - owl:unionOf ( - xsd:integer - xsd:string ) ] ; - :definition "x version y: The product or service x has the version y." . - -:windows-registry-data-property a owl:DatatypeProperty ; - rdfs:label "windows-registry-data-property" ; - rdfs:subPropertyOf :d3fend-artifact-data-property ; - :definition "x windows-registry-data-property y: The windows registry entry x has the property y." . - -:windows-registry-key a owl:DatatypeProperty ; - rdfs:label "windows-registry-key" ; - skos:altLabel "key" ; - rdfs:subPropertyOf :windows-registry-data-property ; - :definition "x value y: The key-value pair x has the key y." . - -:windows-registry-value a owl:DatatypeProperty ; - rdfs:label "windows-registry-value" ; - skos:altLabel "value" ; - rdfs:subPropertyOf :windows-registry-data-property ; - :definition "x value y: The key-value pair x has the data value y." . - -### Classes - -:AcademicPaperReference a owl:Class ; - rdfs:label "Academic Paper Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Academic Paper" . - -:Access a owl:Class ; - rdfs:label "Access" ; - rdfs:subClassOf :Event, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Resource ], - [ a owl:Restriction ; - owl:onProperty :has-mediator ; - owl:someValuesFrom :AccessMediator ] . - -:AccessControlAdministrationEvent a owl:Class ; - rdfs:label "Access Control Administration Event" ; - skos:altLabel "Permission Administration Event", - "Permission Provisioning Event" ; - rdfs:subClassOf :AccessControlEvent ; - :definition "An event concerning the administrative actions of setting, modifying, or abolishing permissions, configuring access control settings, and managing user access rights to ensure alignment with access control policies." . - -:AccessControlConfiguration a owl:Class ; - rdfs:label "Access Control Configuration" ; - rdfs:subClassOf :ConfigurationResource ; - :definition "Information about what access permissions are granted to particular users for particular objects." ; - rdfs:seeAlso . - -:AccessControlEvent a owl:Class ; - rdfs:label "Access Control Event" ; - rdfs:subClassOf :AuthorizationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :AccessControlConfiguration ] ; - :definition "An event that captures the implementation or evaluation of access control measures, including the application of rules and policies to govern the accessibility of resources by agents within a digital system." . - -:AccessControlGroup a owl:Class ; - rdfs:label "Access Control Group" ; - rdfs:subClassOf :AccessControlConfiguration, - [ a owl:Restriction ; - owl:onProperty :restricted-by ; - owl:someValuesFrom :AccessControlList ] ; - :definition "A collection of objects that can have access controls placed on them." ; - rdfs:seeAlso . - -:AccessControlList a owl:Class ; - rdfs:label "Access Control List" ; - rdfs:subClassOf :AccessControlConfiguration, - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :UserGroup ] ; - rdfs:isDefinedBy ; - :definition "A list of permissions attached to an object." . - -:AccessDeniedEvent a owl:Class ; - rdfs:label "Access Denied Event" ; - rdfs:subClassOf :AccessMediationEvent ; - :definition "An event indicating the refusal of access to a resource, where an access request has been evaluated and denied based on current authorization policies, preventing operations by the requesting agent." . - -:AccessGrantedEvent a owl:Class ; - rdfs:label "Access Granted Event" ; - rdfs:subClassOf :AccessMediationEvent ; - :definition "An event signifying that access to a resource has been authorized and successfully enforced, allowing the requesting agent to perform specified operations based on the access control policies." . - -:AccessMediation a :AccessMediation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Access Mediation" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Isolate ] ; - :d3fend-id "D3-AMED" ; - :definition "Access mediation is the process of granting or denying specific requests to: 1) obtain and use information and related information processing services; and 2) enter specific physical facilities (e.g., Federal buildings, military establishments, border crossing entrances). Access mediation decisions should enforce least privilege by granting access for scoped durations to prevent privilege creep and, where applicable, implement just-in-time (JIT) access. Denial decisions may prevent initial access or terminate access that has already been granted, ensuring continuous enforcement of security policies." ; - :kb-reference :Reference-CNNSI-4009 ; - rdfs:seeAlso , - , - , - , - ; - :synonym "Access Control" . - -:AccessMediationEvent a owl:Class ; - rdfs:label "Access Mediation Event" ; - skos:altLabel "Access Enforcement Event" ; - rdfs:subClassOf :AccessControlEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :AccessMediator ] ; - :definition "An event involving the intermediary control mechanism that evaluates access requests and enforces access control decisions, ensuring that subjects' resource interactions comply with the established access policies." . - -:AccessMediator a owl:Class ; - rdfs:label "Access Mediator" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :implements ; - owl:someValuesFrom :AccessControlConfiguration ], - [ a owl:Restriction ; - owl:onProperty :mediates-access-to ; - owl:someValuesFrom :Resource ], - [ a owl:Restriction ; - owl:onProperty :used-by ; - owl:someValuesFrom :Agent ] ; - :definition "An Access Mediator enforces access control policies to regulate interactions with a resource." . - -:AccessModeling a :AccessModeling, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Access Modeling" ; - rdfs:subClassOf :OperationalActivityMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :AccessControlConfiguration ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :DigitalIdentity ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :UserAccount ] ; - :d3fend-id "D3-AM" ; - :definition "Access modeling captures and records the access permissions granted to identities (e.g., administrators, users, groups, systems) and optionally includes details on how these identities are stored, managed, and shared across systems." ; - :kb-reference :Reference-RFC7642SystemForCrossDomainIdentityManagementDefinitionsOverviewConceptsAndRequirements . - -:AccessPolicyAdministration a :AccessPolicyAdministration, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Access Policy Administration" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Isolate ] ; - :d3fend-id "D3-APA" ; - :definition "Access policy administration is the systematic process of defining, implementing, and managing access control policies that dictate user permissions to resources." ; - :synonym "Access Control Administration" . - -:AccessProcess a owl:Class ; - rdfs:label "Access Process" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Process ] . - -:AccessToken a owl:Class ; - rdfs:label "Access Token" ; - skos:altLabel "Ticket", - "Token" ; - rdfs:subClassOf :Credential ; - :definition "In computer systems, an access token contains the security credentials for a login session and identifies the user, the user's groups, the user's privileges, and, in some cases, a particular application. Typically one may be asked to enter the access token (e.g. 40 random characters) rather than the usual password (it therefore should be kept secret just like a password)." ; - rdfs:seeAlso . - -:AccountLocking a :AccountLocking, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Account Locking" ; - rdfs:subClassOf :CredentialEviction, - [ a owl:Restriction ; - owl:onProperty :disables ; - owl:someValuesFrom :UserAccount ] ; - :created "2020-08-05T00:00:00"^^xsd:dateTime ; - :d3fend-id "D3-AL" ; - :definition "The process of temporarily disabling user accounts on a system or domain." ; - :kb-article """## How it works -Management servers with enterprise policies for account management provide the ability to enable and disable account for given rules. The rules may include specific periods of time (eg. weekend, plant shutdown, leave periods), specific user types or groups, or individual users. - -## Considerations -* Local accounts caches vs centralized account management -* Single Sign-on -* Role based vs Attribute based systems - -## Examples of account configuration stores -* Directory Services -* Active Directory -* RADIUS -* LDAP -* Oracle User Account Management -* JumpCloud""" ; - :kb-reference :Reference-AccountMonitoring_ForescoutTechnologies, - :Reference-FrameworkForNotifyingADirectoryServiceOfAuthenticationEventsProcessedOutsideTheDirectoryService_OracleInternationalCorp . - -:Action a owl:Class ; - rdfs:label "Action" ; - rdfs:subClassOf :Event, - [ a owl:Restriction ; - owl:onProperty :has-agent ; - owl:someValuesFrom :Agent ] ; - :definition "An Action is a deliberate operation or activity performed by an entity." . - -:ActiveCertificateAnalysis a :ActiveCertificateAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Active Certificate Analysis" ; - rdfs:subClassOf :CertificateAnalysis ; - :created "2020-08-05T00:00:00"^^xsd:dateTime ; - :d3fend-id "D3-ACA" ; - :definition "Actively collecting PKI certificates by connecting to the server and downloading its server certificates for analysis." ; - :kb-article """## How it works -Analysis of server certificates using active methods to detect if certificates have been misconfigured or spoofed by using elements of the certificate, certificate authorities and signatures. - -### Certificate validity analysis -This can be accomplished by verifying the digital signature on certificate. - -### Certificate path analysis -The client's browser can perform path verification to ensure that the server's certificate contains a valid trust anchor. - -### Certificate configuration analysis -Some browsers can be configured to implement the key-usage extensions contained certificates. This can help to prevent a certificate from being misused. - -### Certificate revocation status analysis -Using either Certificate Revocation Lists (CRLs) or Online Certificate Status Protocol (OCSP) to determine the revocation status. OCSP Stapling, binding the status with the certificate, helps to mitigate potential delay in status verifications. - -## Considerations -* Management of the PKI across the enterprise typically requires automation to maintain scalability and flexibility -* If the certificate authority, issuing the certificate, is compromised then all of the certificates issued by the CA are suspect -* There may be delays associated with updates to certificates -* Revoked certificates give the appearance of valid certificates until they are published to a trusted revocation service (OCSP or CRL) -* The revocation service (OCSP or CRL) may be down during our connection and a browser will need to make a decision will need to be made about trusting the connection""" ; - :kb-reference :Reference-SecuringWebTransactions . - -:ActiveLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Active Learning" ; - rdfs:subClassOf :MachineLearning ; - :d3fend-id "D3A-AL" ; - :definition "Active learning aims to improve learning efficiency by allowing the learning algorithm to select which data to learn from." ; - :kb-article """## How it works -Traditional supervised learning often requires a large number of labeled instances, which can be costly or time-consuming to obtain. Active learning addresses this labeling bottleneck by asking an oracle (e.g., a human annotator) to label selected unlabeled instances. The goal is to achieve high accuracy with minimal labeling effort. - -## Considerations -Active learning is particularly useful in scenarios where data is abundant but labeled instances are scarce or expensive. Examples include speech recognition, information extraction, and document classification. - -## References -- Wikipedia article on Active Learning (machine learning) [Link](https://en.wikipedia.org/wiki/Active_learning_(machine_learning)) -- Settles, B. (2009). Active Learning Literature Survey. [Link](https://burrsettles.com/pub/settles.activelearning.pdf)""" . - -:ActiveLogicalLinkMapping a :ActiveLogicalLinkMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Active Logical Link Mapping" ; - rdfs:subClassOf :LogicalLinkMapping, - [ a owl:Restriction ; - owl:onProperty :may-query ; - owl:someValuesFrom :NetworkAgent ] ; - :d3fend-id "D3-ALLM" ; - :definition "Active logical link mapping sends and receives network traffic as a means to map the whole data link layer, where the links represent logical data flows rather than physical connection" ; - :kb-article """## How it works - -Active logical link mapping establishes awareness of logical links in the network by sending data over the network to gather information about logical connections in the network. - -Typically this will be achieved through network telemetry coordinated for network management and monitoring and will use a link layer discovery protocol such as LLDP and the information gathered and aggregated a higher levels using an application protocol such as SNMP. The information may be polled by network management softare or configured once and then pushed from network sensors (or agents.) - -Another means of establishing network connectivity is by means of sendingn traffic through the use of a tool such as traceroute, to determine the logical paths through the network architecture. - -## Considerations - -* Best practice is to encrypte network monitoring data and require authentication for queries or admin/management functions. -* Push notifications reduce bandwidth necessary to capture and maintain information if reliable transport is used. -* Special consideration should be made before using of active scanning in OT networks and OT-safe options chosen where available.""" ; - :kb-reference :Reference-IdentificationOfTracerouteNodesAndAssociatedDevices, - :Reference-SNMPNetworkAutoDiscovery . - -:ActivePhysicalLinkMapping a :ActivePhysicalLinkMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Active Physical Link Mapping" ; - rdfs:subClassOf :PhysicalLinkMapping, - [ a owl:Restriction ; - owl:onProperty :may-query ; - owl:someValuesFrom :NetworkAgent ] ; - owl:disjointWith :DirectPhysicalLinkMapping ; - :d3fend-id "D3-APLM" ; - :definition "Active physical link mapping sends and receives network traffic as a means to map the physical layer." ; - :kb-reference :Reference-IdentificationOfTracerouteNodesAndAssociatedDevices, - :Reference-UsingSpanningTreeProtocolSTPToEnhanceLayer2NetworkTopologyMaps ; - :synonym "Active Physical Layer Mapping" . - -:ActivityDependency a owl:Class ; - rdfs:label "Activity Dependency" ; - rdfs:subClassOf :Dependency ; - :definition "An activity dependency is a dependency that indicates an activity has an activity or agent which relies on it in order to be functional." . - -:Actor-Critic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Actor-Critic" ; - rdfs:subClassOf :PolicyGradient, - :TemporalDifferenceLearning ; - :d3fend-id "D3A-AC" ; - :definition "Actor-Critic is a Temporal Difference(TD) version of Policy gradient. It has two networks: Actor and Critic. The actor decided which action should be taken and critic inform the actor how good was the action and how it should adjust. The learning of the actor is based on policy gradient approach. In comparison, critics evaluate the action produced by the actor by computing the value function." ; - :kb-article """## References -The Actor-Critic Reinforcement Learning Algorithm. Medium. [Link](https://medium.com/intro-to-artificial-intelligence/the-actor-critic-reinforcement-learning-algorithm-c8095a655c14).""" ; - :todo "The citation suggest (at a very brief glance) this may belong under temporal difference learning" . - -:Actuator a owl:Class ; - rdfs:label "Actuator" ; - rdfs:subClassOf :OutputDevice ; - :definition "An actuator is a mechanical or electromechanical device that, upon receiving a relatively low-energy control signal (e.g., electrical voltage, fluid pressure, or human force), translates its primary energy source (electric, hydraulic, or pneumatic) into targeted mechanical motion or adjustment. It typically works in conjunction with a control device (like a valve or logic driver) and is central to automation, enabling machines or systems to move, open, close, or otherwise manipulate their components or environment. By amplifying or redirecting energy from one form to another, the actuator executes control commands, thereby automating processes in industrial, automotive, aerospace, and other domains where precise mechanical action is essential." ; - rdfs:seeAlso . - -:AdaptiveResonanceTheoryClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Adaptive Resonance Theory Clustering" ; - rdfs:subClassOf :ANN-basedClustering ; - :d3fend-id "D3A-ARTC" ; - :definition "Adaptive Resonance Theory (ART) Clustering is a neural network algorithm used for clustering data and is open to new learning(i.e. adaptive) without discarding the previous or the old information(i.e. resonance)." ; - :kb-article """## References -GeeksforGeeks. (n.d.). Adaptive Resonance Theory (ART). [Link](https://www.geeksforgeeks.org/adaptive-resonance-theory-art/)""" . - -:AddressSpace a owl:Class ; - rdfs:label "Address Space" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "An address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity. For software programs to save and retrieve stored data, each unit of data must have an address where it can be located. The number of address spaces available depends on the underlying address structure, which is usually limited by the computer architecture being used." . - -:AddUserToGroupEvent a owl:Class ; - rdfs:label "Add User to Group Event" ; - rdfs:subClassOf :GroupManagementEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :UserAccount ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :GroupCreationEvent ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :UserAccountCreationEvent ] ; - :definition "An event where a user is added to a group, granting the user the permissions and privileges associated with the group." . - -:AdministrativeNetworkActivityAnalysis a :AdministrativeNetworkActivityAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Administrative Network Activity Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :IntranetAdministrativeNetworkTraffic ] ; - :created "2020-08-05T00:00:00"^^xsd:dateTime ; - :d3fend-id "D3-ANAA" ; - :definition "Detection of unauthorized use of administrative network protocols by analyzing network activity against a baseline." ; - :kb-article """## How it works -Network protocols such as RDP, IPMI, SSH, SNMP, VNC, MOSH, NX, TeamViewer, SPICE, PCoIP, and others are used by system administrators to remotely manage servers. Defenders monitor administrative network activity to determine if the use of remote protocols is malicious. Attackers can abuse administrative protocols and leverage them for initial access to various endpoints. For example, an attacker with valid credentials will remotely SSH or RDP into a server and attempt to blend in with existing traffic from system administrators. By monitoring the traffic activity, it is possible to detect when the protocols are behaving differently from a known baseline of system administration activity. - -## Considerations -* Administrative traffic can be encrypted, making network protocol analysis a challenge -* False alarms can be mitigated by integration with inventory management systems""" ; - :kb-reference :Reference-MethodAndSystemForDetectingSuspiciousAdministrativeActivity_VectraNetworksInc, - :Reference-RemoteRegistry_MITRE, - :Reference-WindowsRemoteManagement_WinRM_MITRE . - -:AdministrativeNetworkTraffic a owl:Class ; - rdfs:label "Administrative Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "Administrative network traffic is network traffic related to the remote administration or control of hosts or devices through a standard remote administrative protocol. Remote shells, terminals, RDP, and VNC are examples of these protocols, which are typically only used by administrators." ; - rdfs:seeAlso . - -:Agent a owl:Class ; - rdfs:label "Agent" ; - rdfs:subClassOf :D3FENDCore ; - :definition "An entity capable of performing intentional actions." . - -:AgentAuthentication a :AgentAuthentication, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Agent Authentication" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :Agent ], - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Harden ], - [ a owl:Restriction ; - owl:onProperty :strengthens ; - owl:someValuesFrom :UserAccount ] ; - :d3fend-id "D3-AA" ; - :definition "Agent authentication is the process of verifying the identities of agents to ensure they are authorized and trustworthy participants within a system." ; - :kb-reference :Reference-NIST-Special-Publication-800-53-Revision-5 . - -:AgentGroup a owl:Class ; - rdfs:label "Agent Group" ; - rdfs:subClassOf :Group, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Agent ] . - -:AgglomerativeClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Agglomerative Clustering" ; - rdfs:subClassOf :HierarchicalClustering ; - :d3fend-id "D3A-AC" ; - :definition "Agglomerative Clustering is a type of hierarchical clustering method where data points are grouped together based on similarity. Initially, each data point is treated as an individual cluster, and then in successive iterations, the closest clusters are merged until only one large cluster remains or until a specified stopping criterion is met." ; - :kb-article """## How it works - -Agglomerative clustering starts with each data point as its own cluster. The algorithm then iterates, identifying the two clusters that are closest to each other based on a defined distance metric (e.g., Euclidean, Manhattan). These two clusters are then merged into a single cluster. This process continues iteratively, merging the closest pairs of clusters in each step until all data points are merged into a single cluster or until other stopping criteria are achieved. A dendrogram, which is a tree-like diagram, can be used to represent the sequence of merges, providing a visual representation of the hierarchical structure of data. - -## Considerations - -- **Choice of Distance Metric**: The outcome can vary significantly depending on the chosen distance metric (e.g., Euclidean, Manhattan). - -- **Scalability**: Agglomerative clustering can be computationally intensive for large datasets. - -- **Sensitivity**: The method can be sensitive to outliers, which might affect the quality of the clusters formed. - -## Key Test Considerations - -- **Unsupervised Learning**: - - - **Number of Clusters**: Determine an optimal number of clusters using the dendrogram and techniques like the elbow method. - -- **Cluster Analysis**: - - - **Silhouette Score**: Evaluates how similar an object is to its own cluster compared to other clusters. A higher silhouette score indicates that the object is well matched to its own cluster and poorly matched to neighboring clusters. - - - **Dunn Index**: Measures the ratio between the smallest distance between observations not in the same cluster to the largest intra-cluster distance. - -- **Hierarchical Clustering**: - - - **Cophenetic Correlation Coefficient**: Measures the correlation between the distances of points in feature space and their distances on the dendrogram. Helps assess the fidelity of the dendrogram in preserving pairwise distances between samples. - -- **Agglomerative Clustering**: - - - **Linkage Criteria**: Test different linkage criteria (e.g., single, complete, average) to determine which produces the most cohesive clusters for the data at hand. - - ## Platforms, Tools, or Libraries - -- **scikit-learn**: - - - A versatile machine learning library in Python. - - - The `AgglomerativeClustering` class in scikit-learn provides this functionality. - -- **SciPy**: - - - A Python library used for scientific and technical computing. - - - The `scipy.cluster.hierarchy` module provides functions for hierarchical and - agglomerative clustering, including the `linkage` and `dendrogram` functions. - -- **R**: - - - The `hclust` function in the stats package provides agglomerative clustering. - - - The `agnes` function in the `cluster` package offers a more extensive implementation. - -- **MATLAB**: - - - Offers the `linkage` function for hierarchical agglomerative clustering and `dendrogram` for visualization. - -- **Weka**: - - - A collection of machine learning algorithms for data mining tasks. - - - The `HierarchicalClusterer` class provides an implementation of agglomerative clustering. - -## References - -1. Jain, A. K., & Dubes, R. C. (1988). *Algorithms for clustering data*. Prentice-Hall, Inc. - -2. Murtagh, F., & Legendre, P. (2014). Ward’s hierarchical agglomerative clustering method: which algorithms implement Ward’s criterion?. *Journal of Classification*, 31(3), 274-295. [Link](https://link.springer.com/article/10.1007/s00357-014-9161-z). - -3. Scikit-learn. (30 Jun 2023). Scikit-learn Documentation: Agglomerative Clustering. -[Link](https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html).""" . - -:AlethicLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Alethic Logic" ; - rdfs:subClassOf :ModalLogic ; - :d3fend-id "D3A-AL" ; - :definition "Alethic logic is a modal logic that addresses the modalities of necessity and possibility." ; - :kb-article """## References -1. Alethic logic. (2023, June 4). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Modal_logic#Alethic_logic)""" . - -:Alias a owl:Class ; - rdfs:label "Alias" ; - rdfs:subClassOf :SlowSymbolicLink ; - rdfs:isDefinedBy ; - :definition "In macOS, an alias is a small file that represents another object in a local, remote, or removable[1] file system and provides a dynamic link to it; the target object may be moved or renamed, and the alias will still link to it (unless the original file is recreated; such an alias is ambiguous and how it is resolved depends on the version of macOS)." . - -:AllocateMemory a owl:Class ; - rdfs:label "Allocate Memory" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :MemoryBlock ] . - -:AnalyticalPurpose a owl:Class ; - rdfs:label "Analytical Purpose" ; - rdfs:subClassOf :Goal . - -:AnalyticTechnique a owl:Class ; - rdfs:label "Analytic Technique" ; - rdfs:subClassOf :Technique ; - rdfs:isDefinedBy ; - :definition "A process in which a computer examines information using mathematical methods in order to find useful patterns." . - -:ANN-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "ANN-based Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-ABC" ; - :definition "Combines the principles of Artificial Neural Networks (ANN) and clustering methods." ; - :kb-article """## References -Wikipedia. (n.d.). Artificial neural network. [Link](https://en.wikipedia.org/wiki/Artificial_neural_network)""" ; - :todo """have a gander at this paper for more clustering techniques ? -https://www.sciencedirect.com/science/article/pii/S089360800900207X?viewFullText=true#sec19""" . - -:AnonymousPipe a owl:Class ; - rdfs:label "Anonymous Pipe" ; - rdfs:subClassOf :Pipe ; - rdfs:isDefinedBy ; - :definition "In computer science, an anonymous pipe is a simplex FIFO communication channel that may be used for one-way interprocess communication (IPC). An implementation is often integrated into the operating system's file IO subsystem. Typically a parent program opens anonymous pipes, and creates a new process that inherits the other ends of the pipes, or creates several new processes and arranges them in a pipeline." . - -:AnswerSetProgramming a owl:Class, - owl:NamedIndividual ; - rdfs:label "Answer Set Programming" ; - rdfs:subClassOf :LogicProgramming ; - :d3fend-id "D3A-ASP" ; - :definition "Answer set programming is a form of declarative programming based on the stable model (answer set) semantics of logic programming." ; - :kb-article """## How it works -Answer set programming (ASP) is oriented towards difficult (primarily NP-hard) search problems. The computational process employed in the design of many answer set solvers is an enhancement of the DPLL algorithm and, in principle, it always terminates (unlike Prolog query evaluation, which may lead to an infinite loop). - -In a more general sense, ASP includes all applications of answer sets to knowledge representation and the use of Prolog-style query evaluation for solving problems arising in these applications. - -## References -1. Answer set programming. (2023, April 27). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Answer_set_programming)""" ; - :synonym "ASP" . - -:Application a owl:Class ; - rdfs:label "Application" ; - rdfs:subClassOf :Software, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ApplicationConfiguration ] ; - :definition "A program that gives a computer instructions that provide the user with tools to accomplish a task; \"he has tried several different word processing applications\". Distinct from system software that is intrinsically part of the operating system. An application can be made up of executable files, configuration files, shared libraries, etc." ; - rdfs:seeAlso , - . - -:Application-basedProcessIsolation a :Application-basedProcessIsolation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Application-based Process Isolation" ; - rdfs:subClassOf :ExecutionIsolation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Process ], - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :Subroutine ] ; - :d3fend-id "D3-ABPI" ; - :definition "Application code which prevents its own subroutines from accessing intra-process / internal memory space." ; - :kb-article """## How it works -Some applications implement logic to permit or deny a particular subroutine access to other data within the same applicaition process. This is intended to prevent critical application process data from being tampered with. - -### Application-based Process Isolation in web browsers. - -Isolation in browsers usually is designed with the following architectural mindset: -* Sandboxes and web resources should not be allowed to access each other because compromise of one should not effect the other. -* The principle of least-privilege should be followed when browsing. -The following aspects help make browser-based process isolation possible: -* Same Origin Policy -* Separate tabs and iframes use their own DOMs (cross-site document object models always run as a different process) -* CORS ensures cross-site data is not delivered to a process unless the server allows it -* Cookie and local data storage is separated by domain/site -* Separate execution environments (threads) - -## Considerations -- Using isolation in browsers does mitigate and protect by default some types of attacks (e.g. renderer attacks and access to the filesystem) but it depends on correct configuration of CORS, use of valid/appropriate certificates. -- Application-based Process Isolation may increase memory footprint. -- Application-based Process Isolation may decrease application performance.""" ; - :kb-reference :Reference-PrivateApplicationAccessWithBrowserIsolation, - :Reference-ProtectingWebApplicationsFromUntrustedEndpointsUsingRemoteBrowserIsolation, - :Reference-SiteIsolationDesignDocument ; - :synonym "Browser-based Process Isolation", - "Remote Browser Isolation", - "Sandbox" . - -:ApplicationConfiguration a owl:Class ; - rdfs:label "Application Configuration" ; - rdfs:subClassOf :ConfigurationResource ; - :definition "Information used to configure the parameters and initial settings for an application." ; - rdfs:seeAlso . - -:ApplicationConfigurationDatabase a owl:Class ; - rdfs:label "Application Configuration Database" ; - rdfs:subClassOf :ConfigurationDatabase, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ApplicationConfigurationDatabaseRecord ] ; - :definition "A database used to hold application configuration data." . - -:ApplicationConfigurationDatabaseRecord a owl:Class ; - rdfs:label "Application Configuration Database Record" ; - rdfs:subClassOf :ApplicationConfiguration, - :ConfigurationDatabaseRecord ; - :definition "A database record holding information used to configure the parameters and initial settings for an application." . - -:ApplicationConfigurationFile a owl:Class ; - rdfs:label "Application Configuration File" ; - rdfs:subClassOf :ConfigurationFile, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ApplicationConfiguration ] ; - :definition "A file containing Information used to configure the parameters and initial settings for an application.. A plist file is an example of this type of file for macOS. Usually text-based." . - -:ApplicationConfigurationHardening a :ApplicationConfigurationHardening, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Application Configuration Hardening" ; - rdfs:subClassOf :ApplicationHardening, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :ApplicationConfiguration ] ; - :d3fend-id "D3-ACH" ; - :definition "Modifying an application's configuration to reduce its attack surface." ; - :kb-article """## How it works -Application configuration settings can be configured to limit the permissions on an application or disable certain vulnerable application features. - -Hardening an application's configuration involves analyzing not only the application but also the environment in which the application is run in for potential vulnerabilities.""" ; - :kb-reference :Reference-RedHatEnterpriseLinux8SecurityTechnicalImplementationGuide, - :Reference-Windows10STIG . - -:ApplicationConfigurationModificationEvent a owl:Class ; - rdfs:label "Application Configuration Modification Event" ; - rdfs:subClassOf :ConfigurationModificationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ApplicationConfiguration ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :ApplicationUpdateEvent ] ; - :definition "An event in which the configuration of a specific software application is changed, affecting how that application executes, interacts with other components, or exposes functionality to users or services." . - -:ApplicationDeletionEvent a owl:Class ; - rdfs:label "Application Deletion Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationInstallationEvent ] ; - :definition "An event capturing the removal of an application from a system, ensuring its binaries, configuration files, and registry entries are deleted or deactivated." . - -:ApplicationDisableEvent a owl:Class ; - rdfs:label "Application Disable Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationEnableEvent ] ; - :definition "An event capturing the disabling of an application, preventing it from being operational or accessed until re-enabled." . - -:ApplicationEnableEvent a owl:Class ; - rdfs:label "Application Enable Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationInstallationEvent ] ; - :definition "An event representing the enabling of an application, allowing it to be started or accessed when required." . - -:ApplicationEvent a owl:Class ; - rdfs:label "Application Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Application ] ; - :definition "An event that captures the behavior, state, or interactions of software applications or services operating within a system. Application events encompass lifecycle changes, configuration updates, and operational anomalies, providing insight into the health and performance of software components." ; - rdfs:seeAlso . - -:ApplicationExceptionMonitoring a :ApplicationExceptionMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Application Exception Monitoring" ; - rdfs:subClassOf :ApplicationPerformanceMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :ApplicationFailureCountVariable ], - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :Log ] ; - :d3fend-id "D3-AEM" ; - :definition "Monitoring the failures of system counters and timers." ; - :kb-article """## How it works -Monitoring timer and counter failures or exceedances can reveal issues with the program or platform, and is important for both safety and security. It may also help identify tampering or malicious activity affecting the device or the processes it controls.""" ; - :kb-reference :Reference-SecurePLCCodingPracticesTop20List ; - :synonym "Application Failure Monitoring" . - -:ApplicationFailureCountVariable a owl:Class ; - rdfs:label "Application Failure Count Variable" ; - rdfs:subClassOf :RuntimeVariable ; - rdfs:comment "Differenct controller brands have different system tags to monitor various aspects, for example in Allen-Bradley you might use S:ERR, T4:0.DN, C5:0.OV; respectively System error, timer/counter status bits" ; - :definition "Variables that keep count of various failures and errors." . - -:ApplicationHardening a :ApplicationHardening, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Application Hardening" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Harden ] ; - :d3fend-id "D3-AH" ; - :definition "Application Hardening makes an executable application more resilient to a class of exploits which either introduce new code or execute unwanted existing code. These techniques may be applied at compile-time or on an application binary." ; - :enables :Harden ; - :kb-article """## Technique Overview - -Exploits may, for example, rely on knowledge of addresses in a process's memory, they may alter memory contents, and they may cause a program to use instructions in a way that they were not intended. By, for example, including code that dynamically changes the memory address of data or code on each run, introducing logic to validating the memory contents before certain potentially dangerous flows are executed, or monitoring a program for unusual sequence of instructions, this makes it harder for an attacker to craft a working exploit.""" ; - :synonym "Process Hardening" . - -:ApplicationInstallationEvent a owl:Class ; - rdfs:label "Application Installation Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :SoftwareDeploymentTool ] ; - :definition "An event representing the installation of an application onto a system, making it available for use and interaction." . - -:ApplicationInstaller a owl:Class ; - rdfs:label "Application Installer" ; - rdfs:subClassOf :UserApplication ; - :definition "An application installer is a user application designed to install, configure, and deploy another application." . - -:ApplicationInventorySensor a owl:Class ; - rdfs:label "Application Inventory Sensor" ; - rdfs:subClassOf :EndpointSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :Application ] ; - :definition "Collects information on applications on an endpoint." . - -:ApplicationLayerEvent a owl:Class ; - rdfs:label "Application Layer Event" ; - rdfs:subClassOf :NetworkEvent ; - :definition "An event occurring at the application layer, involving protocols that support application-specific communication." . - -:ApplicationLayerFirewall a owl:Class ; - rdfs:label "Application Layer Firewall" ; - skos:altLabel "Application Firewall" ; - rdfs:subClassOf :Firewall ; - rdfs:isDefinedBy ; - :definition "An application firewall is a form of firewall that controls input, output, and/or access from, to, or by an application or service. It operates by monitoring and potentially blocking the input, output, or system service calls that do not meet the configured policy of the firewall. The application firewall is typically built to control all network traffic on any OSI layer up to the application layer. It is able to control applications or services specifically, unlike a stateful network firewall, which is - without additional software - unable to control network traffic regarding a specific application. There are two primary categories of application firewalls, network-based application firewalls and host-based application firewalls." . - -:ApplicationLayerLink a owl:Class ; - rdfs:label "Application Layer Link" ; - rdfs:subClassOf :LogicalLink ; - :definition "An Application Layer Link is a type of logical link that exists at the application layer of a network or system architecture." . - -:ApplicationPerformanceMonitoring a :ApplicationPerformanceMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Application Performance Monitoring" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :ApplicationScanTime ], - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :SystemApplicationCycleCount ] ; - :d3fend-id "D3-APM" ; - :definition "Monitoring the count and duration of the application or program cycle." ; - :kb-article """## How it works -Keeping track of the controller cycle time by logging it, setting alarms, and correlating with other events. Changes to cycle time can be indicative of injecting new logic, deleting logic, or system failures.""" ; - :kb-reference :Reference-SecurePLCCodingPracticesTop20List . - -:ApplicationProcess a owl:Class ; - rdfs:label "Application Process" ; - rdfs:subClassOf :UserProcess, - [ a owl:Restriction ; - owl:onProperty :runs ; - owl:someValuesFrom :Application ] ; - :definition "An application process is an instance of an application computer program that is being executed." ; - rdfs:seeAlso . - -:ApplicationProcessConfiguration a owl:Class ; - rdfs:label "Application Process Configuration" ; - rdfs:subClassOf :ApplicationConfiguration ; - :definition "The current configuration of an application process, stored in memory. It may have been sourced from other types of application configurations, e.g. Application Configuration Files or Application Configuration Database Records." . - -:ApplicationProtocolCommandAnalysis a :ApplicationProtocolCommandAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Application Protocol Command Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id " D3-APCA" ; - :definition "Analyzing application protocol level remote commands to detect unauthorized activity." ; - :kb-article """## How it works -This technique requires the ability to parse application layer protocols to understand the commands being sent to a remote service. Signature-based or statistical analysis may be employed to identify unauthorized commands being sent. These commands can be observed by monitoring network traffic or application logs.""" ; - :kb-reference :Reference-MethodAndApparatusForDetectingAnomaliesOfAnInfrastructureInANetwork, - :Reference-ProtocolBasedDetectionOfSuspiciousNetworkTraffic . - -:ApplicationRestartEvent a owl:Class ; - rdfs:label "Application Restart Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationStopEvent ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :ApplicationStartEvent ] ; - :definition "An event where an application is sequentially stopped and started, typically to refresh its state, apply updates, or resolve issues while preserving its availability." . - -:ApplicationRule a owl:Class ; - rdfs:label "Application Rule" ; - rdfs:subClassOf :ApplicationConfiguration ; - :definition "A configuration of an application which is used to apply logical or data processing functions to data processed by the application." . - -:ApplicationRuntimeVariable a owl:Class ; - rdfs:label "Application Runtime Variable " ; - rdfs:subClassOf :RuntimeVariable ; - :definition "A system variable that tracks aspects of runtime of a system." . - -:ApplicationScanTime a owl:Class ; - rdfs:label "Application Scan Time" ; - rdfs:subClassOf :ApplicationRuntimeVariable ; - :definition "A variable that tracks the measured time it takes to begin, run, and complete a select portion of an application's logic." . - -:ApplicationShim a owl:Class ; - rdfs:label "Application Shim" ; - rdfs:subClassOf :Shim ; - :definition "An application shim adapts an application program to run on a version of a platform for which they were not originally created. Most commonly \"Application Shimming\" refers to use of The Windows Application Compatibility Toolkit (ACT) provides backward compatibility by simulating the behavior of older version of Windows." ; - rdfs:seeAlso , - :Shim . - -:ApplicationStartEvent a owl:Class ; - rdfs:label "Application Start Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationInstallationEvent ] ; - :definition "An event where an application transitions from an inactive state to an active state, initializing its resources and becoming operational for user interaction or automated processes." . - -:ApplicationStopEvent a owl:Class ; - rdfs:label "Application Stop Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationStartEvent ] ; - :definition "An event capturing the cessation of an application’s operations, transitioning it to an inactive state and releasing any allocated resources." . - -:ApplicationUpdateEvent a owl:Class ; - rdfs:label "Application Update Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ApplicationInstallationEvent ] ; - :definition "An event describing changes made to an application, such as updates, reconfigurations, or patch installations, while maintaining its presence on the system." . - -:ApproximateStringMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Approximate String Matching" ; - rdfs:subClassOf :PartialMatching ; - :d3fend-id "D3A-ASM" ; - :definition "Approximate string matching is a form of string matching that allows errrors." ; - :kb-article """## References -1. Navarro, G. (2001). A guided tour to approximate string matching. _ACM Computing Surveys_, 33(1), 31-88. [Link](https://doi.org/10.1145/375360.375365)""" . - -:ArchiveFile a owl:Class ; - rdfs:label "Archive File" ; - rdfs:subClassOf :File ; - rdfs:isDefinedBy ; - :definition "An archive file is a file that is composed of one or more computer files along with metadata. Archive files are used to collect multiple data files together into a single file for easier portability and storage, or simply to compress files to use less storage space. Archive files often store directory structures, error detection and correction information, arbitrary comments, and sometimes use built-in encryption." . - -:ARIMAModel a owl:Class, - owl:NamedIndividual ; - rdfs:label "ARIMA Model" ; - rdfs:subClassOf :TimeSeriesAnalysis ; - :d3fend-id "D3A-AM" ; - :definition "An autoregressive integrated moving average (ARIMA) model is a generalization of an autoregressive moving average (ARMA) model." ; - :kb-article """## References -Wikipedia. (n.d.). Autoregressive integrated moving average. [Link](https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average)""" ; - :synonym "Autoregressive Integrated Moving Average Model" . - -:ARMA_Model a owl:Class, - owl:NamedIndividual, - :TimeSeriesAnalysis ; - rdfs:label "ARMA Model" ; - rdfs:subClassOf :TimeSeriesAnalysis ; - :d3fend-id "D3-ARMA" ; - :definition "Autoregressive-moving-average (ARMA) models provide a parsimonious description of a (weakly) stationary stochastic process in terms of two polynomials, one for the autoregression (AR) and the second for the moving average (MA)." ; - :kb-article """## References -Wikipedia. (n.d.). Autoregressive-moving-average model. [Link](https://en.wikipedia.org/wiki/Autoregressive%E2%80%93moving-average_model)""" ; - :synonym "Autoregressive moving average model" . - -:Artifact a owl:Class ; - rdfs:label "Artifact" ; - rdfs:subClassOf :D3FENDCore ; - :definition "A man-made object taken as a whole." ; - rdfs:seeAlso , - . - -:ArtifactServer a owl:Class ; - rdfs:label "Artifact Server" ; - rdfs:subClassOf :WebServer ; - :definition "A digital artifact server provides access services to digital artifacts in a repository. It provides an associated set of data management, search and access methods allowing application-independent access to the content." ; - rdfs:seeAlso , - . - -:ArtificialNeuralNetClassification a owl:Class, - owl:NamedIndividual ; - rdfs:label "Artificial Neural Network Classification" ; - rdfs:subClassOf :Classification ; - :d3fend-annotation "Classification ANNs seek to classify an observation as belonging to some discrete class as a function of the inputs. The input features (independent variables) can be categorical or numeric types, however, we require a categorical feature as the dependent variable." ; - :d3fend-id "D3A-ANNC" ; - :kb-article """## References -ANN Classification. [Link](http://uc-r.github.io/ann_classification).""" . - -:AssetInventory a :AssetInventory, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Asset Inventory" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Model ] ; - :d3fend-id "D3-AI" ; - :definition "Asset inventorying identifies and records the organization's assets and enriches each inventory item with knowledge about their vulnerabilities." ; - :display-order 1 ; - :synonym "Asset Discovery", - "Asset Inventorying" . - -:AssetInventoryAgent a owl:Class, - owl:NamedIndividual ; - rdfs:label "Asset Inventory Agent" ; - rdfs:subClassOf :NetworkAgent ; - :definition "An asset inventory agent is a software tool which captures and transmits information about the devices on a network, including their hostnames, MAC addresses, software they may be running, etc." ; - rdfs:seeAlso . - -:AssetVulnerabilityEnumeration a :AssetVulnerabilityEnumeration, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Asset Vulnerability Enumeration" ; - rdfs:subClassOf :AssetInventory, - [ a owl:Restriction ; - owl:onProperty :evaluates ; - owl:someValuesFrom :PhysicalArtifact ], - [ a owl:Restriction ; - owl:onProperty :evaluates ; - owl:someValuesFrom :Software ], - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :Vulnerability ] ; - :d3fend-id "D3-AVE" ; - :definition "Asset vulnerability enumeration enriches inventory items with knowledge identifying their vulnerabilities." ; - :kb-reference :Reference-AutomatedComputerVulnerabilityResolutionSystem, - :Reference-SecurityVulnerabilityInformationAggregation, - :Reference-SystemAndMethodForVulnerabilityRiskAssessment . - -:AssignPrivilegesToGroupEvent a owl:Class ; - rdfs:label "Assign Privileges to Group Event" ; - rdfs:subClassOf :GroupManagementEvent, - :PermissionGrantingEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :GroupCreationEvent ] ; - :definition "An event where specific privileges or rights are granted to a group, enabling its members to perform actions or access resources as defined by the privileges." . - -:AssociationRuleLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Association Rule Learning" ; - rdfs:subClassOf :UnsupervisedLearning ; - :d3fend-id "D3A-ARL" ; - :definition "Association rule learning is a rule-based machine learning method for discovering interesting relations between variables in large databases." ; - :kb-article """## References -Association rule learning. (n.d.). Wikipedia. [Link](https://en.wikipedia.org/wiki/Association_rule_learning)""" . - -:AsymmetricFeature-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Asymmetric Feature-based Transfer Learning" ; - rdfs:subClassOf :HomogenousTransferLearning ; - :d3fend-id "D3A-AFTL" ; - :definition "Homogeneous (where the metrics are the same for both source and target) asymmetric transformation mapping transforms the source feature space to align with that of the target or the target to that of the source. This, in effect, bridges the feature space gap and reduces the problem into a homogeneous transfer problem when further distribution differences need to be corrected." ; - :kb-article """## References -Day, O., & Khoshgoftaar, T.M. (2017). A survey on heterogeneous transfer learning. Journal of Big Data, 4(1), 29. [Link](https://doi.org/10.1186/s40537-017-0089-0).""" ; - :todo "Could use a better definition as this is a slightly modified version of the heterogeneous definition" . - -:AsymmetricKey a owl:Class ; - rdfs:label "Asymmetric Key" ; - rdfs:subClassOf :CryptographicKey ; - :definition "Asymmetric keys are public and private keys, paired such that asymmetric (public-key) cryptography algorithms can be implemented using them. Public-key cryptography, or asymmetric cryptography, is any cryptographic system that uses pairs of keys: public keys that may be disseminated widely paired with private keys which are known only to the owner. There are two functions that can be achieved: using a public key to authenticate that a message originated with a holder of the paired private key; or encrypting a message with a public key to ensure that only the holder of the paired private key can decrypt it." ; - rdfs:seeAlso . - -:ATTACKEnterpriseDataSource a owl:Class ; - rdfs:label "ATTACK Enterprise Data Source" ; - rdfs:subClassOf :ATTACKEnterpriseThing . - -:ATTACKEnterpriseMitigation a owl:Class ; - rdfs:label "ATTACK Enterprise Mitigation" ; - rdfs:subClassOf :ATTACKEnterpriseThing, - [ a owl:Restriction ; - owl:onProperty :d3fend-comment ; - owl:someValuesFrom xsd:string ], - [ a owl:Restriction ; - owl:onProperty :semantic-relation ; - owl:someValuesFrom :DefensiveTechnique ] . - -:ATTACKEnterpriseTactic a owl:Class ; - rdfs:label "ATTACK Enterprise Tactic" ; - rdfs:subClassOf :ATTACKEnterpriseThing . - -:ATTACKEnterpriseTechnique a owl:Class ; - rdfs:label "ATTACK Enterprise Technique" ; - rdfs:subClassOf :ATTACKEnterpriseThing . - -:ATTACKEnterpriseThing a owl:Class ; - rdfs:label "ATTACK Enterprise Thing" ; - rdfs:subClassOf :ATTACKThing . - -:Attacker a owl:Class ; - rdfs:label "Attacker" ; - rdfs:subClassOf :Agent ; - :definition "An agent that attempts to exploit vulnerabilities to gain unauthorized access to data or systems." . - -:ATTACKICSCollectionTechnique a owl:Class ; - rdfs:label "Collection Technique - ATTACK ICS" ; - skos:prefLabel "Collection Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0100 ] . - -:ATTACKICSCommandAndControlTechnique a owl:Class ; - rdfs:label "Command and Control Technique - ATTACK ICS" ; - skos:prefLabel "Command and Control Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0101 ] . - -:ATTACKICSDiscoveryTechnique a owl:Class ; - rdfs:label "Discovery Technique - ATTACK ICS" ; - skos:prefLabel "Discovery Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0102 ] . - -:ATTACKICSEvasionTechnique a owl:Class ; - rdfs:label "Evasion Technique - ATTACK ICS" ; - skos:prefLabel "Evasion Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0103 ] . - -:ATTACKICSExecutionTechnique a owl:Class ; - rdfs:label "Execution Technique - ATTACK ICS" ; - skos:prefLabel "Execution Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0104 ] . - -:ATTACKICSImpactTechnique a owl:Class ; - rdfs:label "Impact Technique - ATTACK ICS" ; - skos:prefLabel "Impact Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0105 ] . - -:ATTACKICSImpairProcessControlTechnique a owl:Class ; - rdfs:label "Impair Process Control Technique - ATTACK ICS" ; - skos:prefLabel "Impair Process Control Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0106 ] ; - :definition "The adversary is trying to manipulate, disable, or damage physical control processes." . - -:ATTACKICSInhibitResponseFunctionTechnique a owl:Class ; - rdfs:label "Inhibit Response Function Technique - ATTACK ICS" ; - skos:prefLabel "Inhibit Response Function Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0107 ] ; - :definition "The adversary is trying to prevent your safety, protection, quality assurance, and operator intervention functions from responding to a failure, hazard, or unsafe state." . - -:ATTACKICSInitialAccessTechnique a owl:Class ; - rdfs:label "Initial Access Technique - ATTACK ICS" ; - skos:prefLabel "Initial Access Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0108 ] . - -:ATTACKICSLateralMovementTechnique a owl:Class ; - rdfs:label "Lateral Movement Technique - ATTACK ICS" ; - skos:prefLabel "Lateral Movement Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0109 ] . - -:ATTACKICSPersistenceTechnique a owl:Class ; - rdfs:label "Persistence Technique - ATTACK ICS" ; - skos:prefLabel "Persistence Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0110 ] . - -:ATTACKICSPrivilegeEscalationTechnique a owl:Class ; - rdfs:label "Privilege Escalation Technique - ATTACK ICS" ; - skos:prefLabel "Privilege Escalation Technique" ; - rdfs:subClassOf :ATTACKICSTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0111 ] . - -:ATTACKICSTactic a owl:Class ; - rdfs:label "ATTACK ICS Tactic" ; - rdfs:subClassOf :ATTACKICSThing . - -:ATTACKICSTechnique a owl:Class ; - rdfs:label "ATTACK ICS Technique" ; - rdfs:subClassOf :ATTACKICSThing . - -:ATTACKICSThing a owl:Class ; - rdfs:label "ATTACK ICS Thing" ; - rdfs:subClassOf :ATTACKThing . - -:ATTACKMergedThing a owl:Class ; - rdfs:label "ATTACK Merged Thing" ; - rdfs:subClassOf :ATTACKThing . - -:ATTACKMobileCollectionTechnique a owl:Class ; - rdfs:label "Collection Technique - ATTACK Mobile" ; - skos:prefLabel "Collection Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0035 ] . - -:ATTACKMobileCommandAndControlTechnique a owl:Class ; - rdfs:label "Command and Control Technique - ATTACK Mobile" ; - skos:prefLabel "Command and Control Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0037 ] . - -:ATTACKMobileCredentialAccessTechnique a owl:Class ; - rdfs:label "Credential Access Technique - ATTACK Mobile" ; - skos:prefLabel "Credential Access Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0031 ] . - -:ATTACKMobileDefenseEvasionTechnique a owl:Class ; - rdfs:label "Defense Evasion Technique - ATTACK Mobile" ; - skos:prefLabel "Defense Evasion Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0030 ] . - -:ATTACKMobileDiscoveryTechnique a owl:Class ; - rdfs:label "Discovery Technique - ATTACK Mobile" ; - skos:prefLabel "Discovery Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0032 ] . - -:ATTACKMobileExecutionTechnique a owl:Class ; - rdfs:label "Execution Technique - ATTACK Mobile" ; - skos:prefLabel "Execution Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0041 ] . - -:ATTACKMobileExfiltrationTechnique a owl:Class ; - rdfs:label "Exfiltration Technique - ATTACK Mobile" ; - skos:prefLabel "Exfiltration Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0036 ] . - -:ATTACKMobileImpactTechnique a owl:Class ; - rdfs:label "Impact Technique - ATTACK Mobile" ; - skos:prefLabel "Impact Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0034 ] . - -:ATTACKMobileInitialAccessTechnique a owl:Class ; - rdfs:label "Initial Access Technique - ATTACK Mobile" ; - skos:prefLabel "Initial Access Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0027 ] . - -:ATTACKMobileLateralMovementTechnique a owl:Class ; - rdfs:label "Lateral Movement Technique - ATTACK Mobile" ; - skos:prefLabel "Lateral Movement Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0033 ] . - -:ATTACKMobilePersistenceTechnique a owl:Class ; - rdfs:label "Persistence Technique - ATTACK Mobile" ; - skos:prefLabel "Persistence Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0028 ] . - -:ATTACKMobilePrivilegeEscalationTechnique a owl:Class ; - rdfs:label "Privilege Escalation Technique - ATTACK Mobile" ; - skos:prefLabel "Privilege Escalation Technique" ; - rdfs:subClassOf :ATTACKMobileTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0029 ] . - -:ATTACKMobileTactic a owl:Class ; - rdfs:label "ATTACK Mobile Tactic" ; - rdfs:subClassOf :ATTACKMobileThing . - -:ATTACKMobileTechnique a owl:Class ; - rdfs:label "ATTACK Mobile Technique" ; - rdfs:subClassOf :ATTACKMobileThing . - -:ATTACKMobileThing a owl:Class ; - rdfs:label "ATTACK Mobile Thing" ; - rdfs:subClassOf :ATTACKThing . - -:ATTACKThing a owl:Class ; - rdfs:label "ATTACK Thing" ; - rdfs:subClassOf :ExternalThreatModelThing ; - :definition "ATTACK things are concepts defined in the ATT&CK Framework." . - -:AudioInputDevice a owl:Class ; - rdfs:label "Audio Input Device" ; - rdfs:subClassOf :InputDevice ; - rdfs:isDefinedBy ; - :definition "Audio input devices allow a user to send audio info to a computer for processing, recording, or carrying out commands. Devices such as microphones allow users to speak to the computer in order to record a voice message or navigate software. Aside from recording, audio input devices are also used with speech recognition software." . - -:AuthenticateUser a owl:Class ; - rdfs:label "Authenticate User" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :UserAccount ] . - -:Authentication a owl:Class ; - rdfs:label "Authentication" ; - rdfs:subClassOf :DefensiveAction, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :User ], - [ a owl:Restriction ; - owl:onProperty :may-create ; - owl:someValuesFrom :IntranetNetworkTraffic ], - [ a owl:Restriction ; - owl:onProperty :originates-from ; - owl:someValuesFrom :PhysicalLocation ] ; - :definition "A request-response comprising a user credential presentation to a system and a verification response." ; - rdfs:seeAlso , - . - -:AuthenticationCacheInvalidation a :AuthenticationCacheInvalidation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Authentication Cache Invalidation" ; - rdfs:subClassOf :CredentialEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-ANCI" ; - :definition "Removing tokens or credentials from an authentication cache to prevent further user associated account accesses." ; - :kb-article """## How it works -Applications can locally cache user authentication credentials for certain server connections. An application may attempt to use the cached credential for a connection. If the cached credentials exist then the user will not be typically prompted for new credentials. - - -## Considerations -Are these cached credentials only on the local host? Can they be persisted to the remote server? - -## Examples -Windows Credential Management API""" ; - :kb-reference :Reference-SecureCachingOfServerCredentials_DellProductsLP, - :Reference-SystemAndMethodForProvidingAnActivelyInvalidatedClient-sideNetworkResourceCache_IMVU . - -:AuthenticationEvent a owl:Class ; - rdfs:label "Authentication Event" ; - skos:altLabel "Agent Authentication Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :caused-by ; - owl:someValuesFrom :Authentication ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Agent ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Credential ] ; - :definition "An event capturing the systematic process of verifying an agent's identity within a system, involving credential validation and identity confirmation." ; - rdfs:seeAlso . - -:AuthenticationEventThresholding a :AuthenticationEventThresholding, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Authentication Event Thresholding" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authentication ] ; - :created "2020-08-05T00:00:00"^^xsd:dateTime ; - :d3fend-id "D3-ANET" ; - :definition "Collecting authentication events, creating a baseline user profile, and determining whether authentication events are consistent with the baseline profile." ; - :kb-article """## How it works -Authentication event data is collected (logon information such as device id, time of day, day of week, geo-location, etc.) to create an activity baseline. Then, a threshold is determined either through a manually specified configuration, or a statistical analysis of deviations in historical data. New authentication events are evaluated to determine if a threshold is exceeded. Thresholds can be static or dynamic. - -### Actions -As a result of the analysis, actions taken could include: - -* [Account Locking](/technique/d3f:AccountLocking) -* Raising an alert - -### Example data sources - * Directory server logs - * VPN Server logs - * IDAM Capability logs - * NAC logs - * Authentication client logs - * Kerberos network traffic - * LDAP network traffic - -## Considerations - -This technique covers statistical outliers. Though depending on the complexity or dimensionality of the data considered, outliers may not be obvious to a human analyst reviewing events in simplistic analytic views. If the malicious activity is not statistically different from benign activity, an alert threshold will not be met.""" ; - :kb-reference , - :Reference-MethodAndApparatusForNetworkFraudDetectionAndRemediationThroughAnalytics_IdaptiveLLC, - :Reference-SimultaneousLoginsOnAHost_MITRE, - :Reference-UserLoggedInToMultipleHosts_MITRE, - :Reference-UserLoginActivityMonitoring_MITRE . - -:AuthenticationFunction a owl:Class ; - rdfs:label "Authentication Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :UserAccount ] ; - :definition "Authenticates a user account by verifying a presented credential." . - -:AuthenticationLog a owl:Class ; - rdfs:label "Authentication Log" ; - rdfs:subClassOf :EventLog, - [ a owl:Restriction ; - owl:onProperty :records ; - owl:someValuesFrom :Authentication ] ; - :definition "A log of authentication events." ; - rdfs:seeAlso , - . - -:AuthenticationServer a owl:Class ; - rdfs:label "Authentication Server" ; - rdfs:subClassOf :Server, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :AuthenticationServiceApplication ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :AuthenticationService ] ; - rdfs:isDefinedBy ; - :definition "An authentication server provides a network service that applications use to authenticate the credentials, usually account names and passwords, of their users. When a client submits a valid set of credentials, it receives a cryptographic ticket that it can subsequently use to access various services. Major authentication algorithms include passwords, Kerberos, and public key encryption." . - -:AuthenticationService a owl:Class ; - rdfs:label "Authentication Service" ; - rdfs:subClassOf :ServiceApplicationProcess, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :Host ] ; - rdfs:isDefinedBy ; - :definition "An authentication service is a mechanism, analogous to the use of passwords on time-sharing systems, for the secure authentication of the identity of network clients by servers and vice versa, without presuming the operating system integrity of either (e.g., Kerberos)." ; - rdfs:seeAlso . - -:AuthenticationServiceApplication a owl:Class ; - rdfs:label "Authentication Service Application" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :instructs ; - owl:someValuesFrom :AuthenticationService ] ; - :definition "A software application designed to verify the identity of users or devices." . - -:Authorization a owl:Class ; - rdfs:label "Authorization" ; - rdfs:subClassOf :DefensiveAction, - [ a owl:Restriction ; - owl:onProperty :authorizes ; - owl:someValuesFrom :Access ] ; - rdfs:isDefinedBy ; - :definition "Authorization is the function of specifying access rights to resources related to information security and computer security in general and to access control in particular. More formally, \"to authorize\" is to define an access policy. For example, human resources staff is normally authorized to access employee records and this policy is usually formalized as access control rules in a computer system. During operation, the system uses the access control rules to decide whether access requests from (authenticated) consumers shall be approved (granted) or disapproved (rejected). Resources include individual files or an item's data, computer programs, computer devices and functionality provided by computer applications. Examples of consumers are computer users, computer program" . - -:AuthorizationEvent a owl:Class ; - rdfs:label "Authorization Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :caused-by ; - owl:someValuesFrom :Authorization ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Agent ] ; - :definition "An event reflecting the decision-making process and actions concerning access control, recording whether agents are permitted or denied access to resources based on pre-defined access control policies." . - -:AuthorizationEventThresholding a :AuthorizationEventThresholding, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Authorization Event Thresholding" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authorization ] ; - :created "2020-08-05T00:00:00"^^xsd:dateTime ; - :d3fend-id "D3-AZET" ; - :definition "Collecting authorization events, creating a baseline user profile, and determining whether authorization events are consistent with the baseline profile." ; - :kb-article """## How it works - -Authorization event data is collected to create a baseline user profile. Authorization events that deviate from the baseline and exceed a static or dynamic threshold are identified for further action. Authorization events can include successful and failed authorization attempts as well as events related to permissions including viewing, editing, deleting, creating files, databases etc. - -## Considerations - -Depending on the complexity of the data considered, outliers may not be obvious to a human analyst reviewing events in simplistic analytic views. If malicious activity is not statistically different from benign activity, an alert threshold will not be met.""" ; - :kb-reference , - :Reference-MethodAndApparatusForNetworkFraudDetectionAndRemediationThroughAnalytics_IdaptiveLLC, - :Reference-SMBSessionSetups_MITRE, - :Reference-UserLoggedInToMultipleHosts_MITRE . - -:AuthorizationLog a owl:Class ; - rdfs:label "Authorization Log" ; - rdfs:subClassOf :EventLog, - [ a owl:Restriction ; - owl:onProperty :records ; - owl:someValuesFrom :NetworkResourceAccess ] ; - :definition "A log of authorization events." ; - rdfs:seeAlso , - . - -:AuthorizationService a owl:Class ; - rdfs:label "Authorization Service" ; - rdfs:subClassOf :NetworkService, - :ServiceApplicationProcess ; - rdfs:isDefinedBy ; - :definition "An authorization service ensures that the user is authorized to have access to a particular resource. Authorization can be done through role-based access control (RBAC) or list-based access control (LBAC)." ; - rdfs:seeAlso . - -:Autoencoding a owl:Class, - owl:NamedIndividual ; - rdfs:label "Autoencoding" ; - rdfs:subClassOf :DimensionReduction ; - :d3fend-id "D3A-AUT" ; - :definition "Autoencoders are specific type of deep learning architecture used for learning representation of data, typically for the purpose of dimensionality reduction. This is achieved by designing deep learning architecture that aims that copying input layer at its output layer." ; - :kb-article """## References -SOCR. (n.d.). ABIDE Autoencoder. [Link](https://socr.umich.edu/HTML5/ABIDE_Autoencoder/#:~:text=In%20simple%20words%2C%20autoencoders%20are,layer%20at%20its%20output%20layer.)""" . - -:AutoregressiveModel a owl:Class, - owl:NamedIndividual ; - rdfs:label "Autoregressive Model" ; - rdfs:subClassOf :TimeSeriesAnalysis ; - :d3fend-id "D3A-AM" ; - :definition "An autoregressive (AR) model is a representation of a type of random process; as such, it is used to describe certain time-varying processes in nature, economics, behavior, etc." ; - :kb-article """## References -Wikipedia. (n.d.). Autoregressive model. [Link](https://en.wikipedia.org/wiki/Autoregressive_model)""" ; - :synonym "AR Model" . - -:AverageAbsoluteDeviation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Average Absolute Deviation" ; - rdfs:subClassOf :Variability ; - :d3fend-id "D3A-AAD" ; - :definition "The average absolute deviation (AAD) of a data set is the average of the absolute deviations from a central point." ; - :kb-article """## References -Wikipedia. (n.d.). Average absolute deviation. [Link](https://en.wikipedia.org/wiki/Average_absolute_deviation)""" . - -:BarcodeScannerInputDevice a owl:Class ; - rdfs:label "Barcode Scanner Input Device" ; - skos:altLabel "Barcode Reader" ; - rdfs:subClassOf :ImageScannerInputDevice ; - rdfs:isDefinedBy ; - :definition "A barcode reader (or barcode scanner) is an optical scanner that can read printed barcodes, decode the data contained in the barcode and send the data to a computer. Like a flatbed scanner, it consists of a light source, a lens and a light sensor translating for optical impulses into electrical signals. Additionally, nearly all barcode readers contain decoder circuitry that can analyze the barcode's image data provided by the sensor and sending the barcode's content to the scanner's output port." . - -:BayesianEstimation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Estimation" ; - rdfs:subClassOf :BayesianMethod ; - :d3fend-id "D3A-BE" ; - :definition "A Bayes estimator or a Bayes action is an estimator or decision rule that minimizes the posterior expected value of a loss function (i.e., the posterior expected loss)." ; - :kb-article """## References -Wikipedia. (n.d.). Bayes estimator. [Link](https://en.wikipedia.org/wiki/Bayes_estimator)""" . - -:BayesianHypothesisTesting a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Hypothesis Testing" ; - rdfs:subClassOf :BayesianMethod ; - :d3fend-id "D3A-BHT" ; - :definition "Bayesian hypothesis testing can be framed as a special case of model comparison where a model refers to a likelihood function and a prior distribution." ; - :kb-article """## How it works -Given two competing hypotheses and some relevant data, Bayesian hypothesis testing begins by specifying separate prior distributions to quantitatively describe each hypothesis. The combination of the likelihood function for the observed data with each of the prior distributions yields hypothesis-specific models. For each of the hypothesis-specific models, averaging (ie, integrating) the likelihood with respect to the prior distribution across the entire parameter space yields the probability of the data under the model and, therefore, the corresponding hypothesis. This quantity is more commonly referred to as the marginal likelihood and represents the average fit of the model to the data. The ratio of the marginal likelihoods for both hypothesis-specific models is known as the Bayes factor. - -## References -Baig, S. A., PhD. (2020). Bayesian Inference: An Introduction to Hypothesis Testing Using Bayes Factors. Nicotine & Tobacco Research, 22(7), 1244-1246. [Link](https://academic.oup.com/ntr/article/22/7/1244/5613971)""" . - -:BayesianLinearRegression a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Linear Regression" ; - rdfs:subClassOf :RegressionAnalysis ; - :d3fend-id "D3A-BLR" ; - :definition "Bayesian linear regression is a type of conditional modeling in which the mean of one variable is described by a linear combination of other variables, with the goal of obtaining the posterior probability of the regression coefficients." ; - :kb-article """## References -Wikipedia. (n.d.). Bayesian linear regression. [Link](https://en.wikipedia.org/wiki/Bayesian_linear_regression)""" . - -:BayesianLinearRegressionLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Linear Regression Learning" ; - rdfs:subClassOf :RegressionAnalysisLearning ; - :d3fend-id "D3A-BLRL" ; - :definition "A supervised learning method that builds a Bayesian linear regression model using training data." ; - :kb-article """## References -Wikipedia. (n.d.). Bayesian linear regression. [Link](https://en.wikipedia.org/wiki/Bayesian_linear_regression)""" ; - rdfs:seeAlso :BayesianLinearRegression . - -:BayesianMethod a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Method" ; - rdfs:subClassOf :StatisticalMethod ; - :d3fend-id "D3A-BM" ; - :definition "Bayesian analysis is a statistical procedure which endeavors to estimate parameters of an underlying distribution based on the observed distribution." ; - :kb-article """## References -Wolfram MathWorld. (n.d.). Bayesian Analysis. [Link](https://mathworld.wolfram.com/BayesianAnalysis.html)""" . - -:BayesianModelAveraging a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Model Averaging" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-BMA" ; - :definition "A parameter estimate (or a prediction of new observations) obtained by averaging the estimates (or predictions) of the different models under consideration, each weighted by its model probability." ; - :kb-article """## References -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning). - -Bayesian model average: A parameter estimation approach to model agnostic ensemble learning. (2019). Journal of Machine Learning for Modeling and Computing, 1(2), 61-70. [Link](https://journals.sagepub.com/doi/full/10.1177/2515245919898657#:~:text=Bayesian%20model%20average%3A%20A%20parameter,weighted%20by%20its%20model%20probability).""" . - -:BayesianModelCombination a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayesian Model Combination" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-BMC" ; - :definition "Bayesian model combination (BMC) is an algorithmic correction to Bayesian model averaging (BMA). Instead of sampling each model in the ensemble individually, it samples from the space of possible ensembles (with model weights drawn randomly from a Dirichlet distribution having uniform parameters)" ; - :kb-article """## References -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning). - -Shultz, K. M., & Peterson, L. E. (2011). Model-averaged confidence intervals for ensemble learning. In *International Joint Conference on Neural Networks* (pp. 2677-2684). [Link](https://axon.cs.byu.edu/papers/Kristine.ijcnn2011.pdf).""" . - -:BayesOptimalClassifier a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bayes Optimal Classifier" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-BOC" ; - :definition "A probabilistic model that makes the most probable prediction for a new example." ; - :kb-article """## References -Bayes Optimal Classifier. Machine Learning Mastery. [Link](https://machinelearningmastery.com/bayes-optimal-classifier/). -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning).""" . - -:BERT a owl:Class, - owl:NamedIndividual ; - rdfs:label "BERT" ; - rdfs:subClassOf :Transformer-basedLearning ; - :d3fend-id "D3A-BER" ; - :definition "Bidirectional Encoder Representations from Transformers (BERT) is based on a deep learning model in which every output element is connected to every input element, and the weightings between them are dynamically calculated based upon their connection." ; - :kb-article """## References -BERT (language model). (n.d.). In TechTarget. [Link](https://www.techtarget.com/searchenterpriseai/definition/BERT-language-model) -BERT (language model). (n.d.). In Wikipedia. [Link](https://en.wikipedia.org/wiki/BERT_(language_model))""" ; - :synonym "Bidirectional Encoder Representations from Transformers" . - -:BinaryClassification a owl:Class ; - rdfs:label "Binary Classification" ; - rdfs:subClassOf :Classifying . - -:BinaryLargeObject a owl:Class ; - rdfs:label "Binary Large Object" ; - skos:altLabel "BLOB", - "Blob" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A binary large object (BLOB) is a collection of binary data stored as a single entity. Blobs are typically images, audio or other multimedia objects, though sometimes binary executable code is stored as a blob." ; - :todo "sometimes a record, but not always. always Binary Data (but we don't have Data and Binary Data tax). Also do we need to distinguish between information and data? Don't think so. IBO that is encoded as binary is Binary Data. The notion of \"object\" is distinct as it may be part of file, part of DB, or file (part of file system). Binary padding would relate, though is padding information if just used to pad (e.g., all zeroes?)" . - -:BinarySegment a owl:Class ; - rdfs:label "Binary Segment" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A binary segment is a partition of binary information within a larger binary object, which arranges a set of binary objects for its purpose. For example, code, data, heap, and stack segments are segments of the binary information used by a process. Code and data segments are also found in object files." . - -:BiometricAuthentication a :BiometricAuthentication, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Biometric Authentication" ; - rdfs:subClassOf :AgentAuthentication, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :Person ] ; - :d3fend-id "D3-BAN" ; - :definition "Using biological measures in order to authenticate a user." ; - :kb-reference :Reference-TokenlessBiometricTransactionAuthorizationMethodAndSystem, - :Reference-www.biometric-solutions.com_keystroke-dynamics . - -:BitmapImage a owl:Class ; - rdfs:label "Bitmap Image" ; - rdfs:subClassOf :DigitalImage ; - :definition "A graphical image whose data is stored in a grid format." . - -:BitmapImageFile a owl:Class ; - rdfs:label "Bitmap Image File" ; - rdfs:subClassOf :ImageFile, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :BitmapImage ] ; - :definition "A file that contains graphics data represented in a bitmap." . - -:BlockDevice a owl:Class ; - rdfs:label "Block Device" ; - skos:altLabel "Block Special File" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :BootSector ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Partition ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :PartitionTable ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :Volume ] ; - rdfs:isDefinedBy ; - :definition """A block device (or block special file) provides buffered access to hardware devices, and provides some abstraction from their specifics. - -IEEE Std 1003.1-2017: A file that refers to a device. A block special file is normally distinguished from a character special file by providing access to the device in a manner such that the hardware characteristics of the device are not visible.""" ; - rdfs:seeAlso . - -:BookReference a owl:Class ; - rdfs:label "Book Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Book" . - -:BooleanExpressionMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Boolean Expression Matching" ; - rdfs:subClassOf :LogicalRules ; - :d3fend-id "D3A-BEM" ; - :definition "Boolean expression matching produces a Boolean truth value for a given boolean expression and assignment of values to variables in the expression." ; - :kb-article """## How it works -A Boolean expression is an expression used in programming languages that produces a Boolean value when evaluated. A Boolean value is either true or false. A Boolean expression may be composed of a combination of the Boolean constants true or false, Boolean-typed variables, Boolean-valued operators, and Boolean-valued functions. - -Boolean expressions correspond to propositional formulas in logic and are a special case of Boolean circuits. - -## References -1. Boolean expression. (2022, April 25). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Boolean_expression) -2. Boolean algebra. (2022, May 19). In _Wikipedia_. -[Link](https://en.wikipedia.org/wiki/Boolean_expression)""" . - -:Boosting a owl:Class, - owl:NamedIndividual ; - rdfs:label "Boosting" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-BOO" ; - :definition "Boosting is a sequential process where each subsequent model attempts to correct the errors of the previous model" ; - :kb-article """## How it works -Boosting consists of using sequentially weak learners where each iteration’s training focuses on previously misclassified instances in order to improve on the previous iteration. This process is continued iteratively until the final prediction is made by aggregating the previous predictions. - -## Considerations -Boosting can be computationally expensive, prone to overfitting, and slower to train compared to other ensemble methods. - -There are three main types of Boosting algorithms - - Adaptive Boosting -Adaptive Boosting (sometimes called AdaBoost) works by adding equal importance to each piece of a dataset and running it through the base learning algorithms. Every algorithm that errors, the boosting algorithm assigns a higher importance to. This continues until an acceptable level of confidence is reached. - - Gradient Boosting -Gradient Boosting starts by training multiple models simultaneously to gather a strong estimate of strength to build new base learning algorithms. - - XGBoosting -XGBoosting is a scalable tree boosting model. Using decision trees, weight is assigned to each variable and put into a decision tree. Outputs that are classified by the algorithm as wrong or weak are put into a second decision tree and the results form a stronger model. - -## References -Sciencedirect. (n.d.). Semi-supervised learning: An overview. [Link](https://www.sciencedirect.com/science/article/pii/S1319157823000228)""" . - -:BootLoader a owl:Class ; - rdfs:label "Boot Loader" ; - skos:altLabel "Bootloader" ; - rdfs:subClassOf :Software ; - rdfs:isDefinedBy ; - :definition "A bootloader is software that is responsible for booting a computer. When a computer is turned off, its software‍-‌including operating systems, application code, and data‍-‌remains stored on non-volatile memory. When the computer is powered on, it typically does not have an operating system or its loader in random-access memory (RAM). The computer first executes a relatively small program stored in read-only memory (ROM, and later EEPROM, NOR flash) along with some needed data, to initialize RAM (especially on x86 systems) to access the nonvolatile device (usually block device, eg NAND flash) or devices from which the operating system programs and data can be loaded into RAM." . - -:BootloaderAuthentication a :BootloaderAuthentication, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Bootloader Authentication" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :BootLoader ] ; - :d3fend-id "D3-BA" ; - :definition "Cryptographically authenticating the bootloader software before system boot." ; - :kb-reference :Reference-UEFIPlatformInitialization-Specification ; - :synonym "Secure Boot" . - -:BootRecord a owl:Class ; - rdfs:label "Boot Record" ; - rdfs:subClassOf :Record ; - :definition "A d3f:Record which is an essential component of the early boot (system initialization) process." . - -:BootSector a owl:Class ; - rdfs:label "Boot Sector" ; - rdfs:subClassOf :BootRecord ; - :definition "A boot record [boot sector] is the sector of a persistent data storage device (e.g., hard disk, floppy disk, optical disc, etc.) which contains machine code to be loaded into random-access memory (RAM) and then executed by a computer system's built-in firmware (e.g., the BIOS, Das U-Boot, etc.)." ; - rdfs:seeAlso . - -:BootstrapAggregating a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bootstrap Aggregating" ; - rdfs:subClassOf :ResamplingEnsemble ; - :d3fend-id "D3A-BA" ; - :definition "Bootstrap aggregating, also called bagging (from bootstrap aggregating), is a machine learning ensemble meta-algorithm designed to improve the stability and accuracy of machine learning algorithms used in statistical classification and regression. It also reduces variance and helps to avoid overfitting. Although it is usually applied to decision tree methods, it can be used with any type of method. Bagging is a special case of the model averaging approach." ; - :kb-article """## References -Bootstrap aggregating. Wikipedia. [Link](https://en.wikipedia.org/wiki/Bootstrap_aggregating).""" . - -:BroadcastDomainIsolation a :BroadcastDomainIsolation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Broadcast Domain Isolation" ; - rdfs:subClassOf :NetworkIsolation, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :LocalAreaNetworkTraffic ] ; - :d3fend-id "D3-BDI" ; - :definition "Broadcast isolation restricts the number of computers a host can contact on their LAN." ; - :kb-article """## How it works -Software Defined Networking, or other network encapsulation technologies intercept host broadcast traffic then route it to a specified destination per a configured policy. - -This can be implemented within hypervisors, networking hardware (WAPs, switches, routers), or virutal hardware. - -## Considerations -This technique is highly dependent on network infrastructure and networking requirements.""" ; - :kb-reference :Reference-BroadcastIsolationAndLevel3NetworkSwitch_HewlettPackardEnterpriseDevelopmentLP, - :Reference-PrivateVirtualLocalAreaNetworkIsolation_CiscoTechnologyInc ; - :synonym "Network Segmentation" . - -:Browser a owl:Class ; - rdfs:label "Browser" ; - rdfs:subClassOf :UserApplication, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :BrowserExtension ] ; - rdfs:isDefinedBy ; - :definition "A web browser (commonly referred to as a browser) is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier (URI/URL) and may be a web page, image, video or other piece of content. Hyperlinks present in resources enable users easily to navigate their browsers to related resources. Although browsers are primarily intended to use the World Wide Web, they can also be used to access information provided by web servers in private networks or files in file systems." ; - rdfs:seeAlso . - -:BrowserExtension a owl:Class ; - rdfs:label "Browser Extension" ; - rdfs:subClassOf :UserApplication, - [ a owl:Restriction ; - owl:onProperty :extends ; - owl:someValuesFrom :Browser ] ; - rdfs:isDefinedBy ; - :definition "A browser extension is a plug-in that extends the functionality of a web browser in some way. Some extensions are authored using web technologies such as HTML, JavaScript, and CSS. Browser extensions can change the user interface of the web browser without directly affecting viewable content of a web page; for example, by adding a \"toolbar.\"" . - -:BucketOfModels a owl:Class, - owl:NamedIndividual ; - rdfs:label "Bucket of Models" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-BOM" ; - :definition "A \"bucket of models\" is an ensemble technique in which a model selection algorithm is used to choose the best model for each problem. When tested with only one problem, a bucket of models can produce no better results than the best model in the set, but when evaluated across many problems, it will typically produce much better results, on average, than any model in the set." ; - :kb-article """## References -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning).""" . - -:BuildTool a owl:Class ; - rdfs:label "Build Tool" ; - skos:altLabel "Build Automation Tool" ; - rdfs:subClassOf :DeveloperApplication ; - :definition "A tool that automates the process of creating a software build and the associated processes including: compiling computer source code into binary code, packaging binary code, and running automated tests." ; - rdfs:seeAlso . - -:BusinessCommunicationPlatformClient a owl:Class ; - rdfs:label "Business Communication Platform Client" ; - rdfs:subClassOf :CollaborativeSoftware ; - rdfs:isDefinedBy ; - :definition "Client software to enable the process of sharing information between employees within and outside a company. Business communication encompasses topics such as marketing, brand management, customer relations, consumer behavior, advertising, public relations, corporate communication, community engagement, reputation management, interpersonal communication, employee engagement, and event management. It is closely related to the fields of professional communication and technical communication." . - -:BusMessage a owl:Class ; - rdfs:label "Bus Message" ; - rdfs:subClassOf :DigitalMessage ; - :definition "A digital message potentially containing commands, telemetry, or status signals, encoded in a bus protocol and conveyed over a bus within one or more frames." . - -:BusNetwork a owl:Class ; - rdfs:label "Bus Network" ; - skos:altLabel "Bus", - "Data Highway" ; - rdfs:subClassOf :Network ; - rdfs:isDefinedBy ; - :definition "An electronic communication system that links multiple components through one shared transmission medium, together with the interface hardware and link-layer signalling that govern access to that medium." . - -:BusNetworkFrame a owl:Class ; - rdfs:label "Bus Network Frame" ; - skos:altLabel "Bus Frame" ; - rdfs:subClassOf :NetworkFrame, - [ a owl:Restriction ; - owl:onProperty :contained-by ; - owl:someValuesFrom :BusNetworkTraffic ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :BusMessage ] ; - :definition "A network frame whose layout and timing follow a bus protocol, allowing data to be exchanged across the shared bus medium." . - -:BusNetworkNode a owl:Class ; - rdfs:label "Bus Network Node" ; - rdfs:subClassOf :Host, - [ a owl:Restriction ; - owl:onProperty :connected-to ; - owl:someValuesFrom :BusNetwork ], - [ a owl:Restriction ; - owl:onProperty :transmits ; - owl:someValuesFrom :BusNetworkTraffic ] ; - :definition "A device or logical endpoint whose interface is directly connected to a bus and exchanges data over the shared medium using the protocol implemented on that interface." . - -:BusNetworkTraffic a owl:Class ; - rdfs:label "Bus Network Traffic" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :BusNetworkFrame ] ; - :definition "The ordered flow of frames, structured by a bus protocol, that traverses the shared bus medium during operation." . - -:ByteSequenceEmulation a :ByteSequenceEmulation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Byte Sequence Emulation" ; - rdfs:subClassOf :NetworkTrafficAnalysis ; - :d3fend-id "D3-BSE" ; - :definition "Analyzing sequences of bytes and determining if they likely represent malicious shellcode." ; - :kb-article """## How it works - -Bytes are analyzed as if they are machine code instructions, and such instructions that are a common component of known shellcode are noted, such as stack pivots, reads from a Memory Address Table, and system calls for functions that disable protections or execute code. For example, the x86 instruction `b0 0b: mov $11, %ax`, with no further alterations to the `%ax` register, followed by `cd 80: syscall` executes the system call `execve()` in the Linux kernel, which replaces the current process with another one specified -- this is a common action in shellcode, so this sequence would be flagged. - -This technique detects shellcode despite whether or not it would cause a buffer overflow in the target binary. - -If the sequence of bytes contains a sequence similar to that used in malicious shellcode, the entire byte sequence is flagged and a follow-on technique may be invoked. - -## Considerations - -### False Negatives -If the shellcode instructions are far apart, simple implementations might not detect the shellcode. - -Due to the nature of assembly instructions not having a defined start or end, implementations which do not process all start sequences (for example, when they a find byte sequence of interest, continue scanning forwards from the end of it) might not detect the shellcode. - -This technique might not detect more complex or obfuscated instructions. For that purpose, Dynamic Analysis or Emulated File Analysis could assist by analyzing the actual instruction function. - -This technique may not detect self-modifying code. To make it harder for a process to modify itself, Process Segment Execution Prevention should be used, while noting its considerations. - -This technique might not detect malicious shellcode which reuses instructions in the target binary for malicious effect, as memory references in the presumed assembly code are not dereferenced. Dynamic Analysis and Emulated File Analysis, when set up properly to fork from the running target binary, might detect this. Process Segment Execution Prevention combined with Segment Address Offset Randomization frequently makes introduction of shellcode through overwriting a saved return pointer more difficult. Call stack depth analysis might detect excessive reuse of instructions in the target binary. Shadow Stack Frames might detect that a stack frame's return address has changed and Stack Frame Canary Verification might detect that the stack frame's return address was overwritten. Other heuristic methods might detect jump-oriented programming shellcode. - -With inserting code directly, that it is not a buffer overflow, and just some place where code is executed either to a file or a write-what-where, the buffer overflow mitigations do not help. Behavioral analysis could detect this, or proper access control could mitigate this. - -### False Positives - -Byte sequences containing code that is never used as machine code are still analyzed and flagged for anomalies, and [eventually](http://mathforum.org/library/drmath/view/55871.html), it is likely that an attack sequence will arise from the sheer volume of bytes transmitted.""" ; - :kb-reference :Reference-Network-BasedBufferOverflowDetectionByExploitCodeAnalysis_InformationSecurityResearchCentre, - :Reference-Network-levelPolymorphicShellcodeDetectionUsingEmulation ; - :synonym "Shellcode Transmission Detection" . - -:C4.5 a owl:Class, - owl:NamedIndividual ; - rdfs:label "C4.5" ; - rdfs:subClassOf :DecisionTree ; - :d3fend-id "D3A-C4." ; - :definition "C4.5 is an algorithm that is strongly based off ID3. It creates decision trees the same way as ID3. C4.5 improves on several aspects of ID3, including handling discreet variables, handling training data with missing values, and has the ability to automatically prune the decision trees it creates." ; - :kb-article """## References -C4.5 algorithm. Wikipedia. [Link](https://en.wikipedia.org/wiki/C4.5_algorithm).""" ; - :todo "Review: Definition" . - -:C5.0 a owl:Class, - owl:NamedIndividual ; - rdfs:label "C5.0" ; - rdfs:subClassOf :DecisionTree ; - :d3fend-id "D3A-C5." ; - :definition "C5.0 is the next version of C4.5, which in turn is the upgrade from ID3. The only difference between C5.0 and C4.5 is some improvements made to C5.0." ; - :kb-article """## References -C4.5 algorithm. Wikipedia. [Link](https://en.wikipedia.org/wiki/C4.5_algorithm).""" . - -:CACertificateFile a owl:Class ; - rdfs:label "CA Certificate File" ; - rdfs:subClassOf :CertificateFile ; - :definition "A file containing a digital certificate issued by a certificate authority (CA). Certificate authorities store, issue, and sign digital certificates used as part of the public key infrastructure." ; - rdfs:seeAlso , - . - -:CacheMemory a owl:Class ; - rdfs:label "Processor Cache Memory" ; - rdfs:subClassOf :PrimaryStorage, - [ a owl:Restriction ; - owl:onProperty :accessed-by ; - owl:someValuesFrom :CentralProcessingUnit ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ProcessSegment ], - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :CacheMemory ] ; - rdfs:isDefinedBy ; - :definition "Cache memory is temporary storage that is more readily available to the processor than the computer's main memory source, located between the main memory and the processor. It is typically either integrated directly into the CPU chip (level 1 cache) or placed on a separate chip with a bus interconnect with the CPU (level 2 cache)." ; - rdfs:seeAlso . - -:CallStack a owl:Class ; - rdfs:label "Call Stack" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :StackFrame ] ; - rdfs:isDefinedBy ; - :definition "In computer science, a call stack is a stack data structure that stores information about the active subroutines of a computer program. This kind of stack is also known as an execution stack, program stack, control stack, run-time stack, or machine stack, and is often shortened to just \"the stack\". Although maintenance of the call stack is important for the proper functioning of most software, the details are normally hidden and automatic in high-level programming languages. Many computer instruction sets provide special instructions for manipulating stacks." . - -:CanopyClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Canopy Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-CC" ; - :definition "The canopy clustering algorithm is an unsupervised pre-clustering algorithm often used as preprocessing step for the K-means algorithm or the Hierarchical clustering algorithm. It is intended to speed up clustering operations on large data sets." ; - :kb-article """## References -Wikipedia. (n.d.). Canopy clustering algorithm. [Link](https://en.wikipedia.org/wiki/Canopy_clustering_algorithm)""" . - -:Capability a owl:Class ; - rdfs:label "Capability" ; - rdfs:subClassOf :ExternalThing ; - rdfs:isDefinedBy ; - :comment """Source Definitions for DoDAF-DM2 Term: "(JCIDS): The ability to achieve a desired effect under specified standards and conditions through combinations of means and ways to perform a set of tasks. -(DoDAF/CADM): An ability to achieve an objective. (DDDS Counter (333/1)(A)) -(JC3IEDM): The potential ability to do work, perform a function or mission, achieve an objective, or provide a service. -(MODAF): Capabilities in the MODAF sense are specifically not about equipment but are a high level specification of the enterprise’s ability. A capability is a classification of some ability - and can be specified regardless of whether the enterprise is currently able to achieve it. For example, one could define a capability “Manned Interplanetary Travel” which no-one can currently achieve, but which may be planned or aspired to. Capabilities in MODAF are not time-dependent - once defined they are persistent. It is only the Capability Requirement that changes. -(NAF): The ability of one or more resources to deliver a specified type of effect or a specified course of action. (GEN TERM) -(NAF): A high level specification of the enterprise's ability. (MM) -(JCS 1-02): The ability to execute a specified course of action. (A capability may or may not be accompanied by an intention.) -(Webster's): 1. The quality of being capable; ability. 2. A talent or ability that has potential for development or use. 3. The capacity to be used, treated, or developed for a specific purpose. -(Merriam-Webster's Eleventh Collegiate Dictionary): A feature or factor capable of development: POTENTIALITY. 3. The facility or potential for an indicated use or deployment. -(Joint Publication 1-02, Dictionary of Military and Associated Terms, 12 Apr 2001 (as amended trhough 30 May 2008) ): The ability to exercise a specified course of action (A capability may or may not be accompanied by an intention) -(Dictionary.com): The quality of being capable; capacity; ability: His capability was unquestionable. The ability to undergo or be affected by a given treatment or action: the capability of glass in resisting heat. Usually, capabilities. qualities, abilities, features, etc., that can be used or developed; potential: Though dilapidated, the house has great capabilities -(Wiktionary): The power or ability to generate an outcome -(www.staffordshireprepared.gov.uk/glossary/): Originally a military term which includes the aspects of personnel, equipment, training, planning and operational doctrine. Now used to mean a demonstrable capacity or ability to respond to and recover from a particular threat or hazard." - -CJCS Guide 3401D: https://www.jcs.mil/Portals/36/Documents/Library/Handbooks/g3401.pdf?ver=2016-02-05-175742-457 : "capability. The ability to execute a specified course of action. (A capability may or may not be accompanied by an intention.)" - -USG Compendium of Interagency and Associated Terms: https://www.jcs.mil/Portals/36/Documents/Doctrine/dictionary/repository/usg_compendium.pdf?ver=2019-11-04-174229-423 "capability - means to accomplish a mission, function, or objective." DHS, DHS Lexicon, Terms, Mar 17; - -USG Compendium of Interagency and Associated Terms: https://www.jcs.mil/Portals/36/Documents/Doctrine/dictionary/repository/usg_compendium.pdf?ver=2019-11-04-174229-423 "capability - Provides the means to accomplish a mission or function resulting from the performance of one or more critical tasks, under specified conditions, to target levels of performance. A capability may be delivered with any combination of properly planned, organized, equipped, trained, and exercised personnel that achieves the desired outcome." -DHHS, National Health Security Review 2010- 2014, Terms, Jan 17""" ; - rdfs:seeAlso . - -:CAPEC-663 a :CommonAttackPattern, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Exploitation of Transient Instruction Execution" ; - rdfs:subClassOf :CommonAttackPattern ; - rdfs:isDefinedBy ; - :capec-id "CAPEC-553" . - -:CAPECThing a owl:Class ; - rdfs:label "CAPEC Thing" ; - rdfs:subClassOf :ExternalThreatModelThing . - -:CART a owl:Class, - owl:NamedIndividual ; - rdfs:label "CART" ; - rdfs:subClassOf :DecisionTree ; - :d3fend-id "D3A-CAR" ; - :definition "The CART algorithm is a type of classification algorithm that is required to build a decision tree on the basis of Gini’s impurity index." ; - :kb-article """## References -Classification and Regression Tree (CART) Algorithm. Analytics Steps. [Link](https://www.analyticssteps.com/blogs/classification-and-regression-tree-cart-algorithm).""" . - -:CCIControl a owl:Class ; - rdfs:label "CCI Control" ; - rdfs:subClassOf :ExternalControl, - [ a owl:Restriction ; - owl:onProperty :control-name ; - owl:someValuesFrom xsd:string ], - [ a owl:Restriction ; - owl:onProperty :member-of ; - owl:someValuesFrom :ControlCorrelationIdentifierCatalog ], - [ a owl:Restriction ; - owl:onProperty :published ; - owl:someValuesFrom xsd:dateTime ] . - -:CentralProcessingUnit a owl:Class ; - rdfs:label "Central Processing Unit" ; - rdfs:subClassOf :Processor, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ProcessorRegister ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :CacheMemory ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :MemoryManagementUnit ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :MemoryProtectionUnit ] ; - rdfs:isDefinedBy ; - :definition "A central processing unit (CPU), also called a central processor, main processor or just processor, is the electronic circuitry that executes instructions comprising a computer program. The CPU performs basic arithmetic, logic, controlling, and input/output (I/O) operations specified by the instructions in the program. This contrasts with external components such as main memory and I/O circuitry, and specialized processors such as graphics" ; - :synonym "Central Processor", - "CPU", - "Main Processor" . - -:CentralTendency a owl:Class, - owl:NamedIndividual ; - rdfs:label "Central Tendency" ; - rdfs:subClassOf :DescriptiveStatistics ; - :d3fend-id "D3A-CT" ; - :definition "A measure of central tendency ) is a summary measure that attempts to describe a whole set of data with a single value that represents the middle or centre of its distribution." ; - :kb-article """## References -Australian Bureau of Statistics. (n.d.). Measures of Central Tendency. [Link](https://www.abs.gov.au/statistics/understanding-statistics/statistical-terms-and-concepts/measures-central-tendency) - -Wikipedia. (n.d.). Central tendency. [Link](https://en.wikipedia.org/wiki/Central_tendency)""" . - -:Centroid-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Centroid-based Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-CBC" ; - :definition "Centroid-based clustering organizes the data into non-hierarchical clusters, in contrast to hierarchical clustering defined below. K-means is the most widely-used centroid-based clustering algorithm. Centroid-based algorithms are efficient but sensitive to initial conditions and outliers." ; - :kb-article """## References -Google Developers. (n.d.). Clustering Algorithms. [Link](https://developers.google.com/machine-learning/clustering/clustering-algorithms)""" . - -:Certificate a owl:Class ; - rdfs:label "Certificate" ; - skos:altLabel "Public Key Certificate" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Identifier ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :PublicKey ] ; - rdfs:isDefinedBy ; - :definition "In cryptography, a public key certificate, also known as a digital certificate or identity certificate, is an electronic document used to prove the ownership of a public key. The certificate includes information about the key, information about the identity of its owner (called the subject), and the digital signature of an entity that has verified the certificate's contents (called the issuer). If the signature is valid, and the software examining the certificate trusts the issuer, then it can use that key to communicate securely with the certificate's subject. In email encryption, code signing, and e-signature systems, a certificate's subject is typically a person or organization. However, in Transport Layer Security (TLS) a certificate's subject is typically a computer or other device." ; - rdfs:seeAlso ; - :todo "Since we say it contains a PK, must be PKC. Rewire certificate hierarchy to include attribute/authorization certificates more generally. Push this down to specifically represent PKCs. Also key and authority issues may require parallel adjustments http://dbpedia.org/resource/Authorization_certificate" . - -:Certificate-basedAuthentication a :Certificate-basedAuthentication, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Certificate-based Authentication" ; - rdfs:subClassOf :AgentAuthentication, - [ a owl:Restriction ; - owl:onProperty :reads ; - owl:someValuesFrom :Certificate ] ; - :d3fend-id "D3-CBAN" ; - :definition "Requiring a digital certificate in order to authenticate a user." ; - :kb-article """## How it works - -Certificate-based authentication is a security mechanism that uses digital certificates to verify the identity of a user, device, or server before granting access to a network or system. This method relies on a pair of cryptographic keys: a public key and a private key. - -## Considerations - -* Private Key Protection: Ensure that private keys are securely stored and protected against unauthorized access. -* Certificate Revocation: Implement a robust process for revoking certificates if they are compromised or no longer needed. -* Man-in-the Middle Attacks: Use mutual authentication to mitigate the risk of these attacks.""" ; - :kb-reference :Reference-FederalPublicKeyInfrastructure101 . - -:CertificateAnalysis a :CertificateAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Certificate Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :CertificateFile ] ; - :d3fend-id "D3-CA" ; - :definition "Analyzing Public Key Infrastructure certificates to detect if they have been misconfigured or spoofed using both network traffic, certificate fields and third-party logs." ; - :kb-article """## How it works -Certificate Analysis ensures that the data elements of the certificate are current and anchored in a known trust model. Certificate authorities, revocation lists, and third-party secure logs are used in the analysis. Analysis includes detection of server impersonation, phishing domains, and forged certificates. - -TLS certificates are designed to expire to ensure that the cryptographic keys are forced to be changed on a regular basis. The certificates in the trust path also expire and can cause a break in the trust chain. This means that even if a server certificate is updated correctly, intermediate certificates can expire and the trust chain is not maintained. This can cause services to become unavailable.""" ; - :kb-reference :Reference-SecuringWebTransactions . - -:CertificateFile a owl:Class ; - rdfs:label "Certificate File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Certificate ] ; - rdfs:isDefinedBy ; - :definition "A file containing a digital certificate. In cryptography, a public key certificate (also known as a digital certificate or identity certificate) is an electronic document used to prove the ownership of a public key. The certificate includes information about the key, information about its owner's identity, and the digital signature of an entity that has verified the certificate's contents are correct. If the signature is valid, and the person examining the certificate trusts the signer, then they know they can use that key to communicate with its owner." . - -:CertificatePinning a :CertificatePinning, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Certificate Pinning" ; - rdfs:subClassOf :CredentialHardening, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :PublicKey ], - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :Certificate ] ; - :d3fend-id "D3-CP" ; - :definition "Persisting either a server's X.509 certificate or their public key and comparing that to server's presented identity to allow for greater client confidence in the remote server's identity for SSL connections." ; - :kb-article """## How it works -Pinning allows for a trusted copy of a certificate or public key to be associated with a server and thus reducing the likelihood of frequently visited sites being subjected to man-in-the-middle attacks. Certificates or public keys can be pinned after a trusted connection has been established or the pinning can be preloaded in an application, which is the preferred method for mobile applications. - -Pinning can take the form of certificate pinning or public key pinning. - -## Forms of Pinning -* Certificate Pinning (CP) allows for the client to verify the X.509 certificate with a preloaded certificate. Typically, this is involves storing a hash of the certificate and using the stored hash for comparison to the hash of the certificate submitted during the SSL handshake. - -* Public Key Pinning (PKP) requires the extraction of a public key from server's certificate. The stored public key is compared to the server's presented public key. A public key is expected to rotate less frequently than an X.509 certificate and is generally favored over certificate pinning. - -An extension of PKP is Subject Public Key Information Pinning (SPKI) includes public key pinning plus additional information for SSL connections. The additional information can include preferred algorithms. - -## Considerations - -* With pinned certificates whenever a server updates its certificate, the pinned certificates will also need to be updated -* With pinned public keys the extracted key may be subject to key refresh policies but much less frequently -* Servers can become unavailable if pinned objects are set and not updated with the rotated identities. This may require a pinning strategy to be developed. -* The application of this technique within web browser applications has been [deprecated](https://developer.mozilla.org/en-US/docs/Web/HTTP/Public_Key_Pinning) by popular web browser developers. They now favor certificate analysis via public certificate transparency logs, and the EXPECT-CT HTTP header.""" ; - :kb-reference :Reference-CertificateAndPublicKeyPinning, - :Reference-End-to-endCertificatePinning, - :Reference-PublicKeyPinningExtensionForHTTP . - -:CertificateRotation a :CertificateRotation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Certificate Rotation" ; - rdfs:subClassOf :CredentialRotation, - [ a owl:Restriction ; - owl:onProperty :regenerates ; - owl:someValuesFrom :Certificate ] ; - :d3fend-id "D3-CERO" ; - :definition "Certificate rotation involves replacing digital certificates and their private keys to maintain cryptographic integrity and trust, mitigating key compromise risks and ensuring continuous secure communications." ; - :kb-article """## How it works - -Certificate rotation should be performed when: -- Any certificate expires. -- A new CA authority is substituted for the old, thus requiring a replacement root certificate. -- New or modified constraints need to be imposed on one or more certificates. -- A security breach has occurred. - -Considerations: -- Managing certificate rotation across an enterprise can be complex. Automated solutions, sold by multiple vendors, should be considered to manage this complexity.""" ; - :kb-reference :Reference-PasswordandKeyRotation-SSH ; - rdfs:seeAlso . - -:CertificateTrustStore a owl:Class ; - rdfs:label "Certificate Trust Store" ; - rdfs:subClassOf :TrustStore, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Certificate ] ; - :definition "A certificate truststore is used to store public certificates used to authenticate clients by the server for an SSL connection." ; - rdfs:seeAlso , - . - -:ChangeDefaultPassword a :ChangeDefaultPassword, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Change Default Password" ; - rdfs:subClassOf :StrongPasswordPolicy, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :OTController ], - [ a owl:Restriction ; - owl:onProperty :strengthens ; - owl:someValuesFrom :Password ], - [ a owl:Restriction ; - owl:onProperty :strengthens ; - owl:someValuesFrom :UserAccount ] ; - :d3fend-id "D3-CDP" ; - :definition "Changing the default password means replacing the factory-set credentials with a strong, unique password before the device is deployed, preventing unauthorized access." ; - :kb-article """## How it works -Change the default password as soon as a new device is received. The default credentials are normally documented in an instruction manual that is either packaged with the device, published online through official means, or published online through unofficial means. - -## Considerations -* These should be changed before a device is brought online so that an adversary cannot take advantage of these default credentials. -* Strong and complex passwords are preferred if the technology allows.""" ; - :kb-reference :Reference-CPGChecklist, - :Reference-GuideToOTSecurity, - :Reference-MITREATTACKPasswordPolicies . - -:ChatroomClient a owl:Class ; - rdfs:label "Chatroom Client" ; - skos:altLabel "Chat Room Client" ; - rdfs:subClassOf :CollaborativeSoftware ; - rdfs:isDefinedBy ; - :definition "Client software used to describe conduct any form of synchronous conferencing, occasionally even asynchronous conferencing. The term can thus mean any technology ranging from real-time online chat and online interaction with strangers (e.g., online forums) to fully immersive graphical social environments." . - -:ChildProcess a owl:Class ; - rdfs:label "Child Process" ; - rdfs:subClassOf :Process ; - rdfs:isDefinedBy ; - :definition "A child process in computing is a process created by another process (the parent process). This technique pertains to multitasking operating systems, and is sometimes called a subprocess or traditionally a subtask. There are two major procedures for creating a child process: the fork system call (preferred in Unix-like systems and the POSIX standard) and the spawn (preferred in the modern (NT) kernel of Microsoft Windows, as well as in some historical operating systems)." ; - rdfs:seeAlso . - -:Classification a owl:Class, - owl:NamedIndividual ; - rdfs:label "Classification" ; - rdfs:subClassOf :SupervisedLearning ; - :d3fend-id "D3A-CLA" ; - :definition "Classification uses an algorithm to accurately assign test data into specific categories." ; - :kb-article """## How it works -Classification recognizes specific entities within the dataset and attempts to draw some conclusions on how those entities should be labeled or defined. Common classification algorithms are linear classifiers, support vector machines (SVM), decision trees, k-nearest neighbor, and random forest, which are described in more detail below. - -## Considerations: - -There are many different types of classification algorithms for modeling classification predictive modeling problems. - -There is no single theory on how to map algorithms onto problem types; instead, it is generally recommended that a practitioner use controlled experiments and discover which algorithm and algorithm configuration results in the best performance for a given classification task. - -## Key Test Considerations - -- **Machine Learning**: - - - **Verify the dataset quality**: Check the data to make sure it is - free of errors. Quantify the degree of missing values, - outliers, and noise in the data collection. If the data quality - is low, it may be difficult or impossible to create models and - systems with the desired performance. - - - **Verify development datasets are representative** of expected - operational environment and data collection means. Compare - distributions of dataset features and labels with exploratory - data analysis and assess the difference in tests on training - data and tests on evaluation data (where the evaluation data - must be drawn from a representative dataset.) - - - **Use software libraries**: and tools built for ML where possible, so - that the underlying code is verified by prior use.** - - - **Diagnose model errors with domain SMEs**: Have problem domain - SMEs investigate model errors for conditions for which the model - may underperform and suggest refinements. - -- **Classification**: - - - **Use Standard Classification Performance Measures**: Not all of - the following may be necessary, but should be considered for - both verification (developmental test) and operational test - stages use: - - - **Accuracy**: The fraction of predictions that were corret. - - - **Precision**: The proportion of positive identifications that were correct. - - - **Recall**: The proportion of actual positive cases identified correctly. - - - **F-Measure**: Combines the preicion and recall into a single - score. It is the harmonic mean of the precision and recall. - - - **Receiver Operating Characteristic (ROC) Curve**: A ROC curve - shows the performance of a classification model at all - classification thresholds. It graphs the True Positive Rate - over the False Positive Rate. - - - **Area Under the ROC Curve (AUC)**: This measures the - two-dimensional area under the ROC Curve. AUC is - scale-invariant and classification-threshold invariant. - - - **ROC TP vs FP points**: In addition to a specific AUC score, - the performance at points - - - **Confusion Matrix**: A confusion matrix is a table layout that - allows the visualization of the performance of an - algorithm. Each row of the matrix represents the instances in - an actual class while each column represents the instances in - a predicted class, or vice versa. It is a special kind of - contingency table, with two dimensions ("actual" and - "predicted"), and identical sets of "classes" in both - dimensions (each combination of dimension and class is a - variable in the contingency table.) - - - **Prediction Bias**: The difference between the average of the - predicted labels and the average of the labels in the data - set. One should check for prediction bias when evaluating the - classifier's results. Causes of bias can include: - - - **Noisy data set**: Errors in original data can as the - collection method may have an underlying bias. - - - **Processing bug**: Errors in the data pipeline can - introduce bias. - - - **Biased training sample (unbalanced samples)**: Model - parameters may be skewed towards majority classes. - - - **Overly strong regularization**: Model may be underfitting - model and too simple. - - - **Proxy variables**: Model features may be highly - correlated. - - - **Overfitting and Underfitting**: Overfitting occurs when the the - model built corresponds too closely or exactly to a particular - set of data, and thus may fail to fit to predict additional data - reliably. An overfitted model is a mathematical model that - contains more parameters than can be justified by the data. - Underfitting occurs when the model built does adequately capture - the patterns in the data. As an example, a linear model will - underfit a non-linear dataset. - -## Platforms, Tools, or Libraries: - -- **Python**: - - - **scikit-learn**: Is a free software machine learning library for - Python and includes features for classification. - - - **TensorFlow**: is an end-to-end source machine learning - platform. - - - **Keras**: is an open-source library that provides a Python API - designed to enable fast experimentation with deep neural networks. - - - **PyTorch**: Is a machine learning framework based on the Torch - library. - -- **R**: - - - **caret**: Classification And REgression Training package contains - functions to streamline model training for complex regression - and classification problems. - - - **randomForest**: Implementation of classification and regression - based on forest of trees. - -## References - -1. Supervised Learning. IBM. -[Link](https://www.ibm.com/topics/supervised-learning). - -1. Types of Classification in Machine Learning. Machine Learning Mastery. -[Link](https://machinelearningmastery.com/types-of-classification-in-machine-learning/). - -1. Google. (18 July 2022). Classification: Precision and Recall. -[Link](https://developers.google.com/machine-learning/crash-course/classification/precision-and-recall). - -1. Wikipedia. (18 Aug 2023). Overfitting. -[Link](https://en.wikipedia.org/wiki/Overfitting). - -1. Wikipedia. (19 Aug 2023). Confusion matrix. -[Link](https://en.wikipedia.org/wiki/Confusion_matrix).""" . - -:Classifying a owl:Class ; - rdfs:label "Classifying" ; - rdfs:subClassOf :AnalyticalPurpose . - -:Client-serverPayloadProfiling a :Client-serverPayloadProfiling, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Client-server Payload Profiling" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id "D3-CSPP" ; - :definition "Comparing client-server request and response payloads to a baseline profile to identify outliers." ; - :kb-article """## How it works -Profiling request and response payloads across multiple clients to a single server to develop a baseline of their characteristics. May take into account request/response sizes, entropy, frequency, and rhythm. Finally, identify outliers as they may indicate a malicious payload delivery and subsequent server exploitation. - - -## Considerations -* Collecting metrics to establish a profile can be challenging since user behavior can change easily. -* Employees may work different hours or inconsistent schedules which will cause false positives. -* Collection of network activity to generate metrics is a computationally intensive process. -* Users may log into different workstations which may cause false positives.""" ; - :kb-reference :Reference-MethodAndSystemForDetectingMaliciousPayloads_VectraNetworksInc . - -:ClientApplication a owl:Class ; - rdfs:label "Client Application" ; - rdfs:subClassOf :Application ; - rdfs:isDefinedBy ; - :definition "A client application is software that accesses a service made available by a server. The server is often (but not always) on another computer system, in which case the client accesses the service by way of a network. The term applies to the role that programs or devices play in the client-server model" ; - rdfs:seeAlso :T1554 . - -:ClientComputer a owl:Class ; - rdfs:label "Client Computer" ; - rdfs:subClassOf :Host ; - rdfs:isDefinedBy ; - :definition "A client computer is a host that accesses a service made available by a server. The server is often (but not always) on another computer system, in which case the client accesses the service by way of a network." ; - rdfs:seeAlso . - -:Clipboard a owl:Class ; - rdfs:label "Clipboard" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "The clipboard is a buffer that some operating systems provide for short-term storage and transfer within and between application programs. The clipboard is usually temporary and unnamed, and its contents reside in the computer's RAM. The clipboard is sometimes called the paste buffer. Windows, Linux and macOS support a single clipboard transaction. Each cut or copy overwrites the previous contents. Normally, paste operations copy the contents, leaving the contents available in the clipboard for further pasting." . - -:Cloud-basedDatabaseApplication a owl:Class ; - rdfs:label "Cloud-based Database Application" ; - rdfs:subClassOf :DatabaseServiceApplication, - [ a owl:Restriction ; - owl:onProperty :provider ; - owl:someValuesFrom :CloudServiceProvider ] ; - :definition "A database application where the underlying infrastructure is managed by a third-party cloud provider. Examples include DynamoDB, Firestore, and CosmosDB." ; - :synonym "Serverless Database Application" . - -:CloudConfiguration a owl:Class ; - rdfs:label "Cloud Configuration" ; - skos:altLabel "Cloud Configuration Information" ; - rdfs:subClassOf :ConfigurationResource ; - :definition "Information used to configure the services, parameters, and initial settings for a virtual server instance running in a cloud service." . - -:CloudConfigurationModificationEvent a owl:Class ; - rdfs:label "Cloud Configuration Modification Event" ; - rdfs:subClassOf :ConfigurationModificationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :CloudConfiguration ] ; - :definition "An event that updates cloud-hosted resource configurations such as IAM policies, virtual network constructs, storage settings, or managed-service parameters; impacting resource provisioning, access control, functionality, or compliance." . - -:CloudInstanceMetadata a owl:Class ; - rdfs:label "Cloud Instance Metadata" ; - rdfs:subClassOf :CloudConfiguration ; - :definition "Cloud instance metadata is configuration information on the instance and users of the instance. This includes such information as security groups, public ip addresses, and private addresses, public keys configured, and event rotating security keys. User data can contain initialization scripts, variables, passwords, and more." ; - rdfs:seeAlso . - -:CloudServiceAuthentication a owl:Class ; - rdfs:label "Cloud Service Authentication" ; - rdfs:subClassOf :WebAuthentication ; - :definition "A request-response comprising a user credential presentation to a system and a verification response where the verifying party is a cloud service." . - -:CloudServiceAuthorization a owl:Class ; - rdfs:label "Cloud Service Authorization" ; - rdfs:subClassOf :Authorization ; - :definition "Cloud authorization is the function of specifying access rights to cloud resources." . - -:CloudServiceProvider a owl:Class ; - rdfs:label "Cloud Service Provider" ; - rdfs:subClassOf :ServiceProvider ; - :definition "A cloud service provider delivers scalable and distributed computing resources over a network, enabling clients to access infrastructure, platforms, and applications remotely." . - -:CloudServiceSensor a owl:Class ; - rdfs:label "Cloud Service Sensor" ; - rdfs:subClassOf :CyberSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :CloudServiceAuthentication ], - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :CloudServiceAuthorization ] ; - :definition "Senses data from cloud service platforms. Including data from cloud service authentications, authorizations, and other activities." . - -:CloudStorage a owl:Class, - owl:NamedIndividual ; - rdfs:label "Cloud Storage" ; - rdfs:subClassOf :SecondaryStorage ; - rdfs:isDefinedBy ; - :definition "Cloud storage is storage held within a computing cloud." ; - rdfs:seeAlso . - -:CloudUserAccount a owl:Class ; - rdfs:label "Cloud User Account" ; - rdfs:subClassOf :UserAccount ; - :definition "A user account on a given host is a local user account for a given cloud and specified resources within that cloud." . - -:ClusterAnalysis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Cluster Analysis" ; - rdfs:subClassOf :UnsupervisedLearning ; - :d3fend-id "D3A-CA" ; - :definition "Cluster analysis or clustering is the task of grouping a set of objects in such a way that objects in the same group (called a cluster) are more similar (in some sense) to each other than to those in other groups (clusters)." ; - :kb-article """## References -Cluster analysis. (n.d.). Wikipedia. [Link](https://en.wikipedia.org/wiki/Cluster_analysis)""" . - -:Clustering a owl:Class ; - rdfs:label "Clustering" ; - rdfs:subClassOf :Summarizing . - -:CodeAnalyzer a owl:Class, - owl:NamedIndividual ; - rdfs:label "Code Analyzer" ; - skos:altLabel "Program Analysis Tool" ; - rdfs:subClassOf :DeveloperApplication ; - :definition "Code analyzers automatically analyze the composition or behavior of computer programs regarding a property such as correctness, robustness, security, and safety. Program analysis can be performed without executing the program (static program analysis), during runtime (dynamic program analysis) or in a combination of both." ; - rdfs:seeAlso ; - :todo "Damn these wikipedia articles are present, but not that great; riffing and borrowing parts, not exact defs." . - -:CodecApplication a owl:Class ; - rdfs:label "Codec Application" ; - rdfs:subClassOf :UserApplication, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :CodecLibrary ] ; - :definition "An application that encodes and decodes digital data." . - -:CodecLibrary a owl:Class ; - rdfs:label "Codec Library" ; - rdfs:subClassOf :SoftwareLibrary ; - :definition "A software component that encodes or decodes a data stream of signal." . - -:CodeRepository a owl:Class ; - rdfs:label "Code Repository" ; - skos:altLabel "Repository", - "Version Control Repository" ; - rdfs:subClassOf :Database ; - rdfs:isDefinedBy ; - :definition "A code repository is a form of database where code, typically source code, is stored and managed. In revision control systems, a repository is a data structure that stores metadata for a set of files or directory structure. Depending on whether the version control system in use is distributed like (Git or Mercurial) or centralized like (Subversion, CVS, or Perforce), the whole set of information in the repository may be duplicated on every user's system or may be maintained on a single server." . - -:CoefficientOfVariation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Coefficient of Variation" ; - rdfs:subClassOf :Variability ; - :d3fend-id "D3A-COV" ; - :definition """The coefficient of variation (CV), also known as relative standard deviation (RSD), is a standardized measure of dispersion of a probability distribution or frequency distribution. - -The coefficient of variation (CV) is defined as the ratio of the standard deviation to the mean .""" ; - :kb-article """## References -Wikipedia. (n.d.). Coefficient of variation. [Link](https://en.wikipedia.org/wiki/Coefficient_of_variation)""" ; - :synonym "Relative Standard Deviation", - "RSD" . - -:CollaborativeSoftware a owl:Class ; - rdfs:label "Collaborative Software" ; - rdfs:subClassOf :UserApplication ; - rdfs:isDefinedBy ; - :definition "Collaborative software or groupware is application software designed to help people working on a common task to attain their goals. One of the earliest definitions of groupware is \"intentional group processes plus software to support them\". Collaborative software is a broad concept that overlaps considerably with computer-supported cooperative work (CSCW). According to Carstensen and Schmidt (1999) groupware is part of CSCW. The authors claim that CSCW, and thereby groupware, addresses \"how collaborative activities and their coordination can be supported by means of computer systems.\"" . - -:CollectionTechnique a owl:Class ; - rdfs:label "Collection Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0009 ] ; - :definition "The adversary is trying to gather data of interest to their goal." . - -:CombinationLock a owl:Class ; - rdfs:label "Combination Lock" ; - rdfs:subClassOf :PhysicalLock, - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :Password ] ; - rdfs:isDefinedBy ; - :definition "A combination lock is a type of locking device in which a sequence of symbols, usually numbers, is used to open the lock. " ; - rdfs:seeAlso "Federal Specification FL-L-2937" . - -:Command a owl:Class ; - rdfs:label "Command" ; - rdfs:subClassOf :DigitalInformation ; - rdfs:isDefinedBy ; - :definition "A directive (i.e., an instruction specifying a procedure) which, when issued to a computer system, software, or hardware component, causes that entity to execute a specific action, operation, or computation." . - -:CommandAndControlTechnique a owl:Class ; - rdfs:label "Command and Control Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0011 ] ; - :definition "The adversary is trying to communicate with compromised systems to control them." . - -:CommandHistoryLog a owl:Class ; - rdfs:label "Command History Log" ; - rdfs:subClassOf :EventLog ; - :definition "A log of commands run in an operating system shell." ; - rdfs:seeAlso :CommandLineInterface, - . - -:CommandHistoryLogFile a owl:Class ; - rdfs:label "Command History Log File" ; - rdfs:subClassOf :LogFile, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :CommandHistoryLog ] ; - :definition "A command history log file is a file containing a command history, which the history of commands run in an operating system shell." ; - rdfs:seeAlso . - -:CommandLineInterface a owl:Class ; - rdfs:label "Command Line Interface" ; - skos:altLabel "CLI", - "Command-line Interface", - "CUI" ; - rdfs:subClassOf :UserInterface ; - rdfs:isDefinedBy ; - :definition "A command-line interface or command language interpreter (CLI), also known as command-line user interface, console user interface, and character user interface (CUI), is a means of interacting with a computer program where the user (or client) issues commands to the program in the form of successive lines of text (command lines). Command-line interfaces to computer operating systems are less widely used by casual computer users, who favor graphical user interfaces. Programs with command-line interfaces are generally easier to automate via scripting." . - -:CommonAttackPattern a owl:Class ; - rdfs:label "Common Attack Pattern" ; - rdfs:subClassOf :CAPECThing ; - :definition "A common attack pattern that is in the CAPEC knowledge base." . - -:Compiler a owl:Class ; - rdfs:label "Compiler" ; - rdfs:subClassOf :BuildTool, - [ a owl:Restriction ; - owl:onProperty :reads ; - owl:someValuesFrom :CompilerConfigurationFile ] ; - rdfs:isDefinedBy ; - :definition "In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name \"compiler\" is primarily used for programs that translate source code from a high-level programming language to a lower level language (e.g., assembly language, object code, or machine code) to create an executable program." . - -:CompilerConfigurationFile a owl:Class ; - rdfs:label "Compiler Configuration File" ; - rdfs:subClassOf :ApplicationConfigurationFile ; - :definition "A file containing Information used to configure the parameters and initial settings for a compiler." . - -:ComputeDeviceEvent a owl:Class ; - rdfs:label "Compute Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Processor ] ; - :definition "An event capturing the operation, state, or performance of computational hardware, such as CPUs, GPUs, or accelerators. These events reflect processing capacity changes, utilization anomalies, or device health." . - -:ComputerCabinet a owl:Class ; - rdfs:label "Computer Cabinet" ; - rdfs:subClassOf :ComputerEnclosure ; - :definition "A computer cabinet houses one or more computers and can range in size and material." ; - rdfs:seeAlso "https://dbpedia.org/page/Computer_cabinet", - "IEEE C37.20.2" . - -:ComputerCase a owl:Class ; - rdfs:label "Computer Case" ; - rdfs:subClassOf :ComputerEnclosure ; - :definition "A computer case is a computer enclosure which encloses a single primary computer." ; - rdfs:seeAlso "https://dbpedia.org/page/Computer_case" . - -:ComputerEnclosure a owl:Class ; - rdfs:label "Computer Enclosure" ; - rdfs:subClassOf :PhysicalArtifact, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ComputerPlatform ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :PhysicalLock ] ; - :definition "A part providing protection of computer equipment against certain external influences and protects against direct contact." ; - rdfs:seeAlso "[IEV 826-03-12]", - . - -:ComputerNetworkNode a owl:Class ; - rdfs:label "Computer Network Node" ; - rdfs:subClassOf :ComputerPlatform, - :NetworkNode ; - :definition "A network node running on a computer platform." . - -:ComputerPlatform a owl:Class ; - rdfs:label "Computer Platform" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Firmware ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :HardwareDevice ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OperatingSystem ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :SystemPlatformVariable ] ; - :definition "Platform includes the hardware and OS. The term computing platform can refer to different abstraction levels, including a certain hardware architecture, an operating system (OS), and runtime libraries. In total it can be said to be the stage on which computer programs can run." ; - rdfs:seeAlso ; - :synonym "Computing Platform" ; - :todo "Future work might identify an application platform like Chrome, however Chrome OS would be considered a platform with respect to cybersecurity architects." . - -:ComputingImage a owl:Class ; - rdfs:label "Computing Image" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A computing image captures the full state or contents of a computing entity, such as a process or volume." . - -:ComputingServer a owl:Class ; - rdfs:label "Computing Server" ; - rdfs:subClassOf :Server ; - rdfs:isDefinedBy ; - :definition "A compute server is a system specifically designed to undertake large amounts of computation, usually but not necessarily in a client/server environment." . - -:ComputingSnapshot a owl:Class ; - rdfs:label "Computing Snapshot" ; - skos:altLabel "Snapshot" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In computer systems, a snapshot is the state of a system at a particular point in time." . - -:Condition a owl:Class ; - rdfs:label "Condition" ; - rdfs:subClassOf :D3FENDCore ; - rdfs:comment "Less common usage versus state, meant to superclass precondition, postcondition, and effect." ; - rdfs:isDefinedBy "n-06768279" ; - :definition "An assumption on which rests the validity or effect of something else." . - -:ConfigurationDatabase a owl:Class ; - rdfs:label "Configuration Database" ; - rdfs:subClassOf :ConfigurationResource, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ConfigurationDatabaseRecord ] . - -:ConfigurationDatabaseRecord a owl:Class ; - rdfs:label "Configuration Database Record" ; - rdfs:subClassOf :ConfigurationResource, - :DatabaseRecord ; - :definition "A Configuration Database Record defines settings, parameters, or preferences for applications, systems, or devices." ; - :synonym "Configuration Record" . - -:ConfigurationEvent a owl:Class ; - rdfs:label "Configuration Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ConfigurationResource ] ; - :definition "A discrete event that creates, applies, modifies, or deletes configuration resources to determine or alter the function of a system, device, application, or service." . - -:ConfigurationFile a owl:Class ; - rdfs:label "Configuration File" ; - skos:altLabel "Settings File" ; - rdfs:subClassOf :File ; - rdfs:isDefinedBy ; - :definition "A file containing Information used to configure the parameters and initial settings for some computer programs. They are used for user applications, server processes and operating system settings." . - -:ConfigurationInventory a :ConfigurationInventory, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Configuration Inventory" ; - rdfs:subClassOf :AssetInventory, - [ a owl:Restriction ; - owl:onProperty :inventories ; - owl:someValuesFrom :ConfigurationResource ] ; - :d3fend-id "D3-CI" ; - :definition "Configuration inventory identifies and records the configuration of software and hardware and their components throughout the organization." ; - :kb-article """## How it works - -The organization retrieves configuration information through means of SNMP (MIB records), WBEM (CIM records), other protocols, or custom scripts and captures that information in a repository, typically known as a Configuration Management Database (CMDB).\"""" ; - :kb-reference :Reference-Web-BasedEnterpriseManagement, - :Reference-Windows-Management-Infrastructure, - :Reference-Windows-Management-Instrumentation . - -:ConfigurationManagementDatabase a owl:Class ; - rdfs:label "Configuration Management Database" ; - rdfs:subClassOf :ConfigurationDatabase ; - rdfs:isDefinedBy ; - :definition "A database used to store configuration records throughout their lifecycle. The Configuration Management System (CMS) maintains one or more CMDBs, and each CMDB stores attributes of configuration items (CIs), and relationships with other CIs." ; - rdfs:seeAlso , - , - . - -:ConfigurationModificationEvent a owl:Class ; - rdfs:label "Configuration Modification Event" ; - rdfs:subClassOf :ConfigurationEvent ; - :definition "An event that changes the persisted state of configuration resources by adding, updating, or removing parameters, impacting the target component's behavior." . - -:ConfigurationResource a owl:Class ; - rdfs:label "Configuration Resource" ; - rdfs:subClassOf :Resource ; - :definition "A resource used to configure a system including software and hardware." . - -:ConnectedHoneynet a :ConnectedHoneynet, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Connected Honeynet" ; - rdfs:subClassOf :DecoyEnvironment, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :LocalAreaNetwork ] ; - :d3fend-id "D3-CHN" ; - :definition "A decoy service, system, or environment, that is connected to the enterprise network, and simulates or emulates certain functionality to the network, without exposing full access to a production system." ; - :kb-article """## How it works -Decoy honeypots are deployed within the enterprise environment that emulate certain services or portions of an OS to attract attackers. - -## Considerations -A connected honeynet provides a tradeoff between emulating certain functionality but not being as sophisticated as an integrated honeynet. The connected honeynet may not provide enough functionality to detect new attack patterns or zero day exploits but could provide enough functionality for specific known vulnerabilities.""" ; - :kb-reference :Reference-ModificationOfAServerToMimicADeceptionMechanism_AcalvioTechnologiesInc . - -:ConnectionAttemptAnalysis a :ConnectionAttemptAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Connection Attempt Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :IntranetNetworkTraffic ] ; - :d3fend-id "D3-CAA" ; - :definition "Analyzing failed connections in a network to detect unauthorized activity." ; - :kb-article """## How it works -Connection Attempt Analysis in multiple ways. - -### Monitoring traffic to unallocated IP space -One approach looks for failed connection attempts against unallocated IP space. First, network traffic is captured to map out the network to identify network assets as well as unallocated IP space. The map is then used to determine if connection attempts are being made to the unallocated IP space. - -### Monitoring for sequentially transmitted traffic -Another approach passively inspects network traffic with application protocol analyzers observing network activity characteristics such as volume of packets sent/ received, TCP session attributes, and connection information between hosts (start time, source/destination host, services, etc.). Then using pattern matching to identify traffic which appears to be probing for network hosts. - -## Considerations - -* Implementations that rely on analysis of unallocated IP address space increase in their complexity with network size and decentralized network infrastructure. -* Inventory of unallocated IP space should should be continuously updated to mitigate the risk of false positives. -* IPv6 also introduces challenges including IPv6 traffic bypassing IPv4 specific protection systems (ex. firewalls and IDS) and complexity in managing both IPv6 and IPv4 addresses.""" ; - :kb-reference :Reference-DetectingNetworkReconnaissanceByTrackingIntranetDark-netCommunications_VECTRANETWORKSInc ; - :synonym "Network Scan Detection" . - -:ConnectSocket a owl:Class ; - rdfs:label "Connect Socket" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :connects ; - owl:someValuesFrom :Pipe ] ; - :definition "The connect socket system call connects the socket to a target address." ; - rdfs:seeAlso . - -:ConsoleOutputFunction a owl:Class ; - rdfs:label "Console Output Function" ; - rdfs:subClassOf :Subroutine ; - :definition "Outputs characters to a computer console." . - -:ContainerBuildTool a owl:Class ; - rdfs:label "Container Build Tool" ; - rdfs:subClassOf :SoftwarePackagingTool ; - :definition "A software build tool that creates a container (e.g., Docker container) for deployment." . - -:ContainerImage a owl:Class ; - rdfs:label "Container Image" ; - rdfs:subClassOf :ComputingImage, - :SoftwarePackage ; - rdfs:isDefinedBy ; - :definition """A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings. - -Container images become containers at runtime and in the case of Docker containers - images become containers when they run on Docker Engine. Available for both Linux and Windows-based applications, containerized software will always run the same, regardless of the infrastructure. Containers isolate software from its environment and ensure that it works uniformly despite differences for instance between development and staging.""" ; - rdfs:seeAlso . - -:ContainerImageAnalysis a :ContainerImageAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Container Image Analysis" ; - rdfs:subClassOf :AssetVulnerabilityEnumeration, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :ContainerImage ] ; - :d3fend-id "D3-CIA" ; - :definition "Analyzing a Container Image with respect to a set of policies." ; - :kb-article """## How it works - -Container images are standalone collections of the executable code and -content that are used to populate a container environment. -They are usually created by either building a container from scratch or by -building on top of an existing image pulled from a repository. - -Throughout the container build workflow, -images should be scanned to identify: - -- outdated libraries, -- known vulnerabilities, -- or misconfigurations, such as insecure ports or permissions. - -Scanning should also provide the flexibility to disregard false positives -for vulnerability detection where knowledgeable -cybersecurity professionals have deemed alerts to be inaccurate. - -One approach to implementing image scanning is to use an admission controller -to block deployments if the image does not comply with the organization's -security policies. - -An admission controller is a Container Orchestration feature that can intercept and -process requests to the Container Orchestration API prior to persistence of the object, -but after the request is authenticated and authorized. -A webhook can be implemented to scan any image before it is deployed in the orchestrator. -This admission controller - -## Considerations - -* Image scanning is key to ensuring deployed containers are secure. -* Using trusted repositories to build containers is a critical part of the container build workflow. -* This technique does not necessarly prevent the build process to add insecure or unsecured - files to the Image. -""" ; - :kb-reference :Reference-ContainerImageAnalysis ; - :synonym "Container Image Scanning" . - -:ContainerOrchestrationSoftware a owl:Class ; - rdfs:label "Container Orchestration Software" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :ContainerProcess ] ; - :definition "A d3f:Software which manages and coordinates running one or more d3f:ContainerProcess." . - -:ContainerProcess a owl:Class ; - rdfs:label "Container Process" ; - rdfs:subClassOf :ApplicationProcess ; - :definition "A running instance of a container image." ; - rdfs:seeAlso :ContainerImage, - . - -:ContainerRuntime a owl:Class ; - rdfs:label "Container Runtime" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :runs ; - owl:someValuesFrom :ContainerImage ] ; - :definition "A software layer between a container process and a kernel which often mediates the invocation of a system call." ; - rdfs:seeAlso :ContainerProcess, - :Kernel, - :SystemCall . - -:ContentExcision a :ContentExcision, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Excision" ; - rdfs:subClassOf :ContentModification ; - :d3fend-id "D3-CNE" ; - :definition "Removing specific, potentially malicious, parts of content" ; - :kb-article """## How it works - -If malicious or unecessary elements is discovered within the content, or if a specific embedded portion does not comply with policy, it may be removed to ensure safety.""" ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc . - -:ContentFiltering a :ContentFiltering, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Filtering" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Isolate ], - [ a owl:Restriction ; - owl:onProperty :enforces ; - owl:someValuesFrom :ContentPolicy ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-CF" ; - :definition "Content Filtering techniques aid in the process of analyzing an input file for malicious or erroneous content and outputing a sanitized version." ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc . - -:ContentFormatConversion a :ContentFormatConversion, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Format Conversion" ; - rdfs:subClassOf :ContentModification ; - :d3fend-id "D3-CFC" ; - :definition "Content format conversion is mechanical transformation from one format to another which may be normalization or specifically flattening." ; - :kb-article """## How it works - -This technique may enhance security by transforming files into safer or normalized formats.""" ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc . - -:ContentModification a :ContentModification, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Modification" ; - rdfs:subClassOf :ContentFiltering, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :DigitalMedia ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :FileContentBlock ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :FileMetadata ], - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-CM" ; - :definition "Modify content that does not comply with policy." ; - :kb-article """## How it works - -When content is found to not comply with it's content policy, it may be transformed to a safer state by modifying it.""" ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc . - -:ContentPolicy a owl:Class ; - rdfs:label "Content Policy" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A set of rules and guidelines that dictate the acceptable use, distribution, and management of digital content within a system or platform. It defines what content is allowed, restricted, or prohibited, ensuring compliance with legal, ethical, and organizational standards." . - -:ContentQuarantine a :ContentQuarantine, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Quarantine" ; - rdfs:subClassOf :ContentFiltering, - [ a owl:Restriction ; - owl:onProperty :quarantines ; - owl:someValuesFrom :DatabaseRecord ], - [ a owl:Restriction ; - owl:onProperty :quarantines ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-CQ" ; - :definition "Transfer content that does not comply with policy to a quarantine zone." ; - :kb-article """## How it works - -Quarantining serves as a protective measure to isolate potentially harmful files or elements until they can be safely analyzed or processed.""" ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc . - -:ContentRebuild a :ContentRebuild, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Rebuild" ; - rdfs:subClassOf :ContentModification ; - :d3fend-id "D3-CNR" ; - :definition "Rebuild the file according to the spec so any unreferenced components or objects are removed." ; - :kb-article """## How it works - -If inputted content is divided up into components for further scrutiny, the components may be combined back afterwards in a safer state.""" ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc ; - :synonym "Content Reconstruction" . - -:ContentSubstitution a :ContentSubstitution, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Substitution" ; - rdfs:subClassOf :ContentModification ; - :d3fend-id "D3-CNS" ; - :definition "Modifies specific digital content information by replacing it with something else." ; - :kb-article """## How it works - -If malicious or unecessary elements is discovered within the content, or if a specific embedded portion does not comply with policy, it may be replaced with alternatives to ensure safety.""" ; - :kb-reference :Reference-MethodForContentDisarmandReconstruction_OPSWATInc . - -:ContentValidation a :ContentValidation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Content Validation" ; - rdfs:subClassOf :ContentFiltering ; - :d3fend-id "D3-CV" ; - :definition "Verify and validate contents complies with policy" ; - :kb-article """## How it works - -To ensure that content is safe, it's composition must be validated according to its content policy.""" ; - :kb-reference :Reference-FileSecurityUsingFileFormatValidation_OPSWATInc . - -:ControlCatalog a owl:Class ; - rdfs:label "Control Catalog" ; - rdfs:subClassOf :ExternalControlThing, - [ a owl:Restriction ; - owl:onProperty :has-member ; - owl:someValuesFrom :ExternalControl ], - [ a owl:Restriction ; - owl:onProperty :version ; - owl:someValuesFrom [ a rdfs:Datatype ; - owl:unionOf ( - xsd:integer - xsd:string ) ] ] ; - :definition "A control catalog is a complete list of protective measures for systems, organizations, or individuals for subject domains (e.g., security and privacy.)" ; - rdfs:seeAlso . - -:ControlCorrelationIdentifierCatalog a owl:Class ; - rdfs:label "Control Correlation Identifier Catalog" ; - rdfs:subClassOf :ControlCatalog, - [ a owl:Restriction ; - owl:onProperty :has-member ; - owl:someValuesFrom :CCIControl ] ; - :definition "A control correlation identifier (CCI) catalog provides a catalog of CCIs for a given release date." ; - rdfs:seeAlso . - -:ConvolutionalNeuralNetwork a owl:Class, - owl:NamedIndividual ; - rdfs:label "Convolutional Neural Network" ; - rdfs:subClassOf :DeepNeuralNetClassification ; - :d3fend-id "D3A-CNN" ; - :definition "A class of artificial neural network most commonly applied to analyze visual imagery.CNNs use a mathematical operation called convolution in place of general matrix multiplication in at least one of their layers." ; - :kb-article """## References -Wikipedia. (n.d.). Convolutional neural network. [Link](https://en.wikipedia.org/wiki/Convolutional_neural_network)""" . - -:CopyMemoryFunction a owl:Class ; - rdfs:label "Copy Memory Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :copies ; - owl:someValuesFrom :MemoryBlock ] ; - :definition "Copies a memory block from one location to another." . - -:CopyToken a owl:Class, - owl:NamedIndividual, - :SystemCall ; - rdfs:label "Copy Token" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :copies ; - owl:someValuesFrom :AccessToken ] . - -:Correlation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Correlation" ; - rdfs:subClassOf :DescriptiveStatistics ; - :d3fend-id "D3A-COR" ; - :definition "Correlation is the degree to which two or more quantities are linearly associated." ; - :kb-article "Wolfram MathWorld. (n.d.). Correlation. [Link](https://mathworld.wolfram.com/Correlation.html)" . - -:CorrelationClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Correlation Clustering" ; - rdfs:subClassOf :High-dimensionClustering ; - :d3fend-id "D3A-CC" ; - :definition "Correlation clustering provides a method for clustering a set of objects into the optimum number of clusters without specifying that number in advance." ; - :kb-article """## References -Wikipedia. (n.d.). Correlation clustering. [Link](https://en.wikipedia.org/wiki/Correlation_clustering)""" . - -:CramersV a owl:Class, - owl:NamedIndividual ; - rdfs:label "Cramer's V" ; - rdfs:subClassOf :Correlation ; - :d3fend-id "D3A-CV" ; - :definition "Cramér's V (sometimes referred to as Cramér's phi and denoted as φc) is a measure of association between two nominal variables, giving a value between 0 and +1 (inclusive) and is based on Pearson's chi-squared statistic." ; - :kb-article """## References -Wikipedia. (n.d.). Cramér's V. [Link](https://en.wikipedia.org/wiki/Cram%C3%A9r%27s_V)""" ; - :synonym "Cramer's Phi" . - -:CreateFile a owl:Class ; - rdfs:label "Create File" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :File ] ; - :definition "System call to create a new file on a file system. Some operating systems implement this functionality as part of their d3f:OpenFile system call." ; - rdfs:seeAlso , - , - , - . - -:CreateProcess a owl:Class ; - rdfs:label "Create Process" ; - skos:altLabel "Execute Process", - "Process Spawn", - "Spawn Process" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :executes ; - owl:someValuesFrom :Process ] ; - :definition "A process spawn refers to a function that loads and executes a new child process.The current process may wait for the child to terminate or may continue to execute asynchronously. Creating a new subprocess requires enough memory in which both the child process and the current program can execute. There is a family of spawn functions in DOS, inherited by Microsoft Windows. There is also a different family of spawn functions in an optional extension of the POSIX standards. Fork-exec is another technique combining two Unix system calls, which can effect a process spawn.", - "Creates a process.", - "Executes a process." ; - rdfs:seeAlso , - , - , - , - , - . - -:CreateSocket a owl:Class ; - rdfs:label "Create Socket" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :Pipe ] ; - :definition "A create socket system call creates an endpoint for communication and returns a file descriptor that refers to that endpoint." ; - rdfs:seeAlso . - -:CreateThread a owl:Class ; - rdfs:label "Create Thread" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :Thread ] ; - :definition "Threads are an execution model that exists independently from a language, as well as a parallel execution model. They enable a program to control multiple different flows of work that overlap in time." ; - rdfs:seeAlso , - . - -:Credential a owl:Class ; - rdfs:label "Credential" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :UserAccount ] ; - rdfs:isDefinedBy ; - :definition "A credential is a physical/tangible object, a piece of knowledge, or a facet of a person's physical being that enables an individual access to a given physical facility or computer-based information system. Typically, credentials can be something a person knows (such as a number or PIN), something they have (such as an access badge), something they are (such as a biometric feature), something they do (measurable behavioral patterns) or some combination of these items. This is known as multi-factor authentication. The typical credential is an access card or key-fob, and newer software can also turn users' smartphones into access devices." ; - rdfs:seeAlso . - -:CredentialAccessTechnique a owl:Class ; - rdfs:label "Credential Access Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Credential ], - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0006 ], - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :PasswordFile ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :CreateProcess ] . - -:CredentialCompromiseScopeAnalysis a :CredentialCompromiseScopeAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Compromise Scope Analysis" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-CCSA" ; - :definition "Determining which credentials may have been compromised by analyzing the user logon history of a particular system." ; - :kb-article """## How it works - -#### Memory -Credentials may be stored in memory for a variety of reasons; on Windows, they may be stored in lsass.exe. Once a credential dumper like mimikatz runs and dumps the memory of lsass.exe, the credentials of every account logged on since boot are potentially compromised. -When such an event occurs, this analytic will give the forensic context to identify compromised users. Those users could potentially be used in later events for additional logons. - - -#### Hard disk -Operating System may cache a certain number of credentials onto the hard disk to use as a source of truth if it cannot contact the credential server. In many versions of Microsoft Windows, the 10 most recent are cached by default; this setting can be changed in the Microsoft Management Console's Local Security Policy: ```Computer Configuration -> Windows Settings -> Local Policy -> Security Options -> Interactive Logon: Number of previous logons to cache -> 0``` Here we are not concerned with the alteration of the credentials but the fact that they might be read. If the attacker has physical access to the machine they are unlikely to be stopped from reading files on the filesystem. -"In the event that the domain controller is unavailable Windows will check the last password hashes that has been cached in order to authenticate the user with the system. These password hashes are cached in the following registry setting: -HKEY_LOCAL_MACHINE\\SECURITY\\Cache -Mimikatz can retrieve these hashes if the following command is executed: -lsadump::cache" [1] - -The Registry Hive, HKEY_LOCAL_MACHINE\\SAM, which is stored in the supporting files %systemroot%\\System32\\Config\\{Sam,sam.log,sam.sav}, contains the SAM file. - -DC: This is stored in %systemroot%\\ntds\\ntds.dit. (https://www.ultimatewindowssecurity.com/blog/default.aspx?d=10/2017) - -Sometimes memory, which contains credentials, could get on the hard disk. Like with hiberfil.sys in Windows. Equivalent on Linux - - -In Linux, an attacker could read the /etc/shadow file. - -Reading from /proc directory: mimipenguin, many others. - -## Considerations -Effective implementation requires identifying any location that could end up containing credentials, and detecting an method of potential access to a source of credential data. - -1. https://medium.com/blue-team/preventing-mimikatz-attacks-ed283e7ebdd5""" ; - :kb-reference :Reference-AllLoginsSinceLastBoot_MITRE, - :Reference-SystemsAndMethodsForDetectingCredentialTheft_SymantecCorp . - -:CredentialEviction a :CredentialEviction, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Eviction" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Evict ] ; - :d3fend-id "D3-CE" ; - :definition "Credential Eviction techniques disable or remove compromised credentials from a computer network." ; - :kb-reference :Reference-AccountMonitoring_ForescoutTechnologies . - -:CredentialHardening a :CredentialHardening, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Hardening" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Harden ], - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-CH" ; - :definition "Credential Hardening techniques modify system or network properties in order to protect system or network/domain credentials." ; - :enables :Harden . - -:CredentialManagementSystem a owl:Class ; - rdfs:label "Credential Management System" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :Credential ] ; - rdfs:isDefinedBy ; - :definition "Credential Management, also referred to as a Credential Management System (CMS), is an established form of software that is used for issuing and managing credentials as part of public key infrastructure (PKI)." . - -:CredentialRevocation a :CredentialRevocation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Revocation" ; - rdfs:subClassOf :CredentialEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-CR" ; - :definition "Deleting a set of credentials permanently to prevent them from being used to authenticate." ; - :kb-article """## How it works - -Management servers with enterprise policies for account management provide the ability remove permissions, accounts, or credentials. Compromised credentials should be revoked to prevent further malicious activity.""" ; - :kb-reference :Reference-RevokingaPreviouslyIssuedVerifiableCredential-Microsoft . - -:CredentialRotation a :CredentialRotation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Rotation" ; - rdfs:subClassOf :CredentialHardening, - [ a owl:Restriction ; - owl:onProperty :regenerates ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-CRO" ; - :definition "Credential rotation is a security procedure in which authentication credentials, such as passwords, API keys, or certificates, are regularly changed or replaced to minimize the risk of unauthorized access." ; - :kb-article """## How it works - -Credentials can be systematically changed at predetermined intervals or based on specific events. Credentials such as user passwords may be rotated manually, but it is increasingly common to use an automated system to manage rotation of enterprise passwords, certificates and keys. - -## Considerations - -- Rotation of credentials must be managed carefully to avoid inadvertent service interruption -- Management servers with enterprise policies for account management provide the ability to change or reset passwords for accounts. Some organizations rotate credentials periodically to limit the risk of stolen credentials. -- When responding to an incident, severity of compromise should be considered to determine what credentials to what accounts should be regenerated -- If proactively rotating credentials periodically, several factors should be considered to determine the frequency. Also introduces some risk including promoting the creation of weak passwords and poor storage practices for employees and presents challenges in proper tracking.""" ; - :kb-reference , - :Reference-PasswordandKeyRotation-SSH ; - rdfs:seeAlso . - -:CredentialScrubbing a :CredentialScrubbing, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Scrubbing" ; - rdfs:subClassOf :SourceCodeHardening, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :Subroutine ] ; - :d3fend-id "D3-CS" ; - :definition "The systematic removal of hard-coded credentials from source code to prevent accidental exposure and unauthorized access." ; - :kb-article """## How it Works -Credential Scrubbing involves identifying and eliminating hard-coded credentials such as usernames, passwords, API keys, and tokens from source code repositories. These credentials should be managed securely using environment variables, secret management tools, or secure vaults where they can be safely accessed when needed. - -## Considerations -* Developers should conduct regular audits of source code to ensure credentials are not hard-coded. -* Exposed credentials found in version control history must be disabled and replaced promptly. -* Adopt role-based access controls and credential rotation policies to minimize security risks.""" ; - :kb-reference :Reference-SecretsManagementCheatSheet-OWASP ; - rdfs:seeAlso :CWE-798, - . - -:CredentialTransmissionScoping a :CredentialTransmissionScoping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Credential Transmission Scoping" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-CTS" ; - :definition "Limiting the transmission of a credential to a scoped set of relying parties." ; - :kb-reference :Reference-WebAuthentication_AnAPIForAccessingPublicKeyCredentialsLevel2 ; - rdfs:seeAlso , - ; - :synonym "Phishing Resistant Authentication" . - -:CryptographicKey a owl:Class ; - rdfs:label "Cryptographic Key" ; - rdfs:subClassOf :DigitalInformation ; - rdfs:isDefinedBy ; - :definition "In cryptography, a key is a piece of information (a parameter) that determines the functional output of a cryptographic algorithm. For encryption algorithms, a key specifies the transformation of plaintext into ciphertext, and vice versa for decryption algorithms. Keys also specify transformations in other cryptographic algorithms, such as digital signature schemes and message authentication codes." . - -:CustomArchiveFile a owl:Class ; - rdfs:label "Custom Archive File" ; - rdfs:subClassOf :ArchiveFile ; - :definition "A custom archive file is an archive file conforming to a custom format; that is, an archive file that does not conform to a common standard." . - -:CWE-5 a owl:Class ; - rdfs:label "J2EE Misconfiguration: Data Transmission Without Encryption" ; - rdfs:subClassOf :CWE-319 ; - :cwe-id "CWE-5" ; - :definition "Information sent over a network can be compromised while in transit. An attacker may be able to read or modify the contents if the data are sent in plaintext or are weakly encrypted." . - -:CWE-6 a owl:Class ; - rdfs:label "J2EE Misconfiguration: Insufficient Session-ID Length" ; - rdfs:subClassOf :CWE-334 ; - :cwe-id "CWE-6" ; - :definition "The J2EE application is configured to use an insufficient session ID length." . - -:CWE-7 a owl:Class ; - rdfs:label "J2EE Misconfiguration: Missing Custom Error Page" ; - rdfs:subClassOf :CWE-756 ; - :cwe-id "CWE-7" ; - :definition "The default error page of a web application should not display sensitive information about the product." . - -:CWE-8 a owl:Class ; - rdfs:label "J2EE Misconfiguration: Entity Bean Declared Remote" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-8" ; - :definition "When an application exposes a remote interface for an entity bean, it might also expose methods that get or set the bean's data. These methods could be leveraged to read sensitive information, or to change data in ways that violate the application's expectations, potentially leading to other vulnerabilities." . - -:CWE-9 a owl:Class ; - rdfs:label "J2EE Misconfiguration: Weak Access Permissions for EJB Methods" ; - rdfs:subClassOf :CWE-266 ; - :cwe-id "CWE-9" ; - :definition "If elevated access rights are assigned to EJB methods, then an attacker can take advantage of the permissions to exploit the product." . - -:CWE-11 a owl:Class ; - rdfs:label "ASP.NET Misconfiguration: Creating Debug Binary" ; - rdfs:subClassOf :CWE-489 ; - :cwe-id "CWE-11" ; - :definition "Debugging messages help attackers learn about the system and plan a form of attack." . - -:CWE-12 a owl:Class ; - rdfs:label "ASP.NET Misconfiguration: Missing Custom Error Page" ; - rdfs:subClassOf :CWE-756 ; - :cwe-id "CWE-12" ; - :definition "An ASP .NET application must enable custom error pages in order to prevent attackers from mining information from the framework's built-in responses." . - -:CWE-13 a owl:Class ; - rdfs:label "ASP.NET Misconfiguration: Password in Configuration File" ; - rdfs:subClassOf :CWE-260 ; - :cwe-id "CWE-13" ; - :definition "Storing a plaintext password in a configuration file allows anyone who can read the file access to the password-protected resource making them an easy target for attackers." . - -:CWE-14 a owl:Class ; - rdfs:label "Compiler Removal of Code to Clear Buffers" ; - rdfs:subClassOf :CWE-733 ; - :cwe-id "CWE-14" ; - :definition "Sensitive memory is cleared according to the source code, but compiler optimizations leave the memory untouched when it is not read from again, aka \"dead store removal.\"" . - -:CWE-15 a owl:Class ; - rdfs:label "External Control of System or Configuration Setting" ; - rdfs:subClassOf :CWE-610, - :CWE-642 ; - :cwe-id "CWE-15" ; - :definition "One or more system settings or configuration elements can be externally controlled by a user." . - -:CWE-20 a owl:Class ; - rdfs:label "Improper Input Validation" ; - rdfs:subClassOf :CWE-707, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-20" ; - :definition "The product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly." . - -:CWE-22 a owl:Class ; - rdfs:label "Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')" ; - rdfs:subClassOf :CWE-668, - :CWE-706, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-22" ; - :definition "The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory." ; - :synonym "Directory traversal", - "Path traversal" . - -:CWE-23 a owl:Class ; - rdfs:label "Relative Path Traversal" ; - rdfs:subClassOf :CWE-22 ; - :cwe-id "CWE-23" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize sequences such as \"..\" that can resolve to a location that is outside of that directory." ; - :synonym "Zip Slip" . - -:CWE-24 a owl:Class ; - rdfs:label "Path Traversal: '../filedir'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-24" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize \"../\" sequences that can resolve to a location that is outside of that directory." . - -:CWE-25 a owl:Class ; - rdfs:label "Path Traversal: '/../filedir'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-25" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize \"/../\" sequences that can resolve to a location that is outside of that directory." . - -:CWE-26 a owl:Class ; - rdfs:label "Path Traversal: '/dir/../filename'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-26" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize \"/dir/../filename\" sequences that can resolve to a location that is outside of that directory." . - -:CWE-27 a owl:Class ; - rdfs:label "Path Traversal: 'dir/../../filename'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-27" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize multiple internal \"../\" sequences that can resolve to a location that is outside of that directory." . - -:CWE-28 a owl:Class ; - rdfs:label "Path Traversal: '..\\filedir'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-28" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize \"..\\\" sequences that can resolve to a location that is outside of that directory." . - -:CWE-29 a owl:Class ; - rdfs:label "Path Traversal: '\\..\\filename'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-29" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '\\..\\filename' (leading backslash dot dot) sequences that can resolve to a location that is outside of that directory." . - -:CWE-30 a owl:Class ; - rdfs:label "Path Traversal: '\\dir\\..\\filename'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-30" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '\\dir\\..\\filename' (leading backslash dot dot) sequences that can resolve to a location that is outside of that directory." . - -:CWE-31 a owl:Class ; - rdfs:label "Path Traversal: 'dir\\..\\..\\filename'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-31" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize 'dir\\..\\..\\filename' (multiple internal backslash dot dot) sequences that can resolve to a location that is outside of that directory." . - -:CWE-32 a owl:Class ; - rdfs:label "Path Traversal: '...' (Triple Dot)" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-32" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '...' (triple dot) sequences that can resolve to a location that is outside of that directory." . - -:CWE-33 a owl:Class ; - rdfs:label "Path Traversal: '....' (Multiple Dot)" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-33" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '....' (multiple dot) sequences that can resolve to a location that is outside of that directory." . - -:CWE-34 a owl:Class ; - rdfs:label "Path Traversal: '....//'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-34" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '....//' (doubled dot dot slash) sequences that can resolve to a location that is outside of that directory." . - -:CWE-35 a owl:Class ; - rdfs:label "Path Traversal: '.../...//'" ; - rdfs:subClassOf :CWE-23 ; - :cwe-id "CWE-35" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize '.../...//' (doubled triple dot slash) sequences that can resolve to a location that is outside of that directory." . - -:CWE-36 a owl:Class ; - rdfs:label "Absolute Path Traversal" ; - rdfs:subClassOf :CWE-22 ; - :cwe-id "CWE-36" ; - :definition "The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize absolute path sequences such as \"/abs/path\" that can resolve to a location that is outside of that directory." . - -:CWE-37 a owl:Class ; - rdfs:label "Path Traversal: '/absolute/pathname/here'" ; - rdfs:subClassOf :CWE-36, - :CWE-160 ; - :cwe-id "CWE-37" ; - :definition "The product accepts input in the form of a slash absolute path ('/absolute/pathname/here') without appropriate validation, which can allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-38 a owl:Class ; - rdfs:label "Path Traversal: '\\absolute\\pathname\\here'" ; - rdfs:subClassOf :CWE-36 ; - :cwe-id "CWE-38" ; - :definition "The product accepts input in the form of a backslash absolute path ('\\absolute\\pathname\\here') without appropriate validation, which can allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-39 a owl:Class ; - rdfs:label "Path Traversal: 'C:dirname'" ; - rdfs:subClassOf :CWE-36 ; - :cwe-id "CWE-39" ; - :definition "The product accepts input that contains a drive letter or Windows volume letter ('C:dirname') that potentially redirects access to an unintended location or arbitrary file." . - -:CWE-40 a owl:Class ; - rdfs:label "Path Traversal: '\\\\UNC\\share\\name\\' (Windows UNC Share)" ; - rdfs:subClassOf :CWE-36 ; - :cwe-id "CWE-40" ; - :definition "The product accepts input that identifies a Windows UNC share ('\\\\UNC\\share\\name') that potentially redirects access to an unintended location or arbitrary file." . - -:CWE-41 a owl:Class ; - rdfs:label "Improper Resolution of Path Equivalence" ; - rdfs:subClassOf :CWE-706 ; - :cwe-id "CWE-41" ; - :definition "The product is vulnerable to file system contents disclosure through path equivalence. Path equivalence involves the use of special characters in file and directory names. The associated manipulations are intended to generate multiple names for the same object." . - -:CWE-42 a owl:Class ; - rdfs:label "Path Equivalence: 'filename.' (Trailing Dot)" ; - rdfs:subClassOf :CWE-41, - :CWE-162 ; - :cwe-id "CWE-42" ; - :definition "The product accepts path input in the form of trailing dot ('filedir.') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-43 a owl:Class ; - rdfs:label "Path Equivalence: 'filename....' (Multiple Trailing Dot)" ; - rdfs:subClassOf :CWE-42, - :CWE-163 ; - :cwe-id "CWE-43" ; - :definition "The product accepts path input in the form of multiple trailing dot ('filedir....') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-44 a owl:Class ; - rdfs:label "Path Equivalence: 'file.name' (Internal Dot)" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-44" ; - :definition "The product accepts path input in the form of internal dot ('file.ordir') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-45 a owl:Class ; - rdfs:label "Path Equivalence: 'file...name' (Multiple Internal Dot)" ; - rdfs:subClassOf :CWE-44, - :CWE-165 ; - :cwe-id "CWE-45" ; - :definition "The product accepts path input in the form of multiple internal dot ('file...dir') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-46 a owl:Class ; - rdfs:label "Path Equivalence: 'filename ' (Trailing Space)" ; - rdfs:subClassOf :CWE-41, - :CWE-162 ; - :cwe-id "CWE-46" ; - :definition "The product accepts path input in the form of trailing space ('filedir ') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-47 a owl:Class ; - rdfs:label "Path Equivalence: ' filename' (Leading Space)" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-47" ; - :definition "The product accepts path input in the form of leading space (' filedir') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-48 a owl:Class ; - rdfs:label "Path Equivalence: 'file name' (Internal Whitespace)" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-48" ; - :definition "The product accepts path input in the form of internal space ('file(SPACE)name') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-49 a owl:Class ; - rdfs:label "Path Equivalence: 'filename/' (Trailing Slash)" ; - rdfs:subClassOf :CWE-41, - :CWE-162 ; - :cwe-id "CWE-49" ; - :definition "The product accepts path input in the form of trailing slash ('filedir/') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-50 a owl:Class ; - rdfs:label "Path Equivalence: '//multiple/leading/slash'" ; - rdfs:subClassOf :CWE-41, - :CWE-161 ; - :cwe-id "CWE-50" ; - :definition "The product accepts path input in the form of multiple leading slash ('//multiple/leading/slash') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-51 a owl:Class ; - rdfs:label "Path Equivalence: '/multiple//internal/slash'" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-51" ; - :definition "The product accepts path input in the form of multiple internal slash ('/multiple//internal/slash/') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-52 a owl:Class ; - rdfs:label "Path Equivalence: '/multiple/trailing/slash//'" ; - rdfs:subClassOf :CWE-41, - :CWE-163 ; - :cwe-id "CWE-52" ; - :definition "The product accepts path input in the form of multiple trailing slash ('/multiple/trailing/slash//') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-53 a owl:Class ; - rdfs:label "Path Equivalence: '\\multiple\\\\internal\\backslash'" ; - rdfs:subClassOf :CWE-41, - :CWE-165 ; - :cwe-id "CWE-53" ; - :definition "The product accepts path input in the form of multiple internal backslash ('\\multiple\\trailing\\\\slash') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-54 a owl:Class ; - rdfs:label "Path Equivalence: 'filedir\\' (Trailing Backslash)" ; - rdfs:subClassOf :CWE-41, - :CWE-162 ; - :cwe-id "CWE-54" ; - :definition "The product accepts path input in the form of trailing backslash ('filedir\\') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-55 a owl:Class ; - rdfs:label "Path Equivalence: '/./' (Single Dot Directory)" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-55" ; - :definition "The product accepts path input in the form of single dot directory exploit ('/./') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-56 a owl:Class ; - rdfs:label "Path Equivalence: 'filedir*' (Wildcard)" ; - rdfs:subClassOf :CWE-41, - :CWE-155 ; - :cwe-id "CWE-56" ; - :definition "The product accepts path input in the form of asterisk wildcard ('filedir*') without appropriate validation, which can lead to ambiguous path resolution and allow an attacker to traverse the file system to unintended locations or access arbitrary files." . - -:CWE-57 a owl:Class ; - rdfs:label "Path Equivalence: 'fakedir/../realdir/filename'" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-57" ; - :definition "The product contains protection mechanisms to restrict access to 'realdir/filename', but it constructs pathnames using external input in the form of 'fakedir/../realdir/filename' that are not handled by those mechanisms. This allows attackers to perform unauthorized actions against the targeted file." . - -:CWE-58 a owl:Class ; - rdfs:label "Path Equivalence: Windows 8.3 Filename" ; - rdfs:subClassOf :CWE-41 ; - :cwe-id "CWE-58" ; - :definition "The product contains a protection mechanism that restricts access to a long filename on a Windows operating system, but it does not properly restrict access to the equivalent short \"8.3\" filename." . - -:CWE-59 a owl:Class ; - rdfs:label "Improper Link Resolution Before File Access ('Link Following')" ; - rdfs:subClassOf :CWE-706 ; - :cwe-id "CWE-59" ; - :definition "The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource." ; - :synonym "insecure temporary file", - "Zip Slip" . - -:CWE-61 a owl:Class ; - rdfs:label "UNIX Symbolic Link (Symlink) Following" ; - rdfs:subClassOf :CWE-59 ; - :cwe-id "CWE-61" ; - :definition "The product, when opening a file or directory, does not sufficiently account for when the file is a symbolic link that resolves to a target outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files." ; - :synonym "Symlink following", - "symlink vulnerability" . - -:CWE-62 a owl:Class ; - rdfs:label "UNIX Hard Link" ; - rdfs:subClassOf :CWE-59 ; - :cwe-id "CWE-62" ; - :definition "The product, when opening a file or directory, does not sufficiently account for when the name is associated with a hard link to a target that is outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files." . - -:CWE-64 a owl:Class ; - rdfs:label "Windows Shortcut Following (.LNK)" ; - rdfs:subClassOf :CWE-59 ; - :cwe-id "CWE-64" ; - :definition "The product, when opening a file or directory, does not sufficiently handle when the file is a Windows shortcut (.LNK) whose target is outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files." ; - :synonym "symlink", - "Windows symbolic link following" . - -:CWE-65 a owl:Class ; - rdfs:label "Windows Hard Link" ; - rdfs:subClassOf :CWE-59 ; - :cwe-id "CWE-65" ; - :definition "The product, when opening a file or directory, does not sufficiently handle when the name is associated with a hard link to a target that is outside of the intended control sphere. This could allow an attacker to cause the product to operate on unauthorized files." . - -:CWE-66 a owl:Class ; - rdfs:label "Improper Handling of File Names that Identify Virtual Resources" ; - rdfs:subClassOf :CWE-706 ; - :cwe-id "CWE-66" ; - :definition "The product does not handle or incorrectly handles a file name that identifies a \"virtual\" resource that is not directly specified within the directory that is associated with the file name, causing the product to perform file-based operations on a resource that is not a file." . - -:CWE-67 a owl:Class ; - rdfs:label "Improper Handling of Windows Device Names" ; - rdfs:subClassOf :CWE-66 ; - :cwe-id "CWE-67" ; - :definition "The product constructs pathnames from user input, but it does not handle or incorrectly handles a pathname containing a Windows device name such as AUX or CON. This typically leads to denial of service or an information exposure when the application attempts to process the pathname as a regular file." . - -:CWE-69 a owl:Class ; - rdfs:label "Improper Handling of Windows ::DATA Alternate Data Stream" ; - rdfs:subClassOf :CWE-66 ; - :cwe-id "CWE-69" ; - :definition "The product does not properly prevent access to, or detect usage of, alternate data streams (ADS)." . - -:CWE-72 a owl:Class ; - rdfs:label "Improper Handling of Apple HFS+ Alternate Data Stream Path" ; - rdfs:subClassOf :CWE-66 ; - :cwe-id "CWE-72" ; - :definition "The product does not properly handle special paths that may identify the data or resource fork of a file on the HFS+ file system." . - -:CWE-73 a owl:Class ; - rdfs:label "External Control of File Name or Path" ; - rdfs:subClassOf :CWE-610, - :CWE-642 ; - :cwe-id "CWE-73" ; - :definition "The product allows user input to control or influence paths or file names that are used in filesystem operations." . - -:CWE-74 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-74" ; - :definition "The product constructs all or part of a command, data structure, or record using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify how it is parsed or interpreted when it is sent to a downstream component." . - -:CWE-75 a owl:Class ; - rdfs:label "Failure to Sanitize Special Elements into a Different Plane (Special Element Injection)" ; - rdfs:subClassOf :CWE-74 ; - :cwe-id "CWE-75" ; - :definition "The product does not adequately filter user-controlled input for special elements with control implications." . - -:CWE-76 a owl:Class ; - rdfs:label "Improper Neutralization of Equivalent Special Elements" ; - rdfs:subClassOf :CWE-75 ; - :cwe-id "CWE-76" ; - :definition "The product correctly neutralizes certain special elements, but it improperly neutralizes equivalent special elements." . - -:CWE-77 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements used in a Command ('Command Injection')" ; - rdfs:subClassOf :CWE-74, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-77" ; - :definition "The product constructs all or part of a command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended command when it is sent to a downstream component." ; - :synonym "Command injection" . - -:CWE-78 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')" ; - rdfs:subClassOf :CWE-77, - [ a owl:Restriction ; - owl:onProperty :may-be-weakness-of ; - owl:someValuesFrom :EvalFunction ], - [ a owl:Restriction ; - owl:onProperty :may-be-weakness-of ; - owl:someValuesFrom :ProcessStartFunction ], - [ a owl:Restriction ; - owl:onProperty :may-be-weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-78" ; - :definition "The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component." ; - :synonym "OS Command Injection", - "Shell injection", - "Shell metacharacters" . - -:CWE-79 a owl:Class ; - rdfs:label "Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')" ; - rdfs:subClassOf :CWE-74, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-79" ; - :definition "The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users." ; - :synonym "CSS", - "DOM-Based XSS / Type 0 XSS", - "HTML Injection", - "Reflected XSS / Non-Persistent XSS / Type 1 XSS", - "Stored XSS / Persistent XSS / Type 2 XSS", - "XSS" . - -:CWE-80 a owl:Class ; - rdfs:label "Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)" ; - rdfs:subClassOf :CWE-79 ; - :cwe-id "CWE-80" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special characters such as \"<\", \">\", and \"&\" that could be interpreted as web-scripting elements when they are sent to a downstream component that processes web pages." . - -:CWE-81 a owl:Class ; - rdfs:label "Improper Neutralization of Script in an Error Message Web Page" ; - rdfs:subClassOf :CWE-79 ; - :cwe-id "CWE-81" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special characters that could be interpreted as web-scripting elements when they are sent to an error page." . - -:CWE-82 a owl:Class ; - rdfs:label "Improper Neutralization of Script in Attributes of IMG Tags in a Web Page" ; - rdfs:subClassOf :CWE-83 ; - :cwe-id "CWE-82" ; - :definition "The web application does not neutralize or incorrectly neutralizes scripting elements within attributes of HTML IMG tags, such as the src attribute." . - -:CWE-83 a owl:Class ; - rdfs:label "Improper Neutralization of Script in Attributes in a Web Page" ; - rdfs:subClassOf :CWE-79 ; - :cwe-id "CWE-83" ; - :definition "The product does not neutralize or incorrectly neutralizes \"javascript:\" or other URIs from dangerous attributes within tags, such as onmouseover, onload, onerror, or style." . - -:CWE-84 a owl:Class ; - rdfs:label "Improper Neutralization of Encoded URI Schemes in a Web Page" ; - rdfs:subClassOf :CWE-79 ; - :cwe-id "CWE-84" ; - :definition "The web application improperly neutralizes user-controlled input for executable script disguised with URI encodings." . - -:CWE-85 a owl:Class ; - rdfs:label "Doubled Character XSS Manipulations" ; - rdfs:subClassOf :CWE-79 ; - :cwe-id "CWE-85" ; - :definition "The web application does not filter user-controlled input for executable script disguised using doubling of the involved characters." . - -:CWE-86 a owl:Class ; - rdfs:label "Improper Neutralization of Invalid Characters in Identifiers in Web Pages" ; - rdfs:subClassOf :CWE-79, - :CWE-436 ; - :cwe-id "CWE-86" ; - :definition "The product does not neutralize or incorrectly neutralizes invalid characters or byte sequences in the middle of tag names, URI schemes, and other identifiers." . - -:CWE-87 a owl:Class ; - rdfs:label "Improper Neutralization of Alternate XSS Syntax" ; - rdfs:subClassOf :CWE-79 ; - :cwe-id "CWE-87" ; - :definition "The product does not neutralize or incorrectly neutralizes user-controlled input for alternate script syntax." . - -:CWE-88 a owl:Class ; - rdfs:label "Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')" ; - rdfs:subClassOf :CWE-77 ; - :cwe-id "CWE-88" ; - :definition "The product constructs a string for a command to be executed by a separate component in another control sphere, but it does not properly delimit the intended arguments, options, or switches within that command string." . - -:CWE-89 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')" ; - rdfs:subClassOf :CWE-943, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-89" ; - :definition "The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data." ; - :synonym "SQL injection", - "SQLi" . - -:CWE-90 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')" ; - rdfs:subClassOf :CWE-943 ; - :cwe-id "CWE-90" ; - :definition "The product constructs all or part of an LDAP query using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended LDAP query when it is sent to a downstream component." . - -:CWE-91 a owl:Class ; - rdfs:label "XML Injection (aka Blind XPath Injection)" ; - rdfs:subClassOf :CWE-74 ; - :cwe-id "CWE-91" ; - :definition "The product does not properly neutralize special elements that are used in XML, allowing attackers to modify the syntax, content, or commands of the XML before it is processed by an end system." . - -:CWE-93 a owl:Class ; - rdfs:label "Improper Neutralization of CRLF Sequences ('CRLF Injection')" ; - rdfs:subClassOf :CWE-74 ; - :cwe-id "CWE-93" ; - :definition "The product uses CRLF (carriage return line feeds) as a special element, e.g. to separate lines or records, but it does not neutralize or incorrectly neutralizes CRLF sequences from inputs." . - -:CWE-94 a owl:Class ; - rdfs:label "Improper Control of Generation of Code ('Code Injection')" ; - rdfs:subClassOf :CWE-74, - :CWE-913, - [ a owl:Restriction ; - owl:onProperty :may-be-weakness-of ; - owl:someValuesFrom :EvalFunction ], - [ a owl:Restriction ; - owl:onProperty :may-be-weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-94" ; - :definition "The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment." ; - :synonym "Code Injection" . - -:CWE-95 a owl:Class ; - rdfs:label "Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')" ; - rdfs:subClassOf :CWE-94 ; - :cwe-id "CWE-95" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before using the input in a dynamic evaluation call (e.g. \"eval\")." . - -:CWE-96 a owl:Class ; - rdfs:label "Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')" ; - rdfs:subClassOf :CWE-94 ; - :cwe-id "CWE-96" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before inserting the input into an executable resource, such as a library, configuration file, or template." . - -:CWE-97 a owl:Class ; - rdfs:label "Improper Neutralization of Server-Side Includes (SSI) Within a Web Page" ; - rdfs:subClassOf :CWE-96 ; - :cwe-id "CWE-97" ; - :definition "The product generates a web page, but does not neutralize or incorrectly neutralizes user-controllable input that could be interpreted as a server-side include (SSI) directive." . - -:CWE-98 a owl:Class ; - rdfs:label "Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion')" ; - rdfs:subClassOf :CWE-706, - :CWE-829 ; - :cwe-id "CWE-98" ; - :definition "The PHP application receives input from an upstream component, but it does not restrict or incorrectly restricts the input before its usage in \"require,\" \"include,\" or similar functions." ; - :synonym "Local file inclusion", - "Remote file include", - "RFI" . - -:CWE-99 a owl:Class ; - rdfs:label "Improper Control of Resource Identifiers ('Resource Injection')" ; - rdfs:subClassOf :CWE-74 ; - :cwe-id "CWE-99" ; - :definition "The product receives input from an upstream component, but it does not restrict or incorrectly restricts the input before it is used as an identifier for a resource that may be outside the intended sphere of control." ; - :synonym "Insecure Direct Object Reference" . - -:CWE-102 a owl:Class ; - rdfs:label "Struts: Duplicate Validation Forms" ; - rdfs:subClassOf :CWE-694, - :CWE-1173 ; - :cwe-id "CWE-102" ; - :definition "The product uses multiple validation forms with the same name, which might cause the Struts Validator to validate a form that the programmer does not expect." . - -:CWE-103 a owl:Class ; - rdfs:label "Struts: Incomplete validate() Method Definition" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-103" ; - :definition "The product has a validator form that either does not define a validate() method, or defines a validate() method but does not call super.validate()." . - -:CWE-104 a owl:Class ; - rdfs:label "Struts: Form Bean Does Not Extend Validation Class" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-104" ; - :definition "If a form bean does not extend an ActionForm subclass of the Validator framework, it can expose the application to other weaknesses related to insufficient input validation." . - -:CWE-105 a owl:Class ; - rdfs:label "Struts: Form Field Without Validator" ; - rdfs:subClassOf :CWE-1173 ; - :cwe-id "CWE-105" ; - :definition "The product has a form field that is not validated by a corresponding validation form, which can introduce other weaknesses related to insufficient input validation." . - -:CWE-106 a owl:Class ; - rdfs:label "Struts: Plug-in Framework not in Use" ; - rdfs:subClassOf :CWE-1173 ; - :cwe-id "CWE-106" ; - :definition "When an application does not use an input validation framework such as the Struts Validator, there is a greater risk of introducing weaknesses related to insufficient input validation." . - -:CWE-107 a owl:Class ; - rdfs:label "Struts: Unused Validation Form" ; - rdfs:subClassOf :CWE-1164 ; - :cwe-id "CWE-107" ; - :definition "An unused validation form indicates that validation logic is not up-to-date." . - -:CWE-108 a owl:Class ; - rdfs:label "Struts: Unvalidated Action Form" ; - rdfs:subClassOf :CWE-1173 ; - :cwe-id "CWE-108" ; - :definition "Every Action Form must have a corresponding validation form." . - -:CWE-109 a owl:Class ; - rdfs:label "Struts: Validator Turned Off" ; - rdfs:subClassOf :CWE-1173 ; - :cwe-id "CWE-109" ; - :definition "Automatic filtering via a Struts bean has been turned off, which disables the Struts Validator and custom validation logic. This exposes the application to other weaknesses related to insufficient input validation." . - -:CWE-110 a owl:Class ; - rdfs:label "Struts: Validator Without Form Field" ; - rdfs:subClassOf :CWE-1164 ; - :cwe-id "CWE-110" ; - :definition "Validation fields that do not appear in forms they are associated with indicate that the validation logic is out of date." . - -:CWE-111 a owl:Class ; - rdfs:label "Direct Use of Unsafe JNI" ; - rdfs:subClassOf :CWE-695 ; - :cwe-id "CWE-111" ; - :definition "When a Java application uses the Java Native Interface (JNI) to call code written in another programming language, it can expose the application to weaknesses in that code, even if those weaknesses cannot occur in Java." . - -:CWE-112 a owl:Class ; - rdfs:label "Missing XML Validation" ; - rdfs:subClassOf :CWE-1286 ; - :cwe-id "CWE-112" ; - :definition "The product accepts XML from an untrusted source but does not validate the XML against the proper schema." . - -:CWE-113 a owl:Class ; - rdfs:label "Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting')" ; - rdfs:subClassOf :CWE-93, - :CWE-436 ; - :cwe-id "CWE-113" ; - :definition "The product receives data from an HTTP agent/component (e.g., web server, proxy, browser, etc.), but it does not neutralize or incorrectly neutralizes CR and LF characters before the data is included in outgoing HTTP headers." ; - :synonym "HTTP Request Splitting", - "HTTP Response Splitting" . - -:CWE-114 a owl:Class ; - rdfs:label "Process Control" ; - rdfs:subClassOf :CWE-73 ; - :cwe-id "CWE-114" ; - :definition "Executing commands or loading libraries from an untrusted source or in an untrusted environment can cause an application to execute malicious commands (and payloads) on behalf of an attacker." . - -:CWE-115 a owl:Class ; - rdfs:label "Misinterpretation of Input" ; - rdfs:subClassOf :CWE-436 ; - :cwe-id "CWE-115" ; - :definition "The product misinterprets an input, whether from an attacker or another product, in a security-relevant fashion." . - -:CWE-116 a owl:Class ; - rdfs:label "Improper Encoding or Escaping of Output" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-116" ; - :definition "The product prepares a structured message for communication with another component, but encoding or escaping of the data is either missing or done incorrectly. As a result, the intended structure of the message is not preserved." ; - :synonym "Output Encoding", - "Output Sanitization", - "Output Validation" . - -:CWE-117 a owl:Class ; - rdfs:label "Improper Output Neutralization for Logs" ; - rdfs:subClassOf :CWE-116 ; - :cwe-id "CWE-117" ; - :definition "The product constructs a log message from external input, but it does not neutralize or incorrectly neutralizes special elements when the message is written to a log file." ; - :synonym "Log forging" . - -:CWE-118 a owl:Class ; - rdfs:label "Incorrect Access of Indexable Resource ('Range Error')" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-118" ; - :definition "The product does not restrict or incorrectly restricts operations within the boundaries of a resource that is accessed using an index or pointer, such as memory or files." . - -:CWE-119 a owl:Class ; - rdfs:label "Improper Restriction of Operations within the Bounds of a Memory Buffer" ; - rdfs:subClassOf :CWE-118, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :RawMemoryAccessFunction ] ; - :cwe-id "CWE-119" ; - :definition "The product performs operations on a memory buffer, but it reads from or writes to a memory location outside the buffer's intended boundary. This may result in read or write operations on unexpected memory locations that could be linked to other variables, data structures, or internal program data." ; - :synonym "Buffer Overflow", - "buffer overrun", - "memory safety" . - -:CWE-120 a owl:Class ; - rdfs:label "Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')" ; - rdfs:subClassOf :CWE-119, - :CWE-787 ; - :cwe-id "CWE-120" ; - :definition "The product copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer, leading to a buffer overflow." ; - :synonym "Classic Buffer Overflow", - "Unbounded Transfer" . - -:CWE-121 a owl:Class ; - rdfs:label "Stack-based Buffer Overflow" ; - rdfs:subClassOf :CWE-787, - :CWE-788 ; - :cwe-id "CWE-121" ; - :definition "A stack-based buffer overflow condition is a condition where the buffer being overwritten is allocated on the stack (i.e., is a local variable or, rarely, a parameter to a function)." ; - :synonym "Stack Overflow" . - -:CWE-122 a owl:Class ; - rdfs:label "Heap-based Buffer Overflow" ; - rdfs:subClassOf :CWE-787, - :CWE-788 ; - :cwe-id "CWE-122" ; - :definition "A heap overflow condition is a buffer overflow, where the buffer that can be overwritten is allocated in the heap portion of memory, generally meaning that the buffer was allocated using a routine such as malloc()." . - -:CWE-123 a owl:Class ; - rdfs:label "Write-what-where Condition" ; - rdfs:subClassOf :CWE-787 ; - :cwe-id "CWE-123" ; - :definition "Any condition where the attacker has the ability to write an arbitrary value to an arbitrary location, often as the result of a buffer overflow." . - -:CWE-124 a owl:Class ; - rdfs:label "Buffer Underwrite ('Buffer Underflow')" ; - rdfs:subClassOf :CWE-786, - :CWE-787 ; - :cwe-id "CWE-124" ; - :definition "The product writes to a buffer using an index or pointer that references a memory location prior to the beginning of the buffer." ; - :synonym "buffer underrun" . - -:CWE-125 a owl:Class ; - rdfs:label "Out-of-bounds Read" ; - rdfs:subClassOf :CWE-119, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :RawMemoryAccessFunction ] ; - :cwe-id "CWE-125" ; - :definition "The product reads data past the end, or before the beginning, of the intended buffer." ; - :synonym "OOB read" . - -:CWE-126 a owl:Class ; - rdfs:label "Buffer Over-read" ; - rdfs:subClassOf :CWE-125, - :CWE-788 ; - :cwe-id "CWE-126" ; - :definition "The product reads from a buffer using buffer access mechanisms such as indexes or pointers that reference memory locations after the targeted buffer." . - -:CWE-127 a owl:Class ; - rdfs:label "Buffer Under-read" ; - rdfs:subClassOf :CWE-125, - :CWE-786 ; - :cwe-id "CWE-127" ; - :definition "The product reads from a buffer using buffer access mechanisms such as indexes or pointers that reference memory locations prior to the targeted buffer." . - -:CWE-128 a owl:Class ; - rdfs:label "Wrap-around Error" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-128" ; - :definition "Wrap around errors occur whenever a value is incremented past the maximum value for its type and therefore \"wraps around\" to a very small, negative, or undefined value." . - -:CWE-129 a owl:Class ; - rdfs:label "Improper Validation of Array Index" ; - rdfs:subClassOf :CWE-1285 ; - :cwe-id "CWE-129" ; - :definition "The product uses untrusted input when calculating or using an array index, but the product does not validate or incorrectly validates the index to ensure the index references a valid position within the array." ; - :synonym "array index underflow", - "index-out-of-range", - "out-of-bounds array index" . - -:CWE-130 a owl:Class ; - rdfs:label "Improper Handling of Length Parameter Inconsistency" ; - rdfs:subClassOf :CWE-240 ; - :cwe-id "CWE-130" ; - :definition "The product parses a formatted message or structure, but it does not handle or incorrectly handles a length field that is inconsistent with the actual length of the associated data." ; - :synonym "length manipulation", - "length tampering" . - -:CWE-131 a owl:Class ; - rdfs:label "Incorrect Calculation of Buffer Size" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-131" ; - :definition "The product does not correctly calculate the size to be used when allocating a buffer, which could lead to a buffer overflow." . - -:CWE-134 a owl:Class ; - rdfs:label "Use of Externally-Controlled Format String" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-134" ; - :definition "The product uses a function that accepts a format string as an argument, but the format string originates from an external source." . - -:CWE-135 a owl:Class ; - rdfs:label "Incorrect Calculation of Multi-Byte String Length" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-135" ; - :definition "The product does not correctly calculate the length of strings that can contain wide or multi-byte characters." . - -:CWE-138 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-138" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as control elements or syntactic markers when they are sent to a downstream component." . - -:CWE-140 a owl:Class ; - rdfs:label "Improper Neutralization of Delimiters" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-140" ; - :definition "The product does not neutralize or incorrectly neutralizes delimiters." . - -:CWE-141 a owl:Class ; - rdfs:label "Improper Neutralization of Parameter/Argument Delimiters" ; - rdfs:subClassOf :CWE-140 ; - :cwe-id "CWE-141" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as parameter or argument delimiters when they are sent to a downstream component." . - -:CWE-142 a owl:Class ; - rdfs:label "Improper Neutralization of Value Delimiters" ; - rdfs:subClassOf :CWE-140 ; - :cwe-id "CWE-142" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as value delimiters when they are sent to a downstream component." . - -:CWE-143 a owl:Class ; - rdfs:label "Improper Neutralization of Record Delimiters" ; - rdfs:subClassOf :CWE-140 ; - :cwe-id "CWE-143" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as record delimiters when they are sent to a downstream component." . - -:CWE-144 a owl:Class ; - rdfs:label "Improper Neutralization of Line Delimiters" ; - rdfs:subClassOf :CWE-140 ; - :cwe-id "CWE-144" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as line delimiters when they are sent to a downstream component." . - -:CWE-145 a owl:Class ; - rdfs:label "Improper Neutralization of Section Delimiters" ; - rdfs:subClassOf :CWE-140 ; - :cwe-id "CWE-145" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as section delimiters when they are sent to a downstream component." . - -:CWE-146 a owl:Class ; - rdfs:label "Improper Neutralization of Expression/Command Delimiters" ; - rdfs:subClassOf :CWE-140 ; - :cwe-id "CWE-146" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as expression or command delimiters when they are sent to a downstream component." . - -:CWE-147 a owl:Class ; - rdfs:label "Improper Neutralization of Input Terminators" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-147" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as input terminators when they are sent to a downstream component." . - -:CWE-148 a owl:Class ; - rdfs:label "Improper Neutralization of Input Leaders" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-148" ; - :definition "The product does not properly handle when a leading character or sequence (\"leader\") is missing or malformed, or if multiple leaders are used when only one should be allowed." . - -:CWE-149 a owl:Class ; - rdfs:label "Improper Neutralization of Quoting Syntax" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-149" ; - :definition "Quotes injected into a product can be used to compromise a system. As data are parsed, an injected/absent/duplicate/malformed use of quotes may cause the process to take unexpected actions." . - -:CWE-150 a owl:Class ; - rdfs:label "Improper Neutralization of Escape, Meta, or Control Sequences" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-150" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as escape, meta, or control character sequences when they are sent to a downstream component." . - -:CWE-151 a owl:Class ; - rdfs:label "Improper Neutralization of Comment Delimiters" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-151" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as comment delimiters when they are sent to a downstream component." . - -:CWE-152 a owl:Class ; - rdfs:label "Improper Neutralization of Macro Symbols" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-152" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as macro symbols when they are sent to a downstream component." . - -:CWE-153 a owl:Class ; - rdfs:label "Improper Neutralization of Substitution Characters" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-153" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as substitution characters when they are sent to a downstream component." . - -:CWE-154 a owl:Class ; - rdfs:label "Improper Neutralization of Variable Name Delimiters" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-154" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as variable name delimiters when they are sent to a downstream component." . - -:CWE-155 a owl:Class ; - rdfs:label "Improper Neutralization of Wildcards or Matching Symbols" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-155" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as wildcards or matching symbols when they are sent to a downstream component." . - -:CWE-156 a owl:Class ; - rdfs:label "Improper Neutralization of Whitespace" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-156" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as whitespace when they are sent to a downstream component." ; - :synonym "White space" . - -:CWE-157 a owl:Class ; - rdfs:label "Failure to Sanitize Paired Delimiters" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-157" ; - :definition "The product does not properly handle the characters that are used to mark the beginning and ending of a group of entities, such as parentheses, brackets, and braces." . - -:CWE-158 a owl:Class ; - rdfs:label "Improper Neutralization of Null Byte or NUL Character" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-158" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes NUL characters or null bytes when they are sent to a downstream component." . - -:CWE-159 a owl:Class ; - rdfs:label "Improper Handling of Invalid Use of Special Elements" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-159" ; - :definition "The product does not properly filter, remove, quote, or otherwise manage the invalid use of special elements in user-controlled input, which could cause adverse effect on its behavior and integrity." . - -:CWE-160 a owl:Class ; - rdfs:label "Improper Neutralization of Leading Special Elements" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-160" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes leading special elements that could be interpreted in unexpected ways when they are sent to a downstream component." . - -:CWE-161 a owl:Class ; - rdfs:label "Improper Neutralization of Multiple Leading Special Elements" ; - rdfs:subClassOf :CWE-160 ; - :cwe-id "CWE-161" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes multiple leading special elements that could be interpreted in unexpected ways when they are sent to a downstream component." . - -:CWE-162 a owl:Class ; - rdfs:label "Improper Neutralization of Trailing Special Elements" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-162" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes trailing special elements that could be interpreted in unexpected ways when they are sent to a downstream component." . - -:CWE-163 a owl:Class ; - rdfs:label "Improper Neutralization of Multiple Trailing Special Elements" ; - rdfs:subClassOf :CWE-162 ; - :cwe-id "CWE-163" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes multiple trailing special elements that could be interpreted in unexpected ways when they are sent to a downstream component." . - -:CWE-164 a owl:Class ; - rdfs:label "Improper Neutralization of Internal Special Elements" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-164" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes internal special elements that could be interpreted in unexpected ways when they are sent to a downstream component." . - -:CWE-165 a owl:Class ; - rdfs:label "Improper Neutralization of Multiple Internal Special Elements" ; - rdfs:subClassOf :CWE-164 ; - :cwe-id "CWE-165" ; - :definition "The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes multiple internal special elements that could be interpreted in unexpected ways when they are sent to a downstream component." . - -:CWE-166 a owl:Class ; - rdfs:label "Improper Handling of Missing Special Element" ; - rdfs:subClassOf :CWE-159, - :CWE-228, - :CWE-703 ; - :cwe-id "CWE-166" ; - :definition "The product receives input from an upstream component, but it does not handle or incorrectly handles when an expected special element is missing." . - -:CWE-167 a owl:Class ; - rdfs:label "Improper Handling of Additional Special Element" ; - rdfs:subClassOf :CWE-159, - :CWE-228, - :CWE-703 ; - :cwe-id "CWE-167" ; - :definition "The product receives input from an upstream component, but it does not handle or incorrectly handles when an additional unexpected special element is provided." . - -:CWE-168 a owl:Class ; - rdfs:label "Improper Handling of Inconsistent Special Elements" ; - rdfs:subClassOf :CWE-159, - :CWE-228, - :CWE-703 ; - :cwe-id "CWE-168" ; - :definition "The product does not properly handle input in which an inconsistency exists between two or more special characters or reserved words." . - -:CWE-170 a owl:Class ; - rdfs:label "Improper Null Termination" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-170" ; - :definition "The product does not terminate or incorrectly terminates a string or array with a null character or equivalent terminator." . - -:CWE-172 a owl:Class ; - rdfs:label "Encoding Error" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-172" ; - :definition "The product does not properly encode or decode the data, resulting in unexpected values." . - -:CWE-173 a owl:Class ; - rdfs:label "Improper Handling of Alternate Encoding" ; - rdfs:subClassOf :CWE-172 ; - :cwe-id "CWE-173" ; - :definition "The product does not properly handle when an input uses an alternate encoding that is valid for the control sphere to which the input is being sent." . - -:CWE-174 a owl:Class ; - rdfs:label "Double Decoding of the Same Data" ; - rdfs:subClassOf :CWE-172, - :CWE-675 ; - :cwe-id "CWE-174" ; - :definition "The product decodes the same input twice, which can limit the effectiveness of any protection mechanism that occurs in between the decoding operations." . - -:CWE-175 a owl:Class ; - rdfs:label "Improper Handling of Mixed Encoding" ; - rdfs:subClassOf :CWE-172 ; - :cwe-id "CWE-175" ; - :definition "The product does not properly handle when the same input uses several different (mixed) encodings." . - -:CWE-176 a owl:Class ; - rdfs:label "Improper Handling of Unicode Encoding" ; - rdfs:subClassOf :CWE-172 ; - :cwe-id "CWE-176" ; - :definition "The product does not properly handle when an input contains Unicode encoding." . - -:CWE-177 a owl:Class ; - rdfs:label "Improper Handling of URL Encoding (Hex Encoding)" ; - rdfs:subClassOf :CWE-172 ; - :cwe-id "CWE-177" ; - :definition "The product does not properly handle when all or part of an input has been URL encoded." . - -:CWE-178 a owl:Class ; - rdfs:label "Improper Handling of Case Sensitivity" ; - rdfs:subClassOf :CWE-706 ; - :cwe-id "CWE-178" ; - :definition "The product does not properly account for differences in case sensitivity when accessing or determining the properties of a resource, leading to inconsistent results." . - -:CWE-179 a owl:Class ; - rdfs:label "Incorrect Behavior Order: Early Validation" ; - rdfs:subClassOf :CWE-20, - :CWE-696 ; - :cwe-id "CWE-179" ; - :definition "The product validates input before applying protection mechanisms that modify the input, which could allow an attacker to bypass the validation via dangerous inputs that only arise after the modification." . - -:CWE-180 a owl:Class ; - rdfs:label "Incorrect Behavior Order: Validate Before Canonicalize" ; - rdfs:subClassOf :CWE-179 ; - :cwe-id "CWE-180" ; - :definition "The product validates input before it is canonicalized, which prevents the product from detecting data that becomes invalid after the canonicalization step." . - -:CWE-181 a owl:Class ; - rdfs:label "Incorrect Behavior Order: Validate Before Filter" ; - rdfs:subClassOf :CWE-179 ; - :cwe-id "CWE-181" ; - :definition "The product validates data before it has been filtered, which prevents the product from detecting data that becomes invalid after the filtering step." ; - :synonym "Validate-before-cleanse" . - -:CWE-182 a owl:Class ; - rdfs:label "Collapse of Data into Unsafe Value" ; - rdfs:subClassOf :CWE-693, - :CWE-707 ; - :cwe-id "CWE-182" ; - :definition "The product filters data in a way that causes it to be reduced or \"collapsed\" into an unsafe value that violates an expected security property." . - -:CWE-183 a owl:Class ; - rdfs:label "Permissive List of Allowed Inputs" ; - rdfs:subClassOf :CWE-697 ; - :cwe-id "CWE-183" ; - :definition "The product implements a protection mechanism that relies on a list of inputs (or properties of inputs) that are explicitly allowed by policy because the inputs are assumed to be safe, but the list is too permissive - that is, it allows an input that is unsafe, leading to resultant weaknesses." ; - :synonym "Allowlist / Allow List", - "Safelist / Safe List", - "Whitelist / White List" . - -:CWE-184 a owl:Class ; - rdfs:label "Incomplete List of Disallowed Inputs" ; - rdfs:subClassOf :CWE-693, - :CWE-1023 ; - :cwe-id "CWE-184" ; - :definition "The product implements a protection mechanism that relies on a list of inputs (or properties of inputs) that are not allowed by policy or otherwise require other action to neutralize before additional processing takes place, but the list is incomplete." ; - :synonym "Blacklist / Black List", - "Blocklist / Block List", - "Denylist / Deny List" . - -:CWE-185 a owl:Class ; - rdfs:label "Incorrect Regular Expression" ; - rdfs:subClassOf :CWE-697 ; - :cwe-id "CWE-185" ; - :definition "The product specifies a regular expression in a way that causes data to be improperly matched or compared." . - -:CWE-186 a owl:Class ; - rdfs:label "Overly Restrictive Regular Expression" ; - rdfs:subClassOf :CWE-185 ; - :cwe-id "CWE-186" ; - :definition "A regular expression is overly restrictive, which prevents dangerous values from being detected." . - -:CWE-187 a owl:Class ; - rdfs:label "Partial String Comparison" ; - rdfs:subClassOf :CWE-1023 ; - :cwe-id "CWE-187" ; - :definition "The product performs a comparison that only examines a portion of a factor before determining whether there is a match, such as a substring, leading to resultant weaknesses." . - -:CWE-188 a owl:Class ; - rdfs:label "Reliance on Data/Memory Layout" ; - rdfs:subClassOf :CWE-435, - :CWE-1105 ; - :cwe-id "CWE-188" ; - :definition "The product makes invalid assumptions about how protocol data or memory is organized at a lower level, resulting in unintended program behavior." . - -:CWE-190 a owl:Class ; - rdfs:label "Integer Overflow or Wraparound" ; - rdfs:subClassOf :CWE-682, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :MathematicalFunction ] ; - :cwe-id "CWE-190" ; - :definition "The product performs a calculation that can produce an integer overflow or wraparound when the logic assumes that the resulting value will always be larger than the original value. This occurs when an integer value is incremented to a value that is too large to store in the associated representation. When this occurs, the value may become a very small or negative number." ; - :synonym "Overflow", - "wrap, wrap-around, wrap around", - "Wraparound" . - -:CWE-191 a owl:Class ; - rdfs:label "Integer Underflow (Wrap or Wraparound)" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-191" ; - :definition "The product subtracts one value from another, such that the result is less than the minimum allowable integer value, which produces a value that is not equal to the correct result." ; - :synonym "Integer underflow" . - -:CWE-192 a owl:Class ; - rdfs:label "Integer Coercion Error" ; - rdfs:subClassOf :CWE-681 ; - :cwe-id "CWE-192" ; - :definition "Integer coercion refers to a set of flaws pertaining to the type casting, extension, or truncation of primitive data types." . - -:CWE-193 a owl:Class ; - rdfs:label "Off-by-one Error" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-193" ; - :definition "A product calculates or uses an incorrect maximum or minimum value that is 1 more, or 1 less, than the correct value." ; - :synonym "off-by-five" . - -:CWE-194 a owl:Class ; - rdfs:label "Unexpected Sign Extension" ; - rdfs:subClassOf :CWE-681 ; - :cwe-id "CWE-194" ; - :definition "The product performs an operation on a number that causes it to be sign extended when it is transformed into a larger data type. When the original number is negative, this can produce unexpected values that lead to resultant weaknesses." . - -:CWE-195 a owl:Class ; - rdfs:label "Signed to Unsigned Conversion Error" ; - rdfs:subClassOf :CWE-681 ; - :cwe-id "CWE-195" ; - :definition "The product uses a signed primitive and performs a cast to an unsigned primitive, which can produce an unexpected value if the value of the signed primitive can not be represented using an unsigned primitive." . - -:CWE-196 a owl:Class ; - rdfs:label "Unsigned to Signed Conversion Error" ; - rdfs:subClassOf :CWE-681 ; - :cwe-id "CWE-196" ; - :definition "The product uses an unsigned primitive and performs a cast to a signed primitive, which can produce an unexpected value if the value of the unsigned primitive can not be represented using a signed primitive." . - -:CWE-197 a owl:Class ; - rdfs:label "Numeric Truncation Error" ; - rdfs:subClassOf :CWE-681 ; - :cwe-id "CWE-197" ; - :definition "Truncation errors occur when a primitive is cast to a primitive of a smaller size and data is lost in the conversion." . - -:CWE-198 a owl:Class ; - rdfs:label "Use of Incorrect Byte Ordering" ; - rdfs:subClassOf :CWE-188 ; - :cwe-id "CWE-198" ; - :definition "The product receives input from an upstream component, but it does not account for byte ordering (e.g. big-endian and little-endian) when processing the input, causing an incorrect number or value to be used." . - -:CWE-200 a owl:Class ; - rdfs:label "Exposure of Sensitive Information to an Unauthorized Actor" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-200" ; - :definition "The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information." ; - :synonym "Information Disclosure", - "Information Leak" . - -:CWE-201 a owl:Class ; - rdfs:label "Insertion of Sensitive Information Into Sent Data" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-201" ; - :definition "The code transmits data to another actor, but a portion of the data includes sensitive information that should not be accessible to that actor." . - -:CWE-202 a owl:Class ; - rdfs:label "Exposure of Sensitive Information Through Data Queries" ; - rdfs:subClassOf :CWE-1230 ; - :cwe-id "CWE-202" ; - :definition "When trying to keep information confidential, an attacker can often infer some of the information by using statistics." . - -:CWE-203 a owl:Class ; - rdfs:label "Observable Discrepancy" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-203" ; - :definition "The product behaves differently or sends different responses under different circumstances in a way that is observable to an unauthorized actor, which exposes security-relevant information about the state of the product, such as whether a particular operation was successful or not." ; - :synonym "Side Channel Attack" . - -:CWE-204 a owl:Class ; - rdfs:label "Observable Response Discrepancy" ; - rdfs:subClassOf :CWE-203 ; - :cwe-id "CWE-204" ; - :definition "The product provides different responses to incoming requests in a way that reveals internal state information to an unauthorized actor outside of the intended control sphere." . - -:CWE-205 a owl:Class ; - rdfs:label "Observable Behavioral Discrepancy" ; - rdfs:subClassOf :CWE-203 ; - :cwe-id "CWE-205" ; - :definition "The product's behaviors indicate important differences that may be observed by unauthorized actors in a way that reveals (1) its internal state or decision process, or (2) differences from other products with equivalent functionality." . - -:CWE-206 a owl:Class ; - rdfs:label "Observable Internal Behavioral Discrepancy" ; - rdfs:subClassOf :CWE-205 ; - :cwe-id "CWE-206" ; - :definition "The product performs multiple behaviors that are combined to produce a single result, but the individual behaviors are observable separately in a way that allows attackers to reveal internal state or internal decision points." . - -:CWE-207 a owl:Class ; - rdfs:label "Observable Behavioral Discrepancy With Equivalent Products" ; - rdfs:subClassOf :CWE-205 ; - :cwe-id "CWE-207" ; - :definition "The product operates in an environment in which its existence or specific identity should not be known, but it behaves differently than other products with equivalent functionality, in a way that is observable to an attacker." . - -:CWE-208 a owl:Class ; - rdfs:label "Observable Timing Discrepancy" ; - rdfs:subClassOf :CWE-203 ; - :cwe-id "CWE-208" ; - :definition "Two separate operations in a product require different amounts of time to complete, in a way that is observable to an actor and reveals security-relevant information about the state of the product, such as whether a particular operation was successful or not." . - -:CWE-209 a owl:Class ; - rdfs:label "Generation of Error Message Containing Sensitive Information" ; - rdfs:subClassOf :CWE-200, - :CWE-755 ; - :cwe-id "CWE-209" ; - :definition "The product generates an error message that includes sensitive information about its environment, users, or associated data." . - -:CWE-210 a owl:Class ; - rdfs:label "Self-generated Error Message Containing Sensitive Information" ; - rdfs:subClassOf :CWE-209 ; - :cwe-id "CWE-210" ; - :definition "The product identifies an error condition and creates its own diagnostic or error messages that contain sensitive information." . - -:CWE-211 a owl:Class ; - rdfs:label "Externally-Generated Error Message Containing Sensitive Information" ; - rdfs:subClassOf :CWE-209 ; - :cwe-id "CWE-211" ; - :definition "The product performs an operation that triggers an external diagnostic or error message that is not directly generated or controlled by the product, such as an error generated by the programming language interpreter that a software application uses. The error can contain sensitive system information." . - -:CWE-212 a owl:Class ; - rdfs:label "Improper Removal of Sensitive Information Before Storage or Transfer" ; - rdfs:subClassOf :CWE-669 ; - :cwe-id "CWE-212" ; - :definition "The product stores, transfers, or shares a resource that contains sensitive information, but it does not properly remove that information before the product makes the resource available to unauthorized actors." . - -:CWE-213 a owl:Class ; - rdfs:label "Exposure of Sensitive Information Due to Incompatible Policies" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-213" ; - :definition "The product's intended functionality exposes information to certain actors in accordance with the developer's security policy, but this information is regarded as sensitive according to the intended security policies of other stakeholders such as the product's administrator, users, or others whose information is being processed." . - -:CWE-214 a owl:Class ; - rdfs:label "Invocation of Process Using Visible Sensitive Information" ; - rdfs:subClassOf :CWE-497 ; - :cwe-id "CWE-214" ; - :definition "A process is invoked with sensitive command-line arguments, environment variables, or other elements that can be seen by other processes on the operating system." . - -:CWE-215 a owl:Class ; - rdfs:label "Insertion of Sensitive Information Into Debugging Code" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-215" ; - :definition "The product inserts sensitive information into debugging code, which could expose this information if the debugging code is not disabled in production." . - -:CWE-219 a owl:Class ; - rdfs:label "Storage of File with Sensitive Data Under Web Root" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-219" ; - :definition "The product stores sensitive data under the web document root with insufficient access control, which might make it accessible to untrusted parties." . - -:CWE-220 a owl:Class ; - rdfs:label "Storage of File With Sensitive Data Under FTP Root" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-220" ; - :definition "The product stores sensitive data under the FTP server root with insufficient access control, which might make it accessible to untrusted parties." . - -:CWE-221 a owl:Class ; - rdfs:label "Information Loss or Omission" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-221" ; - :definition "The product does not record, or improperly records, security-relevant information that leads to an incorrect decision or hampers later analysis." . - -:CWE-222 a owl:Class ; - rdfs:label "Truncation of Security-relevant Information" ; - rdfs:subClassOf :CWE-221 ; - :cwe-id "CWE-222" ; - :definition "The product truncates the display, recording, or processing of security-relevant information in a way that can obscure the source or nature of an attack." . - -:CWE-223 a owl:Class ; - rdfs:label "Omission of Security-relevant Information" ; - rdfs:subClassOf :CWE-221 ; - :cwe-id "CWE-223" ; - :definition "The product does not record or display information that would be important for identifying the source or nature of an attack, or determining if an action is safe." . - -:CWE-224 a owl:Class ; - rdfs:label "Obscured Security-relevant Information by Alternate Name" ; - rdfs:subClassOf :CWE-221 ; - :cwe-id "CWE-224" ; - :definition "The product records security-relevant information according to an alternate name of the affected entity, instead of the canonical name." . - -:CWE-226 a owl:Class ; - rdfs:label "Sensitive Information in Resource Not Removed Before Reuse" ; - rdfs:subClassOf :CWE-212, - :CWE-459 ; - :cwe-id "CWE-226" ; - :definition "The product releases a resource such as memory or a file so that it can be made available for reuse, but it does not clear or \"zeroize\" the information contained in the resource before the product performs a critical state transition or makes the resource available for reuse by other entities." . - -:CWE-228 a owl:Class ; - rdfs:label "Improper Handling of Syntactically Invalid Structure" ; - rdfs:subClassOf :CWE-703, - :CWE-707 ; - :cwe-id "CWE-228" ; - :definition "The product does not handle or incorrectly handles input that is not syntactically well-formed with respect to the associated specification." . - -:CWE-229 a owl:Class ; - rdfs:label "Improper Handling of Values" ; - rdfs:subClassOf :CWE-228 ; - :cwe-id "CWE-229" ; - :definition "The product does not properly handle when the expected number of values for parameters, fields, or arguments is not provided in input, or if those values are undefined." . - -:CWE-230 a owl:Class ; - rdfs:label "Improper Handling of Missing Values" ; - rdfs:subClassOf :CWE-229 ; - :cwe-id "CWE-230" ; - :definition "The product does not handle or incorrectly handles when a parameter, field, or argument name is specified, but the associated value is missing, i.e. it is empty, blank, or null." . - -:CWE-231 a owl:Class ; - rdfs:label "Improper Handling of Extra Values" ; - rdfs:subClassOf :CWE-229 ; - :cwe-id "CWE-231" ; - :definition "The product does not handle or incorrectly handles when more values are provided than expected." . - -:CWE-232 a owl:Class ; - rdfs:label "Improper Handling of Undefined Values" ; - rdfs:subClassOf :CWE-229 ; - :cwe-id "CWE-232" ; - :definition "The product does not handle or incorrectly handles when a value is not defined or supported for the associated parameter, field, or argument name." . - -:CWE-233 a owl:Class ; - rdfs:label "Improper Handling of Parameters" ; - rdfs:subClassOf :CWE-228 ; - :cwe-id "CWE-233" ; - :definition "The product does not properly handle when the expected number of parameters, fields, or arguments is not provided in input, or if those parameters are undefined." . - -:CWE-234 a owl:Class ; - rdfs:label "Failure to Handle Missing Parameter" ; - rdfs:subClassOf :CWE-233 ; - :cwe-id "CWE-234" ; - :definition "If too few arguments are sent to a function, the function will still pop the expected number of arguments from the stack. Potentially, a variable number of arguments could be exhausted in a function as well." . - -:CWE-235 a owl:Class ; - rdfs:label "Improper Handling of Extra Parameters" ; - rdfs:subClassOf :CWE-233 ; - :cwe-id "CWE-235" ; - :definition "The product does not handle or incorrectly handles when the number of parameters, fields, or arguments with the same name exceeds the expected amount." . - -:CWE-236 a owl:Class ; - rdfs:label "Improper Handling of Undefined Parameters" ; - rdfs:subClassOf :CWE-233 ; - :cwe-id "CWE-236" ; - :definition "The product does not handle or incorrectly handles when a particular parameter, field, or argument name is not defined or supported by the product." . - -:CWE-237 a owl:Class ; - rdfs:label "Improper Handling of Structural Elements" ; - rdfs:subClassOf :CWE-228 ; - :cwe-id "CWE-237" ; - :definition "The product does not handle or incorrectly handles inputs that are related to complex structures." . - -:CWE-238 a owl:Class ; - rdfs:label "Improper Handling of Incomplete Structural Elements" ; - rdfs:subClassOf :CWE-237 ; - :cwe-id "CWE-238" ; - :definition "The product does not handle or incorrectly handles when a particular structural element is not completely specified." . - -:CWE-239 a owl:Class ; - rdfs:label "Failure to Handle Incomplete Element" ; - rdfs:subClassOf :CWE-237 ; - :cwe-id "CWE-239" ; - :definition "The product does not properly handle when a particular element is not completely specified." . - -:CWE-240 a owl:Class ; - rdfs:label "Improper Handling of Inconsistent Structural Elements" ; - rdfs:subClassOf :CWE-237, - :CWE-707 ; - :cwe-id "CWE-240" ; - :definition "The product does not handle or incorrectly handles when two or more structural elements should be consistent, but are not." . - -:CWE-241 a owl:Class ; - rdfs:label "Improper Handling of Unexpected Data Type" ; - rdfs:subClassOf :CWE-228 ; - :cwe-id "CWE-241" ; - :definition "The product does not handle or incorrectly handles when a particular element is not the expected type, e.g. it expects a digit (0-9) but is provided with a letter (A-Z)." . - -:CWE-242 a owl:Class ; - rdfs:label "Use of Inherently Dangerous Function" ; - rdfs:subClassOf :CWE-1177 ; - :cwe-id "CWE-242" ; - :definition "The product calls a function that can never be guaranteed to work safely." . - -:CWE-243 a owl:Class ; - rdfs:label "Creation of chroot Jail Without Changing Working Directory" ; - rdfs:subClassOf :CWE-573, - :CWE-669 ; - :cwe-id "CWE-243" ; - :definition "The product uses the chroot() system call to create a jail, but does not change the working directory afterward. This does not prevent access to files outside of the jail." . - -:CWE-244 a owl:Class ; - rdfs:label "Improper Clearing of Heap Memory Before Release ('Heap Inspection')" ; - rdfs:subClassOf :CWE-226 ; - :cwe-id "CWE-244" ; - :definition "Using realloc() to resize buffers that store sensitive information can leave the sensitive information exposed to attack, because it is not removed from memory." . - -:CWE-245 a owl:Class ; - rdfs:label "J2EE Bad Practices: Direct Management of Connections" ; - rdfs:subClassOf :CWE-695 ; - :cwe-id "CWE-245" ; - :definition "The J2EE application directly manages connections, instead of using the container's connection management facilities." . - -:CWE-246 a owl:Class ; - rdfs:label "J2EE Bad Practices: Direct Use of Sockets" ; - rdfs:subClassOf :CWE-695 ; - :cwe-id "CWE-246" ; - :definition "The J2EE application directly uses sockets instead of using framework method calls." . - -:CWE-248 a owl:Class ; - rdfs:label "Uncaught Exception" ; - rdfs:subClassOf :CWE-703, - :CWE-705, - :CWE-755 ; - :cwe-id "CWE-248" ; - :definition "An exception is thrown from a function, but it is not caught." . - -:CWE-250 a owl:Class ; - rdfs:label "Execution with Unnecessary Privileges" ; - rdfs:subClassOf :CWE-269, - :CWE-657 ; - :cwe-id "CWE-250" ; - :definition "The product performs an operation at a privilege level that is higher than the minimum level required, which creates new weaknesses or amplifies the consequences of other weaknesses." . - -:CWE-252 a owl:Class ; - rdfs:label "Unchecked Return Value" ; - rdfs:subClassOf :CWE-754 ; - :cwe-id "CWE-252" ; - :definition "The product does not check the return value from a method or function, which can prevent it from detecting unexpected states and conditions." . - -:CWE-253 a owl:Class ; - rdfs:label "Incorrect Check of Function Return Value" ; - rdfs:subClassOf :CWE-573, - :CWE-754 ; - :cwe-id "CWE-253" ; - :definition "The product incorrectly checks a return value from a function, which prevents it from detecting errors or exceptional conditions." . - -:CWE-256 a owl:Class ; - rdfs:label "Plaintext Storage of a Password" ; - rdfs:subClassOf :CWE-522 ; - :cwe-id "CWE-256" ; - :definition "Storing a password in plaintext may result in a system compromise." . - -:CWE-257 a owl:Class ; - rdfs:label "Storing Passwords in a Recoverable Format" ; - rdfs:subClassOf :CWE-522 ; - :cwe-id "CWE-257" ; - :definition "The storage of passwords in a recoverable format makes them subject to password reuse attacks by malicious users. In fact, it should be noted that recoverable encrypted passwords provide no significant benefit over plaintext passwords since they are subject not only to reuse by malicious attackers but also by malicious insiders. If a system administrator can recover a password directly, or use a brute force search on the available information, the administrator can use the password on other accounts." . - -:CWE-258 a owl:Class ; - rdfs:label "Empty Password in Configuration File" ; - rdfs:subClassOf :CWE-260, - :CWE-521 ; - :cwe-id "CWE-258" ; - :definition "Using an empty string as a password is insecure." . - -:CWE-259 a owl:Class ; - rdfs:label "Use of Hard-coded Password" ; - rdfs:subClassOf :CWE-798 ; - :cwe-id "CWE-259" ; - :definition "The product contains a hard-coded password, which it uses for its own inbound authentication or for outbound communication to external components." . - -:CWE-260 a owl:Class ; - rdfs:label "Password in Configuration File" ; - rdfs:subClassOf :CWE-522 ; - :cwe-id "CWE-260" ; - :definition "The product stores a password in a configuration file that might be accessible to actors who do not know the password." . - -:CWE-261 a owl:Class ; - rdfs:label "Weak Encoding for Password" ; - rdfs:subClassOf :CWE-522 ; - :cwe-id "CWE-261" ; - :definition "Obscuring a password with a trivial encoding does not protect the password." . - -:CWE-262 a owl:Class ; - rdfs:label "Not Using Password Aging" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-262" ; - :definition "The product does not have a mechanism in place for managing password aging." . - -:CWE-263 a owl:Class ; - rdfs:label "Password Aging with Long Expiration" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-263" ; - :definition "The product supports password aging, but the expiration period is too long." . - -:CWE-266 a owl:Class ; - rdfs:label "Incorrect Privilege Assignment" ; - rdfs:subClassOf :CWE-269 ; - :cwe-id "CWE-266" ; - :definition "A product incorrectly assigns a privilege to a particular actor, creating an unintended sphere of control for that actor." . - -:CWE-267 a owl:Class ; - rdfs:label "Privilege Defined With Unsafe Actions" ; - rdfs:subClassOf :CWE-269 ; - :cwe-id "CWE-267" ; - :definition "A particular privilege, role, capability, or right can be used to perform unsafe actions that were not intended, even when it is assigned to the correct entity." . - -:CWE-268 a owl:Class ; - rdfs:label "Privilege Chaining" ; - rdfs:subClassOf :CWE-269 ; - :cwe-id "CWE-268" ; - :definition "Two distinct privileges, roles, capabilities, or rights can be combined in a way that allows an entity to perform unsafe actions that would not be allowed without that combination." . - -:CWE-269 a owl:Class ; - rdfs:label "Improper Privilege Management" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-269" ; - :definition "The product does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor." . - -:CWE-270 a owl:Class ; - rdfs:label "Privilege Context Switching Error" ; - rdfs:subClassOf :CWE-269 ; - :cwe-id "CWE-270" ; - :definition "The product does not properly manage privileges while it is switching between different contexts that have different privileges or spheres of control." . - -:CWE-271 a owl:Class ; - rdfs:label "Privilege Dropping / Lowering Errors" ; - rdfs:subClassOf :CWE-269 ; - :cwe-id "CWE-271" ; - :definition "The product does not drop privileges before passing control of a resource to an actor that does not have those privileges." . - -:CWE-272 a owl:Class ; - rdfs:label "Least Privilege Violation" ; - rdfs:subClassOf :CWE-271 ; - :cwe-id "CWE-272" ; - :definition "The elevated privilege level required to perform operations such as chroot() should be dropped immediately after the operation is performed." . - -:CWE-273 a owl:Class ; - rdfs:label "Improper Check for Dropped Privileges" ; - rdfs:subClassOf :CWE-271, - :CWE-754 ; - :cwe-id "CWE-273" ; - :definition "The product attempts to drop privileges but does not check or incorrectly checks to see if the drop succeeded." . - -:CWE-274 a owl:Class ; - rdfs:label "Improper Handling of Insufficient Privileges" ; - rdfs:subClassOf :CWE-269, - :CWE-755 ; - :cwe-id "CWE-274" ; - :definition "The product does not handle or incorrectly handles when it has insufficient privileges to perform an operation, leading to resultant weaknesses." . - -:CWE-276 a owl:Class ; - rdfs:label "Incorrect Default Permissions" ; - rdfs:subClassOf :CWE-732, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :ApplicationInstaller ] ; - :cwe-id "CWE-276" ; - :definition "During installation, installed file permissions are set to allow anyone to modify those files." . - -:CWE-277 a owl:Class ; - rdfs:label "Insecure Inherited Permissions" ; - rdfs:subClassOf :CWE-732 ; - :cwe-id "CWE-277" ; - :definition "A product defines a set of insecure permissions that are inherited by objects that are created by the program." . - -:CWE-278 a owl:Class ; - rdfs:label "Insecure Preserved Inherited Permissions" ; - rdfs:subClassOf :CWE-732 ; - :cwe-id "CWE-278" ; - :definition "A product inherits a set of insecure permissions for an object, e.g. when copying from an archive file, without user awareness or involvement." . - -:CWE-279 a owl:Class ; - rdfs:label "Incorrect Execution-Assigned Permissions" ; - rdfs:subClassOf :CWE-732 ; - :cwe-id "CWE-279" ; - :definition "While it is executing, the product sets the permissions of an object in a way that violates the intended permissions that have been specified by the user." . - -:CWE-280 a owl:Class ; - rdfs:label "Improper Handling of Insufficient Permissions or Privileges " ; - rdfs:subClassOf :CWE-755 ; - :cwe-id "CWE-280" ; - :definition "The product does not handle or incorrectly handles when it has insufficient privileges to access resources or functionality as specified by their permissions. This may cause it to follow unexpected code paths that may leave the product in an invalid state." . - -:CWE-281 a owl:Class ; - rdfs:label "Improper Preservation of Permissions" ; - rdfs:subClassOf :CWE-732 ; - :cwe-id "CWE-281" ; - :definition "The product does not preserve permissions or incorrectly preserves permissions when copying, restoring, or sharing objects, which can cause them to have less restrictive permissions than intended." . - -:CWE-282 a owl:Class ; - rdfs:label "Improper Ownership Management" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-282" ; - :definition "The product assigns the wrong ownership, or does not properly verify the ownership, of an object or resource." . - -:CWE-283 a owl:Class ; - rdfs:label "Unverified Ownership" ; - rdfs:subClassOf :CWE-282 ; - :cwe-id "CWE-283" ; - :definition "The product does not properly verify that a critical resource is owned by the proper entity." . - -:CWE-284 a owl:Class ; - rdfs:label "Improper Access Control" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-284" ; - :definition "The product does not restrict or incorrectly restricts access to a resource from an unauthorized actor." ; - :synonym "Authorization" . - -:CWE-285 a owl:Class ; - rdfs:label "Improper Authorization" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-285" ; - :definition "The product does not perform or incorrectly performs an authorization check when an actor attempts to access a resource or perform an action." ; - :synonym "AuthZ" . - -:CWE-286 a owl:Class ; - rdfs:label "Incorrect User Management" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-286" ; - :definition "The product does not properly manage a user within its environment." . - -:CWE-287 a owl:Class ; - rdfs:label "Improper Authentication" ; - rdfs:subClassOf :CWE-284, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :AuthenticationFunction ] ; - :cwe-id "CWE-287" ; - :definition "When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct." ; - :synonym "AuthC", - "authentification", - "AuthN" . - -:CWE-288 a owl:Class ; - rdfs:label "Authentication Bypass Using an Alternate Path or Channel" ; - rdfs:subClassOf :CWE-306 ; - :cwe-id "CWE-288" ; - :definition "The product requires authentication, but the product has an alternate path or channel that does not require authentication." . - -:CWE-289 a owl:Class ; - rdfs:label "Authentication Bypass by Alternate Name" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-289" ; - :definition "The product performs authentication based on the name of a resource being accessed, or the name of the actor performing the access, but it does not properly check all possible names for that resource or actor." . - -:CWE-290 a owl:Class ; - rdfs:label "Authentication Bypass by Spoofing" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-290" ; - :definition "This attack-focused weakness is caused by incorrectly implemented authentication schemes that are subject to spoofing attacks." . - -:CWE-291 a owl:Class ; - rdfs:label "Reliance on IP Address for Authentication" ; - rdfs:subClassOf :CWE-290, - :CWE-471, - :CWE-923 ; - :cwe-id "CWE-291" ; - :definition "The product uses an IP address for authentication." . - -:CWE-293 a owl:Class ; - rdfs:label "Using Referer Field for Authentication" ; - rdfs:subClassOf :CWE-290 ; - :cwe-id "CWE-293" ; - :definition "The referer field in HTTP requests can be easily modified and, as such, is not a valid means of message integrity checking." ; - :synonym "referrer" . - -:CWE-294 a owl:Class ; - rdfs:label "Authentication Bypass by Capture-replay" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-294" ; - :definition "A capture-replay flaw exists when the design of the product makes it possible for a malicious user to sniff network traffic and bypass authentication by replaying it to the server in question to the same effect as the original message (or with minor changes)." . - -:CWE-295 a owl:Class ; - rdfs:label "Improper Certificate Validation" ; - rdfs:subClassOf :CWE-287 ; - :cwe-id "CWE-295" ; - :definition "The product does not validate, or incorrectly validates, a certificate." . - -:CWE-296 a owl:Class ; - rdfs:label "Improper Following of a Certificate's Chain of Trust" ; - rdfs:subClassOf :CWE-295, - :CWE-573 ; - :cwe-id "CWE-296" ; - :definition "The product does not follow, or incorrectly follows, the chain of trust for a certificate back to a trusted root certificate, resulting in incorrect trust of any resource that is associated with that certificate." . - -:CWE-297 a owl:Class ; - rdfs:label "Improper Validation of Certificate with Host Mismatch" ; - rdfs:subClassOf :CWE-295, - :CWE-923 ; - :cwe-id "CWE-297" ; - :definition "The product communicates with a host that provides a certificate, but the product does not properly ensure that the certificate is actually associated with that host." . - -:CWE-298 a owl:Class ; - rdfs:label "Improper Validation of Certificate Expiration" ; - rdfs:subClassOf :CWE-295, - :CWE-672 ; - :cwe-id "CWE-298" ; - :definition "A certificate expiration is not validated or is incorrectly validated, so trust may be assigned to certificates that have been abandoned due to age." . - -:CWE-299 a owl:Class ; - rdfs:label "Improper Check for Certificate Revocation" ; - rdfs:subClassOf :CWE-295, - :CWE-404 ; - :cwe-id "CWE-299" ; - :definition "The product does not check or incorrectly checks the revocation status of a certificate, which may cause it to use a certificate that has been compromised." . - -:CWE-300 a owl:Class ; - rdfs:label "Channel Accessible by Non-Endpoint" ; - rdfs:subClassOf :CWE-923 ; - :cwe-id "CWE-300" ; - :definition "The product does not adequately verify the identity of actors at both ends of a communication channel, or does not adequately ensure the integrity of the channel, in a way that allows the channel to be accessed or influenced by an actor that is not an endpoint." ; - :synonym "Adversary-in-the-Middle / AITM", - "Interception attack", - "Man-in-the-Middle / MITM", - "Manipulator-in-the-Middle", - "Monkey-in-the-Middle", - "Monster-in-the-Middle", - "On-path attack", - "Person-in-the-Middle / PITM" . - -:CWE-301 a owl:Class ; - rdfs:label "Reflection Attack in an Authentication Protocol" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-301" ; - :definition "Simple authentication protocols are subject to reflection attacks if a malicious user can use the target machine to impersonate a trusted user." . - -:CWE-302 a owl:Class ; - rdfs:label "Authentication Bypass by Assumed-Immutable Data" ; - rdfs:subClassOf :CWE-807, - :CWE-1390 ; - :cwe-id "CWE-302" ; - :definition "The authentication scheme or implementation uses key data elements that are assumed to be immutable, but can be controlled or modified by the attacker." . - -:CWE-303 a owl:Class ; - rdfs:label "Incorrect Implementation of Authentication Algorithm" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-303" ; - :definition "The requirements for the product dictate the use of an established authentication algorithm, but the implementation of the algorithm is incorrect." . - -:CWE-304 a owl:Class ; - rdfs:label "Missing Critical Step in Authentication" ; - rdfs:subClassOf :CWE-303, - :CWE-573 ; - :cwe-id "CWE-304" ; - :definition "The product implements an authentication technique, but it skips a step that weakens the technique." . - -:CWE-305 a owl:Class ; - rdfs:label "Authentication Bypass by Primary Weakness" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-305" ; - :definition "The authentication algorithm is sound, but the implemented mechanism can be bypassed as the result of a separate weakness that is primary to the authentication error." . - -:CWE-306 a owl:Class ; - rdfs:label "Missing Authentication for Critical Function" ; - rdfs:subClassOf :CWE-287 ; - :comment "Too broad to map to digital artifacts as it could consume any resource." ; - :cwe-id "CWE-306" ; - :definition "The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources." . - -:CWE-307 a owl:Class ; - rdfs:label "Improper Restriction of Excessive Authentication Attempts" ; - rdfs:subClassOf :CWE-799, - :CWE-1390 ; - :cwe-id "CWE-307" ; - :definition "The product does not implement sufficient measures to prevent multiple failed authentication attempts within a short time frame." . - -:CWE-308 a owl:Class ; - rdfs:label "Use of Single-factor Authentication" ; - rdfs:subClassOf :CWE-654, - :CWE-1390 ; - :cwe-id "CWE-308" ; - :definition "The use of single-factor authentication can lead to unnecessary risk of compromise when compared with the benefits of a dual-factor authentication scheme." . - -:CWE-309 a owl:Class ; - rdfs:label "Use of Password System for Primary Authentication" ; - rdfs:subClassOf :CWE-654, - :CWE-1390 ; - :cwe-id "CWE-309" ; - :definition "The use of password systems as the primary means of authentication may be subject to several flaws or shortcomings, each reducing the effectiveness of the mechanism." . - -:CWE-311 a owl:Class ; - rdfs:label "Missing Encryption of Sensitive Data" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-311" ; - :definition "The product does not encrypt sensitive or critical information before storage or transmission." . - -:CWE-312 a owl:Class ; - rdfs:label "Cleartext Storage of Sensitive Information" ; - rdfs:subClassOf :CWE-311, - :CWE-922 ; - :cwe-id "CWE-312" ; - :definition "The product stores sensitive information in cleartext within a resource that might be accessible to another control sphere." . - -:CWE-313 a owl:Class ; - rdfs:label "Cleartext Storage in a File or on Disk" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-313" ; - :definition "The product stores sensitive information in cleartext in a file, or on disk." . - -:CWE-314 a owl:Class ; - rdfs:label "Cleartext Storage in the Registry" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-314" ; - :definition "The product stores sensitive information in cleartext in the registry." . - -:CWE-315 a owl:Class ; - rdfs:label "Cleartext Storage of Sensitive Information in a Cookie" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-315" ; - :definition "The product stores sensitive information in cleartext in a cookie." . - -:CWE-316 a owl:Class ; - rdfs:label "Cleartext Storage of Sensitive Information in Memory" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-316" ; - :definition "The product stores sensitive information in cleartext in memory." . - -:CWE-317 a owl:Class ; - rdfs:label "Cleartext Storage of Sensitive Information in GUI" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-317" ; - :definition "The product stores sensitive information in cleartext within the GUI." . - -:CWE-318 a owl:Class ; - rdfs:label "Cleartext Storage of Sensitive Information in Executable" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-318" ; - :definition "The product stores sensitive information in cleartext in an executable." . - -:CWE-319 a owl:Class ; - rdfs:label "Cleartext Transmission of Sensitive Information" ; - rdfs:subClassOf :CWE-311 ; - :cwe-id "CWE-319" ; - :definition "The product transmits sensitive or security-critical data in cleartext in a communication channel that can be sniffed by unauthorized actors." . - -:CWE-321 a owl:Class ; - rdfs:label "Use of Hard-coded Cryptographic Key" ; - rdfs:subClassOf :CWE-798 ; - :cwe-id "CWE-321" ; - :definition "The product uses a hard-coded, unchangeable cryptographic key." . - -:CWE-322 a owl:Class ; - rdfs:label "Key Exchange without Entity Authentication" ; - rdfs:subClassOf :CWE-306 ; - :cwe-id "CWE-322" ; - :definition "The product performs a key exchange with an actor without verifying the identity of that actor." . - -:CWE-323 a owl:Class ; - rdfs:label "Reusing a Nonce, Key Pair in Encryption" ; - rdfs:subClassOf :CWE-344 ; - :cwe-id "CWE-323" ; - :definition "Nonces should be used for the present occasion and only once." . - -:CWE-324 a owl:Class ; - rdfs:label "Use of a Key Past its Expiration Date" ; - rdfs:subClassOf :CWE-672 ; - :cwe-id "CWE-324" ; - :definition "The product uses a cryptographic key or password past its expiration date, which diminishes its safety significantly by increasing the timing window for cracking attacks against that key." . - -:CWE-325 a owl:Class ; - rdfs:label "Missing Cryptographic Step" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-325" ; - :definition "The product does not implement a required step in a cryptographic algorithm, resulting in weaker encryption than advertised by the algorithm." . - -:CWE-326 a owl:Class ; - rdfs:label "Inadequate Encryption Strength" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-326" ; - :definition "The product stores or transmits sensitive data using an encryption scheme that is theoretically sound, but is not strong enough for the level of protection required." . - -:CWE-327 a owl:Class ; - rdfs:label "Use of a Broken or Risky Cryptographic Algorithm" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-327" ; - :definition "The product uses a broken or risky cryptographic algorithm or protocol." . - -:CWE-328 a owl:Class ; - rdfs:label "Use of Weak Hash" ; - rdfs:subClassOf :CWE-326, - :CWE-327 ; - :cwe-id "CWE-328" ; - :definition "The product uses an algorithm that produces a digest (output value) that does not meet security expectations for a hash function that allows an adversary to reasonably determine the original input (preimage attack), find another input that can produce the same hash (2nd preimage attack), or find multiple inputs that evaluate to the same hash (birthday attack)." . - -:CWE-329 a owl:Class ; - rdfs:label "Generation of Predictable IV with CBC Mode" ; - rdfs:subClassOf :CWE-573, - :CWE-1204 ; - :cwe-id "CWE-329" ; - :definition "The product generates and uses a predictable initialization Vector (IV) with Cipher Block Chaining (CBC) Mode, which causes algorithms to be susceptible to dictionary attacks when they are encrypted under the same key." . - -:CWE-330 a owl:Class ; - rdfs:label "Use of Insufficiently Random Values" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-330" ; - :definition "The product uses insufficiently random numbers or values in a security context that depends on unpredictable numbers." . - -:CWE-331 a owl:Class ; - rdfs:label "Insufficient Entropy" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-331" ; - :definition "The product uses an algorithm or scheme that produces insufficient entropy, leaving patterns or clusters of values that are more likely to occur than others." . - -:CWE-332 a owl:Class ; - rdfs:label "Insufficient Entropy in PRNG" ; - rdfs:subClassOf :CWE-331 ; - :cwe-id "CWE-332" ; - :definition "The lack of entropy available for, or used by, a Pseudo-Random Number Generator (PRNG) can be a stability and security threat." . - -:CWE-333 a owl:Class ; - rdfs:label "Improper Handling of Insufficient Entropy in TRNG" ; - rdfs:subClassOf :CWE-331, - :CWE-703, - :CWE-755 ; - :cwe-id "CWE-333" ; - :definition "True random number generators (TRNG) generally have a limited source of entropy and therefore can fail or block." . - -:CWE-334 a owl:Class ; - rdfs:label "Small Space of Random Values" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-334" ; - :definition "The number of possible random values is smaller than needed by the product, making it more susceptible to brute force attacks." . - -:CWE-335 a owl:Class ; - rdfs:label "Incorrect Usage of Seeds in Pseudo-Random Number Generator (PRNG)" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-335" ; - :definition "The product uses a Pseudo-Random Number Generator (PRNG) but does not correctly manage seeds." . - -:CWE-336 a owl:Class ; - rdfs:label "Same Seed in Pseudo-Random Number Generator (PRNG)" ; - rdfs:subClassOf :CWE-335 ; - :cwe-id "CWE-336" ; - :definition "A Pseudo-Random Number Generator (PRNG) uses the same seed each time the product is initialized." . - -:CWE-337 a owl:Class ; - rdfs:label "Predictable Seed in Pseudo-Random Number Generator (PRNG)" ; - rdfs:subClassOf :CWE-335 ; - :cwe-id "CWE-337" ; - :definition "A Pseudo-Random Number Generator (PRNG) is initialized from a predictable seed, such as the process ID or system time." . - -:CWE-338 a owl:Class ; - rdfs:label "Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-338" ; - :definition "The product uses a Pseudo-Random Number Generator (PRNG) in a security context, but the PRNG's algorithm is not cryptographically strong." . - -:CWE-339 a owl:Class ; - rdfs:label "Small Seed Space in PRNG" ; - rdfs:subClassOf :CWE-335 ; - :cwe-id "CWE-339" ; - :definition "A Pseudo-Random Number Generator (PRNG) uses a relatively small seed space, which makes it more susceptible to brute force attacks." . - -:CWE-340 a owl:Class ; - rdfs:label "Generation of Predictable Numbers or Identifiers" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-340" ; - :definition "The product uses a scheme that generates numbers or identifiers that are more predictable than required." . - -:CWE-341 a owl:Class ; - rdfs:label "Predictable from Observable State" ; - rdfs:subClassOf :CWE-340 ; - :cwe-id "CWE-341" ; - :definition "A number or object is predictable based on observations that the attacker can make about the state of the system or network, such as time, process ID, etc." . - -:CWE-342 a owl:Class ; - rdfs:label "Predictable Exact Value from Previous Values" ; - rdfs:subClassOf :CWE-340 ; - :cwe-id "CWE-342" ; - :definition "An exact value or random number can be precisely predicted by observing previous values." . - -:CWE-343 a owl:Class ; - rdfs:label "Predictable Value Range from Previous Values" ; - rdfs:subClassOf :CWE-340 ; - :cwe-id "CWE-343" ; - :definition "The product's random number generator produces a series of values which, when observed, can be used to infer a relatively small range of possibilities for the next value that could be generated." . - -:CWE-344 a owl:Class ; - rdfs:label "Use of Invariant Value in Dynamically Changing Context" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-344" ; - :definition "The product uses a constant value, name, or reference, but this value can (or should) vary across different environments." . - -:CWE-345 a owl:Class ; - rdfs:label "Insufficient Verification of Data Authenticity" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-345" ; - :definition "The product does not sufficiently verify the origin or authenticity of data, in a way that causes it to accept invalid data." . - -:CWE-346 a owl:Class ; - rdfs:label "Origin Validation Error" ; - rdfs:subClassOf :CWE-284, - :CWE-345 ; - :cwe-id "CWE-346" ; - :definition "The product does not properly verify that the source of data or communication is valid." . - -:CWE-347 a owl:Class ; - rdfs:label "Improper Verification of Cryptographic Signature" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-347" ; - :definition "The product does not verify, or incorrectly verifies, the cryptographic signature for data." . - -:CWE-348 a owl:Class ; - rdfs:label "Use of Less Trusted Source" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-348" ; - :definition "The product has two different sources of the same data or information, but it uses the source that has less support for verification, is less trusted, or is less resistant to attack." . - -:CWE-349 a owl:Class ; - rdfs:label "Acceptance of Extraneous Untrusted Data With Trusted Data" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-349" ; - :definition "The product, when processing trusted data, accepts any untrusted data that is also included with the trusted data, treating the untrusted data as if it were trusted." . - -:CWE-350 a owl:Class ; - rdfs:label "Reliance on Reverse DNS Resolution for a Security-Critical Action" ; - rdfs:subClassOf :CWE-290, - :CWE-807 ; - :cwe-id "CWE-350" ; - :definition "The product performs reverse DNS resolution on an IP address to obtain the hostname and make a security decision, but it does not properly ensure that the IP address is truly associated with the hostname." . - -:CWE-351 a owl:Class ; - rdfs:label "Insufficient Type Distinction" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-351" ; - :definition "The product does not properly distinguish between different types of elements in a way that leads to insecure behavior." . - -:CWE-352 a owl:Class ; - rdfs:label "Cross-Site Request Forgery (CSRF)" ; - rdfs:subClassOf :CWE-345, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-352" ; - :definition "The web application does not, or cannot, sufficiently verify whether a request was intentionally provided by the user who sent the request, which could have originated from an unauthorized actor. " ; - :synonym "Cross Site Reference Forgery", - "CSRF", - "Session Riding", - "XSRF" . - -:CWE-353 a owl:Class ; - rdfs:label "Missing Support for Integrity Check" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-353" ; - :definition "The product uses a transmission protocol that does not include a mechanism for verifying the integrity of the data during transmission, such as a checksum." . - -:CWE-354 a owl:Class ; - rdfs:label "Improper Validation of Integrity Check Value" ; - rdfs:subClassOf :CWE-345, - :CWE-754 ; - :cwe-id "CWE-354" ; - :definition "The product does not validate or incorrectly validates the integrity check values or \"checksums\" of a message. This may prevent it from detecting if the data has been modified or corrupted in transmission." . - -:CWE-356 a owl:Class ; - rdfs:label "Product UI does not Warn User of Unsafe Actions" ; - rdfs:subClassOf :CWE-221 ; - :cwe-id "CWE-356" ; - :definition "The product's user interface does not warn the user before undertaking an unsafe action on behalf of that user. This makes it easier for attackers to trick users into inflicting damage to their system." . - -:CWE-357 a owl:Class ; - rdfs:label "Insufficient UI Warning of Dangerous Operations" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-357" ; - :definition "The user interface provides a warning to a user regarding dangerous or sensitive operations, but the warning is not noticeable enough to warrant attention." . - -:CWE-358 a owl:Class ; - rdfs:label "Improperly Implemented Security Check for Standard" ; - rdfs:subClassOf :CWE-573, - :CWE-693 ; - :cwe-id "CWE-358" ; - :definition "The product does not implement or incorrectly implements one or more security-relevant checks as specified by the design of a standardized algorithm, protocol, or technique." . - -:CWE-359 a owl:Class ; - rdfs:label "Exposure of Private Personal Information to an Unauthorized Actor" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-359" ; - :definition "The product does not properly prevent a person's private, personal information from being accessed by actors who either (1) are not explicitly authorized to access the information or (2) do not have the implicit consent of the person about whom the information is collected." ; - :synonym "Privacy leak", - "Privacy leakage", - "Privacy violation" . - -:CWE-360 a owl:Class ; - rdfs:label "Trust of System Event Data" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-360" ; - :definition "Security based on event locations are insecure and can be spoofed." . - -:CWE-362 a owl:Class ; - rdfs:label "Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')" ; - rdfs:subClassOf :CWE-691, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :SharedResourceAccessFunction ] ; - :cwe-id "CWE-362" ; - :definition "The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently." ; - :synonym "Race Condition" . - -:CWE-363 a owl:Class ; - rdfs:label "Race Condition Enabling Link Following" ; - rdfs:subClassOf :CWE-367 ; - :cwe-id "CWE-363" ; - :definition "The product checks the status of a file or directory before accessing it, which produces a race condition in which the file can be replaced with a link before the access is performed, causing the product to access the wrong file." . - -:CWE-364 a owl:Class ; - rdfs:label "Signal Handler Race Condition" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-364" ; - :definition "The product uses a signal handler that introduces a race condition." . - -:CWE-366 a owl:Class ; - rdfs:label "Race Condition within a Thread" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-366" ; - :definition "If two threads of execution use a resource simultaneously, there exists the possibility that resources may be used while invalid, in turn making the state of execution undefined." . - -:CWE-367 a owl:Class ; - rdfs:label "Time-of-check Time-of-use (TOCTOU) Race Condition" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-367" ; - :definition "The product checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check. This can cause the product to perform invalid actions when the resource is in an unexpected state." ; - :synonym "TOCCTOU", - "TOCTTOU" . - -:CWE-368 a owl:Class ; - rdfs:label "Context Switching Race Condition" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-368" ; - :definition "A product performs a series of non-atomic actions to switch between contexts that cross privilege or other security boundaries, but a race condition allows an attacker to modify or misrepresent the product's behavior during the switch." . - -:CWE-369 a owl:Class ; - rdfs:label "Divide By Zero" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-369" ; - :definition "The product divides a value by zero." . - -:CWE-370 a owl:Class ; - rdfs:label "Missing Check for Certificate Revocation after Initial Check" ; - rdfs:subClassOf :CWE-299 ; - :cwe-id "CWE-370" ; - :definition "The product does not check the revocation status of a certificate after its initial revocation check, which can cause the product to perform privileged actions even after the certificate is revoked at a later time." . - -:CWE-372 a owl:Class ; - rdfs:label "Incomplete Internal State Distinction" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-372" ; - :definition "The product does not properly determine which state it is in, causing it to assume it is in state X when in fact it is in state Y, causing it to perform incorrect operations in a security-relevant manner." . - -:CWE-374 a owl:Class ; - rdfs:label "Passing Mutable Objects to an Untrusted Method" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-374" ; - :definition "The product sends non-cloned mutable data as an argument to a method or function." . - -:CWE-375 a owl:Class ; - rdfs:label "Returning a Mutable Object to an Untrusted Caller" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-375" ; - :definition "Sending non-cloned mutable data as a return value may result in that data being altered or deleted by the calling function." . - -:CWE-377 a owl:Class ; - rdfs:label "Insecure Temporary File" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-377" ; - :definition "Creating and using insecure temporary files can leave application and system data vulnerable to attack." . - -:CWE-378 a owl:Class ; - rdfs:label "Creation of Temporary File With Insecure Permissions" ; - rdfs:subClassOf :CWE-377 ; - :cwe-id "CWE-378" ; - :definition "Opening temporary files without appropriate measures or controls can leave the file, its contents and any function that it impacts vulnerable to attack." . - -:CWE-379 a owl:Class ; - rdfs:label "Creation of Temporary File in Directory with Insecure Permissions" ; - rdfs:subClassOf :CWE-377 ; - :cwe-id "CWE-379" ; - :definition "The product creates a temporary file in a directory whose permissions allow unintended actors to determine the file's existence or otherwise access that file." . - -:CWE-382 a owl:Class ; - rdfs:label "J2EE Bad Practices: Use of System.exit()" ; - rdfs:subClassOf :CWE-705 ; - :cwe-id "CWE-382" ; - :definition "A J2EE application uses System.exit(), which also shuts down its container." . - -:CWE-383 a owl:Class ; - rdfs:label "J2EE Bad Practices: Direct Use of Threads" ; - rdfs:subClassOf :CWE-695 ; - :cwe-id "CWE-383" ; - :definition "Thread management in a Web application is forbidden in some circumstances and is always highly error prone." . - -:CWE-384 a owl:Class ; - rdfs:label "Session Fixation" ; - rdfs:subClassOf :CWE-610 ; - :cwe-id "CWE-384" ; - :definition "Authenticating a user, or otherwise establishing a new user session, without invalidating any existing session identifier gives an attacker the opportunity to steal authenticated sessions." . - -:CWE-385 a owl:Class ; - rdfs:label "Covert Timing Channel" ; - rdfs:subClassOf :CWE-514 ; - :cwe-id "CWE-385" ; - :definition "Covert timing channels convey information by modulating some aspect of system behavior over time, so that the program receiving the information can observe system behavior and infer protected information." . - -:CWE-386 a owl:Class ; - rdfs:label "Symbolic Name not Mapping to Correct Object" ; - rdfs:subClassOf :CWE-706 ; - :cwe-id "CWE-386" ; - :definition "A constant symbolic reference to an object is used, even though the reference can resolve to a different object over time." . - -:CWE-390 a owl:Class ; - rdfs:label "Detection of Error Condition Without Action" ; - rdfs:subClassOf :CWE-755 ; - :cwe-id "CWE-390" ; - :definition "The product detects a specific error, but takes no actions to handle the error." . - -:CWE-391 a owl:Class ; - rdfs:label "Unchecked Error Condition" ; - rdfs:subClassOf :CWE-754 ; - :cwe-id "CWE-391" ; - :definition "[PLANNED FOR DEPRECATION. SEE MAINTENANCE NOTES AND CONSIDER CWE-252, CWE-248, OR CWE-1069.] Ignoring exceptions and other error conditions may allow an attacker to induce unexpected behavior unnoticed." . - -:CWE-392 a owl:Class ; - rdfs:label "Missing Report of Error Condition" ; - rdfs:subClassOf :CWE-684, - :CWE-703, - :CWE-755 ; - :cwe-id "CWE-392" ; - :definition "The product encounters an error but does not provide a status code or return value to indicate that an error has occurred." . - -:CWE-393 a owl:Class ; - rdfs:label "Return of Wrong Status Code" ; - rdfs:subClassOf :CWE-684, - :CWE-703 ; - :cwe-id "CWE-393" ; - :definition "A function or operation returns an incorrect return value or status code that does not indicate the true result of execution, causing the product to modify its behavior based on the incorrect result." . - -:CWE-394 a owl:Class ; - rdfs:label "Unexpected Status Code or Return Value" ; - rdfs:subClassOf :CWE-754 ; - :cwe-id "CWE-394" ; - :definition "The product does not properly check when a function or operation returns a value that is legitimate for the function, but is not expected by the product." . - -:CWE-395 a owl:Class ; - rdfs:label "Use of NullPointerException Catch to Detect NULL Pointer Dereference" ; - rdfs:subClassOf :CWE-705, - :CWE-755 ; - :cwe-id "CWE-395" ; - :definition "Catching NullPointerException should not be used as an alternative to programmatic checks to prevent dereferencing a null pointer." . - -:CWE-396 a owl:Class ; - rdfs:label "Declaration of Catch for Generic Exception" ; - rdfs:subClassOf :CWE-221, - :CWE-705, - :CWE-755 ; - :cwe-id "CWE-396" ; - :definition "Catching overly broad exceptions promotes complex error handling code that is more likely to contain security vulnerabilities." . - -:CWE-397 a owl:Class ; - rdfs:label "Declaration of Throws for Generic Exception" ; - rdfs:subClassOf :CWE-221, - :CWE-703, - :CWE-705 ; - :cwe-id "CWE-397" ; - :definition "The product throws or raises an overly broad exceptions that can hide important details and produce inappropriate responses to certain conditions." . - -:CWE-400 a owl:Class ; - rdfs:label "Uncontrolled Resource Consumption" ; - rdfs:subClassOf :CWE-664 ; - :comment "Cannot directly relate to artifacts due to breadth. Resource monitoring and limiting allocation is an approach to counter." ; - :cwe-id "CWE-400" ; - :definition "The product does not properly control the allocation and maintenance of a limited resource." ; - :synonym "Resource Exhaustion" . - -:CWE-401 a owl:Class ; - rdfs:label "Missing Release of Memory after Effective Lifetime" ; - rdfs:subClassOf :CWE-772 ; - :cwe-id "CWE-401" ; - :definition "The product does not sufficiently track and release allocated memory after it has been used, making the memory unavailable for reallocation and reuse." ; - :synonym "Memory Leak" . - -:CWE-402 a owl:Class ; - rdfs:label "Transmission of Private Resources into a New Sphere ('Resource Leak')" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-402" ; - :definition "The product makes resources available to untrusted parties when those resources are only intended to be accessed by the product." ; - :synonym "Resource Leak" . - -:CWE-403 a owl:Class ; - rdfs:label "Exposure of File Descriptor to Unintended Control Sphere ('File Descriptor Leak')" ; - rdfs:subClassOf :CWE-402 ; - :cwe-id "CWE-403" ; - :definition "A process does not close sensitive file descriptors before invoking a child process, which allows the child to perform unauthorized I/O operations using those descriptors." ; - :synonym "File descriptor leak" . - -:CWE-404 a owl:Class ; - rdfs:label "Improper Resource Shutdown or Release" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-404" ; - :definition "The product does not release or incorrectly releases a resource before it is made available for re-use." . - -:CWE-405 a owl:Class ; - rdfs:label "Asymmetric Resource Consumption (Amplification)" ; - rdfs:subClassOf :CWE-400, - :CWE-664 ; - :cwe-id "CWE-405" ; - :definition "The product does not properly control situations in which an adversary can cause the product to consume or produce excessive resources without requiring the adversary to invest equivalent work or otherwise prove authorization, i.e., the adversary's influence is \"asymmetric.\"" . - -:CWE-406 a owl:Class ; - rdfs:label "Insufficient Control of Network Message Volume (Network Amplification)" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-406" ; - :definition "The product does not sufficiently monitor or control transmitted network traffic volume, so that an actor can cause the product to transmit more traffic than should be allowed for that actor." . - -:CWE-407 a owl:Class ; - rdfs:label "Inefficient Algorithmic Complexity" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-407" ; - :definition "An algorithm in a product has an inefficient worst-case computational complexity that may be detrimental to system performance and can be triggered by an attacker, typically using crafted manipulations that ensure that the worst case is being reached." ; - :synonym "Quadratic Complexity" . - -:CWE-408 a owl:Class ; - rdfs:label "Incorrect Behavior Order: Early Amplification" ; - rdfs:subClassOf :CWE-405, - :CWE-696 ; - :cwe-id "CWE-408" ; - :definition "The product allows an entity to perform a legitimate but expensive operation before authentication or authorization has taken place." . - -:CWE-409 a owl:Class ; - rdfs:label "Improper Handling of Highly Compressed Data (Data Amplification)" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-409" ; - :definition "The product does not handle or incorrectly handles a compressed input with a very high compression ratio that produces a large output." . - -:CWE-410 a owl:Class ; - rdfs:label "Insufficient Resource Pool" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-410" ; - :definition "The product's resource pool is not large enough to handle peak demand, which allows an attacker to prevent others from accessing the resource by using a (relatively) large number of requests for resources." . - -:CWE-412 a owl:Class ; - rdfs:label "Unrestricted Externally Accessible Lock" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-412" ; - :definition "The product properly checks for the existence of a lock, but the lock can be externally controlled or influenced by an actor that is outside of the intended sphere of control." . - -:CWE-413 a owl:Class ; - rdfs:label "Improper Resource Locking" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-413" ; - :definition "The product does not lock or does not correctly lock a resource when the product must have exclusive access to the resource." . - -:CWE-414 a owl:Class ; - rdfs:label "Missing Lock Check" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-414" ; - :definition "A product does not check to see if a lock is present before performing sensitive operations on a resource." . - -:CWE-415 a owl:Class ; - rdfs:label "Double Free" ; - rdfs:subClassOf :CWE-666, - :CWE-825, - :CWE-1341, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :MemoryFreeFunction ] ; - :cwe-id "CWE-415" ; - :definition "The product calls free() twice on the same memory address." ; - :synonym "Double-free" . - -:CWE-416 a owl:Class ; - rdfs:label "Use After Free" ; - rdfs:subClassOf :CWE-825 ; - :cwe-id "CWE-416" ; - :definition "The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory \"belongs\" to the code that operates on the new pointer." ; - :synonym "Dangling pointer", - "UAF", - "Use-After-Free" ; - :todo "Model these memory artifacts." . - -:CWE-419 a owl:Class ; - rdfs:label "Unprotected Primary Channel" ; - rdfs:subClassOf :CWE-923 ; - :cwe-id "CWE-419" ; - :definition "The product uses a primary channel for administration or restricted functionality, but it does not properly protect the channel." . - -:CWE-420 a owl:Class ; - rdfs:label "Unprotected Alternate Channel" ; - rdfs:subClassOf :CWE-923 ; - :cwe-id "CWE-420" ; - :definition "The product protects a primary channel, but it does not use the same level of protection for an alternate channel." . - -:CWE-421 a owl:Class ; - rdfs:label "Race Condition During Access to Alternate Channel" ; - rdfs:subClassOf :CWE-362, - :CWE-420 ; - :cwe-id "CWE-421" ; - :definition "The product opens an alternate channel to communicate with an authorized user, but the channel is accessible to other actors." . - -:CWE-422 a owl:Class ; - rdfs:label "Unprotected Windows Messaging Channel ('Shatter')" ; - rdfs:subClassOf :CWE-360, - :CWE-420 ; - :cwe-id "CWE-422" ; - :definition "The product does not properly verify the source of a message in the Windows Messaging System while running at elevated privileges, creating an alternate channel through which an attacker can directly send a message to the product." . - -:CWE-424 a owl:Class ; - rdfs:label "Improper Protection of Alternate Path" ; - rdfs:subClassOf :CWE-638, - :CWE-693 ; - :cwe-id "CWE-424" ; - :definition "The product does not sufficiently protect all possible paths that a user can take to access restricted functionality or resources." . - -:CWE-425 a owl:Class ; - rdfs:label "Direct Request ('Forced Browsing')" ; - rdfs:subClassOf :CWE-288, - :CWE-424, - :CWE-862 ; - :cwe-id "CWE-425" ; - :definition "The web application does not adequately enforce appropriate authorization on all restricted URLs, scripts, or files." ; - :synonym "forced browsing" . - -:CWE-426 a owl:Class ; - rdfs:label "Untrusted Search Path" ; - rdfs:subClassOf :CWE-642, - :CWE-673 ; - :cwe-id "CWE-426" ; - :definition "The product searches for critical resources using an externally-supplied search path that can point to resources that are not under the product's direct control." ; - :synonym "Untrusted Path" . - -:CWE-427 a owl:Class ; - rdfs:label "Uncontrolled Search Path Element" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-427" ; - :definition "The product uses a fixed or controlled search path to find resources, but one or more locations in that path can be under the control of unintended actors." ; - :synonym "Binary planting", - "Dependency confusion", - "DLL preloading", - "Insecure library loading" . - -:CWE-428 a owl:Class ; - rdfs:label "Unquoted Search Path or Element" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-428" ; - :definition "The product uses a search path that contains an unquoted element, in which the element contains whitespace or other separators. This can cause the product to access resources in a parent path." . - -:CWE-430 a owl:Class ; - rdfs:label "Deployment of Wrong Handler" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-430" ; - :definition "The wrong \"handler\" is assigned to process an object." . - -:CWE-431 a owl:Class ; - rdfs:label "Missing Handler" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-431" ; - :definition "A handler is not available or implemented." . - -:CWE-432 a owl:Class ; - rdfs:label "Dangerous Signal Handler not Disabled During Sensitive Operations" ; - rdfs:subClassOf :CWE-364 ; - :cwe-id "CWE-432" ; - :definition "The product uses a signal handler that shares state with other signal handlers, but it does not properly mask or prevent those signal handlers from being invoked while the original signal handler is still running." . - -:CWE-433 a owl:Class ; - rdfs:label "Unparsed Raw Web Content Delivery" ; - rdfs:subClassOf :CWE-219 ; - :cwe-id "CWE-433" ; - :definition "The product stores raw content or supporting code under the web document root with an extension that is not specifically handled by the server." . - -:CWE-434 a owl:Class ; - rdfs:label "Unrestricted Upload of File with Dangerous Type" ; - rdfs:subClassOf :CWE-669, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-434" ; - :definition "The product allows the upload or transfer of dangerous file types that are automatically processed within its environment." ; - :synonym "Unrestricted File Upload" . - -:CWE-435 a owl:Class ; - rdfs:label "Improper Interaction Between Multiple Correctly-Behaving Entities" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-435" ; - :definition "An interaction error occurs when two entities have correct behavior when running independently of each other, but when they are integrated as components in a larger system or process, they introduce incorrect behaviors that may cause resultant weaknesses." ; - :synonym "Emergent Fault", - "Interaction Error" . - -:CWE-436 a owl:Class ; - rdfs:label "Interpretation Conflict" ; - rdfs:subClassOf :CWE-435 ; - :cwe-id "CWE-436" ; - :definition "Product A handles inputs or steps differently than Product B, which causes A to perform incorrect actions based on its perception of B's state." . - -:CWE-437 a owl:Class ; - rdfs:label "Incomplete Model of Endpoint Features" ; - rdfs:subClassOf :CWE-436 ; - :cwe-id "CWE-437" ; - :definition "A product acts as an intermediary or monitor between two or more endpoints, but it does not have a complete model of an endpoint's features, behaviors, or state, potentially causing the product to perform incorrect actions based on this incomplete model." . - -:CWE-439 a owl:Class ; - rdfs:label "Behavioral Change in New Version or Environment" ; - rdfs:subClassOf :CWE-435 ; - :cwe-id "CWE-439" ; - :definition "A's behavior or functionality changes with a new version of A, or a new environment, which is not known (or manageable) by B." ; - :synonym "Functional change" . - -:CWE-440 a owl:Class ; - rdfs:label "Expected Behavior Violation" ; - rdfs:subClassOf :CWE-684 ; - :cwe-id "CWE-440" ; - :definition "A feature, API, or function does not perform according to its specification." . - -:CWE-441 a owl:Class ; - rdfs:label "Unintended Proxy or Intermediary ('Confused Deputy')" ; - rdfs:subClassOf :CWE-610 ; - :cwe-id "CWE-441" ; - :definition "The product receives a request, message, or directive from an upstream component, but the product does not sufficiently preserve the original source of the request before forwarding the request to an external actor that is outside of the product's control sphere. This causes the product to appear to be the source of the request, leading it to act as a proxy or other intermediary between the upstream component and the external actor." ; - :synonym "Confused Deputy" . - -:CWE-444 a owl:Class ; - rdfs:label "Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')" ; - rdfs:subClassOf :CWE-436 ; - :cwe-id "CWE-444" ; - :definition "The product acts as an intermediary HTTP agent (such as a proxy or firewall) in the data flow between two entities such as a client and server, but it does not interpret malformed HTTP requests or responses in ways that are consistent with how the messages will be processed by those entities that are at the ultimate destination." ; - :synonym "HTTP Request Smuggling", - "HTTP Response Smuggling", - "HTTP Smuggling" . - -:CWE-446 a owl:Class ; - rdfs:label "UI Discrepancy for Security Feature" ; - rdfs:subClassOf :CWE-684 ; - :cwe-id "CWE-446" ; - :definition "The user interface does not correctly enable or configure a security feature, but the interface provides feedback that causes the user to believe that the feature is in a secure state." . - -:CWE-447 a owl:Class ; - rdfs:label "Unimplemented or Unsupported Feature in UI" ; - rdfs:subClassOf :CWE-446, - :CWE-671 ; - :cwe-id "CWE-447" ; - :definition "A UI function for a security feature appears to be supported and gives feedback to the user that suggests that it is supported, but the underlying functionality is not implemented." . - -:CWE-448 a owl:Class ; - rdfs:label "Obsolete Feature in UI" ; - rdfs:subClassOf :CWE-446 ; - :cwe-id "CWE-448" ; - :definition "A UI function is obsolete and the product does not warn the user." . - -:CWE-449 a owl:Class ; - rdfs:label "The UI Performs the Wrong Action" ; - rdfs:subClassOf :CWE-446 ; - :cwe-id "CWE-449" ; - :definition "The UI performs the wrong action with respect to the user's request." . - -:CWE-450 a owl:Class ; - rdfs:label "Multiple Interpretations of UI Input" ; - rdfs:subClassOf :CWE-357 ; - :cwe-id "CWE-450" ; - :definition "The UI has multiple interpretations of user input but does not prompt the user when it selects the less secure interpretation." . - -:CWE-451 a owl:Class ; - rdfs:label "User Interface (UI) Misrepresentation of Critical Information" ; - rdfs:subClassOf :CWE-221, - :CWE-684 ; - :cwe-id "CWE-451" ; - :definition "The user interface (UI) does not properly represent critical information to the user, allowing the information - or its source - to be obscured or spoofed. This is often a component in phishing attacks." . - -:CWE-453 a owl:Class ; - rdfs:label "Insecure Default Variable Initialization" ; - rdfs:subClassOf :CWE-1188 ; - :cwe-id "CWE-453" ; - :definition "The product, by default, initializes an internal variable with an insecure or less secure value than is possible." . - -:CWE-454 a owl:Class ; - rdfs:label "External Initialization of Trusted Variables or Data Stores" ; - rdfs:subClassOf :CWE-665, - :CWE-1419 ; - :cwe-id "CWE-454" ; - :definition "The product initializes critical internal variables or data stores using inputs that can be modified by untrusted actors." . - -:CWE-455 a owl:Class ; - rdfs:label "Non-exit on Failed Initialization" ; - rdfs:subClassOf :CWE-636, - :CWE-665, - :CWE-705 ; - :cwe-id "CWE-455" ; - :definition "The product does not exit or otherwise modify its operation when security-relevant errors occur during initialization, such as when a configuration file has a format error or a hardware security module (HSM) cannot be activated, which can cause the product to execute in a less secure fashion than intended by the administrator." . - -:CWE-456 a owl:Class ; - rdfs:label "Missing Initialization of a Variable" ; - rdfs:subClassOf :CWE-909 ; - :cwe-id "CWE-456" ; - :definition "The product does not initialize critical variables, which causes the execution environment to use unexpected values." . - -:CWE-457 a owl:Class ; - rdfs:label "Use of Uninitialized Variable" ; - rdfs:subClassOf :CWE-908 ; - :cwe-id "CWE-457" ; - :definition "The code uses a variable that has not been initialized, leading to unpredictable or unintended results." . - -:CWE-459 a owl:Class ; - rdfs:label "Incomplete Cleanup" ; - rdfs:subClassOf :CWE-404 ; - :cwe-id "CWE-459" ; - :definition "The product does not properly \"clean up\" and remove temporary or supporting resources after they have been used." ; - :synonym "Insufficient Cleanup" . - -:CWE-460 a owl:Class ; - rdfs:label "Improper Cleanup on Thrown Exception" ; - rdfs:subClassOf :CWE-459, - :CWE-755 ; - :cwe-id "CWE-460" ; - :definition "The product does not clean up its state or incorrectly cleans up its state when an exception is thrown, leading to unexpected state or control flow." . - -:CWE-462 a owl:Class ; - rdfs:label "Duplicate Key in Associative List (Alist)" ; - rdfs:subClassOf :CWE-694 ; - :cwe-id "CWE-462" ; - :definition "Duplicate keys in associative lists can lead to non-unique keys being mistaken for an error." . - -:CWE-463 a owl:Class ; - rdfs:label "Deletion of Data Structure Sentinel" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-463" ; - :definition "The accidental deletion of a data-structure sentinel can cause serious programming logic problems." . - -:CWE-464 a owl:Class ; - rdfs:label "Addition of Data Structure Sentinel" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-464" ; - :definition "The accidental addition of a data-structure sentinel can cause serious programming logic problems." . - -:CWE-466 a owl:Class ; - rdfs:label "Return of Pointer Value Outside of Expected Range" ; - rdfs:subClassOf :CWE-119 ; - :cwe-id "CWE-466" ; - :definition "A function can return a pointer to memory that is outside of the buffer that the pointer is expected to reference." . - -:CWE-467 a owl:Class ; - rdfs:label "Use of sizeof() on a Pointer Type" ; - rdfs:subClassOf :CWE-131 ; - :cwe-id "CWE-467" ; - :definition "The code calls sizeof() on a pointer type, which can be an incorrect calculation if the programmer intended to determine the size of the data that is being pointed to." . - -:CWE-468 a owl:Class ; - rdfs:label "Incorrect Pointer Scaling" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-468" ; - :definition "In C and C++, one may often accidentally refer to the wrong memory due to the semantics of when math operations are implicitly scaled." . - -:CWE-469 a owl:Class ; - rdfs:label "Use of Pointer Subtraction to Determine Size" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-469" ; - :definition "The product subtracts one pointer from another in order to determine size, but this calculation can be incorrect if the pointers do not exist in the same memory chunk." . - -:CWE-470 a owl:Class ; - rdfs:label "Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')" ; - rdfs:subClassOf :CWE-610, - :CWE-913 ; - :cwe-id "CWE-470" ; - :definition "The product uses external input with reflection to select which classes or code to use, but it does not sufficiently prevent the input from selecting improper classes or code." ; - :synonym "Reflection Injection" . - -:CWE-471 a owl:Class ; - rdfs:label "Modification of Assumed-Immutable Data (MAID)" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-471" ; - :definition "The product does not properly protect an assumed-immutable element from being modified by an attacker." . - -:CWE-472 a owl:Class ; - rdfs:label "External Control of Assumed-Immutable Web Parameter" ; - rdfs:subClassOf :CWE-471, - :CWE-642 ; - :cwe-id "CWE-472" ; - :definition "The web application does not sufficiently verify inputs that are assumed to be immutable but are actually externally controllable, such as hidden form fields." ; - :synonym "Assumed-Immutable Parameter Tampering" . - -:CWE-473 a owl:Class ; - rdfs:label "PHP External Variable Modification" ; - rdfs:subClassOf :CWE-471 ; - :cwe-id "CWE-473" ; - :definition "A PHP application does not properly protect against the modification of variables from external sources, such as query parameters or cookies. This can expose the application to numerous weaknesses that would not exist otherwise." . - -:CWE-474 a owl:Class ; - rdfs:label "Use of Function with Inconsistent Implementations" ; - rdfs:subClassOf :CWE-758 ; - :cwe-id "CWE-474" ; - :definition "The code uses a function that has inconsistent implementations across operating systems and versions." . - -:CWE-475 a owl:Class ; - rdfs:label "Undefined Behavior for Input to API" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-475" ; - :definition "The behavior of this function is undefined unless its control parameter is set to a specific value." . - -:CWE-476 a owl:Class ; - rdfs:label "NULL Pointer Dereference" ; - rdfs:subClassOf :CWE-710, - :CWE-754, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :PointerDereferencingFunction ] ; - :cwe-id "CWE-476" ; - :definition "The product dereferences a pointer that it expects to be valid but is NULL." ; - :synonym "nil pointer dereference", - "NPD", - "NPE", - "null deref" . - -:CWE-477 a owl:Class ; - rdfs:label "Use of Obsolete Function" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-477" ; - :definition "The code uses deprecated or obsolete functions, which suggests that the code has not been actively reviewed or maintained." . - -:CWE-478 a owl:Class ; - rdfs:label "Missing Default Case in Multiple Condition Expression" ; - rdfs:subClassOf :CWE-1023 ; - :cwe-id "CWE-478" ; - :definition "The code does not have a default case in an expression with multiple conditions, such as a switch statement." . - -:CWE-479 a owl:Class ; - rdfs:label "Signal Handler Use of a Non-reentrant Function" ; - rdfs:subClassOf :CWE-663, - :CWE-828 ; - :cwe-id "CWE-479" ; - :definition "The product defines a signal handler that calls a non-reentrant function." . - -:CWE-480 a owl:Class ; - rdfs:label "Use of Incorrect Operator" ; - rdfs:subClassOf :CWE-670 ; - :cwe-id "CWE-480" ; - :definition "The product accidentally uses the wrong operator, which changes the logic in security-relevant ways." . - -:CWE-481 a owl:Class ; - rdfs:label "Assigning instead of Comparing" ; - rdfs:subClassOf :CWE-480 ; - :cwe-id "CWE-481" ; - :definition "The code uses an operator for assignment when the intention was to perform a comparison." . - -:CWE-482 a owl:Class ; - rdfs:label "Comparing instead of Assigning" ; - rdfs:subClassOf :CWE-480 ; - :cwe-id "CWE-482" ; - :definition "The code uses an operator for comparison when the intention was to perform an assignment." . - -:CWE-483 a owl:Class ; - rdfs:label "Incorrect Block Delimitation" ; - rdfs:subClassOf :CWE-670 ; - :cwe-id "CWE-483" ; - :definition "The code does not explicitly delimit a block that is intended to contain 2 or more statements, creating a logic error." . - -:CWE-484 a owl:Class ; - rdfs:label "Omitted Break Statement in Switch" ; - rdfs:subClassOf :CWE-670, - :CWE-710 ; - :cwe-id "CWE-484" ; - :definition "The product omits a break statement within a switch or similar construct, causing code associated with multiple conditions to execute. This can cause problems when the programmer only intended to execute code associated with one condition." . - -:CWE-486 a owl:Class ; - rdfs:label "Comparison of Classes by Name" ; - rdfs:subClassOf :CWE-1025 ; - :cwe-id "CWE-486" ; - :definition "The product compares classes by name, which can cause it to use the wrong class when multiple classes can have the same name." . - -:CWE-487 a owl:Class ; - rdfs:label "Reliance on Package-level Scope" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-487" ; - :definition "Java packages are not inherently closed; therefore, relying on them for code security is not a good practice." . - -:CWE-488 a owl:Class ; - rdfs:label "Exposure of Data Element to Wrong Session" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-488" ; - :definition "The product does not sufficiently enforce boundaries between the states of different sessions, causing data to be provided to, or used by, the wrong session." . - -:CWE-489 a owl:Class ; - rdfs:label "Active Debug Code" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-489" ; - :definition "The product is deployed to unauthorized actors with debugging code still enabled or active, which can create unintended entry points or expose sensitive information." ; - :synonym "Leftover debug code" . - -:CWE-491 a owl:Class ; - rdfs:label "Public cloneable() Method Without Final ('Object Hijack')" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-491" ; - :definition "A class has a cloneable() method that is not declared final, which allows an object to be created without calling the constructor. This can cause the object to be in an unexpected state." . - -:CWE-492 a owl:Class ; - rdfs:label "Use of Inner Class Containing Sensitive Data" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-492" ; - :definition "Inner classes are translated into classes that are accessible at package scope and may expose code that the programmer intended to keep private to attackers." . - -:CWE-493 a owl:Class ; - rdfs:label "Critical Public Variable Without Final Modifier" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-493" ; - :definition "The product has a critical public variable that is not final, which allows the variable to be modified to contain unexpected values." . - -:CWE-494 a owl:Class ; - rdfs:label "Download of Code Without Integrity Check" ; - rdfs:subClassOf :CWE-345, - :CWE-669 ; - :cwe-id "CWE-494" ; - :definition "The product downloads source code or an executable from a remote location and executes the code without sufficiently verifying the origin and integrity of the code." . - -:CWE-495 a owl:Class ; - rdfs:label "Private Data Structure Returned From A Public Method" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-495" ; - :definition "The product has a method that is declared public, but returns a reference to a private data structure, which could then be modified in unexpected ways." . - -:CWE-496 a owl:Class ; - rdfs:label "Public Data Assigned to Private Array-Typed Field" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-496" ; - :definition "Assigning public data to a private array is equivalent to giving public access to the array." . - -:CWE-497 a owl:Class ; - rdfs:label "Exposure of Sensitive System Information to an Unauthorized Control Sphere" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-497" ; - :definition "The product does not properly prevent sensitive system-level information from being accessed by unauthorized actors who do not have the same level of access to the underlying system as the product does." . - -:CWE-498 a owl:Class ; - rdfs:label "Cloneable Class Containing Sensitive Information" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-498" ; - :definition "The code contains a class with sensitive data, but the class is cloneable. The data can then be accessed by cloning the class." . - -:CWE-499 a owl:Class ; - rdfs:label "Serializable Class Containing Sensitive Data" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-499" ; - :definition "The code contains a class with sensitive data, but the class does not explicitly deny serialization. The data can be accessed by serializing the class through another class." . - -:CWE-500 a owl:Class ; - rdfs:label "Public Static Field Not Marked Final" ; - rdfs:subClassOf :CWE-493 ; - :cwe-id "CWE-500" ; - :definition "An object contains a public static field that is not marked final, which might allow it to be modified in unexpected ways." . - -:CWE-501 a owl:Class ; - rdfs:label "Trust Boundary Violation" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-501" ; - :definition "The product mixes trusted and untrusted data in the same data structure or structured message." . - -:CWE-502 a owl:Class ; - rdfs:label "Deserialization of Untrusted Data" ; - rdfs:subClassOf :CWE-913, - [ a owl:Restriction ; - owl:onProperty :may-be-weakness-of ; - owl:someValuesFrom :UserInputFunction ], - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :DeserializationFunction ] ; - :cwe-id "CWE-502" ; - :definition "The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid." ; - :synonym "Marshaling, Unmarshaling", - "PHP Object Injection", - "Pickling, Unpickling" . - -:CWE-506 a owl:Class ; - rdfs:label "Embedded Malicious Code" ; - rdfs:subClassOf :CWE-912 ; - :cwe-id "CWE-506" ; - :definition "The product contains code that appears to be malicious in nature." . - -:CWE-507 a owl:Class ; - rdfs:label "Trojan Horse" ; - rdfs:subClassOf :CWE-506 ; - :cwe-id "CWE-507" ; - :definition "The product appears to contain benign or useful functionality, but it also contains code that is hidden from normal operation that violates the intended security policy of the user or the system administrator." . - -:CWE-508 a owl:Class ; - rdfs:label "Non-Replicating Malicious Code" ; - rdfs:subClassOf :CWE-507 ; - :cwe-id "CWE-508" ; - :definition "Non-replicating malicious code only resides on the target system or product that is attacked; it does not attempt to spread to other systems." . - -:CWE-509 a owl:Class ; - rdfs:label "Replicating Malicious Code (Virus or Worm)" ; - rdfs:subClassOf :CWE-507 ; - :cwe-id "CWE-509" ; - :definition "Replicating malicious code, including viruses and worms, will attempt to attack other systems once it has successfully compromised the target system or the product." . - -:CWE-510 a owl:Class ; - rdfs:label "Trapdoor" ; - rdfs:subClassOf :CWE-506 ; - :cwe-id "CWE-510" ; - :definition "A trapdoor is a hidden piece of code that responds to a special input, allowing its user access to resources without passing through the normal security enforcement mechanism." . - -:CWE-511 a owl:Class ; - rdfs:label "Logic/Time Bomb" ; - rdfs:subClassOf :CWE-506 ; - :cwe-id "CWE-511" ; - :definition "The product contains code that is designed to disrupt the legitimate operation of the product (or its environment) when a certain time passes, or when a certain logical condition is met." . - -:CWE-512 a owl:Class ; - rdfs:label "Spyware" ; - rdfs:subClassOf :CWE-506 ; - :cwe-id "CWE-512" ; - :definition "The product collects personally identifiable information about a human user or the user's activities, but the product accesses this information using other resources besides itself, and it does not require that user's explicit approval or direct input into the product." . - -:CWE-514 a owl:Class ; - rdfs:label "Covert Channel" ; - rdfs:subClassOf :CWE-1229 ; - :cwe-id "CWE-514" ; - :definition "A covert channel is a path that can be used to transfer information in a way not intended by the system's designers." . - -:CWE-515 a owl:Class ; - rdfs:label "Covert Storage Channel" ; - rdfs:subClassOf :CWE-514 ; - :cwe-id "CWE-515" ; - :definition "A covert storage channel transfers information through the setting of bits by one program and the reading of those bits by another. What distinguishes this case from that of ordinary operation is that the bits are used to convey encoded information." . - -:CWE-520 a owl:Class ; - rdfs:label ".NET Misconfiguration: Use of Impersonation" ; - rdfs:subClassOf :CWE-266 ; - :cwe-id "CWE-520" ; - :definition "Allowing a .NET application to run at potentially escalated levels of access to the underlying operating and file systems can be dangerous and result in various forms of attacks." . - -:CWE-521 a owl:Class ; - rdfs:label "Weak Password Requirements" ; - rdfs:subClassOf :CWE-1391 ; - :cwe-id "CWE-521" ; - :definition "The product does not require that users should have strong passwords, which makes it easier for attackers to compromise user accounts." . - -:CWE-522 a owl:Class ; - rdfs:label "Insufficiently Protected Credentials" ; - rdfs:subClassOf :CWE-668, - :CWE-1390 ; - :cwe-id "CWE-522" ; - :definition "The product transmits or stores authentication credentials, but it uses an insecure method that is susceptible to unauthorized interception and/or retrieval." . - -:CWE-523 a owl:Class ; - rdfs:label "Unprotected Transport of Credentials" ; - rdfs:subClassOf :CWE-522 ; - :cwe-id "CWE-523" ; - :definition "Login pages do not use adequate measures to protect the user name and password while they are in transit from the client to the server." . - -:CWE-524 a owl:Class ; - rdfs:label "Use of Cache Containing Sensitive Information" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-524" ; - :definition "The code uses a cache that contains sensitive information, but the cache can be read by an actor outside of the intended control sphere." . - -:CWE-525 a owl:Class ; - rdfs:label "Use of Web Browser Cache Containing Sensitive Information" ; - rdfs:subClassOf :CWE-524 ; - :cwe-id "CWE-525" ; - :definition "The web application does not use an appropriate caching policy that specifies the extent to which each web page and associated form fields should be cached." . - -:CWE-526 a owl:Class ; - rdfs:label "Cleartext Storage of Sensitive Information in an Environment Variable" ; - rdfs:subClassOf :CWE-312 ; - :cwe-id "CWE-526" ; - :definition "The product uses an environment variable to store unencrypted sensitive information." . - -:CWE-527 a owl:Class ; - rdfs:label "Exposure of Version-Control Repository to an Unauthorized Control Sphere" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-527" ; - :definition "The product stores a CVS, git, or other repository in a directory, archive, or other resource that is stored, transferred, or otherwise made accessible to unauthorized actors." . - -:CWE-528 a owl:Class ; - rdfs:label "Exposure of Core Dump File to an Unauthorized Control Sphere" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-528" ; - :definition "The product generates a core dump file in a directory, archive, or other resource that is stored, transferred, or otherwise made accessible to unauthorized actors." . - -:CWE-529 a owl:Class ; - rdfs:label "Exposure of Access Control List Files to an Unauthorized Control Sphere" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-529" ; - :definition "The product stores access control list files in a directory or other container that is accessible to actors outside of the intended control sphere." . - -:CWE-530 a owl:Class ; - rdfs:label "Exposure of Backup File to an Unauthorized Control Sphere" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-530" ; - :definition "A backup file is stored in a directory or archive that is made accessible to unauthorized actors." . - -:CWE-531 a owl:Class ; - rdfs:label "Inclusion of Sensitive Information in Test Code" ; - rdfs:subClassOf :CWE-540 ; - :cwe-id "CWE-531" ; - :definition "Accessible test applications can pose a variety of security risks. Since developers or administrators rarely consider that someone besides themselves would even know about the existence of these applications, it is common for them to contain sensitive information or functions." . - -:CWE-532 a owl:Class ; - rdfs:label "Insertion of Sensitive Information into Log File" ; - rdfs:subClassOf :CWE-538 ; - :cwe-id "CWE-532" ; - :definition "The product writes sensitive information to a log file." . - -:CWE-535 a owl:Class ; - rdfs:label "Exposure of Information Through Shell Error Message" ; - rdfs:subClassOf :CWE-211 ; - :cwe-id "CWE-535" ; - :definition "A command shell error message indicates that there exists an unhandled exception in the web application code. In many cases, an attacker can leverage the conditions that cause these errors in order to gain unauthorized access to the system." . - -:CWE-536 a owl:Class ; - rdfs:label "Servlet Runtime Error Message Containing Sensitive Information" ; - rdfs:subClassOf :CWE-211 ; - :cwe-id "CWE-536" ; - :definition "A servlet error message indicates that there exists an unhandled exception in your web application code and may provide useful information to an attacker." . - -:CWE-537 a owl:Class ; - rdfs:label "Java Runtime Error Message Containing Sensitive Information" ; - rdfs:subClassOf :CWE-211 ; - :cwe-id "CWE-537" ; - :definition "In many cases, an attacker can leverage the conditions that cause unhandled exception errors in order to gain unauthorized access to the system." . - -:CWE-538 a owl:Class ; - rdfs:label "Insertion of Sensitive Information into Externally-Accessible File or Directory" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-538" ; - :definition "The product places sensitive information into files or directories that are accessible to actors who are allowed to have access to the files, but not to the sensitive information." . - -:CWE-539 a owl:Class ; - rdfs:label "Use of Persistent Cookies Containing Sensitive Information" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-539" ; - :definition "The web application uses persistent cookies, but the cookies contain sensitive information." . - -:CWE-540 a owl:Class ; - rdfs:label "Inclusion of Sensitive Information in Source Code" ; - rdfs:subClassOf :CWE-538 ; - :cwe-id "CWE-540" ; - :definition "Source code on a web server or repository often contains sensitive information and should generally not be accessible to users." . - -:CWE-541 a owl:Class ; - rdfs:label "Inclusion of Sensitive Information in an Include File" ; - rdfs:subClassOf :CWE-540 ; - :cwe-id "CWE-541" ; - :definition "If an include file source is accessible, the file can contain usernames and passwords, as well as sensitive information pertaining to the application and system." . - -:CWE-543 a owl:Class ; - rdfs:label "Use of Singleton Pattern Without Synchronization in a Multithreaded Context" ; - rdfs:subClassOf :CWE-820 ; - :cwe-id "CWE-543" ; - :definition "The product uses the singleton pattern when creating a resource within a multithreaded environment." . - -:CWE-544 a owl:Class ; - rdfs:label "Missing Standardized Error Handling Mechanism" ; - rdfs:subClassOf :CWE-755 ; - :cwe-id "CWE-544" ; - :definition "The product does not use a standardized method for handling errors throughout the code, which might introduce inconsistent error handling and resultant weaknesses." . - -:CWE-546 a owl:Class ; - rdfs:label "Suspicious Comment" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-546" ; - :definition "The code contains comments that suggest the presence of bugs, incomplete functionality, or weaknesses." . - -:CWE-547 a owl:Class ; - rdfs:label "Use of Hard-coded, Security-relevant Constants" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-547" ; - :definition "The product uses hard-coded constants instead of symbolic names for security-critical values, which increases the likelihood of mistakes during code maintenance or security policy change." . - -:CWE-548 a owl:Class ; - rdfs:label "Exposure of Information Through Directory Listing" ; - rdfs:subClassOf :CWE-497 ; - :cwe-id "CWE-548" ; - :definition "The product inappropriately exposes a directory listing with an index of all the resources located inside of the directory." . - -:CWE-549 a owl:Class ; - rdfs:label "Missing Password Field Masking" ; - rdfs:subClassOf :CWE-522 ; - :cwe-id "CWE-549" ; - :definition "The product does not mask passwords during entry, increasing the potential for attackers to observe and capture passwords." . - -:CWE-550 a owl:Class ; - rdfs:label "Server-generated Error Message Containing Sensitive Information" ; - rdfs:subClassOf :CWE-209 ; - :cwe-id "CWE-550" ; - :definition "Certain conditions, such as network failure, will cause a server error message to be displayed." . - -:CWE-551 a owl:Class ; - rdfs:label "Incorrect Behavior Order: Authorization Before Parsing and Canonicalization" ; - rdfs:subClassOf :CWE-696, - :CWE-863 ; - :cwe-id "CWE-551" ; - :definition "If a web server does not fully parse requested URLs before it examines them for authorization, it may be possible for an attacker to bypass authorization protection." . - -:CWE-552 a owl:Class ; - rdfs:label "Files or Directories Accessible to External Parties" ; - rdfs:subClassOf :CWE-285, - :CWE-668 ; - :cwe-id "CWE-552" ; - :definition "The product makes files or directories accessible to unauthorized actors, even though they should not be." . - -:CWE-553 a owl:Class ; - rdfs:label "Command Shell in Externally Accessible Directory" ; - rdfs:subClassOf :CWE-552 ; - :cwe-id "CWE-553" ; - :definition "A possible shell file exists in /cgi-bin/ or other accessible directories. This is extremely dangerous and can be used by an attacker to execute commands on the web server." . - -:CWE-554 a owl:Class ; - rdfs:label "ASP.NET Misconfiguration: Not Using Input Validation Framework" ; - rdfs:subClassOf :CWE-1173 ; - :cwe-id "CWE-554" ; - :definition "The ASP.NET application does not use an input validation framework." . - -:CWE-555 a owl:Class ; - rdfs:label "J2EE Misconfiguration: Plaintext Password in Configuration File" ; - rdfs:subClassOf :CWE-260 ; - :cwe-id "CWE-555" ; - :definition "The J2EE application stores a plaintext password in a configuration file." . - -:CWE-556 a owl:Class ; - rdfs:label "ASP.NET Misconfiguration: Use of Identity Impersonation" ; - rdfs:subClassOf :CWE-266 ; - :cwe-id "CWE-556" ; - :definition "Configuring an ASP.NET application to run with impersonated credentials may give the application unnecessary privileges." . - -:CWE-558 a owl:Class ; - rdfs:label "Use of getlogin() in Multithreaded Application" ; - rdfs:subClassOf :CWE-663 ; - :cwe-id "CWE-558" ; - :definition "The product uses the getlogin() function in a multithreaded context, potentially causing it to return incorrect values." . - -:CWE-560 a owl:Class ; - rdfs:label "Use of umask() with chmod-style Argument" ; - rdfs:subClassOf :CWE-687 ; - :cwe-id "CWE-560" ; - :definition "The product calls umask() with an incorrect argument that is specified as if it is an argument to chmod()." . - -:CWE-561 a owl:Class ; - rdfs:label "Dead Code" ; - rdfs:subClassOf :CWE-1164 ; - :cwe-id "CWE-561" ; - :definition "The product contains dead code, which can never be executed." . - -:CWE-562 a owl:Class ; - rdfs:label "Return of Stack Variable Address" ; - rdfs:subClassOf :CWE-758 ; - :cwe-id "CWE-562" ; - :definition "A function returns the address of a stack variable, which will cause unintended program behavior, typically in the form of a crash." . - -:CWE-563 a owl:Class ; - rdfs:label "Assignment to Variable without Use" ; - rdfs:subClassOf :CWE-1164 ; - :cwe-id "CWE-563" ; - :definition "The variable's value is assigned but never used, making it a dead store." ; - :synonym "Unused Variable" . - -:CWE-564 a owl:Class ; - rdfs:label "SQL Injection: Hibernate" ; - rdfs:subClassOf :CWE-89 ; - :cwe-id "CWE-564" ; - :definition "Using Hibernate to execute a dynamic SQL statement built with user-controlled input can allow an attacker to modify the statement's meaning or to execute arbitrary SQL commands." . - -:CWE-565 a owl:Class ; - rdfs:label "Reliance on Cookies without Validation and Integrity Checking" ; - rdfs:subClassOf :CWE-602, - :CWE-642 ; - :cwe-id "CWE-565" ; - :definition "The product relies on the existence or values of cookies when performing security-critical operations, but it does not properly ensure that the setting is valid for the associated user." . - -:CWE-566 a owl:Class ; - rdfs:label "Authorization Bypass Through User-Controlled SQL Primary Key" ; - rdfs:subClassOf :CWE-639 ; - :cwe-id "CWE-566" ; - :definition "The product uses a database table that includes records that should not be accessible to an actor, but it executes a SQL statement with a primary key that can be controlled by that actor." . - -:CWE-567 a owl:Class ; - rdfs:label "Unsynchronized Access to Shared Data in a Multithreaded Context" ; - rdfs:subClassOf :CWE-820 ; - :cwe-id "CWE-567" ; - :definition "The product does not properly synchronize shared data, such as static variables across threads, which can lead to undefined behavior and unpredictable data changes." . - -:CWE-568 a owl:Class ; - rdfs:label "finalize() Method Without super.finalize()" ; - rdfs:subClassOf :CWE-459, - :CWE-573 ; - :cwe-id "CWE-568" ; - :definition "The product contains a finalize() method that does not call super.finalize()." . - -:CWE-570 a owl:Class ; - rdfs:label "Expression is Always False" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-570" ; - :definition "The product contains an expression that will always evaluate to false." . - -:CWE-571 a owl:Class ; - rdfs:label "Expression is Always True" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-571" ; - :definition "The product contains an expression that will always evaluate to true." . - -:CWE-572 a owl:Class ; - rdfs:label "Call to Thread run() instead of start()" ; - rdfs:subClassOf :CWE-821 ; - :cwe-id "CWE-572" ; - :definition "The product calls a thread's run() method instead of calling start(), which causes the code to run in the thread of the caller instead of the callee." . - -:CWE-573 a owl:Class ; - rdfs:label "Improper Following of Specification by Caller" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-573" ; - :definition "The product does not follow or incorrectly follows the specifications as required by the implementation language, environment, framework, protocol, or platform." . - -:CWE-574 a owl:Class ; - rdfs:label "EJB Bad Practices: Use of Synchronization Primitives" ; - rdfs:subClassOf :CWE-695, - :CWE-821 ; - :cwe-id "CWE-574" ; - :definition "The product violates the Enterprise JavaBeans (EJB) specification by using thread synchronization primitives." . - -:CWE-575 a owl:Class ; - rdfs:label "EJB Bad Practices: Use of AWT Swing" ; - rdfs:subClassOf :CWE-695 ; - :cwe-id "CWE-575" ; - :definition "The product violates the Enterprise JavaBeans (EJB) specification by using AWT/Swing." . - -:CWE-576 a owl:Class ; - rdfs:label "EJB Bad Practices: Use of Java I/O" ; - rdfs:subClassOf :CWE-695 ; - :cwe-id "CWE-576" ; - :definition "The product violates the Enterprise JavaBeans (EJB) specification by using the java.io package." . - -:CWE-577 a owl:Class ; - rdfs:label "EJB Bad Practices: Use of Sockets" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-577" ; - :definition "The product violates the Enterprise JavaBeans (EJB) specification by using sockets." . - -:CWE-578 a owl:Class ; - rdfs:label "EJB Bad Practices: Use of Class Loader" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-578" ; - :definition "The product violates the Enterprise JavaBeans (EJB) specification by using the class loader." . - -:CWE-579 a owl:Class ; - rdfs:label "J2EE Bad Practices: Non-serializable Object Stored in Session" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-579" ; - :definition "The product stores a non-serializable object as an HttpSession attribute, which can hurt reliability." . - -:CWE-580 a owl:Class ; - rdfs:label "clone() Method Without super.clone()" ; - rdfs:subClassOf :CWE-573, - :CWE-664 ; - :cwe-id "CWE-580" ; - :definition "The product contains a clone() method that does not call super.clone() to obtain the new object." . - -:CWE-581 a owl:Class ; - rdfs:label "Object Model Violation: Just One of Equals and Hashcode Defined" ; - rdfs:subClassOf :CWE-573, - :CWE-697 ; - :cwe-id "CWE-581" ; - :definition "The product does not maintain equal hashcodes for equal objects." . - -:CWE-582 a owl:Class ; - rdfs:label "Array Declared Public, Final, and Static" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-582" ; - :definition "The product declares an array public, final, and static, which is not sufficient to prevent the array's contents from being modified." . - -:CWE-583 a owl:Class ; - rdfs:label "finalize() Method Declared Public" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-583" ; - :definition "The product violates secure coding principles for mobile code by declaring a finalize() method public." . - -:CWE-584 a owl:Class ; - rdfs:label "Return Inside Finally Block" ; - rdfs:subClassOf :CWE-705 ; - :cwe-id "CWE-584" ; - :definition "The code has a return statement inside a finally block, which will cause any thrown exception in the try block to be discarded." . - -:CWE-585 a owl:Class ; - rdfs:label "Empty Synchronized Block" ; - rdfs:subClassOf :CWE-1071 ; - :cwe-id "CWE-585" ; - :definition "The product contains an empty synchronized block." . - -:CWE-586 a owl:Class ; - rdfs:label "Explicit Call to Finalize()" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-586" ; - :definition "The product makes an explicit call to the finalize() method from outside the finalizer." . - -:CWE-587 a owl:Class ; - rdfs:label "Assignment of a Fixed Address to a Pointer" ; - rdfs:subClassOf :CWE-344, - :CWE-758 ; - :cwe-id "CWE-587" ; - :definition "The product sets a pointer to a specific address other than NULL or 0." . - -:CWE-588 a owl:Class ; - rdfs:label "Attempt to Access Child of a Non-structure Pointer" ; - rdfs:subClassOf :CWE-704, - :CWE-758 ; - :cwe-id "CWE-588" ; - :definition "Casting a non-structure type to a structure type and accessing a field can lead to memory access errors or data corruption." . - -:CWE-589 a owl:Class ; - rdfs:label "Call to Non-ubiquitous API" ; - rdfs:subClassOf :CWE-474 ; - :cwe-id "CWE-589" ; - :definition "The product uses an API function that does not exist on all versions of the target platform. This could cause portability problems or inconsistencies that allow denial of service or other consequences." . - -:CWE-590 a owl:Class ; - rdfs:label "Free of Memory not on the Heap" ; - rdfs:subClassOf :CWE-762, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :MemoryFreeFunction ] ; - :cwe-id "CWE-590" ; - :definition "The product calls free() on a pointer to memory that was not allocated using associated heap allocation functions such as malloc(), calloc(), or realloc()." . - -:CWE-591 a owl:Class ; - rdfs:label "Sensitive Data Storage in Improperly Locked Memory" ; - rdfs:subClassOf :CWE-413 ; - :cwe-id "CWE-591" ; - :definition "The product stores sensitive data in memory that is not locked, or that has been incorrectly locked, which might cause the memory to be written to swap files on disk by the virtual memory manager. This can make the data more accessible to external actors." . - -:CWE-593 a owl:Class ; - rdfs:label "Authentication Bypass: OpenSSL CTX Object Modified after SSL Objects are Created" ; - rdfs:subClassOf :CWE-666, - :CWE-1390 ; - :cwe-id "CWE-593" ; - :definition "The product modifies the SSL context after connection creation has begun." . - -:CWE-594 a owl:Class ; - rdfs:label "J2EE Framework: Saving Unserializable Objects to Disk" ; - rdfs:subClassOf :CWE-710, - :CWE-1076 ; - :cwe-id "CWE-594" ; - :definition "When the J2EE container attempts to write unserializable objects to disk there is no guarantee that the process will complete successfully." . - -:CWE-595 a owl:Class ; - rdfs:label "Comparison of Object References Instead of Object Contents" ; - rdfs:subClassOf :CWE-1025 ; - :cwe-id "CWE-595" ; - :definition "The product compares object references instead of the contents of the objects themselves, preventing it from detecting equivalent objects." . - -:CWE-597 a owl:Class ; - rdfs:label "Use of Wrong Operator in String Comparison" ; - rdfs:subClassOf :CWE-480, - :CWE-595 ; - :cwe-id "CWE-597" ; - :definition "The product uses the wrong operator when comparing a string, such as using \"==\" when the .equals() method should be used instead." . - -:CWE-598 a owl:Class ; - rdfs:label "Use of GET Request Method With Sensitive Query Strings" ; - rdfs:subClassOf :CWE-201 ; - :cwe-id "CWE-598" ; - :definition "The web application uses the HTTP GET method to process a request and includes sensitive information in the query string of that request." . - -:CWE-599 a owl:Class ; - rdfs:label "Missing Validation of OpenSSL Certificate" ; - rdfs:subClassOf :CWE-295 ; - :cwe-id "CWE-599" ; - :definition "The product uses OpenSSL and trusts or uses a certificate without using the SSL_get_verify_result() function to ensure that the certificate satisfies all necessary security requirements." . - -:CWE-600 a owl:Class ; - rdfs:label "Uncaught Exception in Servlet " ; - rdfs:subClassOf :CWE-248 ; - :cwe-id "CWE-600" ; - :definition "The Servlet does not catch all exceptions, which may reveal sensitive debugging information." ; - :synonym "Missing Catch Block" . - -:CWE-601 a owl:Class ; - rdfs:label "URL Redirection to Untrusted Site ('Open Redirect')" ; - rdfs:subClassOf :CWE-610 ; - :cwe-id "CWE-601" ; - :definition "The web application accepts a user-controlled input that specifies a link to an external site, and uses that link in a redirect." ; - :synonym "Cross-domain Redirect", - "Cross-site Redirect", - "Open Redirect", - "Unvalidated Redirect" . - -:CWE-602 a owl:Class ; - rdfs:label "Client-Side Enforcement of Server-Side Security" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-602" ; - :definition "The product is composed of a server that relies on the client to implement a mechanism that is intended to protect the server." . - -:CWE-603 a owl:Class ; - rdfs:label "Use of Client-Side Authentication" ; - rdfs:subClassOf :CWE-602, - :CWE-1390 ; - :cwe-id "CWE-603" ; - :definition "A client/server product performs authentication within client code but not in server code, allowing server-side authentication to be bypassed via a modified client that omits the authentication check." . - -:CWE-605 a owl:Class ; - rdfs:label "Multiple Binds to the Same Port" ; - rdfs:subClassOf :CWE-666, - :CWE-675 ; - :cwe-id "CWE-605" ; - :definition "When multiple sockets are allowed to bind to the same port, other services on that port may be stolen or spoofed." . - -:CWE-606 a owl:Class ; - rdfs:label "Unchecked Input for Loop Condition" ; - rdfs:subClassOf :CWE-1284 ; - :cwe-id "CWE-606" ; - :definition "The product does not properly check inputs that are used for loop conditions, potentially leading to a denial of service or other consequences because of excessive looping." . - -:CWE-607 a owl:Class ; - rdfs:label "Public Static Final Field References Mutable Object" ; - rdfs:subClassOf :CWE-471 ; - :cwe-id "CWE-607" ; - :definition "A public or protected static final field references a mutable object, which allows the object to be changed by malicious code, or accidentally from another package." . - -:CWE-608 a owl:Class ; - rdfs:label "Struts: Non-private Field in ActionForm Class" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-608" ; - :definition "An ActionForm class contains a field that has not been declared private, which can be accessed without using a setter or getter." . - -:CWE-609 a owl:Class ; - rdfs:label "Double-Checked Locking" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-609" ; - :definition "The product uses double-checked locking to access a resource without the overhead of explicit synchronization, but the locking is insufficient." . - -:CWE-610 a owl:Class ; - rdfs:label "Externally Controlled Reference to a Resource in Another Sphere" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-610" ; - :definition "The product uses an externally controlled name or reference that resolves to a resource that is outside of the intended control sphere." . - -:CWE-611 a owl:Class ; - rdfs:label "Improper Restriction of XML External Entity Reference" ; - rdfs:subClassOf :CWE-610, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :ExternalContentInclusionFunction ] ; - :cwe-id "CWE-611" ; - :definition "The product processes an XML document that can contain XML entities with URIs that resolve to documents outside of the intended sphere of control, causing the product to embed incorrect documents into its output." ; - :synonym "XXE" . - -:CWE-612 a owl:Class ; - rdfs:label "Improper Authorization of Index Containing Sensitive Information" ; - rdfs:subClassOf :CWE-1230 ; - :cwe-id "CWE-612" ; - :definition "The product creates a search index of private or sensitive documents, but it does not properly limit index access to actors who are authorized to see the original information." . - -:CWE-613 a owl:Class ; - rdfs:label "Insufficient Session Expiration" ; - rdfs:subClassOf :CWE-672 ; - :cwe-id "CWE-613" ; - :definition "According to WASC, \"Insufficient Session Expiration is when a web site permits an attacker to reuse old session credentials or session IDs for authorization.\"" . - -:CWE-614 a owl:Class ; - rdfs:label "Sensitive Cookie in HTTPS Session Without 'Secure' Attribute" ; - rdfs:subClassOf :CWE-319 ; - :cwe-id "CWE-614" ; - :definition "The Secure attribute for sensitive cookies in HTTPS sessions is not set, which could cause the user agent to send those cookies in plaintext over an HTTP session." . - -:CWE-615 a owl:Class ; - rdfs:label "Inclusion of Sensitive Information in Source Code Comments" ; - rdfs:subClassOf :CWE-540 ; - :cwe-id "CWE-615" ; - :definition "While adding general comments is very useful, some programmers tend to leave important data, such as: filenames related to the web application, old links or links which were not meant to be browsed by users, old code fragments, etc." . - -:CWE-616 a owl:Class ; - rdfs:label "Incomplete Identification of Uploaded File Variables (PHP)" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-616" ; - :definition "The PHP application uses an old method for processing uploaded files by referencing the four global variables that are set for each file (e.g. $varname, $varname_size, $varname_name, $varname_type). These variables could be overwritten by attackers, causing the application to process unauthorized files." . - -:CWE-617 a owl:Class ; - rdfs:label "Reachable Assertion" ; - rdfs:subClassOf :CWE-670 ; - :cwe-id "CWE-617" ; - :definition "The product contains an assert() or similar statement that can be triggered by an attacker, which leads to an application exit or other behavior that is more severe than necessary." ; - :synonym "assertion failure" . - -:CWE-618 a owl:Class ; - rdfs:label "Exposed Unsafe ActiveX Method" ; - rdfs:subClassOf :CWE-749 ; - :cwe-id "CWE-618" ; - :definition "An ActiveX control is intended for use in a web browser, but it exposes dangerous methods that perform actions that are outside of the browser's security model (e.g. the zone or domain)." . - -:CWE-619 a owl:Class ; - rdfs:label "Dangling Database Cursor ('Cursor Injection')" ; - rdfs:subClassOf :CWE-402 ; - :cwe-id "CWE-619" ; - :definition "If a database cursor is not closed properly, then it could become accessible to other users while retaining the same privileges that were originally assigned, leaving the cursor \"dangling.\"" . - -:CWE-620 a owl:Class ; - rdfs:label "Unverified Password Change" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-620" ; - :definition "When setting a new password for a user, the product does not require knowledge of the original password, or using another form of authentication." . - -:CWE-621 a owl:Class ; - rdfs:label "Variable Extraction Error" ; - rdfs:subClassOf :CWE-914 ; - :cwe-id "CWE-621" ; - :definition "The product uses external input to determine the names of variables into which information is extracted, without verifying that the names of the specified variables are valid. This could cause the program to overwrite unintended variables." ; - :synonym "Variable overwrite" . - -:CWE-622 a owl:Class ; - rdfs:label "Improper Validation of Function Hook Arguments" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-622" ; - :definition "The product adds hooks to user-accessible API functions, but it does not properly validate the arguments. This could lead to resultant vulnerabilities." . - -:CWE-623 a owl:Class ; - rdfs:label "Unsafe ActiveX Control Marked Safe For Scripting" ; - rdfs:subClassOf :CWE-267 ; - :cwe-id "CWE-623" ; - :definition "An ActiveX control is intended for restricted use, but it has been marked as safe-for-scripting." . - -:CWE-624 a owl:Class ; - rdfs:label "Executable Regular Expression Error" ; - rdfs:subClassOf :CWE-77 ; - :cwe-id "CWE-624" ; - :definition "The product uses a regular expression that either (1) contains an executable component with user-controlled inputs, or (2) allows a user to enable execution by inserting pattern modifiers." . - -:CWE-625 a owl:Class ; - rdfs:label "Permissive Regular Expression" ; - rdfs:subClassOf :CWE-185 ; - :cwe-id "CWE-625" ; - :definition "The product uses a regular expression that does not sufficiently restrict the set of allowed values." . - -:CWE-626 a owl:Class ; - rdfs:label "Null Byte Interaction Error (Poison Null Byte)" ; - rdfs:subClassOf :CWE-147, - :CWE-436 ; - :cwe-id "CWE-626" ; - :definition "The product does not properly handle null bytes or NUL characters when passing data between different representations or components." . - -:CWE-627 a owl:Class ; - rdfs:label "Dynamic Variable Evaluation" ; - rdfs:subClassOf :CWE-914 ; - :cwe-id "CWE-627" ; - :definition "In a language where the user can influence the name of a variable at runtime, if the variable names are not controlled, an attacker can read or write to arbitrary variables, or access arbitrary functions." ; - :synonym "Dynamic evaluation" . - -:CWE-628 a owl:Class ; - rdfs:label "Function Call with Incorrectly Specified Arguments" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-628" ; - :definition "The product calls a function, procedure, or routine with arguments that are not correctly specified, leading to always-incorrect behavior and resultant weaknesses." . - -:CWE-636 a owl:Class ; - rdfs:label "Not Failing Securely ('Failing Open')" ; - rdfs:subClassOf :CWE-657, - :CWE-755 ; - :cwe-id "CWE-636" ; - :definition "When the product encounters an error condition or failure, its design requires it to fall back to a state that is less secure than other options that are available, such as selecting the weakest encryption algorithm or using the most permissive access control restrictions." ; - :synonym "Failing Open" . - -:CWE-637 a owl:Class ; - rdfs:label "Unnecessary Complexity in Protection Mechanism (Not Using 'Economy of Mechanism')" ; - rdfs:subClassOf :CWE-657 ; - :cwe-id "CWE-637" ; - :definition "The product uses a more complex mechanism than necessary, which could lead to resultant weaknesses when the mechanism is not correctly understood, modeled, configured, implemented, or used." ; - :synonym "Unnecessary Complexity" . - -:CWE-638 a owl:Class ; - rdfs:label "Not Using Complete Mediation" ; - rdfs:subClassOf :CWE-657, - :CWE-862 ; - :cwe-id "CWE-638" ; - :definition "The product does not perform access checks on a resource every time the resource is accessed by an entity, which can create resultant weaknesses if that entity's rights or privileges change over time." . - -:CWE-639 a owl:Class ; - rdfs:label "Authorization Bypass Through User-Controlled Key" ; - rdfs:subClassOf :CWE-863 ; - :cwe-id "CWE-639" ; - :definition "The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data." ; - :synonym "Broken Object Level Authorization / BOLA", - "Horizontal Authorization", - "Insecure Direct Object Reference / IDOR" . - -:CWE-640 a owl:Class ; - rdfs:label "Weak Password Recovery Mechanism for Forgotten Password" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-640" ; - :definition "The product contains a mechanism for users to recover or change their passwords without knowing the original password, but the mechanism is weak." . - -:CWE-641 a owl:Class ; - rdfs:label "Improper Restriction of Names for Files and Other Resources" ; - rdfs:subClassOf :CWE-99 ; - :cwe-id "CWE-641" ; - :definition "The product constructs the name of a file or other resource using input from an upstream component, but it does not restrict or incorrectly restricts the resulting name." . - -:CWE-642 a owl:Class ; - rdfs:label "External Control of Critical State Data" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-642" ; - :definition "The product stores security-critical state information about its users, or the product itself, in a location that is accessible to unauthorized actors." . - -:CWE-643 a owl:Class ; - rdfs:label "Improper Neutralization of Data within XPath Expressions ('XPath Injection')" ; - rdfs:subClassOf :CWE-91, - :CWE-943 ; - :cwe-id "CWE-643" ; - :definition "The product uses external input to dynamically construct an XPath expression used to retrieve data from an XML database, but it does not neutralize or incorrectly neutralizes that input. This allows an attacker to control the structure of the query." . - -:CWE-644 a owl:Class ; - rdfs:label "Improper Neutralization of HTTP Headers for Scripting Syntax" ; - rdfs:subClassOf :CWE-116 ; - :cwe-id "CWE-644" ; - :definition "The product does not neutralize or incorrectly neutralizes web scripting syntax in HTTP headers that can be used by web browser components that can process raw headers, such as Flash." . - -:CWE-645 a owl:Class ; - rdfs:label "Overly Restrictive Account Lockout Mechanism" ; - rdfs:subClassOf :CWE-287 ; - :cwe-id "CWE-645" ; - :definition "The product contains an account lockout protection mechanism, but the mechanism is too restrictive and can be triggered too easily, which allows attackers to deny service to legitimate users by causing their accounts to be locked out." . - -:CWE-646 a owl:Class ; - rdfs:label "Reliance on File Name or Extension of Externally-Supplied File" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-646" ; - :definition "The product allows a file to be uploaded, but it relies on the file name or extension of the file to determine the appropriate behaviors. This could be used by attackers to cause the file to be misclassified and processed in a dangerous fashion." . - -:CWE-647 a owl:Class ; - rdfs:label "Use of Non-Canonical URL Paths for Authorization Decisions" ; - rdfs:subClassOf :CWE-863 ; - :cwe-id "CWE-647" ; - :definition "The product defines policy namespaces and makes authorization decisions based on the assumption that a URL is canonical. This can allow a non-canonical URL to bypass the authorization." . - -:CWE-648 a owl:Class ; - rdfs:label "Incorrect Use of Privileged APIs" ; - rdfs:subClassOf :CWE-269 ; - :cwe-id "CWE-648" ; - :definition "The product does not conform to the API requirements for a function call that requires extra privileges. This could allow attackers to gain privileges by causing the function to be called incorrectly." . - -:CWE-649 a owl:Class ; - rdfs:label "Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-649" ; - :definition "The product uses obfuscation or encryption of inputs that should not be mutable by an external actor, but the product does not use integrity checks to detect if those inputs have been modified." . - -:CWE-650 a owl:Class ; - rdfs:label "Trusting HTTP Permission Methods on the Server Side" ; - rdfs:subClassOf :CWE-436 ; - :cwe-id "CWE-650" ; - :definition "The server contains a protection mechanism that assumes that any URI that is accessed using HTTP GET will not cause a state change to the associated resource. This might allow attackers to bypass intended access restrictions and conduct resource modification and deletion attacks, since some applications allow GET to modify state." . - -:CWE-651 a owl:Class ; - rdfs:label "Exposure of WSDL File Containing Sensitive Information" ; - rdfs:subClassOf :CWE-538 ; - :cwe-id "CWE-651" ; - :definition "The Web services architecture may require exposing a Web Service Definition Language (WSDL) file that contains information on the publicly accessible services and how callers of these services should interact with them (e.g. what parameters they expect and what types they return)." . - -:CWE-652 a owl:Class ; - rdfs:label "Improper Neutralization of Data within XQuery Expressions ('XQuery Injection')" ; - rdfs:subClassOf :CWE-91, - :CWE-943 ; - :cwe-id "CWE-652" ; - :definition "The product uses external input to dynamically construct an XQuery expression used to retrieve data from an XML database, but it does not neutralize or incorrectly neutralizes that input. This allows an attacker to control the structure of the query." . - -:CWE-653 a owl:Class ; - rdfs:label "Improper Isolation or Compartmentalization" ; - rdfs:subClassOf :CWE-657, - :CWE-693 ; - :cwe-id "CWE-653" ; - :definition "The product does not properly compartmentalize or isolate functionality, processes, or resources that require different privilege levels, rights, or permissions." ; - :synonym "Separation of Privilege" . - -:CWE-654 a owl:Class ; - rdfs:label "Reliance on a Single Factor in a Security Decision" ; - rdfs:subClassOf :CWE-657, - :CWE-693 ; - :cwe-id "CWE-654" ; - :definition "A protection mechanism relies exclusively, or to a large extent, on the evaluation of a single condition or the integrity of a single object or entity in order to make a decision about granting access to restricted resources or functionality." ; - :synonym "Separation of Privilege" . - -:CWE-655 a owl:Class ; - rdfs:label "Insufficient Psychological Acceptability" ; - rdfs:subClassOf :CWE-657, - :CWE-693 ; - :cwe-id "CWE-655" ; - :definition "The product has a protection mechanism that is too difficult or inconvenient to use, encouraging non-malicious users to disable or bypass the mechanism, whether by accident or on purpose." . - -:CWE-656 a owl:Class ; - rdfs:label "Reliance on Security Through Obscurity" ; - rdfs:subClassOf :CWE-657, - :CWE-693 ; - :cwe-id "CWE-656" ; - :definition "The product uses a protection mechanism whose strength depends heavily on its obscurity, such that knowledge of its algorithms or key data is sufficient to defeat the mechanism." ; - :synonym "Never Assuming your secrets are safe" . - -:CWE-657 a owl:Class ; - rdfs:label "Violation of Secure Design Principles" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-657" ; - :definition "The product violates well-established principles for secure design." . - -:CWE-662 a owl:Class ; - rdfs:label "Improper Synchronization" ; - rdfs:subClassOf :CWE-664, - :CWE-691 ; - :cwe-id "CWE-662" ; - :definition "The product utilizes multiple threads or processes to allow temporary access to a shared resource that can only be exclusive to one process at a time, but it does not properly synchronize these actions, which might cause simultaneous accesses of this resource by multiple threads or processes." . - -:CWE-663 a owl:Class ; - rdfs:label "Use of a Non-reentrant Function in a Concurrent Context" ; - rdfs:subClassOf :CWE-662 ; - :cwe-id "CWE-663" ; - :definition "The product calls a non-reentrant function in a concurrent context in which a competing code sequence (e.g. thread or signal handler) may have an opportunity to call the same function or otherwise influence its state." . - -:CWE-664 a owl:Class ; - rdfs:label "Improper Control of a Resource Through its Lifetime" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-664" ; - :definition "The product does not maintain or incorrectly maintains control over a resource throughout its lifetime of creation, use, and release." . - -:CWE-665 a owl:Class ; - rdfs:label "Improper Initialization" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-665" ; - :definition "The product does not initialize or incorrectly initializes a resource, which might leave the resource in an unexpected state when it is accessed or used." . - -:CWE-666 a owl:Class ; - rdfs:label "Operation on Resource in Wrong Phase of Lifetime" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-666" ; - :definition "The product performs an operation on a resource at the wrong phase of the resource's lifecycle, which can lead to unexpected behaviors." . - -:CWE-667 a owl:Class ; - rdfs:label "Improper Locking" ; - rdfs:subClassOf :CWE-662 ; - :cwe-id "CWE-667" ; - :definition "The product does not properly acquire or release a lock on a resource, leading to unexpected resource state changes and behaviors." . - -:CWE-668 a owl:Class ; - rdfs:label "Exposure of Resource to Wrong Sphere" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-668" ; - :definition "The product exposes a resource to the wrong control sphere, providing unintended actors with inappropriate access to the resource." . - -:CWE-669 a owl:Class ; - rdfs:label "Incorrect Resource Transfer Between Spheres" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-669" ; - :definition "The product does not properly transfer a resource/behavior to another sphere, or improperly imports a resource/behavior from another sphere, in a manner that provides unintended control over that resource." . - -:CWE-670 a owl:Class ; - rdfs:label "Always-Incorrect Control Flow Implementation" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-670" ; - :definition "The code contains a control flow path that does not reflect the algorithm that the path is intended to implement, leading to incorrect behavior any time this path is navigated." . - -:CWE-671 a owl:Class ; - rdfs:label "Lack of Administrator Control over Security" ; - rdfs:subClassOf :CWE-657 ; - :cwe-id "CWE-671" ; - :definition "The product uses security features in a way that prevents the product's administrator from tailoring security settings to reflect the environment in which the product is being used. This introduces resultant weaknesses or prevents it from operating at a level of security that is desired by the administrator." . - -:CWE-672 a owl:Class ; - rdfs:label "Operation on a Resource after Expiration or Release" ; - rdfs:subClassOf :CWE-666 ; - :cwe-id "CWE-672" ; - :definition "The product uses, accesses, or otherwise operates on a resource after that resource has been expired, released, or revoked." . - -:CWE-673 a owl:Class ; - rdfs:label "External Influence of Sphere Definition" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-673" ; - :definition "The product does not prevent the definition of control spheres from external actors." . - -:CWE-674 a owl:Class ; - rdfs:label "Uncontrolled Recursion" ; - rdfs:subClassOf :CWE-834 ; - :cwe-id "CWE-674" ; - :definition "The product does not properly control the amount of recursion that takes place, consuming excessive resources, such as allocated memory or the program stack." ; - :synonym "Stack Exhaustion" . - -:CWE-675 a owl:Class ; - rdfs:label "Multiple Operations on Resource in Single-Operation Context" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-675" ; - :definition "The product performs the same operation on a resource two or more times, when the operation should only be applied once." . - -:CWE-676 a owl:Class ; - rdfs:label "Use of Potentially Dangerous Function" ; - rdfs:subClassOf :CWE-1177 ; - :cwe-id "CWE-676" ; - :definition "The product invokes a potentially dangerous function that could introduce a vulnerability if it is used incorrectly, but the function can also be used safely." . - -:CWE-680 a owl:Class ; - rdfs:label "Integer Overflow to Buffer Overflow" ; - rdfs:subClassOf :CWE-119, - :CWE-190 ; - :cwe-id "CWE-680" ; - :definition "The product performs a calculation to determine how much memory to allocate, but an integer overflow can occur that causes less memory to be allocated than expected, leading to a buffer overflow." . - -:CWE-681 a owl:Class ; - rdfs:label "Incorrect Conversion between Numeric Types" ; - rdfs:subClassOf :CWE-704 ; - :cwe-id "CWE-681" ; - :definition "When converting from one data type to another, such as long to integer, data can be omitted or translated in a way that produces unexpected values. If the resulting values are used in a sensitive context, then dangerous behaviors may occur." . - -:CWE-682 a owl:Class ; - rdfs:label "Incorrect Calculation" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-682" ; - :definition "The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management." . - -:CWE-683 a owl:Class ; - rdfs:label "Function Call With Incorrect Order of Arguments" ; - rdfs:subClassOf :CWE-628 ; - :cwe-id "CWE-683" ; - :definition "The product calls a function, procedure, or routine, but the caller specifies the arguments in an incorrect order, leading to resultant weaknesses." . - -:CWE-684 a owl:Class ; - rdfs:label "Incorrect Provision of Specified Functionality" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-684" ; - :definition "The code does not function according to its published specifications, potentially leading to incorrect usage." . - -:CWE-685 a owl:Class ; - rdfs:label "Function Call With Incorrect Number of Arguments" ; - rdfs:subClassOf :CWE-628 ; - :cwe-id "CWE-685" ; - :definition "The product calls a function, procedure, or routine, but the caller specifies too many arguments, or too few arguments, which may lead to undefined behavior and resultant weaknesses." . - -:CWE-686 a owl:Class ; - rdfs:label "Function Call With Incorrect Argument Type" ; - rdfs:subClassOf :CWE-628 ; - :cwe-id "CWE-686" ; - :definition "The product calls a function, procedure, or routine, but the caller specifies an argument that is the wrong data type, which may lead to resultant weaknesses." . - -:CWE-687 a owl:Class ; - rdfs:label "Function Call With Incorrectly Specified Argument Value" ; - rdfs:subClassOf :CWE-628 ; - :cwe-id "CWE-687" ; - :definition "The product calls a function, procedure, or routine, but the caller specifies an argument that contains the wrong value, which may lead to resultant weaknesses." . - -:CWE-688 a owl:Class ; - rdfs:label "Function Call With Incorrect Variable or Reference as Argument" ; - rdfs:subClassOf :CWE-628 ; - :cwe-id "CWE-688" ; - :definition "The product calls a function, procedure, or routine, but the caller specifies the wrong variable or reference as one of the arguments, which may lead to undefined behavior and resultant weaknesses." . - -:CWE-689 a owl:Class ; - rdfs:label "Permission Race Condition During Resource Copy" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-689" ; - :definition "The product, while copying or cloning a resource, does not set the resource's permissions or access control until the copy is complete, leaving the resource exposed to other spheres while the copy is taking place." . - -:CWE-690 a owl:Class ; - rdfs:label "Unchecked Return Value to NULL Pointer Dereference" ; - rdfs:subClassOf :CWE-252, - :CWE-476 ; - :cwe-id "CWE-690" ; - :definition "The product does not check for an error after calling a function that can return with a NULL pointer if the function fails, which leads to a resultant NULL pointer dereference." . - -:CWE-691 a owl:Class ; - rdfs:label "Insufficient Control Flow Management" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-691" ; - :definition "The code does not sufficiently manage its control flow during execution, creating conditions in which the control flow can be modified in unexpected ways." . - -:CWE-692 a owl:Class ; - rdfs:label "Incomplete Denylist to Cross-Site Scripting" ; - rdfs:subClassOf :CWE-79, - :CWE-184 ; - :cwe-id "CWE-692" ; - :definition "The product uses a denylist-based protection mechanism to defend against XSS attacks, but the denylist is incomplete, allowing XSS variants to succeed." . - -:CWE-693 a owl:Class ; - rdfs:label "Protection Mechanism Failure" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-693" ; - :definition "The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product." . - -:CWE-694 a owl:Class ; - rdfs:label "Use of Multiple Resources with Duplicate Identifier" ; - rdfs:subClassOf :CWE-99, - :CWE-573 ; - :cwe-id "CWE-694" ; - :definition "The product uses multiple resources that can have the same identifier, in a context in which unique identifiers are required." . - -:CWE-695 a owl:Class ; - rdfs:label "Use of Low-Level Functionality" ; - rdfs:subClassOf :CWE-573 ; - :cwe-id "CWE-695" ; - :definition "The product uses low-level functionality that is explicitly prohibited by the framework or specification under which the product is supposed to operate." . - -:CWE-696 a owl:Class ; - rdfs:label "Incorrect Behavior Order" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-696" ; - :definition "The product performs multiple related behaviors, but the behaviors are performed in the wrong order in ways which may produce resultant weaknesses." . - -:CWE-697 a owl:Class ; - rdfs:label "Incorrect Comparison" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-697" ; - :definition "The product compares two entities in a security-relevant context, but the comparison is incorrect, which may lead to resultant weaknesses." . - -:CWE-698 a owl:Class ; - rdfs:label "Execution After Redirect (EAR)" ; - rdfs:subClassOf :CWE-670, - :CWE-705 ; - :cwe-id "CWE-698" ; - :definition "The web application sends a redirect to another location, but instead of exiting, it executes additional code." ; - :synonym "Redirect Without Exit" . - -:CWE-703 a owl:Class ; - rdfs:label "Improper Check or Handling of Exceptional Conditions" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-703" ; - :definition "The product does not properly anticipate or handle exceptional conditions that rarely occur during normal operation of the product." . - -:CWE-704 a owl:Class ; - rdfs:label "Incorrect Type Conversion or Cast" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-704" ; - :definition "The product does not correctly convert an object, resource, or structure from one type to a different type." . - -:CWE-705 a owl:Class ; - rdfs:label "Incorrect Control Flow Scoping" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-705" ; - :definition "The product does not properly return control flow to the proper location after it has completed a task or detected an unusual condition." . - -:CWE-706 a owl:Class ; - rdfs:label "Use of Incorrectly-Resolved Name or Reference" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-706" ; - :definition "The product uses a name or reference to access a resource, but the name/reference resolves to a resource that is outside of the intended control sphere." . - -:CWE-707 a owl:Class ; - rdfs:label "Improper Neutralization" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-707" ; - :definition "The product does not ensure or incorrectly ensures that structured messages or data are well-formed and that certain security properties are met before being read from an upstream component or sent to a downstream component." . - -:CWE-708 a owl:Class ; - rdfs:label "Incorrect Ownership Assignment" ; - rdfs:subClassOf :CWE-282 ; - :cwe-id "CWE-708" ; - :definition "The product assigns an owner to a resource, but the owner is outside of the intended control sphere." . - -:CWE-710 a owl:Class ; - rdfs:label "Improper Adherence to Coding Standards" ; - rdfs:subClassOf :Weakness ; - :cwe-id "CWE-710" ; - :definition "The product does not follow certain coding rules for development, which can lead to resultant weaknesses or increase the severity of the associated vulnerabilities." . - -:CWE-732 a owl:Class ; - rdfs:label "Incorrect Permission Assignment for Critical Resource" ; - rdfs:subClassOf :CWE-285, - :CWE-668 ; - :cwe-id "CWE-732" ; - :definition "The product specifies permissions for a security-critical resource in a way that allows that resource to be read or modified by unintended actors." . - -:CWE-733 a owl:Class ; - rdfs:label "Compiler Optimization Removal or Modification of Security-critical Code" ; - rdfs:subClassOf :CWE-1038 ; - :cwe-id "CWE-733" ; - :definition "The developer builds a security-critical protection mechanism into the software, but the compiler optimizes the program such that the mechanism is removed or modified." . - -:CWE-749 a owl:Class ; - rdfs:label "Exposed Dangerous Method or Function" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-749" ; - :definition "The product provides an Applications Programming Interface (API) or similar interface for interaction with external actors, but the interface includes a dangerous method or function that is not properly restricted." . - -:CWE-754 a owl:Class ; - rdfs:label "Improper Check for Unusual or Exceptional Conditions" ; - rdfs:subClassOf :CWE-703 ; - :cwe-id "CWE-754" ; - :definition "The product does not check or incorrectly checks for unusual or exceptional conditions that are not expected to occur frequently during day to day operation of the product." . - -:CWE-755 a owl:Class ; - rdfs:label "Improper Handling of Exceptional Conditions" ; - rdfs:subClassOf :CWE-703 ; - :cwe-id "CWE-755" ; - :definition "The product does not handle or incorrectly handles an exceptional condition." . - -:CWE-756 a owl:Class ; - rdfs:label "Missing Custom Error Page" ; - rdfs:subClassOf :CWE-755 ; - :cwe-id "CWE-756" ; - :definition "The product does not return custom error pages to the user, possibly exposing sensitive information." . - -:CWE-757 a owl:Class ; - rdfs:label "Selection of Less-Secure Algorithm During Negotiation ('Algorithm Downgrade')" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-757" ; - :definition "A protocol or its implementation supports interaction between multiple actors and allows those actors to negotiate which algorithm should be used as a protection mechanism such as encryption or authentication, but it does not select the strongest algorithm that is available to both parties." . - -:CWE-758 a owl:Class ; - rdfs:label "Reliance on Undefined, Unspecified, or Implementation-Defined Behavior" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-758" ; - :definition "The product uses an API function, data structure, or other entity in a way that relies on properties that are not always guaranteed to hold for that entity." . - -:CWE-759 a owl:Class ; - rdfs:label "Use of a One-Way Hash without a Salt" ; - rdfs:subClassOf :CWE-916 ; - :cwe-id "CWE-759" ; - :definition "The product uses a one-way cryptographic hash against an input that should not be reversible, such as a password, but the product does not also use a salt as part of the input." . - -:CWE-760 a owl:Class ; - rdfs:label "Use of a One-Way Hash with a Predictable Salt" ; - rdfs:subClassOf :CWE-916 ; - :cwe-id "CWE-760" ; - :definition "The product uses a one-way cryptographic hash against an input that should not be reversible, such as a password, but the product uses a predictable salt as part of the input." . - -:CWE-761 a owl:Class ; - rdfs:label "Free of Pointer not at Start of Buffer" ; - rdfs:subClassOf :CWE-763, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :MemoryFreeFunction ] ; - :cwe-id "CWE-761" ; - :definition "The product calls free() on a pointer to a memory resource that was allocated on the heap, but the pointer is not at the start of the buffer." . - -:CWE-762 a owl:Class ; - rdfs:label "Mismatched Memory Management Routines" ; - rdfs:subClassOf :CWE-763 ; - :cwe-id "CWE-762" ; - :definition "The product attempts to return a memory resource to the system, but it calls a release function that is not compatible with the function that was originally used to allocate that resource." . - -:CWE-763 a owl:Class ; - rdfs:label "Release of Invalid Pointer or Reference" ; - rdfs:subClassOf :CWE-404 ; - :cwe-id "CWE-763" ; - :definition "The product attempts to return a memory resource to the system, but it calls the wrong release function or calls the appropriate release function incorrectly." . - -:CWE-764 a owl:Class ; - rdfs:label "Multiple Locks of a Critical Resource" ; - rdfs:subClassOf :CWE-667, - :CWE-675 ; - :cwe-id "CWE-764" ; - :definition "The product locks a critical resource more times than intended, leading to an unexpected state in the system." . - -:CWE-765 a owl:Class ; - rdfs:label "Multiple Unlocks of a Critical Resource" ; - rdfs:subClassOf :CWE-667, - :CWE-675 ; - :cwe-id "CWE-765" ; - :definition "The product unlocks a critical resource more times than intended, leading to an unexpected state in the system." . - -:CWE-766 a owl:Class ; - rdfs:label "Critical Data Element Declared Public" ; - rdfs:subClassOf :CWE-732, - :CWE-1061 ; - :cwe-id "CWE-766" ; - :definition "The product declares a critical variable, field, or member to be public when intended security policy requires it to be private." . - -:CWE-767 a owl:Class ; - rdfs:label "Access to Critical Private Variable via Public Method" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-767" ; - :definition "The product defines a public method that reads or modifies a private variable." . - -:CWE-768 a owl:Class ; - rdfs:label "Incorrect Short Circuit Evaluation" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-768" ; - :definition "The product contains a conditional statement with multiple logical expressions in which one of the non-leading expressions may produce side effects. This may lead to an unexpected state in the program after the execution of the conditional, because short-circuiting logic may prevent the side effects from occurring." . - -:CWE-770 a owl:Class ; - rdfs:label "Allocation of Resources Without Limits or Throttling" ; - rdfs:subClassOf :CWE-400, - :CWE-665 ; - :cwe-id "CWE-770" ; - :definition "The product allocates a reusable resource or group of resources on behalf of an actor without imposing any restrictions on the size or number of resources that can be allocated, in violation of the intended security policy for that actor." . - -:CWE-771 a owl:Class ; - rdfs:label "Missing Reference to Active Allocated Resource" ; - rdfs:subClassOf :CWE-400 ; - :cwe-id "CWE-771" ; - :definition "The product does not properly maintain a reference to a resource that has been allocated, which prevents the resource from being reclaimed." . - -:CWE-772 a owl:Class ; - rdfs:label "Missing Release of Resource after Effective Lifetime" ; - rdfs:subClassOf :CWE-404 ; - :cwe-id "CWE-772" ; - :definition "The product does not release a resource after its effective lifetime has ended, i.e., after the resource is no longer needed." . - -:CWE-773 a owl:Class ; - rdfs:label "Missing Reference to Active File Descriptor or Handle" ; - rdfs:subClassOf :CWE-771 ; - :cwe-id "CWE-773" ; - :definition "The product does not properly maintain references to a file descriptor or handle, which prevents that file descriptor/handle from being reclaimed." . - -:CWE-774 a owl:Class ; - rdfs:label "Allocation of File Descriptors or Handles Without Limits or Throttling" ; - rdfs:subClassOf :CWE-770 ; - :cwe-id "CWE-774" ; - :definition "The product allocates file descriptors or handles on behalf of an actor without imposing any restrictions on how many descriptors can be allocated, in violation of the intended security policy for that actor." ; - :synonym "File Descriptor Exhaustion" . - -:CWE-775 a owl:Class ; - rdfs:label "Missing Release of File Descriptor or Handle after Effective Lifetime" ; - rdfs:subClassOf :CWE-772 ; - :cwe-id "CWE-775" ; - :definition "The product does not release a file descriptor or handle after its effective lifetime has ended, i.e., after the file descriptor/handle is no longer needed." . - -:CWE-776 a owl:Class ; - rdfs:label "Improper Restriction of Recursive Entity References in DTDs ('XML Entity Expansion')" ; - rdfs:subClassOf :CWE-405, - :CWE-674 ; - :cwe-id "CWE-776" ; - :definition "The product uses XML documents and allows their structure to be defined with a Document Type Definition (DTD), but it does not properly control the number of recursive definitions of entities." ; - :synonym "Billion Laughs Attack", - "XEE", - "XML Bomb" . - -:CWE-777 a owl:Class ; - rdfs:label "Regular Expression without Anchors" ; - rdfs:subClassOf :CWE-625 ; - :cwe-id "CWE-777" ; - :definition "The product uses a regular expression to perform neutralization, but the regular expression is not anchored and may allow malicious or malformed data to slip through." . - -:CWE-778 a owl:Class ; - rdfs:label "Insufficient Logging" ; - rdfs:subClassOf :CWE-223, - :CWE-693 ; - :cwe-id "CWE-778" ; - :definition "When a security-critical event occurs, the product either does not record the event or omits important details about the event when logging it." . - -:CWE-779 a owl:Class ; - rdfs:label "Logging of Excessive Data" ; - rdfs:subClassOf :CWE-400 ; - :cwe-id "CWE-779" ; - :definition "The product logs too much information, making log files hard to process and possibly hindering recovery efforts or forensic analysis after an attack." . - -:CWE-780 a owl:Class ; - rdfs:label "Use of RSA Algorithm without OAEP" ; - rdfs:subClassOf :CWE-327 ; - :cwe-id "CWE-780" ; - :definition "The product uses the RSA algorithm but does not incorporate Optimal Asymmetric Encryption Padding (OAEP), which might weaken the encryption." . - -:CWE-781 a owl:Class ; - rdfs:label "Improper Address Validation in IOCTL with METHOD_NEITHER I/O Control Code" ; - rdfs:subClassOf :CWE-1285 ; - :cwe-id "CWE-781" ; - :definition "The product defines an IOCTL that uses METHOD_NEITHER for I/O, but it does not validate or incorrectly validates the addresses that are provided." . - -:CWE-782 a owl:Class ; - rdfs:label "Exposed IOCTL with Insufficient Access Control" ; - rdfs:subClassOf :CWE-749 ; - :cwe-id "CWE-782" ; - :definition "The product implements an IOCTL with functionality that should be restricted, but it does not properly enforce access control for the IOCTL." . - -:CWE-783 a owl:Class ; - rdfs:label "Operator Precedence Logic Error" ; - rdfs:subClassOf :CWE-670 ; - :cwe-id "CWE-783" ; - :definition "The product uses an expression in which operator precedence causes incorrect logic to be used." . - -:CWE-784 a owl:Class ; - rdfs:label "Reliance on Cookies without Validation and Integrity Checking in a Security Decision" ; - rdfs:subClassOf :CWE-565, - :CWE-807 ; - :cwe-id "CWE-784" ; - :definition "The product uses a protection mechanism that relies on the existence or values of a cookie, but it does not properly ensure that the cookie is valid for the associated user." . - -:CWE-785 a owl:Class ; - rdfs:label "Use of Path Manipulation Function without Maximum-sized Buffer" ; - rdfs:subClassOf :CWE-120, - :CWE-676 ; - :cwe-id "CWE-785" ; - :definition "The product invokes a function for normalizing paths or file names, but it provides an output buffer that is smaller than the maximum possible size, such as PATH_MAX." . - -:CWE-786 a owl:Class ; - rdfs:label "Access of Memory Location Before Start of Buffer" ; - rdfs:subClassOf :CWE-119 ; - :cwe-id "CWE-786" ; - :definition "The product reads or writes to a buffer using an index or pointer that references a memory location prior to the beginning of the buffer." . - -:CWE-787 a owl:Class ; - rdfs:label "Out-of-bounds Write" ; - rdfs:subClassOf :CWE-119, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :RawMemoryAccessFunction ] ; - :cwe-id "CWE-787" ; - :definition "The product writes data past the end, or before the beginning, of the intended buffer." ; - :synonym "Memory Corruption" . - -:CWE-788 a owl:Class ; - rdfs:label "Access of Memory Location After End of Buffer" ; - rdfs:subClassOf :CWE-119 ; - :cwe-id "CWE-788" ; - :definition "The product reads or writes to a buffer using an index or pointer that references a memory location after the end of the buffer." . - -:CWE-789 a owl:Class ; - rdfs:label "Memory Allocation with Excessive Size Value" ; - rdfs:subClassOf :CWE-770, - :CWE-1284 ; - :cwe-id "CWE-789" ; - :definition "The product allocates memory based on an untrusted, large size value, but it does not ensure that the size is within expected limits, allowing arbitrary amounts of memory to be allocated." ; - :synonym "Stack Exhaustion" . - -:CWE-790 a owl:Class ; - rdfs:label "Improper Filtering of Special Elements" ; - rdfs:subClassOf :CWE-138 ; - :cwe-id "CWE-790" ; - :definition "The product receives data from an upstream component, but does not filter or incorrectly filters special elements before sending it to a downstream component." . - -:CWE-791 a owl:Class ; - rdfs:label "Incomplete Filtering of Special Elements" ; - rdfs:subClassOf :CWE-790 ; - :cwe-id "CWE-791" ; - :definition "The product receives data from an upstream component, but does not completely filter special elements before sending it to a downstream component." . - -:CWE-792 a owl:Class ; - rdfs:label "Incomplete Filtering of One or More Instances of Special Elements" ; - rdfs:subClassOf :CWE-791 ; - :cwe-id "CWE-792" ; - :definition "The product receives data from an upstream component, but does not completely filter one or more instances of special elements before sending it to a downstream component." . - -:CWE-793 a owl:Class ; - rdfs:label "Only Filtering One Instance of a Special Element" ; - rdfs:subClassOf :CWE-792 ; - :cwe-id "CWE-793" ; - :definition "The product receives data from an upstream component, but only filters a single instance of a special element before sending it to a downstream component." . - -:CWE-794 a owl:Class ; - rdfs:label "Incomplete Filtering of Multiple Instances of Special Elements" ; - rdfs:subClassOf :CWE-792 ; - :cwe-id "CWE-794" ; - :definition "The product receives data from an upstream component, but does not filter all instances of a special element before sending it to a downstream component." . - -:CWE-795 a owl:Class ; - rdfs:label "Only Filtering Special Elements at a Specified Location" ; - rdfs:subClassOf :CWE-791 ; - :cwe-id "CWE-795" ; - :definition "The product receives data from an upstream component, but only accounts for special elements at a specified location, thereby missing remaining special elements that may exist before sending it to a downstream component." . - -:CWE-796 a owl:Class ; - rdfs:label "Only Filtering Special Elements Relative to a Marker" ; - rdfs:subClassOf :CWE-795 ; - :cwe-id "CWE-796" ; - :definition "The product receives data from an upstream component, but only accounts for special elements positioned relative to a marker (e.g. \"at the beginning/end of a string; the second argument\"), thereby missing remaining special elements that may exist before sending it to a downstream component." . - -:CWE-797 a owl:Class ; - rdfs:label "Only Filtering Special Elements at an Absolute Position" ; - rdfs:subClassOf :CWE-795 ; - :cwe-id "CWE-797" ; - :definition "The product receives data from an upstream component, but only accounts for special elements at an absolute position (e.g. \"byte number 10\"), thereby missing remaining special elements that may exist before sending it to a downstream component." . - -:CWE-798 a owl:Class ; - rdfs:label "Use of Hard-coded Credentials" ; - rdfs:subClassOf :CWE-344, - :CWE-671, - :CWE-1391, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :AuthenticationFunction ] ; - :cwe-id "CWE-798" ; - :definition "The product contains hard-coded credentials, such as a password or cryptographic key." . - -:CWE-799 a owl:Class ; - rdfs:label "Improper Control of Interaction Frequency" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-799" ; - :definition "The product does not properly limit the number or frequency of interactions that it has with an actor, such as the number of incoming requests." ; - :synonym "Brute force", - "Insufficient anti-automation" . - -:CWE-804 a owl:Class ; - rdfs:label "Guessable CAPTCHA" ; - rdfs:subClassOf :CWE-863, - :CWE-1390 ; - :cwe-id "CWE-804" ; - :definition "The product uses a CAPTCHA challenge, but the challenge can be guessed or automatically recognized by a non-human actor." . - -:CWE-805 a owl:Class ; - rdfs:label "Buffer Access with Incorrect Length Value" ; - rdfs:subClassOf :CWE-119 ; - :cwe-id "CWE-805" ; - :definition "The product uses a sequential operation to read or write a buffer, but it uses an incorrect length value that causes it to access memory that is outside of the bounds of the buffer." . - -:CWE-806 a owl:Class ; - rdfs:label "Buffer Access Using Size of Source Buffer" ; - rdfs:subClassOf :CWE-805 ; - :cwe-id "CWE-806" ; - :definition "The product uses the size of a source buffer when reading from or writing to a destination buffer, which may cause it to access memory that is outside of the bounds of the buffer." . - -:CWE-807 a owl:Class ; - rdfs:label "Reliance on Untrusted Inputs in a Security Decision" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-807" ; - :definition "The product uses a protection mechanism that relies on the existence or values of an input, but the input can be modified by an untrusted actor in a way that bypasses the protection mechanism." . - -:CWE-820 a owl:Class ; - rdfs:label "Missing Synchronization" ; - rdfs:subClassOf :CWE-662 ; - :cwe-id "CWE-820" ; - :definition "The product utilizes a shared resource in a concurrent manner but does not attempt to synchronize access to the resource." . - -:CWE-821 a owl:Class ; - rdfs:label "Incorrect Synchronization" ; - rdfs:subClassOf :CWE-662 ; - :cwe-id "CWE-821" ; - :definition "The product utilizes a shared resource in a concurrent manner, but it does not correctly synchronize access to the resource." . - -:CWE-822 a owl:Class ; - rdfs:label "Untrusted Pointer Dereference" ; - rdfs:subClassOf :CWE-119, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :PointerDereferencingFunction ] ; - :cwe-id "CWE-822" ; - :definition "The product obtains a value from an untrusted source, converts this value to a pointer, and dereferences the resulting pointer." . - -:CWE-823 a owl:Class ; - rdfs:label "Use of Out-of-range Pointer Offset" ; - rdfs:subClassOf :CWE-119 ; - :cwe-id "CWE-823" ; - :definition "The product performs pointer arithmetic on a valid pointer, but it uses an offset that can point outside of the intended range of valid memory locations for the resulting pointer." ; - :synonym "Untrusted pointer offset" . - -:CWE-824 a owl:Class ; - rdfs:label "Access of Uninitialized Pointer" ; - rdfs:subClassOf :CWE-119, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :PointerDereferencingFunction ] ; - :cwe-id "CWE-824" ; - :definition "The product accesses or uses a pointer that has not been initialized." . - -:CWE-825 a owl:Class ; - rdfs:label "Expired Pointer Dereference" ; - rdfs:subClassOf :CWE-119, - :CWE-672, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-825" ; - :definition "The product dereferences a pointer that contains a location for memory that was previously valid, but is no longer valid." ; - :synonym "Dangling pointer" . - -:CWE-826 a owl:Class ; - rdfs:label "Premature Release of Resource During Expected Lifetime" ; - rdfs:subClassOf :CWE-666 ; - :cwe-id "CWE-826" ; - :definition "The product releases a resource that is still intended to be used by itself or another actor." . - -:CWE-827 a owl:Class ; - rdfs:label "Improper Control of Document Type Definition" ; - rdfs:subClassOf :CWE-706, - :CWE-829 ; - :cwe-id "CWE-827" ; - :definition "The product does not restrict a reference to a Document Type Definition (DTD) to the intended control sphere. This might allow attackers to reference arbitrary DTDs, possibly causing the product to expose files, consume excessive system resources, or execute arbitrary http requests on behalf of the attacker." . - -:CWE-828 a owl:Class ; - rdfs:label "Signal Handler with Functionality that is not Asynchronous-Safe" ; - rdfs:subClassOf :CWE-364 ; - :cwe-id "CWE-828" ; - :definition "The product defines a signal handler that contains code sequences that are not asynchronous-safe, i.e., the functionality is not reentrant, or it can be interrupted." . - -:CWE-829 a owl:Class ; - rdfs:label "Inclusion of Functionality from Untrusted Control Sphere" ; - rdfs:subClassOf :CWE-669 ; - :cwe-id "CWE-829" ; - :definition "The product imports, requires, or includes executable functionality (such as a library) from a source that is outside of the intended control sphere." . - -:CWE-830 a owl:Class ; - rdfs:label "Inclusion of Web Functionality from an Untrusted Source" ; - rdfs:subClassOf :CWE-829 ; - :cwe-id "CWE-830" ; - :definition "The product includes web functionality (such as a web widget) from another domain, which causes it to operate within the domain of the product, potentially granting total access and control of the product to the untrusted source." . - -:CWE-831 a owl:Class ; - rdfs:label "Signal Handler Function Associated with Multiple Signals" ; - rdfs:subClassOf :CWE-364 ; - :cwe-id "CWE-831" ; - :definition "The product defines a function that is used as a handler for more than one signal." . - -:CWE-832 a owl:Class ; - rdfs:label "Unlock of a Resource that is not Locked" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-832" ; - :definition "The product attempts to unlock a resource that is not locked." . - -:CWE-833 a owl:Class ; - rdfs:label "Deadlock" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-833" ; - :definition "The product contains multiple threads or executable segments that are waiting for each other to release a necessary lock, resulting in deadlock." . - -:CWE-834 a owl:Class ; - rdfs:label "Excessive Iteration" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-834" ; - :definition "The product performs an iteration or loop without sufficiently limiting the number of times that the loop is executed." . - -:CWE-835 a owl:Class ; - rdfs:label "Loop with Unreachable Exit Condition ('Infinite Loop')" ; - rdfs:subClassOf :CWE-834 ; - :cwe-id "CWE-835" ; - :definition "The product contains an iteration or loop with an exit condition that cannot be reached, i.e., an infinite loop." . - -:CWE-836 a owl:Class ; - rdfs:label "Use of Password Hash Instead of Password for Authentication" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-836" ; - :definition "The product records password hashes in a data store, receives a hash of a password from a client, and compares the supplied hash to the hash obtained from the data store." . - -:CWE-837 a owl:Class ; - rdfs:label "Improper Enforcement of a Single, Unique Action" ; - rdfs:subClassOf :CWE-799 ; - :cwe-id "CWE-837" ; - :definition "The product requires that an actor should only be able to perform an action once, or to have only one unique action, but the product does not enforce or improperly enforces this restriction." . - -:CWE-838 a owl:Class ; - rdfs:label "Inappropriate Encoding for Output Context" ; - rdfs:subClassOf :CWE-116 ; - :cwe-id "CWE-838" ; - :definition "The product uses or specifies an encoding when generating output to a downstream component, but the specified encoding is not the same as the encoding that is expected by the downstream component." . - -:CWE-839 a owl:Class ; - rdfs:label "Numeric Range Comparison Without Minimum Check" ; - rdfs:subClassOf :CWE-1023 ; - :cwe-id "CWE-839" ; - :definition "The product checks a value to ensure that it is less than or equal to a maximum, but it does not also verify that the value is greater than or equal to the minimum." ; - :synonym "Signed comparison" . - -:CWE-841 a owl:Class ; - rdfs:label "Improper Enforcement of Behavioral Workflow" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-841" ; - :definition "The product supports a session in which more than one behavior must be performed by an actor, but it does not properly ensure that the actor performs the behaviors in the required sequence." . - -:CWE-842 a owl:Class ; - rdfs:label "Placement of User into Incorrect Group" ; - rdfs:subClassOf :CWE-286 ; - :cwe-id "CWE-842" ; - :definition "The product or the administrator places a user into an incorrect group." . - -:CWE-843 a owl:Class ; - rdfs:label "Access of Resource Using Incompatible Type ('Type Confusion')" ; - rdfs:subClassOf :CWE-704 ; - :cwe-id "CWE-843" ; - :definition "The product allocates or initializes a resource such as a pointer, object, or variable using one type, but it later accesses that resource using a type that is incompatible with the original type." ; - :synonym "Object Type Confusion" . - -:CWE-862 a owl:Class ; - rdfs:label "Missing Authorization" ; - rdfs:subClassOf :CWE-285 ; - rdfs:comment "Broad and could apply to all resource accesses." ; - :cwe-id "CWE-862" ; - :definition "The product does not perform an authorization check when an actor attempts to access a resource or perform an action." ; - :synonym "AuthZ" . - -:CWE-863 a owl:Class ; - rdfs:label "Incorrect Authorization" ; - rdfs:subClassOf :CWE-285 ; - :cwe-id "CWE-863" ; - :definition "The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check." ; - :synonym "AuthZ" . - -:CWE-908 a owl:Class ; - rdfs:label "Use of Uninitialized Resource" ; - rdfs:subClassOf :CWE-665 ; - :cwe-id "CWE-908" ; - :definition "The product uses or accesses a resource that has not been initialized." . - -:CWE-909 a owl:Class ; - rdfs:label "Missing Initialization of Resource" ; - rdfs:subClassOf :CWE-665 ; - :cwe-id "CWE-909" ; - :definition "The product does not initialize a critical resource." . - -:CWE-910 a owl:Class ; - rdfs:label "Use of Expired File Descriptor" ; - rdfs:subClassOf :CWE-672 ; - :cwe-id "CWE-910" ; - :definition "The product uses or accesses a file descriptor after it has been closed." ; - :synonym "Stale file descriptor" . - -:CWE-911 a owl:Class ; - rdfs:label "Improper Update of Reference Count" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-911" ; - :definition "The product uses a reference count to manage a resource, but it does not update or incorrectly updates the reference count." . - -:CWE-912 a owl:Class ; - rdfs:label "Hidden Functionality" ; - rdfs:subClassOf :CWE-684 ; - :cwe-id "CWE-912" ; - :definition "The product contains functionality that is not documented, not part of the specification, and not accessible through an interface or command sequence that is obvious to the product's users or administrators." . - -:CWE-913 a owl:Class ; - rdfs:label "Improper Control of Dynamically-Managed Code Resources" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-913" ; - :definition "The product does not properly restrict reading from or writing to dynamically-managed code resources such as variables, objects, classes, attributes, functions, or executable instructions or statements." . - -:CWE-914 a owl:Class ; - rdfs:label "Improper Control of Dynamically-Identified Variables" ; - rdfs:subClassOf :CWE-99, - :CWE-913 ; - :cwe-id "CWE-914" ; - :definition "The product does not properly restrict reading from or writing to dynamically-identified variables." . - -:CWE-915 a owl:Class ; - rdfs:label "Improperly Controlled Modification of Dynamically-Determined Object Attributes" ; - rdfs:subClassOf :CWE-913 ; - :cwe-id "CWE-915" ; - :definition "The product receives input from an upstream component that specifies multiple attributes, properties, or fields that are to be initialized or updated in an object, but it does not properly control which attributes can be modified." ; - :synonym "AutoBinding", - "Mass Assignment", - "PHP Object Injection" . - -:CWE-916 a owl:Class ; - rdfs:label "Use of Password Hash With Insufficient Computational Effort" ; - rdfs:subClassOf :CWE-327, - :CWE-328 ; - :cwe-id "CWE-916" ; - :definition "The product generates a hash for a password, but it uses a scheme that does not provide a sufficient level of computational effort that would make password cracking attacks infeasible or expensive." . - -:CWE-917 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements used in an Expression Language Statement ('Expression Language Injection')" ; - rdfs:subClassOf :CWE-77 ; - :cwe-id "CWE-917" ; - :definition "The product constructs all or part of an expression language (EL) statement in a framework such as a Java Server Page (JSP) using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended EL statement before it is executed." ; - :synonym "EL Injection" . - -:CWE-918 a owl:Class ; - rdfs:label "Server-Side Request Forgery (SSRF)" ; - rdfs:subClassOf :CWE-441, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserInputFunction ] ; - :cwe-id "CWE-918" ; - :definition "The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination." ; - :synonym "SSRF", - "XSPA" . - -:CWE-920 a owl:Class ; - rdfs:label "Improper Restriction of Power Consumption" ; - rdfs:subClassOf :CWE-400 ; - :cwe-id "CWE-920" ; - :definition "The product operates in an environment in which power is a limited resource that cannot be automatically replenished, but the product does not properly restrict the amount of power that its operation consumes." . - -:CWE-921 a owl:Class ; - rdfs:label "Storage of Sensitive Data in a Mechanism without Access Control" ; - rdfs:subClassOf :CWE-922 ; - :cwe-id "CWE-921" ; - :definition "The product stores sensitive information in a file system or device that does not have built-in access control." . - -:CWE-922 a owl:Class ; - rdfs:label "Insecure Storage of Sensitive Information" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-922" ; - :definition "The product stores sensitive information without properly limiting read or write access by unauthorized actors." . - -:CWE-923 a owl:Class ; - rdfs:label "Improper Restriction of Communication Channel to Intended Endpoints" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-923" ; - :definition "The product establishes a communication channel to (or from) an endpoint for privileged or protected operations, but it does not properly ensure that it is communicating with the correct endpoint." . - -:CWE-924 a owl:Class ; - rdfs:label "Improper Enforcement of Message Integrity During Transmission in a Communication Channel" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-924" ; - :definition "The product establishes a communication channel with an endpoint and receives a message from that endpoint, but it does not sufficiently ensure that the message was not modified during transmission." . - -:CWE-925 a owl:Class ; - rdfs:label "Improper Verification of Intent by Broadcast Receiver" ; - rdfs:subClassOf :CWE-940 ; - :cwe-id "CWE-925" ; - :definition "The Android application uses a Broadcast Receiver that receives an Intent but does not properly verify that the Intent came from an authorized source." ; - :synonym "Intent Spoofing" . - -:CWE-926 a owl:Class ; - rdfs:label "Improper Export of Android Application Components" ; - rdfs:subClassOf :CWE-285 ; - :cwe-id "CWE-926" ; - :definition "The Android application exports a component for use by other applications, but does not properly restrict which applications can launch the component or access the data it contains." . - -:CWE-927 a owl:Class ; - rdfs:label "Use of Implicit Intent for Sensitive Communication" ; - rdfs:subClassOf :CWE-285, - :CWE-668 ; - :cwe-id "CWE-927" ; - :definition "The Android application uses an implicit intent for transmitting sensitive data to other applications." . - -:CWE-939 a owl:Class ; - rdfs:label "Improper Authorization in Handler for Custom URL Scheme" ; - rdfs:subClassOf :CWE-862 ; - :cwe-id "CWE-939" ; - :definition "The product uses a handler for a custom URL scheme, but it does not properly restrict which actors can invoke the handler using the scheme." . - -:CWE-940 a owl:Class ; - rdfs:label "Improper Verification of Source of a Communication Channel" ; - rdfs:subClassOf :CWE-346, - :CWE-923 ; - :cwe-id "CWE-940" ; - :definition "The product establishes a communication channel to handle an incoming request that has been initiated by an actor, but it does not properly verify that the request is coming from the expected origin." . - -:CWE-941 a owl:Class ; - rdfs:label "Incorrectly Specified Destination in a Communication Channel" ; - rdfs:subClassOf :CWE-923 ; - :cwe-id "CWE-941" ; - :definition "The product creates a communication channel to initiate an outgoing request to an actor, but it does not correctly specify the intended destination for that actor." . - -:CWE-942 a owl:Class ; - rdfs:label "Permissive Cross-domain Policy with Untrusted Domains" ; - rdfs:subClassOf :CWE-183, - :CWE-863, - :CWE-923 ; - :cwe-id "CWE-942" ; - :definition "The product uses a cross-domain policy file that includes domains that should not be trusted." . - -:CWE-943 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements in Data Query Logic" ; - rdfs:subClassOf :CWE-74 ; - :cwe-id "CWE-943" ; - :definition "The product generates a query intended to access or manipulate data in a data store such as a database, but it does not neutralize or incorrectly neutralizes special elements that can modify the intended logic of the query." ; - :synonym "NoSQL Injection, NoSQLi" . - -:CWE-1004 a owl:Class ; - rdfs:label "Sensitive Cookie Without 'HttpOnly' Flag" ; - rdfs:subClassOf :CWE-732 ; - :cwe-id "CWE-1004" ; - :definition "The product uses a cookie to store sensitive information, but the cookie is not marked with the HttpOnly flag." . - -:CWE-1007 a owl:Class ; - rdfs:label "Insufficient Visual Distinction of Homoglyphs Presented to User" ; - rdfs:subClassOf :CWE-451 ; - :cwe-id "CWE-1007" ; - :definition "The product displays information or identifiers to a user, but the display mechanism does not make it easy for the user to distinguish between visually similar or identical glyphs (homoglyphs), which may cause the user to misinterpret a glyph and perform an unintended, insecure action." ; - :synonym "Homograph Attack" . - -:CWE-1021 a owl:Class ; - rdfs:label "Improper Restriction of Rendered UI Layers or Frames" ; - rdfs:subClassOf :CWE-441, - :CWE-451 ; - :cwe-id "CWE-1021" ; - :definition "The web application does not restrict or incorrectly restricts frame objects or UI layers that belong to another application or domain, which can lead to user confusion about which interface the user is interacting with." ; - :synonym "Clickjacking", - "Tapjacking", - "UI Redress Attack" . - -:CWE-1022 a owl:Class ; - rdfs:label "Use of Web Link to Untrusted Target with window.opener Access" ; - rdfs:subClassOf :CWE-266 ; - :cwe-id "CWE-1022" ; - :definition "The web application produces links to untrusted external sites outside of its sphere of control, but it does not properly prevent the external site from modifying security-critical properties of the window.opener object, such as the location property." ; - :synonym "tabnabbing" . - -:CWE-1023 a owl:Class ; - rdfs:label "Incomplete Comparison with Missing Factors" ; - rdfs:subClassOf :CWE-697 ; - :cwe-id "CWE-1023" ; - :definition "The product performs a comparison between entities that must consider multiple factors or characteristics of each entity, but the comparison does not include one or more of these factors." . - -:CWE-1024 a owl:Class ; - rdfs:label "Comparison of Incompatible Types" ; - rdfs:subClassOf :CWE-697 ; - :cwe-id "CWE-1024" ; - :definition "The product performs a comparison between two entities, but the entities are of different, incompatible types that cannot be guaranteed to provide correct results when they are directly compared." . - -:CWE-1025 a owl:Class ; - rdfs:label "Comparison Using Wrong Factors" ; - rdfs:subClassOf :CWE-697 ; - :cwe-id "CWE-1025" ; - :definition "The code performs a comparison between two entities, but the comparison examines the wrong factors or characteristics of the entities, which can lead to incorrect results and resultant weaknesses." . - -:CWE-1037 a owl:Class ; - rdfs:label "Processor Optimization Removal or Modification of Security-critical Code" ; - rdfs:subClassOf :CWE-1038 ; - :cwe-id "CWE-1037" ; - :definition "The developer builds a security-critical protection mechanism into the software, but the processor optimizes the execution of the program such that the mechanism is removed or modified." . - -:CWE-1038 a owl:Class ; - rdfs:label "Insecure Automated Optimizations" ; - rdfs:subClassOf :CWE-435, - :CWE-758 ; - :cwe-id "CWE-1038" ; - :definition "The product uses a mechanism that automatically optimizes code, e.g. to improve a characteristic such as performance, but the optimizations can have an unintended side effect that might violate an intended security assumption." . - -:CWE-1039 a owl:Class ; - rdfs:label "Automated Recognition Mechanism with Inadequate Detection or Handling of Adversarial Input Perturbations", - "Inadequate Detection or Handling of Adversarial Input Perturbations in Automated Recognition Mechanism" ; - rdfs:subClassOf :CWE-693, - :CWE-697 ; - :cwe-id "CWE-1039" ; - :definition "The product uses an automated mechanism such as machine learning to recognize complex data inputs (e.g. image or audio) as a particular concept or category, but it does not properly detect or handle inputs that have been modified or constructed in a way that causes the mechanism to detect a different, incorrect concept." . - -:CWE-1041 a owl:Class ; - rdfs:label "Use of Redundant Code" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1041" ; - :definition "The product has multiple functions, methods, procedures, macros, etc. that contain the same code." . - -:CWE-1042 a owl:Class ; - rdfs:label "Static Member Data Element outside of a Singleton Class Element" ; - rdfs:subClassOf :CWE-1176 ; - :cwe-id "CWE-1042" ; - :definition "The code contains a member element that is declared as static (but not final), in which its parent class element is not a singleton class - that is, a class element that can be used only once in the 'to' association of a Create action." . - -:CWE-1043 a owl:Class ; - rdfs:label "Data Element Aggregating an Excessively Large Number of Non-Primitive Elements" ; - rdfs:subClassOf :CWE-1093 ; - :cwe-id "CWE-1043" ; - :definition "The product uses a data element that has an excessively large number of sub-elements with non-primitive data types such as structures or aggregated objects." . - -:CWE-1044 a owl:Class ; - rdfs:label "Architecture with Number of Horizontal Layers Outside of Expected Range" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1044" ; - :definition "The product's architecture contains too many - or too few - horizontal layers." . - -:CWE-1045 a owl:Class ; - rdfs:label "Parent Class with a Virtual Destructor and a Child Class without a Virtual Destructor" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1045" ; - :definition "A parent class has a virtual destructor method, but the parent has a child class that does not have a virtual destructor." . - -:CWE-1046 a owl:Class ; - rdfs:label "Creation of Immutable Text Using String Concatenation" ; - rdfs:subClassOf :CWE-1176 ; - :cwe-id "CWE-1046" ; - :definition "The product creates an immutable text string using string concatenation operations." . - -:CWE-1047 a owl:Class ; - rdfs:label "Modules with Circular Dependencies" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1047" ; - :definition "The product contains modules in which one module has references that cycle back to itself, i.e., there are circular dependencies." . - -:CWE-1048 a owl:Class ; - rdfs:label "Invokable Control Element with Large Number of Outward Calls" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1048" ; - :definition "The code contains callable control elements that contain an excessively large number of references to other application objects external to the context of the callable, i.e. a Fan-Out value that is excessively large." . - -:CWE-1049 a owl:Class ; - rdfs:label "Excessive Data Query Operations in a Large Data Table" ; - rdfs:subClassOf :CWE-1176 ; - :cwe-id "CWE-1049" ; - :definition "The product performs a data query with a large number of joins and sub-queries on a large data table." . - -:CWE-1050 a owl:Class ; - rdfs:label "Excessive Platform Resource Consumption within a Loop" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1050" ; - :definition "The product has a loop body or loop condition that contains a control element that directly or indirectly consumes platform resources, e.g. messaging, sessions, locks, or file descriptors." . - -:CWE-1051 a owl:Class ; - rdfs:label "Initialization with Hard-Coded Network Resource Configuration Data" ; - rdfs:subClassOf :CWE-665, - :CWE-1419 ; - :cwe-id "CWE-1051" ; - :definition "The product initializes data using hard-coded values that act as network resource identifiers." . - -:CWE-1052 a owl:Class ; - rdfs:label "Excessive Use of Hard-Coded Literals in Initialization" ; - rdfs:subClassOf :CWE-665, - :CWE-1419 ; - :cwe-id "CWE-1052" ; - :definition "The product initializes a data element using a hard-coded literal that is not a simple integer or static constant element." . - -:CWE-1053 a owl:Class ; - rdfs:label "Missing Documentation for Design" ; - rdfs:subClassOf :CWE-1059 ; - :cwe-id "CWE-1053" ; - :definition "The product does not have documentation that represents how it is designed." . - -:CWE-1054 a owl:Class ; - rdfs:label "Invocation of a Control Element at an Unnecessarily Deep Horizontal Layer" ; - rdfs:subClassOf :CWE-1061 ; - :cwe-id "CWE-1054" ; - :definition "The code at one architectural layer invokes code that resides at a deeper layer than the adjacent layer, i.e., the invocation skips at least one layer, and the invoked code is not part of a vertical utility layer that can be referenced from any horizontal layer." . - -:CWE-1055 a owl:Class ; - rdfs:label "Multiple Inheritance from Concrete Classes" ; - rdfs:subClassOf :CWE-1093 ; - :cwe-id "CWE-1055" ; - :definition "The product contains a class with inheritance from more than one concrete class." . - -:CWE-1056 a owl:Class ; - rdfs:label "Invokable Control Element with Variadic Parameters" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1056" ; - :definition "A named-callable or method control element has a signature that supports a variable (variadic) number of parameters or arguments." . - -:CWE-1057 a owl:Class ; - rdfs:label "Data Access Operations Outside of Expected Data Manager Component" ; - rdfs:subClassOf :CWE-1061 ; - :cwe-id "CWE-1057" ; - :definition "The product uses a dedicated, central data manager component as required by design, but it contains code that performs data-access operations that do not use this data manager." . - -:CWE-1058 a owl:Class ; - rdfs:label "Invokable Control Element in Multi-Thread Context with non-Final Static Storable or Member Element" ; - rdfs:subClassOf :CWE-662 ; - :cwe-id "CWE-1058" ; - :definition "The code contains a function or method that operates in a multi-threaded environment but owns an unsafe non-final static storable or member data element." . - -:CWE-1059 a owl:Class ; - rdfs:label "Insufficient Technical Documentation" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1059" ; - :definition "The product does not contain sufficient technical or engineering documentation (whether on paper or in electronic form) that contains descriptions of all the relevant software/hardware elements of the product, such as its usage, structure, architectural components, interfaces, design, implementation, configuration, operation, etc." . - -:CWE-1060 a owl:Class ; - rdfs:label "Excessive Number of Inefficient Server-Side Data Accesses" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1060" ; - :definition "The product performs too many data queries without using efficient data processing functionality such as stored procedures." . - -:CWE-1061 a owl:Class ; - rdfs:label "Insufficient Encapsulation" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1061" ; - :definition "The product does not sufficiently hide the internal representation and implementation details of data or methods, which might allow external components or modules to modify data unexpectedly, invoke unexpected functionality, or introduce dependencies that the programmer did not intend." . - -:CWE-1062 a owl:Class ; - rdfs:label "Parent Class with References to Child Class" ; - rdfs:subClassOf :CWE-1061 ; - :cwe-id "CWE-1062" ; - :definition "The code has a parent class that contains references to a child class, its methods, or its members." . - -:CWE-1063 a owl:Class ; - rdfs:label "Creation of Class Instance within a Static Code Block" ; - rdfs:subClassOf :CWE-1176 ; - :cwe-id "CWE-1063" ; - :definition "A static code block creates an instance of a class." . - -:CWE-1064 a owl:Class ; - rdfs:label "Invokable Control Element with Signature Containing an Excessive Number of Parameters" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1064" ; - :definition "The product contains a function, subroutine, or method whose signature has an unnecessarily large number of parameters/arguments." . - -:CWE-1065 a owl:Class ; - rdfs:label "Runtime Resource Management Control Element in a Component Built to Run on Application Servers" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1065" ; - :definition "The product uses deployed components from application servers, but it also uses low-level functions/methods for management of resources, instead of the API provided by the application server." . - -:CWE-1066 a owl:Class ; - rdfs:label "Missing Serialization Control Element" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1066" ; - :definition "The product contains a serializable data element that does not have an associated serialization method." . - -:CWE-1067 a owl:Class ; - rdfs:label "Excessive Execution of Sequential Searches of Data Resource" ; - rdfs:subClassOf :CWE-1176 ; - :cwe-id "CWE-1067" ; - :definition "The product contains a data query against an SQL table or view that is configured in a way that does not utilize an index and may cause sequential searches to be performed." . - -:CWE-1068 a owl:Class ; - rdfs:label "Inconsistency Between Implementation and Documented Design" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1068" ; - :definition "The implementation of the product is not consistent with the design as described within the relevant documentation." . - -:CWE-1069 a owl:Class ; - rdfs:label "Empty Exception Block" ; - rdfs:subClassOf :CWE-1071 ; - :cwe-id "CWE-1069" ; - :definition "An invokable code block contains an exception handling block that does not contain any code, i.e. is empty." . - -:CWE-1070 a owl:Class ; - rdfs:label "Serializable Data Element Containing non-Serializable Item Elements" ; - rdfs:subClassOf :CWE-710, - :CWE-1076 ; - :cwe-id "CWE-1070" ; - :definition "The product contains a serializable, storable data element such as a field or member, but the data element contains member elements that are not serializable." . - -:CWE-1071 a owl:Class ; - rdfs:label "Empty Code Block" ; - rdfs:subClassOf :CWE-1164 ; - :cwe-id "CWE-1071" ; - :definition "The source code contains a block that does not contain any code, i.e., the block is empty." . - -:CWE-1072 a owl:Class ; - rdfs:label "Data Resource Access without Use of Connection Pooling" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1072" ; - :definition "The product accesses a data resource through a database without using a connection pooling capability." . - -:CWE-1073 a owl:Class ; - rdfs:label "Non-SQL Invokable Control Element with Excessive Number of Data Resource Accesses" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1073" ; - :definition "The product contains a client with a function or method that contains a large number of data accesses/queries that are sent through a data manager, i.e., does not use efficient database capabilities." . - -:CWE-1074 a owl:Class ; - rdfs:label "Class with Excessively Deep Inheritance" ; - rdfs:subClassOf :CWE-1093 ; - :cwe-id "CWE-1074" ; - :definition "A class has an inheritance level that is too high, i.e., it has a large number of parent classes." . - -:CWE-1075 a owl:Class ; - rdfs:label "Unconditional Control Flow Transfer outside of Switch Block" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1075" ; - :definition "The product performs unconditional control transfer (such as a \"goto\") in code outside of a branching structure such as a switch block." . - -:CWE-1076 a owl:Class ; - rdfs:label "Insufficient Adherence to Expected Conventions" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1076" ; - :definition "The product's architecture, source code, design, documentation, or other artifact does not follow required conventions." . - -:CWE-1077 a owl:Class ; - rdfs:label "Floating Point Comparison with Incorrect Operator" ; - rdfs:subClassOf :CWE-697 ; - :cwe-id "CWE-1077" ; - :definition "The code performs a comparison such as an equality test between two float (floating point) values, but it uses comparison operators that do not account for the possibility of loss of precision." . - -:CWE-1078 a owl:Class ; - rdfs:label "Inappropriate Source Code Style or Formatting" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1078" ; - :definition "The source code does not follow desired style or formatting for indentation, white space, comments, etc." . - -:CWE-1079 a owl:Class ; - rdfs:label "Parent Class without Virtual Destructor Method" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1079" ; - :definition "A parent class contains one or more child classes, but the parent class does not have a virtual destructor method." . - -:CWE-1080 a owl:Class ; - rdfs:label "Source Code File with Excessive Number of Lines of Code" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1080" ; - :definition "A source code file has too many lines of code." . - -:CWE-1082 a owl:Class ; - rdfs:label "Class Instance Self Destruction Control Element" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1082" ; - :definition "The code contains a class instance that calls the method or function to delete or destroy itself." . - -:CWE-1083 a owl:Class ; - rdfs:label "Data Access from Outside Expected Data Manager Component" ; - rdfs:subClassOf :CWE-1061 ; - :cwe-id "CWE-1083" ; - :definition "The product is intended to manage data access through a particular data manager component such as a relational or non-SQL database, but it contains code that performs data access operations without using that component." . - -:CWE-1084 a owl:Class ; - rdfs:label "Invokable Control Element with Excessive File or Data Access Operations" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1084" ; - :definition "A function or method contains too many operations that utilize a data manager or file resource." . - -:CWE-1085 a owl:Class ; - rdfs:label "Invokable Control Element with Excessive Volume of Commented-out Code" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1085" ; - :definition "A function, method, procedure, etc. contains an excessive amount of code that has been commented out within its body." . - -:CWE-1086 a owl:Class ; - rdfs:label "Class with Excessive Number of Child Classes" ; - rdfs:subClassOf :CWE-1093 ; - :cwe-id "CWE-1086" ; - :definition "A class contains an unnecessarily large number of children." . - -:CWE-1087 a owl:Class ; - rdfs:label "Class with Virtual Method without a Virtual Destructor" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1087" ; - :definition "A class contains a virtual method, but the method does not have an associated virtual destructor." . - -:CWE-1088 a owl:Class ; - rdfs:label "Synchronous Access of Remote Resource without Timeout" ; - rdfs:subClassOf :CWE-821 ; - :cwe-id "CWE-1088" ; - :definition "The code has a synchronous call to a remote resource, but there is no timeout for the call, or the timeout is set to infinite." . - -:CWE-1089 a owl:Class ; - rdfs:label "Large Data Table with Excessive Number of Indices" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1089" ; - :definition "The product uses a large data table that contains an excessively large number of indices." . - -:CWE-1090 a owl:Class ; - rdfs:label "Method Containing Access of a Member Element from Another Class" ; - rdfs:subClassOf :CWE-1061 ; - :cwe-id "CWE-1090" ; - :definition "A method for a class performs an operation that directly accesses a member element from another class." . - -:CWE-1091 a owl:Class ; - rdfs:label "Use of Object without Invoking Destructor Method" ; - rdfs:subClassOf :CWE-772, - :CWE-1076 ; - :cwe-id "CWE-1091" ; - :definition "The product contains a method that accesses an object but does not later invoke the element's associated finalize/destructor method." . - -:CWE-1092 a owl:Class ; - rdfs:label "Use of Same Invokable Control Element in Multiple Architectural Layers" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1092" ; - :definition "The product uses the same control element across multiple architectural layers." . - -:CWE-1093 a owl:Class ; - rdfs:label "Excessively Complex Data Representation" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1093" ; - :definition "The product uses an unnecessarily complex internal representation for its data structures or interrelationships between those structures." . - -:CWE-1094 a owl:Class ; - rdfs:label "Excessive Index Range Scan for a Data Resource" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1094" ; - :definition "The product contains an index range scan for a large data table, but the scan can cover a large number of rows." . - -:CWE-1095 a owl:Class ; - rdfs:label "Loop Condition Value Update within the Loop" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1095" ; - :definition "The product uses a loop with a control flow condition based on a value that is updated within the body of the loop." . - -:CWE-1096 a owl:Class ; - rdfs:label "Singleton Class Instance Creation without Proper Locking or Synchronization" ; - rdfs:subClassOf :CWE-820 ; - :cwe-id "CWE-1096" ; - :definition "The product implements a Singleton design pattern but does not use appropriate locking or other synchronization mechanism to ensure that the singleton class is only instantiated once." . - -:CWE-1097 a owl:Class ; - rdfs:label "Persistent Storable Data Element without Associated Comparison Control Element" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1097" ; - :definition "The product uses a storable data element that does not have all of the associated functions or methods that are necessary to support comparison." . - -:CWE-1098 a owl:Class ; - rdfs:label "Data Element containing Pointer Item without Proper Copy Control Element" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1098" ; - :definition "The code contains a data element with a pointer that does not have an associated copy or constructor method." . - -:CWE-1099 a owl:Class ; - rdfs:label "Inconsistent Naming Conventions for Identifiers" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1099" ; - :definition "The product's code, documentation, or other artifacts do not consistently use the same naming conventions for variables, callables, groups of related callables, I/O capabilities, data types, file names, or similar types of elements." . - -:CWE-1100 a owl:Class ; - rdfs:label "Insufficient Isolation of System-Dependent Functions" ; - rdfs:subClassOf :CWE-1061 ; - :cwe-id "CWE-1100" ; - :definition "The product or code does not isolate system-dependent functionality into separate standalone modules." . - -:CWE-1101 a owl:Class ; - rdfs:label "Reliance on Runtime Component in Generated Code" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1101" ; - :definition "The product uses automatically-generated code that cannot be executed without a specific runtime support component." . - -:CWE-1102 a owl:Class ; - rdfs:label "Reliance on Machine-Dependent Data Representation" ; - rdfs:subClassOf :CWE-758 ; - :cwe-id "CWE-1102" ; - :definition "The code uses a data representation that relies on low-level data representation or constructs that may vary across different processors, physical machines, OSes, or other physical components." . - -:CWE-1103 a owl:Class ; - rdfs:label "Use of Platform-Dependent Third Party Components" ; - rdfs:subClassOf :CWE-758 ; - :cwe-id "CWE-1103" ; - :definition "The product relies on third-party components that do not provide equivalent functionality across all desirable platforms." . - -:CWE-1104 a owl:Class ; - rdfs:label "Use of Unmaintained Third Party Components" ; - rdfs:subClassOf :CWE-1357 ; - :cwe-id "CWE-1104" ; - :definition "The product relies on third-party components that are not actively supported or maintained by the original developer or a trusted proxy for the original developer." . - -:CWE-1105 a owl:Class ; - rdfs:label "Insufficient Encapsulation of Machine-Dependent Functionality" ; - rdfs:subClassOf :CWE-758, - :CWE-1061 ; - :cwe-id "CWE-1105" ; - :definition "The product or code uses machine-dependent functionality, but it does not sufficiently encapsulate or isolate this functionality from the rest of the code." . - -:CWE-1106 a owl:Class ; - rdfs:label "Insufficient Use of Symbolic Constants" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1106" ; - :definition "The source code uses literal constants that may need to change or evolve over time, instead of using symbolic constants." . - -:CWE-1107 a owl:Class ; - rdfs:label "Insufficient Isolation of Symbolic Constant Definitions" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1107" ; - :definition "The source code uses symbolic constants, but it does not sufficiently place the definitions of these constants into a more centralized or isolated location." . - -:CWE-1108 a owl:Class ; - rdfs:label "Excessive Reliance on Global Variables" ; - rdfs:subClassOf :CWE-1076 ; - :cwe-id "CWE-1108" ; - :definition "The code is structured in a way that relies too much on using or setting global variables throughout various points in the code, instead of preserving the associated information in a narrower, more local context." . - -:CWE-1109 a owl:Class ; - rdfs:label "Use of Same Variable for Multiple Purposes" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1109" ; - :definition "The code contains a callable, block, or other code element in which the same variable is used to control more than one unique task or store more than one instance of data." . - -:CWE-1110 a owl:Class ; - rdfs:label "Incomplete Design Documentation" ; - rdfs:subClassOf :CWE-1059 ; - :cwe-id "CWE-1110" ; - :definition "The product's design documentation does not adequately describe control flow, data flow, system initialization, relationships between tasks, components, rationales, or other important aspects of the design." . - -:CWE-1111 a owl:Class ; - rdfs:label "Incomplete I/O Documentation" ; - rdfs:subClassOf :CWE-1059 ; - :cwe-id "CWE-1111" ; - :definition "The product's documentation does not adequately define inputs, outputs, or system/software interfaces." . - -:CWE-1112 a owl:Class ; - rdfs:label "Incomplete Documentation of Program Execution" ; - rdfs:subClassOf :CWE-1059 ; - :cwe-id "CWE-1112" ; - :definition "The document does not fully define all mechanisms that are used to control or influence how product-specific programs are executed." . - -:CWE-1113 a owl:Class ; - rdfs:label "Inappropriate Comment Style" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1113" ; - :definition "The source code uses comment styles or formats that are inconsistent or do not follow expected standards for the product." . - -:CWE-1114 a owl:Class ; - rdfs:label "Inappropriate Whitespace Style" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1114" ; - :definition "The source code contains whitespace that is inconsistent across the code or does not follow expected standards for the product." . - -:CWE-1115 a owl:Class ; - rdfs:label "Source Code Element without Standard Prologue" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1115" ; - :definition "The source code contains elements such as source files that do not consistently provide a prologue or header that has been standardized for the project." . - -:CWE-1116 a owl:Class ; - rdfs:label "Inaccurate Comments" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1116" ; - :definition "The source code contains comments that do not accurately describe or explain aspects of the portion of the code with which the comment is associated." . - -:CWE-1117 a owl:Class ; - rdfs:label "Callable with Insufficient Behavioral Summary" ; - rdfs:subClassOf :CWE-1078 ; - :cwe-id "CWE-1117" ; - :definition "The code contains a function or method whose signature and/or associated inline documentation does not sufficiently describe the callable's inputs, outputs, side effects, assumptions, or return codes." . - -:CWE-1118 a owl:Class ; - rdfs:label "Insufficient Documentation of Error Handling Techniques" ; - rdfs:subClassOf :CWE-1059 ; - :cwe-id "CWE-1118" ; - :definition "The documentation does not sufficiently describe the techniques that are used for error handling, exception processing, or similar mechanisms." . - -:CWE-1119 a owl:Class ; - rdfs:label "Excessive Use of Unconditional Branching" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1119" ; - :definition "The code uses too many unconditional branches (such as \"goto\")." . - -:CWE-1120 a owl:Class ; - rdfs:label "Excessive Code Complexity" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1120" ; - :definition "The code is too complex, as calculated using a well-defined, quantitative measure." . - -:CWE-1121 a owl:Class ; - rdfs:label "Excessive McCabe Cyclomatic Complexity" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1121" ; - :definition "The code contains McCabe cyclomatic complexity that exceeds a desirable maximum." . - -:CWE-1122 a owl:Class ; - rdfs:label "Excessive Halstead Complexity" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1122" ; - :definition "The code is structured in a way that a Halstead complexity measure exceeds a desirable maximum." . - -:CWE-1123 a owl:Class ; - rdfs:label "Excessive Use of Self-Modifying Code" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1123" ; - :definition "The product uses too much self-modifying code." . - -:CWE-1124 a owl:Class ; - rdfs:label "Excessively Deep Nesting" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1124" ; - :definition "The code contains a callable or other code grouping in which the nesting / branching is too deep." . - -:CWE-1125 a owl:Class ; - rdfs:label "Excessive Attack Surface" ; - rdfs:subClassOf :CWE-1120 ; - :cwe-id "CWE-1125" ; - :definition "The product has an attack surface whose quantitative measurement exceeds a desirable maximum." . - -:CWE-1126 a owl:Class ; - rdfs:label "Declaration of Variable with Unnecessarily Wide Scope" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1126" ; - :definition "The source code declares a variable in one scope, but the variable is only used within a narrower scope." . - -:CWE-1127 a owl:Class ; - rdfs:label "Compilation with Insufficient Warnings or Errors" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1127" ; - :definition "The code is compiled without sufficient warnings enabled, which may prevent the detection of subtle bugs or quality issues." . - -:CWE-1164 a owl:Class ; - rdfs:label "Irrelevant Code" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1164" ; - :definition "The product contains code that is not essential for execution, i.e. makes no state changes and has no side effects that alter data or control flow, such that removal of the code would have no impact to functionality or correctness." . - -:CWE-1173 a owl:Class ; - rdfs:label "Improper Use of Validation Framework" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1173" ; - :definition "The product does not use, or incorrectly uses, an input validation framework that is provided by the source language or an independent library." . - -:CWE-1174 a owl:Class ; - rdfs:label "ASP.NET Misconfiguration: Improper Model Validation" ; - rdfs:subClassOf :CWE-1173 ; - :cwe-id "CWE-1174" ; - :definition "The ASP.NET application does not use, or incorrectly uses, the model validation framework." . - -:CWE-1176 a owl:Class ; - rdfs:label "Inefficient CPU Computation" ; - rdfs:subClassOf :CWE-405 ; - :cwe-id "CWE-1176" ; - :definition "The product performs CPU computations using algorithms that are not as efficient as they could be for the needs of the developer, i.e., the computations can be optimized further." . - -:CWE-1177 a owl:Class ; - rdfs:label "Use of Prohibited Code" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1177" ; - :definition "The product uses a function, library, or third party component that has been explicitly prohibited, whether by the developer or the customer." . - -:CWE-1188 a owl:Class ; - rdfs:label "Initialization of a Resource with an Insecure Default", - "Insecure Default Initialization of Resource" ; - rdfs:subClassOf :CWE-665, - :CWE-1419 ; - :cwe-id "CWE-1188" ; - :definition "The product initializes or sets a resource with a default that is intended to be changed by the administrator, but the default is not secure." . - -:CWE-1189 a owl:Class ; - rdfs:label "Improper Isolation of Shared Resources on System-on-a-Chip (SoC)" ; - rdfs:subClassOf :CWE-653, - :CWE-668 ; - :cwe-id "CWE-1189" ; - :definition "The System-On-a-Chip (SoC) does not properly isolate shared resources between trusted and untrusted agents." . - -:CWE-1190 a owl:Class ; - rdfs:label "DMA Device Enabled Too Early in Boot Phase" ; - rdfs:subClassOf :CWE-696 ; - :cwe-id "CWE-1190" ; - :definition "The product enables a Direct Memory Access (DMA) capable device before the security configuration settings are established, which allows an attacker to extract data from or gain privileges on the product." . - -:CWE-1191 a owl:Class ; - rdfs:label "On-Chip Debug and Test Interface With Improper Access Control" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1191" ; - :definition "The chip does not implement or does not correctly perform access control to check whether users are authorized to access internal registers and test modes through the physical debug/test interface." . - -:CWE-1192 a owl:Class ; - rdfs:label "Improper Identifier for IP Block used in System-On-Chip (SOC)", - "System-on-Chip (SoC) Using Components without Unique, Immutable Identifiers" ; - rdfs:subClassOf :CWE-657 ; - :cwe-id "CWE-1192" ; - :definition "The System-on-Chip (SoC) does not have unique, immutable identifiers for each of its components." . - -:CWE-1193 a owl:Class ; - rdfs:label "Power-On of Untrusted Execution Core Before Enabling Fabric Access Control" ; - rdfs:subClassOf :CWE-696 ; - :cwe-id "CWE-1193" ; - :definition "The product enables components that contain untrusted firmware before memory and fabric access controls have been enabled." . - -:CWE-1204 a owl:Class ; - rdfs:label "Generation of Weak Initialization Vector (IV)" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-1204" ; - :definition "The product uses a cryptographic primitive that uses an Initialization Vector (IV), but the product does not generate IVs that are sufficiently unpredictable or unique according to the expected cryptographic requirements for that primitive. " . - -:CWE-1209 a owl:Class ; - rdfs:label "Failure to Disable Reserved Bits" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1209" ; - :definition "The reserved bits in a hardware design are not disabled prior to production. Typically, reserved bits are used for future capabilities and should not support any functional logic in the design. However, designers might covertly use these bits to debug or further develop new capabilities in production hardware. Adversaries with access to these bits will write to them in hopes of compromising hardware state." . - -:CWE-1220 a owl:Class ; - rdfs:label "Insufficient Granularity of Access Control" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1220" ; - :definition "The product implements access controls via a policy or other feature with the intention to disable or restrict accesses (reads and/or writes) to assets in a system from untrusted agents. However, implemented access controls lack required granularity, which renders the control policy too broad because it allows accesses from unauthorized agents to the security-sensitive assets." . - -:CWE-1221 a owl:Class ; - rdfs:label "Incorrect Register Defaults or Module Parameters" ; - rdfs:subClassOf :CWE-665, - :CWE-1419 ; - :cwe-id "CWE-1221" ; - :definition "Hardware description language code incorrectly defines register defaults or hardware Intellectual Property (IP) parameters to insecure values." . - -:CWE-1222 a owl:Class ; - rdfs:label "Insufficient Granularity of Address Regions Protected by Register Locks" ; - rdfs:subClassOf :CWE-1220 ; - :cwe-id "CWE-1222" ; - :definition "The product defines a large address region protected from modification by the same register lock control bit. This results in a conflict between the functional requirement that some addresses need to be writable by software during operation and the security requirement that the system configuration lock bit must be set during the boot process." . - -:CWE-1223 a owl:Class ; - rdfs:label "Race Condition for Write-Once Attributes" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-1223" ; - :definition "A write-once register in hardware design is programmable by an untrusted software component earlier than the trusted software component, resulting in a race condition issue." . - -:CWE-1224 a owl:Class ; - rdfs:label "Improper Restriction of Write-Once Bit Fields" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1224" ; - :definition "The hardware design control register \"sticky bits\" or write-once bit fields are improperly implemented, such that they can be reprogrammed by software." . - -:CWE-1229 a owl:Class ; - rdfs:label "Creation of Emergent Resource" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-1229" ; - :definition "The product manages resources or behaves in a way that indirectly creates a new, distinct resource that can be used by attackers in violation of the intended policy." . - -:CWE-1230 a owl:Class ; - rdfs:label "Exposure of Sensitive Information Through Metadata" ; - rdfs:subClassOf :CWE-285 ; - :cwe-id "CWE-1230" ; - :definition "The product prevents direct access to a resource containing sensitive information, but it does not sufficiently limit access to metadata that is derived from the original, sensitive information." . - -:CWE-1231 a owl:Class ; - rdfs:label "Improper Prevention of Lock Bit Modification" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1231" ; - :definition "The product uses a trusted lock bit for restricting access to registers, address regions, or other resources, but the product does not prevent the value of the lock bit from being modified after it has been set." . - -:CWE-1232 a owl:Class ; - rdfs:label "Improper Lock Behavior After Power State Transition" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-1232" ; - :definition "Register lock bit protection disables changes to system configuration once the bit is set. Some of the protected registers or lock bits become programmable after power state transitions (e.g., Entry and wake from low power sleep modes) causing the system configuration to be changeable." . - -:CWE-1233 a owl:Class ; - rdfs:label "Security-Sensitive Hardware Controls with Missing Lock Bit Protection" ; - rdfs:subClassOf :CWE-284, - :CWE-667 ; - :cwe-id "CWE-1233" ; - :definition "The product uses a register lock bit protection mechanism, but it does not ensure that the lock bit prevents modification of system registers or controls that perform changes to important hardware system configuration." . - -:CWE-1234 a owl:Class ; - rdfs:label "Hardware Internal or Debug Modes Allow Override of Locks" ; - rdfs:subClassOf :CWE-667 ; - :cwe-id "CWE-1234" ; - :definition "System configuration protection may be bypassed during debug mode." . - -:CWE-1235 a owl:Class ; - rdfs:label "Incorrect Use of Autoboxing and Unboxing for Performance Critical Operations" ; - rdfs:subClassOf :CWE-400 ; - :cwe-id "CWE-1235" ; - :definition "The code uses boxed primitives, which may introduce inefficiencies into performance-critical operations." . - -:CWE-1236 a owl:Class ; - rdfs:label "Improper Neutralization of Formula Elements in a CSV File" ; - rdfs:subClassOf :CWE-74 ; - :cwe-id "CWE-1236" ; - :definition "The product saves user-provided information into a Comma-Separated Value (CSV) file, but it does not neutralize or incorrectly neutralizes special elements that could be interpreted as a command when the file is opened by a spreadsheet product." ; - :synonym "CSV Injection", - "Excel Macro Injection", - "Formula Injection" . - -:CWE-1239 a owl:Class ; - rdfs:label "Improper Zeroization of Hardware Register" ; - rdfs:subClassOf :CWE-226 ; - :cwe-id "CWE-1239" ; - :definition "The hardware product does not properly clear sensitive information from built-in registers when the user of the hardware block changes." . - -:CWE-1240 a owl:Class ; - rdfs:label "Use of a Cryptographic Primitive with a Risky Implementation" ; - rdfs:subClassOf :CWE-327 ; - :cwe-id "CWE-1240" ; - :definition "To fulfill the need for a cryptographic primitive, the product implements a cryptographic algorithm using a non-standard, unproven, or disallowed/non-compliant cryptographic implementation." . - -:CWE-1241 a owl:Class ; - rdfs:label "Use of Predictable Algorithm in Random Number Generator" ; - rdfs:subClassOf :CWE-330 ; - :cwe-id "CWE-1241" ; - :definition "The device uses an algorithm that is predictable and generates a pseudo-random number." . - -:CWE-1242 a owl:Class ; - rdfs:label "Inclusion of Undocumented Features or Chicken Bits" ; - rdfs:subClassOf :CWE-284, - :CWE-912 ; - :cwe-id "CWE-1242" ; - :definition "The device includes chicken bits or undocumented features that can create entry points for unauthorized actors." . - -:CWE-1243 a owl:Class ; - rdfs:label "Sensitive Non-Volatile Information Not Protected During Debug" ; - rdfs:subClassOf :CWE-1263 ; - :cwe-id "CWE-1243" ; - :definition "Access to security-sensitive information stored in fuses is not limited during debug." . - -:CWE-1244 a owl:Class ; - rdfs:label "Internal Asset Exposed to Unsafe Debug Access Level or State" ; - rdfs:subClassOf :CWE-863 ; - :cwe-id "CWE-1244" ; - :definition "The product uses physical debug or test interfaces with support for multiple access levels, but it assigns the wrong debug access level to an internal asset, providing unintended access to the asset from untrusted debug agents." . - -:CWE-1245 a owl:Class ; - rdfs:label "Improper Finite State Machines (FSMs) in Hardware Logic" ; - rdfs:subClassOf :CWE-684 ; - :cwe-id "CWE-1245" ; - :definition "Faulty finite state machines (FSMs) in the hardware logic allow an attacker to put the system in an undefined state, to cause a denial of service (DoS) or gain privileges on the victim's system." . - -:CWE-1246 a owl:Class ; - rdfs:label "Improper Write Handling in Limited-write Non-Volatile Memories" ; - rdfs:subClassOf :CWE-400 ; - :cwe-id "CWE-1246" ; - :definition "The product does not implement or incorrectly implements wear leveling operations in limited-write non-volatile memories." . - -:CWE-1247 a owl:Class ; - rdfs:label "Improper Protection Against Voltage and Clock Glitches" ; - rdfs:subClassOf :CWE-1384 ; - :cwe-id "CWE-1247" ; - :definition "The device does not contain or contains incorrectly implemented circuitry or sensors to detect and mitigate voltage and clock glitches and protect sensitive information or software contained on the device." . - -:CWE-1248 a owl:Class ; - rdfs:label "Semiconductor Defects in Hardware Logic with Security-Sensitive Implications" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1248" ; - :definition "The security-sensitive hardware module contains semiconductor defects." . - -:CWE-1249 a owl:Class ; - rdfs:label "Application-Level Admin Tool with Inconsistent View of Underlying Operating System" ; - rdfs:subClassOf :CWE-1250 ; - :cwe-id "CWE-1249" ; - :definition "The product provides an application for administrators to manage parts of the underlying operating system, but the application does not accurately identify all of the relevant entities or resources that exist in the OS; that is, the application's model of the OS's state is inconsistent with the OS's actual state." ; - :synonym "Ghost in the Shell" . - -:CWE-1250 a owl:Class ; - rdfs:label "Improper Preservation of Consistency Between Independent Representations of Shared State" ; - rdfs:subClassOf :CWE-664 ; - :cwe-id "CWE-1250" ; - :definition "The product has or supports multiple distributed components or sub-systems that are each required to keep their own local copy of shared data - such as state or cache - but the product does not ensure that all local copies remain consistent with each other." . - -:CWE-1251 a owl:Class ; - rdfs:label "Mirrored Regions with Different Values" ; - rdfs:subClassOf :CWE-1250 ; - :cwe-id "CWE-1251" ; - :definition "The product's architecture mirrors regions without ensuring that their contents always stay in sync." . - -:CWE-1252 a owl:Class ; - rdfs:label "CPU Hardware Not Configured to Support Exclusivity of Write and Execute Operations" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1252" ; - :definition "The CPU is not configured to provide hardware support for exclusivity of write and execute operations on memory. This allows an attacker to execute data from all of memory." . - -:CWE-1253 a owl:Class ; - rdfs:label "Incorrect Selection of Fuse Values" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1253" ; - :definition "The logic level used to set a system to a secure state relies on a fuse being unblown. An attacker can set the system to an insecure state merely by blowing the fuse." . - -:CWE-1254 a owl:Class ; - rdfs:label "Incorrect Comparison Logic Granularity" ; - rdfs:subClassOf :CWE-208, - :CWE-697 ; - :cwe-id "CWE-1254" ; - :definition "The product's comparison logic is performed over a series of steps rather than across the entire string in one operation. If there is a comparison logic failure on one of these steps, the operation may be vulnerable to a timing attack that can result in the interception of the process for nefarious purposes." . - -:CWE-1255 a owl:Class ; - rdfs:label "Comparison Logic is Vulnerable to Power Side-Channel Attacks" ; - rdfs:subClassOf :CWE-1300 ; - :cwe-id "CWE-1255" ; - :definition "A device's real time power consumption may be monitored during security token evaluation and the information gleaned may be used to determine the value of the reference token." . - -:CWE-1256 a owl:Class ; - rdfs:label "Improper Restriction of Software Interfaces to Hardware Features" ; - rdfs:subClassOf :CWE-285 ; - :cwe-id "CWE-1256" ; - :definition "The product provides software-controllable device functionality for capabilities such as power and clock management, but it does not properly limit functionality that can lead to modification of hardware memory or register bits, or the ability to observe physical side channels." . - -:CWE-1257 a owl:Class ; - rdfs:label "Improper Access Control Applied to Mirrored or Aliased Memory Regions" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1257" ; - :definition "Aliased or mirrored memory regions in hardware designs may have inconsistent read/write permissions enforced by the hardware. A possible result is that an untrusted agent is blocked from accessing a memory region but is not blocked from accessing the corresponding aliased memory region. " . - -:CWE-1258 a owl:Class ; - rdfs:label "Exposure of Sensitive System Information Due to Uncleared Debug Information" ; - rdfs:subClassOf :CWE-200, - :CWE-212 ; - :cwe-id "CWE-1258" ; - :definition "The hardware does not fully clear security-sensitive values, such as keys and intermediate values in cryptographic operations, when debug mode is entered." . - -:CWE-1259 a owl:Class ; - rdfs:label "Improper Restriction of Security Token Assignment" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1259" ; - :definition "The System-On-A-Chip (SoC) implements a Security Token mechanism to differentiate what actions are allowed or disallowed when a transaction originates from an entity. However, the Security Tokens are improperly protected." . - -:CWE-1260 a owl:Class ; - rdfs:label "Improper Handling of Overlap Between Protected Memory Ranges" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1260" ; - :definition "The product allows address regions to overlap, which can result in the bypassing of intended memory protection." . - -:CWE-1261 a owl:Class ; - rdfs:label "Improper Handling of Single Event Upsets" ; - rdfs:subClassOf :CWE-1384 ; - :cwe-id "CWE-1261" ; - :definition "The hardware logic does not effectively handle when single-event upsets (SEUs) occur." . - -:CWE-1262 a owl:Class ; - rdfs:label "Improper Access Control for Register Interface" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1262" ; - :definition "The product uses memory-mapped I/O registers that act as an interface to hardware functionality from software, but there is improper access control to those registers." . - -:CWE-1263 a owl:Class ; - rdfs:label "Improper Physical Access Control" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1263" ; - :definition "The product is designed with access restricted to certain information, but it does not sufficiently protect against an unauthorized actor with physical access to these areas." . - -:CWE-1264 a owl:Class ; - rdfs:label "Hardware Logic with Insecure De-Synchronization between Control and Data Channels" ; - rdfs:subClassOf :CWE-821 ; - :cwe-id "CWE-1264" ; - :definition "The hardware logic for error handling and security checks can incorrectly forward data before the security check is complete." . - -:CWE-1265 a owl:Class ; - rdfs:label "Unintended Reentrant Invocation of Non-reentrant Code Via Nested Calls" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-1265" ; - :definition "During execution of non-reentrant code, the product performs a call that unintentionally produces a nested invocation of the non-reentrant code." . - -:CWE-1266 a owl:Class ; - rdfs:label "Improper Scrubbing of Sensitive Data from Decommissioned Device" ; - rdfs:subClassOf :CWE-404 ; - :cwe-id "CWE-1266" ; - :definition "The product does not properly provide a capability for the product administrator to remove sensitive data at the time the product is decommissioned. A scrubbing capability could be missing, insufficient, or incorrect." . - -:CWE-1267 a owl:Class ; - rdfs:label "Policy Uses Obsolete Encoding" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1267" ; - :definition "The product uses an obsolete encoding mechanism to implement access controls." . - -:CWE-1268 a owl:Class ; - rdfs:label "Policy Privileges are not Assigned Consistently Between Control and Data Agents" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1268" ; - :definition "The product's hardware-enforced access control for a particular resource improperly accounts for privilege discrepancies between control and write policies. " . - -:CWE-1269 a owl:Class ; - rdfs:label "Product Released in Non-Release Configuration" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1269" ; - :definition "The product released to market is released in pre-production or manufacturing configuration." . - -:CWE-1270 a owl:Class ; - rdfs:label "Generation of Incorrect Security Tokens" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1270" ; - :definition "The product implements a Security Token mechanism to differentiate what actions are allowed or disallowed when a transaction originates from an entity. However, the Security Tokens generated in the system are incorrect." . - -:CWE-1271 a owl:Class ; - rdfs:label "Uninitialized Value on Reset for Registers Holding Security Settings" ; - rdfs:subClassOf :CWE-909 ; - :cwe-id "CWE-1271" ; - :definition "Security-critical logic is not set to a known value on reset." . - -:CWE-1272 a owl:Class ; - rdfs:label "Sensitive Information Uncleared Before Debug/Power State Transition" ; - rdfs:subClassOf :CWE-226 ; - :cwe-id "CWE-1272" ; - :definition "The product performs a power or debug state transition, but it does not clear sensitive information that should no longer be accessible due to changes to information access restrictions." . - -:CWE-1273 a owl:Class ; - rdfs:label "Device Unlock Credential Sharing" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-1273" ; - :definition "The credentials necessary for unlocking a device are shared across multiple parties and may expose sensitive information." . - -:CWE-1274 a owl:Class ; - rdfs:label "Improper Access Control for Volatile Memory Containing Boot Code" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1274" ; - :definition "The product conducts a secure-boot process that transfers bootloader code from Non-Volatile Memory (NVM) into Volatile Memory (VM), but it does not have sufficient access control or other protections for the Volatile Memory." . - -:CWE-1275 a owl:Class ; - rdfs:label "Sensitive Cookie with Improper SameSite Attribute" ; - rdfs:subClassOf :CWE-923 ; - :cwe-id "CWE-1275" ; - :definition "The SameSite attribute for sensitive cookies is not set, or an insecure value is used." . - -:CWE-1276 a owl:Class ; - rdfs:label "Hardware Child Block Incorrectly Connected to Parent System" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1276" ; - :definition "Signals between a hardware IP and the parent system design are incorrectly connected causing security risks." . - -:CWE-1277 a owl:Class ; - rdfs:label "Firmware Not Updateable" ; - rdfs:subClassOf :CWE-1329 ; - :cwe-id "CWE-1277" ; - :definition "The product does not provide its users with the ability to update or patch its firmware to address any vulnerabilities or weaknesses that may be present." . - -:CWE-1278 a owl:Class ; - rdfs:label "Missing Protection Against Hardware Reverse Engineering Using Integrated Circuit (IC) Imaging Techniques" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1278" ; - :definition "Information stored in hardware may be recovered by an attacker with the capability to capture and analyze images of the integrated circuit using techniques such as scanning electron microscopy." . - -:CWE-1279 a owl:Class ; - rdfs:label "Cryptographic Operations are run Before Supporting Units are Ready" ; - rdfs:subClassOf :CWE-665, - :CWE-696 ; - :cwe-id "CWE-1279" ; - :definition "Performing cryptographic operations without ensuring that the supporting inputs are ready to supply valid data may compromise the cryptographic result." . - -:CWE-1280 a owl:Class ; - rdfs:label "Access Control Check Implemented After Asset is Accessed" ; - rdfs:subClassOf :CWE-284, - :CWE-696 ; - :cwe-id "CWE-1280" ; - :definition "A product's hardware-based access control check occurs after the asset has been accessed." . - -:CWE-1281 a owl:Class ; - rdfs:label "Sequence of Processor Instructions Leads to Unexpected Behavior" ; - rdfs:subClassOf :CWE-691 ; - :cwe-id "CWE-1281" ; - :definition "Specific combinations of processor instructions lead to undesirable behavior such as locking the processor until a hard reset performed." . - -:CWE-1282 a owl:Class ; - rdfs:label "Assumed-Immutable Data is Stored in Writable Memory" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-1282" ; - :definition "Immutable data, such as a first-stage bootloader, device identifiers, and \"write-once\" configuration settings are stored in writable memory that can be re-programmed or updated in the field." . - -:CWE-1283 a owl:Class ; - rdfs:label "Mutable Attestation or Measurement Reporting Data" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1283" ; - :definition "The register contents used for attestation or measurement reporting data to verify boot flow are modifiable by an adversary." . - -:CWE-1284 a owl:Class ; - rdfs:label "Improper Validation of Specified Quantity in Input" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1284" ; - :definition "The product receives input that is expected to specify a quantity (such as size or length), but it does not validate or incorrectly validates that the quantity has the required properties." . - -:CWE-1285 a owl:Class ; - rdfs:label "Improper Validation of Specified Index, Position, or Offset in Input" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1285" ; - :definition "The product receives input that is expected to specify an index, position, or offset into an indexable resource such as a buffer or file, but it does not validate or incorrectly validates that the specified index/position/offset has the required properties." . - -:CWE-1286 a owl:Class ; - rdfs:label "Improper Validation of Syntactic Correctness of Input" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1286" ; - :definition "The product receives input that is expected to be well-formed - i.e., to comply with a certain syntax - but it does not validate or incorrectly validates that the input complies with the syntax." . - -:CWE-1287 a owl:Class ; - rdfs:label "Improper Validation of Specified Type of Input" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1287" ; - :definition "The product receives input that is expected to be of a certain type, but it does not validate or incorrectly validates that the input is actually of the expected type." . - -:CWE-1288 a owl:Class ; - rdfs:label "Improper Validation of Consistency within Input" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1288" ; - :definition "The product receives a complex input with multiple elements or fields that must be consistent with each other, but it does not validate or incorrectly validates that the input is actually consistent." . - -:CWE-1289 a owl:Class ; - rdfs:label "Improper Validation of Unsafe Equivalence in Input" ; - rdfs:subClassOf :CWE-20 ; - :cwe-id "CWE-1289" ; - :definition "The product receives an input value that is used as a resource identifier or other type of reference, but it does not validate or incorrectly validates that the input is equivalent to a potentially-unsafe value." . - -:CWE-1290 a owl:Class ; - rdfs:label "Incorrect Decoding of Security Identifiers " ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1290" ; - :definition "The product implements a decoding mechanism to decode certain bus-transaction signals to security identifiers. If the decoding is implemented incorrectly, then untrusted agents can now gain unauthorized access to the asset." . - -:CWE-1291 a owl:Class ; - rdfs:label "Public Key Re-Use for Signing both Debug and Production Code" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1291" ; - :definition "The same public key is used for signing both debug and production code." . - -:CWE-1292 a owl:Class ; - rdfs:label "Incorrect Conversion of Security Identifiers" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1292" ; - :definition "The product implements a conversion mechanism to map certain bus-transaction signals to security identifiers. However, if the conversion is incorrectly implemented, untrusted agents can gain unauthorized access to the asset." . - -:CWE-1293 a owl:Class ; - rdfs:label "Missing Source Correlation of Multiple Independent Data" ; - rdfs:subClassOf :CWE-345 ; - :cwe-id "CWE-1293" ; - :definition "The product relies on one source of data, preventing the ability to detect if an adversary has compromised a data source." . - -:CWE-1294 a owl:Class ; - rdfs:label "Insecure Security Identifier Mechanism" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1294" ; - :definition "The System-on-Chip (SoC) implements a Security Identifier mechanism to differentiate what actions are allowed or disallowed when a transaction originates from an entity. However, the Security Identifiers are not correctly implemented." . - -:CWE-1295 a owl:Class ; - rdfs:label "Debug Messages Revealing Unnecessary Information" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-1295" ; - :definition "The product fails to adequately prevent the revealing of unnecessary and potentially sensitive system information within debugging messages." . - -:CWE-1296 a owl:Class ; - rdfs:label "Incorrect Chaining or Granularity of Debug Components" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1296" ; - :definition "The product's debug components contain incorrect chaining or granularity of debug components." . - -:CWE-1297 a owl:Class ; - rdfs:label "Unprotected Confidential Information on Device is Accessible by OSAT Vendors" ; - rdfs:subClassOf :CWE-285 ; - :cwe-id "CWE-1297" ; - :definition "The product does not adequately protect confidential information on the device from being accessed by Outsourced Semiconductor Assembly and Test (OSAT) vendors." . - -:CWE-1298 a owl:Class ; - rdfs:label "Hardware Logic Contains Race Conditions" ; - rdfs:subClassOf :CWE-362 ; - :cwe-id "CWE-1298" ; - :definition "A race condition in the hardware logic results in undermining security guarantees of the system." . - -:CWE-1299 a owl:Class ; - rdfs:label "Missing Protection Mechanism for Alternate Hardware Interface" ; - rdfs:subClassOf :CWE-288, - :CWE-420 ; - :cwe-id "CWE-1299" ; - :definition "The lack of protections on alternate paths to access control-protected assets (such as unprotected shadow registers and other external facing unguarded interfaces) allows an attacker to bypass existing protections to the asset that are only performed against the primary path." . - -:CWE-1300 a owl:Class ; - rdfs:label "Improper Protection of Physical Side Channels" ; - rdfs:subClassOf :CWE-203 ; - :cwe-id "CWE-1300" ; - :definition "The device does not contain sufficient protection mechanisms to prevent physical side channels from exposing sensitive information due to patterns in physically observable phenomena such as variations in power consumption, electromagnetic emissions (EME), or acoustic emissions." . - -:CWE-1301 a owl:Class ; - rdfs:label "Insufficient or Incomplete Data Removal within Hardware Component" ; - rdfs:subClassOf :CWE-226 ; - :cwe-id "CWE-1301" ; - :definition "The product's data removal process does not completely delete all data and potentially sensitive information within hardware components." . - -:CWE-1302 a owl:Class ; - rdfs:label "Missing Security Identifier", - "Missing Source Identifier in Entity Transactions on a System-On-Chip (SOC)" ; - rdfs:subClassOf :CWE-1294 ; - :cwe-id "CWE-1302" ; - :definition "The product implements a security identifier mechanism to differentiate what actions are allowed or disallowed when a transaction originates from an entity. A transaction is sent without a security identifier." . - -:CWE-1303 a owl:Class ; - rdfs:label "Non-Transparent Sharing of Microarchitectural Resources" ; - rdfs:subClassOf :CWE-203, - :CWE-1189 ; - :cwe-id "CWE-1303" ; - :definition "Hardware structures shared across execution contexts (e.g., caches and branch predictors) can violate the expected architecture isolation between contexts." . - -:CWE-1304 a owl:Class ; - rdfs:label "Improperly Preserved Integrity of Hardware Configuration State During a Power Save/Restore Operation" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1304" ; - :definition "The product performs a power save/restore operation, but it does not ensure that the integrity of the configuration state is maintained and/or verified between the beginning and ending of the operation." . - -:CWE-1310 a owl:Class ; - rdfs:label "Missing Ability to Patch ROM Code" ; - rdfs:subClassOf :CWE-1329 ; - :cwe-id "CWE-1310" ; - :definition "Missing an ability to patch ROM code may leave a System or System-on-Chip (SoC) in a vulnerable state." . - -:CWE-1311 a owl:Class ; - rdfs:label "Improper Translation of Security Attributes by Fabric Bridge" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1311" ; - :definition "The bridge incorrectly translates security attributes from either trusted to untrusted or from untrusted to trusted when converting from one fabric protocol to another." . - -:CWE-1312 a owl:Class ; - rdfs:label "Missing Protection for Mirrored Regions in On-Chip Fabric Firewall" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1312" ; - :definition "The firewall in an on-chip fabric protects the main addressed region, but it does not protect any mirrored memory or memory-mapped-IO (MMIO) regions." . - -:CWE-1313 a owl:Class ; - rdfs:label "Hardware Allows Activation of Test or Debug Logic at Runtime" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1313" ; - :definition "During runtime, the hardware allows for test or debug logic (feature) to be activated, which allows for changing the state of the hardware. This feature can alter the intended behavior of the system and allow for alteration and leakage of sensitive data by an adversary." . - -:CWE-1314 a owl:Class ; - rdfs:label "Missing Write Protection for Parametric Data Values" ; - rdfs:subClassOf :CWE-862 ; - :cwe-id "CWE-1314" ; - :definition "The device does not write-protect the parametric data values for sensors that scale the sensor value, allowing untrusted software to manipulate the apparent result and potentially damage hardware or cause operational failure." . - -:CWE-1315 a owl:Class ; - rdfs:label "Improper Setting of Bus Controlling Capability in Fabric End-point" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1315" ; - :definition "The bus controller enables bits in the fabric end-point to allow responder devices to control transactions on the fabric." . - -:CWE-1316 a owl:Class ; - rdfs:label "Fabric-Address Map Allows Programming of Unwarranted Overlaps of Protected and Unprotected Ranges" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1316" ; - :definition "The address map of the on-chip fabric has protected and unprotected regions overlapping, allowing an attacker to bypass access control to the overlapping portion of the protected region." . - -:CWE-1317 a owl:Class ; - rdfs:label "Improper Access Control in Fabric Bridge" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1317" ; - :definition "The product uses a fabric bridge for transactions between two Intellectual Property (IP) blocks, but the bridge does not properly perform the expected privilege, identity, or other access control checks between those IP blocks." . - -:CWE-1318 a owl:Class ; - rdfs:label "Missing Support for Security Features in On-chip Fabrics or Buses" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1318" ; - :definition " On-chip fabrics or buses either do not support or are not configured to support privilege separation or other security features, such as access control. " . - -:CWE-1319 a owl:Class ; - rdfs:label "Improper Protection against Electromagnetic Fault Injection (EM-FI)" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1319" ; - :definition "The device is susceptible to electromagnetic fault injection attacks, causing device internal information to be compromised or security mechanisms to be bypassed." . - -:CWE-1320 a owl:Class ; - rdfs:label "Improper Protection for Outbound Error Messages and Alert Signals" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1320" ; - :definition "Untrusted agents can disable alerts about signal conditions exceeding limits or the response mechanism that handles such alerts. " . - -:CWE-1321 a owl:Class ; - rdfs:label "Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')" ; - rdfs:subClassOf :CWE-915 ; - :cwe-id "CWE-1321" ; - :definition "The product receives input from an upstream component that specifies attributes that are to be initialized or updated in an object, but it does not properly control modifications of attributes of the object prototype." . - -:CWE-1322 a owl:Class ; - rdfs:label "Use of Blocking Code in Single-threaded, Non-blocking Context" ; - rdfs:subClassOf :CWE-834 ; - :cwe-id "CWE-1322" ; - :definition "The product uses a non-blocking model that relies on a single threaded process for features such as scalability, but it contains code that can block when it is invoked." . - -:CWE-1323 a owl:Class ; - rdfs:label "Improper Management of Sensitive Trace Data" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1323" ; - :definition "Trace data collected from several sources on the System-on-Chip (SoC) is stored in unprotected locations or transported to untrusted agents." . - -:CWE-1325 a owl:Class ; - rdfs:label "Improperly Controlled Sequential Memory Allocation" ; - rdfs:subClassOf :CWE-770 ; - :cwe-id "CWE-1325" ; - :definition "The product manages a group of objects or resources and performs a separate memory allocation for each object, but it does not properly limit the total amount of memory that is consumed by all of the combined objects." ; - :synonym "Stack Exhaustion" . - -:CWE-1326 a owl:Class ; - rdfs:label "Missing Immutable Root of Trust in Hardware" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1326" ; - :definition "A missing immutable root of trust in the hardware results in the ability to bypass secure boot or execute untrusted or adversarial boot code." . - -:CWE-1327 a owl:Class ; - rdfs:label "Binding to an Unrestricted IP Address" ; - rdfs:subClassOf :CWE-668 ; - :cwe-id "CWE-1327" ; - :definition "The product assigns the address 0.0.0.0 for a database server, a cloud service/instance, or any computing resource that communicates remotely." . - -:CWE-1328 a owl:Class ; - rdfs:label "Security Version Number Mutable to Older Versions" ; - rdfs:subClassOf :CWE-285 ; - :cwe-id "CWE-1328" ; - :definition "Security-version number in hardware is mutable, resulting in the ability to downgrade (roll-back) the boot firmware to vulnerable code versions." . - -:CWE-1329 a owl:Class ; - rdfs:label "Reliance on Component That is Not Updateable" ; - rdfs:subClassOf :CWE-664, - :CWE-1357 ; - :cwe-id "CWE-1329" ; - :definition "The product contains a component that cannot be updated or patched in order to remove vulnerabilities or significant bugs." . - -:CWE-1330 a owl:Class ; - rdfs:label "Remanent Data Readable after Memory Erase" ; - rdfs:subClassOf :CWE-1301 ; - :cwe-id "CWE-1330" ; - :definition "Confidential information stored in memory circuits is readable or recoverable after being cleared or erased." . - -:CWE-1331 a owl:Class ; - rdfs:label "Improper Isolation of Shared Resources in Network On Chip (NoC)" ; - rdfs:subClassOf :CWE-653, - :CWE-668 ; - :cwe-id "CWE-1331" ; - :definition "The Network On Chip (NoC) does not isolate or incorrectly isolates its on-chip-fabric and internal resources such that they are shared between trusted and untrusted agents, creating timing channels." . - -:CWE-1332 a owl:Class ; - rdfs:label "Improper Handling of Faults that Lead to Instruction Skips" ; - rdfs:subClassOf :CWE-1384 ; - :cwe-id "CWE-1332" ; - :definition "The device is missing or incorrectly implements circuitry or sensors that detect and mitigate the skipping of security-critical CPU instructions when they occur." . - -:CWE-1333 a owl:Class ; - rdfs:label "Inefficient Regular Expression Complexity" ; - rdfs:subClassOf :CWE-407 ; - :cwe-id "CWE-1333" ; - :definition "The product uses a regular expression with an inefficient, possibly exponential worst-case computational complexity that consumes excessive CPU cycles." ; - :synonym "Catastrophic backtracking", - "ReDoS", - "Regular Expression Denial of Service" . - -:CWE-1334 a owl:Class ; - rdfs:label "Unauthorized Error Injection Can Degrade Hardware Redundancy" ; - rdfs:subClassOf :CWE-284 ; - :cwe-id "CWE-1334" ; - :definition "An unauthorized agent can inject errors into a redundant block to deprive the system of redundancy or put the system in a degraded operating mode." . - -:CWE-1335 a owl:Class ; - rdfs:label "Incorrect Bitwise Shift of Integer" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-1335" ; - :definition "An integer value is specified to be shifted by a negative amount or an amount greater than or equal to the number of bits contained in the value causing an unexpected or indeterminate result." . - -:CWE-1336 a owl:Class ; - rdfs:label "Improper Neutralization of Special Elements Used in a Template Engine" ; - rdfs:subClassOf :CWE-94 ; - :cwe-id "CWE-1336" ; - :definition "The product uses a template engine to insert or process externally-influenced input, but it does not neutralize or incorrectly neutralizes special elements or syntax that can be interpreted as template expressions or other code directives when processed by the engine." ; - :synonym "Client-Side Template Injection / CSTI", - "Server-Side Template Injection / SSTI" . - -:CWE-1338 a owl:Class ; - rdfs:label "Improper Protections Against Hardware Overheating" ; - rdfs:subClassOf :CWE-693 ; - :cwe-id "CWE-1338" ; - :definition "A hardware device is missing or has inadequate protection features to prevent overheating." . - -:CWE-1339 a owl:Class ; - rdfs:label "Insufficient Precision or Accuracy of a Real Number" ; - rdfs:subClassOf :CWE-682 ; - :cwe-id "CWE-1339" ; - :definition "The product processes a real number with an implementation in which the number's representation does not preserve required accuracy and precision in its fractional part, causing an incorrect result." . - -:CWE-1341 a owl:Class ; - rdfs:label "Multiple Releases of Same Resource or Handle" ; - rdfs:subClassOf :CWE-675 ; - :cwe-id "CWE-1341" ; - :definition "The product attempts to close or release a resource or handle more than once, without any successful open between the close operations." . - -:CWE-1342 a owl:Class ; - rdfs:label "Information Exposure through Microarchitectural State after Transient Execution" ; - rdfs:subClassOf :CWE-226 ; - :cwe-id "CWE-1342" ; - :definition "The processor does not properly clear microarchitectural state after incorrect microcode assists or speculative execution, resulting in transient execution." . - -:CWE-1351 a owl:Class ; - rdfs:label "Improper Handling of Hardware Behavior in Exceptionally Cold Environments" ; - rdfs:subClassOf :CWE-1384 ; - :cwe-id "CWE-1351" ; - :definition "A hardware device, or the firmware running on it, is missing or has incorrect protection features to maintain goals of security primitives when the device is cooled below standard operating temperatures." . - -:CWE-1357 a owl:Class ; - rdfs:label "Reliance on Insufficiently Trustworthy Component" ; - rdfs:subClassOf :CWE-710 ; - :cwe-id "CWE-1357" ; - :definition "The product is built from multiple separate components, but it uses a component that is not sufficiently trusted to meet expectations for security, reliability, updateability, and maintainability." . - -:CWE-1384 a owl:Class ; - rdfs:label "Improper Handling of Physical or Environmental Conditions" ; - rdfs:subClassOf :CWE-703 ; - :cwe-id "CWE-1384" ; - :definition "The product does not properly handle unexpected physical or environmental conditions that occur naturally or are artificially induced." . - -:CWE-1385 a owl:Class ; - rdfs:label "Missing Origin Validation in WebSockets" ; - rdfs:subClassOf :CWE-346 ; - :cwe-id "CWE-1385" ; - :definition "The product uses a WebSocket, but it does not properly verify that the source of data or communication is valid." ; - :synonym "Cross-Site WebSocket hijacking (CSWSH)" . - -:CWE-1386 a owl:Class ; - rdfs:label "Insecure Operation on Windows Junction / Mount Point" ; - rdfs:subClassOf :CWE-59 ; - :cwe-id "CWE-1386" ; - :definition "The product opens a file or directory, but it does not properly prevent the name from being associated with a junction or mount point to a destination that is outside of the intended control sphere." . - -:CWE-1389 a owl:Class ; - rdfs:label "Incorrect Parsing of Numbers with Different Radices" ; - rdfs:subClassOf :CWE-704 ; - :cwe-id "CWE-1389" ; - :definition "The product parses numeric input assuming base 10 (decimal) values, but it does not account for inputs that use a different base number (radix)." . - -:CWE-1390 a owl:Class ; - rdfs:label "Weak Authentication" ; - rdfs:subClassOf :CWE-287 ; - :cwe-id "CWE-1390" ; - :definition "The product uses an authentication mechanism to restrict access to specific users or identities, but the mechanism does not sufficiently prove that the claimed identity is correct." . - -:CWE-1391 a owl:Class ; - rdfs:label "Use of Weak Credentials" ; - rdfs:subClassOf :CWE-1390 ; - :cwe-id "CWE-1391" ; - :definition "The product uses weak credentials (such as a default key or hard-coded password) that can be calculated, derived, reused, or guessed by an attacker." . - -:CWE-1392 a owl:Class ; - rdfs:label "Use of Default Credentials" ; - rdfs:subClassOf :CWE-1391 ; - :cwe-id "CWE-1392" ; - :definition "The product uses default credentials (such as passwords or cryptographic keys) for potentially critical functionality." . - -:CWE-1393 a owl:Class ; - rdfs:label "Use of Default Password" ; - rdfs:subClassOf :CWE-1392, - [ a owl:Restriction ; - owl:onProperty :weakness-of ; - owl:someValuesFrom :UserAccount ] ; - :cwe-id "CWE-1393" ; - :definition "The product uses default passwords for potentially critical functionality." . - -:CWE-1394 a owl:Class ; - rdfs:label "Use of Default Cryptographic Key" ; - rdfs:subClassOf :CWE-1392 ; - :cwe-id "CWE-1394" ; - :definition "The product uses a default cryptographic key for potentially critical functionality." . - -:CWE-1395 a owl:Class ; - rdfs:label "Dependency on Vulnerable Third-Party Component" ; - rdfs:subClassOf :CWE-657 ; - :cwe-id "CWE-1395" ; - :definition "The product has a dependency on a third-party component that contains one or more known vulnerabilities." . - -:CWE-1419 a owl:Class ; - rdfs:label "Incorrect Initialization of Resource" ; - rdfs:subClassOf :CWE-665 ; - :cwe-id "CWE-1419" ; - :definition "The product attempts to initialize a resource but does not correctly do so, which might leave the resource in an unexpected, incorrect, or insecure state when it is accessed." . - -:CWE-1420 a owl:Class ; - rdfs:label "Exposure of Sensitive Information during Transient Execution" ; - rdfs:subClassOf :CWE-669 ; - :cwe-id "CWE-1420" ; - :definition "A processor event or prediction may allow incorrect operations (or correct operations with incorrect data) to execute transiently, potentially exposing data over a covert channel." . - -:CWE-1421 a owl:Class ; - rdfs:label "Exposure of Sensitive Information in Shared Microarchitectural Structures during Transient Execution" ; - rdfs:subClassOf :CWE-1420 ; - :cwe-id "CWE-1421" ; - :definition " A processor event may allow transient operations to access architecturally restricted data (for example, in another address space) in a shared microarchitectural structure (for example, a CPU cache), potentially exposing the data over a covert channel. " . - -:CWE-1422 a owl:Class ; - rdfs:label "Exposure of Sensitive Information caused by Incorrect Data Forwarding during Transient Execution" ; - rdfs:subClassOf :CWE-1420 ; - :cwe-id "CWE-1422" ; - :definition "A processor event or prediction may allow incorrect or stale data to be forwarded to transient operations, potentially exposing data over a covert channel." . - -:CWE-1423 a owl:Class ; - rdfs:label "Exposure of Sensitive Information caused by Shared Microarchitectural Predictor State that Influences Transient Execution" ; - rdfs:subClassOf :CWE-1420 ; - :cwe-id "CWE-1423" ; - :definition "Shared microarchitectural predictor state may allow code to influence transient execution across a hardware boundary, potentially exposing data that is accessible beyond the boundary over a covert channel. " . - -:CWE-1426 a owl:Class ; - rdfs:label "Improper Validation of Generative AI Output" ; - rdfs:subClassOf :CWE-707 ; - :cwe-id "CWE-1426" ; - :definition "The product invokes a generative AI/ML component whose behaviors and outputs cannot be directly controlled, but the product does not validate or insufficiently validates the outputs to ensure that they align with the intended security, content, or privacy policy." . - -:CWE-1427 a owl:Class ; - rdfs:label "Improper Neutralization of Input Used for LLM Prompting" ; - rdfs:subClassOf :CWE-77 ; - :cwe-id "CWE-1427" ; - :definition "The product uses externally-provided data to build prompts provided to large language models (LLMs), but the way these prompts are constructed causes the LLM to fail to distinguish between user-supplied inputs and developer provided system directives." ; - :synonym "prompt injection" . - -:CWE-1428 a owl:Class ; - rdfs:label "Reliance on HTTP instead of HTTPS" ; - rdfs:subClassOf :CWE-319 ; - :cwe-id "CWE-1428" ; - :definition "The product provides or relies on use of HTTP communications when HTTPS is available." . - -:CWE-1429 a owl:Class ; - rdfs:label "Missing Security-Relevant Feedback for Unexecuted Operations in Hardware Interface" ; - rdfs:subClassOf :CWE-223 ; - :cwe-id "CWE-1429" ; - :definition "The product has a hardware interface that silently discards operations in situations for which feedback would be security-relevant, such as the timely detection of failures or attacks." . - -:CWE-1431 a owl:Class ; - rdfs:label "Driving Intermediate Cryptographic State/Results to Hardware Module Outputs" ; - rdfs:subClassOf :CWE-200 ; - :cwe-id "CWE-1431" ; - :definition "The product uses a hardware module implementing a cryptographic algorithm that writes sensitive information about the intermediate state or results of its cryptographic operations via one of its output wires (typically the output port containing the final result)." . - -:CyberAction a owl:Class ; - rdfs:label "Cyber Action" ; - rdfs:subClassOf :Action . - -:CyberSensor a owl:Class ; - rdfs:label "Cyber Sensor" ; - rdfs:subClassOf :Sensor ; - :definition "A cyber sensor collects and monitors data related to cyber activities, events, or environments." . - -:CyberTechnique a owl:Class ; - rdfs:label "Cyber Technique" ; - rdfs:subClassOf :Technique, - [ a owl:Restriction ; - owl:onProperty :implemented-by ; - owl:someValuesFrom :Procedure ] . - -:CycleGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "CycleGAN" ; - rdfs:subClassOf :Image-to-ImageTranslationGAN ; - :d3fend-id "D3A-CYC" ; - :definition "The Cycle Generative Adversarial Network (CycleGAN) is an approach to training a deep convolutional neural network for image-to-image translation tasks by mapping between input and output images using unpaired dataset." ; - :kb-article """## References -Esri. (n.d.). How CycleGAN Works. [Link](https://developers.arcgis.com/python/guide/how-cyclegan-works/)""" . - -:D3FENDCore a owl:Class ; - rdfs:label "D3FEND Core" . - -:D3FENDKBThing a owl:Class ; - rdfs:label "D3FEND KB Thing" . - -:DataAcquisitionAgent a owl:Class ; - rdfs:label "Data Acquisition Agent" ; - rdfs:subClassOf :Application ; - :definition "A software component which connects to data sources to gather raw, time-stamped data. It often connects to databases or historian gateways for storage and analysis." ; - rdfs:seeAlso ; - :synonym "Data Gateway; Historian Collector" . - -:DataAcquisitionUnit a owl:Class ; - rdfs:label "Data Acquisition Unit" ; - rdfs:subClassOf :HardwareDevice, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :DataAcquisitionAgent ] ; - :definition "The hardware component which connects to data sources to gather raw, time-stamped data. It often connects to databases or historian gateways for storage and analysis." ; - rdfs:seeAlso . - -:DataArtifactServer a owl:Class ; - rdfs:label "Data Artifact Server" ; - rdfs:subClassOf :ArtifactServer ; - :definition "A data artifact server provides access services to content in a content repository. The content repository or content store is a database of digital content with an associated set of data management, search and access methods allowing application-independent access to the content, rather like a digital library, but with the ability to store and modify content in addition to searching and retrieving. The content repository acts as the storage engine for a larger application such as a content management system or a document management system, which adds a user interface on top of the repository's application programming interface." ; - rdfs:seeAlso . - -:Database a owl:Class ; - rdfs:label "Database" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :DatabaseRecord ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :StoredProcedure ] ; - rdfs:isDefinedBy ; - :definition "A database is an organized collection of data, generally stored and accessed electronically from a computer system. Where databases are more complex they are often developed using formal design and modeling techniques." ; - rdfs:seeAlso . - -:DatabaseApplication a owl:Class ; - rdfs:label "Database Application" ; - rdfs:subClassOf :Application ; - rdfs:isDefinedBy ; - :definition "A database application is a computer program whose primary purpose is retrieving information from a computerized database." ; - :synonym "Database Management System (DBMS)" . - -:DatabaseFile a owl:Class ; - rdfs:label "Database File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Database ] ; - :definition "A file that stores data and metadata in an organized format, managed by a database management system." . - -:DatabaseQuery a owl:Class ; - rdfs:label "Database Query" ; - rdfs:subClassOf :Command, - [ a owl:Restriction ; - owl:onProperty :queries ; - owl:someValuesFrom :Database ] ; - :definition "A specific query expressed in SQL, SPARQL, or similar language against a database." . - -:DatabaseQueryStringAnalysis a :DatabaseQueryStringAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Database Query String Analysis" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :DatabaseQuery ] ; - :d3fend-id "D3-DQSA" ; - :definition "Analyzing database queries to detect [SQL Injection](https://capec.mitre.org/data/definitions/66.html)." ; - :kb-article """## How it works - -Some implementations use software hooks to intercept function calls related to database query operations. Other implementations might intercept or collect network traffic. The database query string is then extracted and analyzed with various methods, for example: -* Detecting specific administrative SQL commands -* Anomalous sequences of commands when compared to a statistical baseline. -* Anomalous commands for a given user role. - -## Considerations - -Some capabilities sanitize queries before permitting them to be transmitted to the database. This incurs risks such altering data in an undesired way or breaking application functionality.""" ; - :kb-reference :Reference-SystemAndMethodForInternetSecurity_CylanceInc . - -:DatabaseRecord a owl:Class ; - rdfs:label "Database Record" ; - rdfs:subClassOf :Record ; - :definition "A single, implicitly structured data item in a table in a database." ; - rdfs:seeAlso "https://dbpedia.org/page/Row_(database)" . - -:DatabaseServer a owl:Class ; - rdfs:label "Database Server" ; - skos:altLabel "Network Database Resource" ; - rdfs:subClassOf :Server, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :DatabaseApplication ] ; - rdfs:isDefinedBy ; - :definition "A database server is a server which uses a database application that provides database services to other computer programs or to computers, as defined by the client-server model. Database management systems (DBMSs) frequently provide database-server functionality, and some database management systems (such as MySQL) rely exclusively on the client-server model for database access (while others e.g. SQLite are meant for using as an embedded database). For clarification, a database server is simply a server that maintains services related to clients via database applications." . - -:DatabaseService a owl:Class ; - rdfs:label "Database Service" ; - rdfs:subClassOf :ServiceApplicationProcess, - [ a owl:Restriction ; - owl:onProperty :executes ; - owl:someValuesFrom :DatabaseQuery ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :Database ] ; - :definition "A database service interacts with a database, either retrieving data through queries or making modifications to its contents." . - -:DatabaseServiceApplication a owl:Class ; - rdfs:label "Database Service Application" ; - rdfs:subClassOf :DatabaseApplication, - :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :instructs ; - owl:someValuesFrom :DatabaseService ] ; - :definition "A software application that interacts with a database management system (DBMS) hosted as a separate, standalone service or server." . - -:DataDependency a owl:Class ; - rdfs:label "Data Dependency" ; - rdfs:subClassOf :Dependency ; - :definition "A Data Dependency exists when a process, operation, or system requires specific data in order to execute correctly." ; - :synonym "Transactional Dependency" . - -:DataExchangeMapping a :DataExchangeMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Data Exchange Mapping" ; - rdfs:subClassOf :SystemMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :DataDependency ] ; - :d3fend-id "D3-DEM" ; - :definition "Data exchange mapping identifies and models the organization's intended design for the flows of the data types, formats, and volumes between systems at the application layer." ; - :kb-reference :Reference-CatiaUAFPlugin, - :Reference-TivoliApplicationDependencyDiscoverManager7_3_0DependenciesBetweenResources, - :Reference-UnifiedArchitectureFrameworkUAF ; - :synonym "Data Flow Mapping", - "Information Exchange Mapping" . - -:DataInventory a :DataInventory, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Data Inventory" ; - rdfs:subClassOf :AssetInventory, - [ a owl:Restriction ; - owl:onProperty :inventories ; - owl:someValuesFrom :Database ], - [ a owl:Restriction ; - owl:onProperty :inventories ; - owl:someValuesFrom :DocumentFile ] ; - :d3fend-id "D3-DI" ; - :definition "Data inventorying identifies and records the schemas, formats, volumes, and locations of data stored and used on the organization's architecture." ; - :kb-reference :Reference-DataProcessingAndScanningSystemsForGeneratingAndPopulatingADataInventory ; - :synonym "Data Discovery", - "Data Inventorying" . - -:DataLinkLink a owl:Class ; - rdfs:label "Data Link Link" ; - rdfs:subClassOf :LogicalLink ; - :definition "A communication link between two network devices connected directly at the physical layer and on the same network segment; i.e., an OSI Layer 2 link." ; - rdfs:seeAlso ; - :synonym "Data Link Layer Link", - "Layer-2 Link", - "Link Layer Link" . - -:Datalog a owl:Class, - owl:NamedIndividual ; - rdfs:label "Datalog" ; - rdfs:subClassOf :LogicProgramming ; - :d3fend-id "D3A-DAT" ; - :definition "Datalog is a declarative logic programming language that is a syntactically a subset of Prolog." ; - :kb-article """## How it works -Datalog generally uses a bottom-up rather than top-down evaluation model. This difference yields significantly different behavior and properties from Prolog. It is often used as a query language for deductive databases. Datalog has been applied to problems in data integration, networking, program analysis, and more. - -## References -1. Datalog. (2023, April 20). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Datalog)""" . - -:DBSCAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "DBSCAN" ; - rdfs:subClassOf :Density-basedClustering ; - :d3fend-id "D3A-DBS" ; - :definition "A density-based clustering algorithm that works on the assumption that clusters are dense regions in space separated by regions of lower density." ; - :kb-article """## References -Analytics Vidhya. (2020, September 15). How DBSCAN Clustering Works: A Comprehensive Guide with Implementations in Python. [Link](https://www.analyticsvidhya.com/blog/2020/09/how-dbscan-clustering-works/#:~:text=DBSCAN%20is%20a%20density%2Dbased,points%20into%20a%20single%20cluster.)""" ; - :todo "Do we need HBDSCAN and OPTICS as well in density based clustering ?" . - -:DeadCodeElimination a :DeadCodeElimination, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Dead Code Elimination" ; - rdfs:subClassOf :ApplicationHardening ; - :d3fend-id "D3-DCE" ; - :definition "Removing unreachable or \"dead code\" from compiled source code." ; - :kb-article """## How it works - -Dead code is code that is considered unreachable by normal program execution. Dead code can be created by adding code under a condition that never evaluates to true. Dead code should be removed since this type of code can produce unexpected results, if accidentally or maliciously forced to execute. - -Dead code identification is typically performed by algorithms that implement program flows analysis looking for unreachable code. The dead code is eliminated by instructing compilers to remove the code through compiler flags, i.e., '-fdce' is used for Dead Code Elimination. - -## Considerations - -Code can also be deemed unreachable for certain run-time conditions. Different deployed systems and environments may contain some code that is unreachable for the given environment. This technique does not consider run-time conditions for unreachable code.""" ; - :kb-reference :Reference-DeadCodeElimination . - -:Deceive a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Deceive" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The deceive tactic is used to advertise, entice, and allow potential attackers access to an observed or controlled environment." ; - :display-order 3 ; - :display-priority 0 . - -:DecisionTree a owl:Class, - owl:NamedIndividual ; - rdfs:label "Decision Tree" ; - rdfs:subClassOf :Classification ; - :d3fend-id "D3A-DT" ; - :definition "Decision tree learning is a supervised learning approach used in statistics, data mining, and machine learning. In this formalism, a classification or regression decision tree is used as a predictive model to draw conclusions about a set of observations." ; - :kb-article """## How it works - -A decision tree starts with a root node, which does not have any incoming branches. The outgoing branches from the root node then feed into the internal nodes, also known as decision nodes. Based on the available features, both node types conduct evaluations to form homogenous subsets, which are denoted by leaf nodes, or terminal nodes. The leaf nodes represent all the possible outcomes within the dataset. - -## Considerations - -While the basic underlying model is that of a decision tree, the decision tree node criteria, and the method for identifying splits varies significantly depending on the learning algorithm selected (e.g., CART, ID3, C4.5, C5.0, CHAID, MARS.) Extensions like linear and logistic trees can add additional expressiveness as well. - -## Key Test Considerations - -- **Machine Learning**: - - - **Verify the dataset quality**: Check the data to make sure it is - free of errors. Quantify the degree of missing values, - outliers, and noise in the data collection. If the data quality - is low, it may be difficult or impossible to create models and - systems with the desired performance. - - - **Verify development datasets are representative**: of expected - operational environment and data collection means. Compare - distributions of dataset features and labels with exploratory - data analysis and assess the difference in tests on training - data and tests on evaluation data (where the evaluation data - must be drawn from a representative dataset.) - - - **Use a variety of data sets**: where available and applicable, to - reflect different operating and environment conditions that are - likley to be be encountered. - - - **Use software libraries**: and tools built for ML where possible, so - that the underlying code is verified by prior use.** - - - **Diagnose model errors with domain SMEs**: Have problem domain - SMEs investigate model errors for conditions for which the model - may underperform and suggest refinements. - -- **Classification**: - - - **Use Standard Classification Performance Measures**: Not all of - the following may be necessary, but should be considered for - both verification (developmental test) and operational test - stages use: - - - **Accuracy**: The fraction of predictions that were corret. - - - **Precision**: The proportion of positive identifications that were correct. - - - **Recall**: The proportion of actual positive cases identified correctly. - - - **F-Measure**: Combines the preicion and recall into a single - score. It is the harmonic mean of the precision and recall. - - - **Receiver Operating Characteristic (ROC) Curve**: A ROC curve - shows the performance of a classification model at all - classification thresholds. It graphs the True Positive Rate - over the False Positive Rate. - - - **Area Under the ROC Curve (AUC)**: This measures the - two-dimensional area under the ROC Curve. AUC is - scale-invariant and classification-threshold invariant. - - - **ROC TP vs FP points**: In addition to a specific AUC score, - the performance at points - - - **Confusion Matrix**: A confusion matrix is a table layout that - allows the visualization of the performance of an - algorithm. Each row of the matrix represents the instances in - an actual class while each column represents the instances in - a predicted class, or vice versa. It is a special kind of - contingency table, with two dimensions ("actual" and - "predicted"), and identical sets of "classes" in both - dimensions (each combination of dimension and class is a - variable in the contingency table.) - - - **Prediction Bias**: The difference between the average of the - predicted labels and the average of the labels in the data - set. One should check for prediction bias when evaluating the - classifier's results. Causes of bias can include: - - - **Noisy data set**: Errors in original data can as the - collection method may have an underlying bias. - - - **Processing bug**: Errors in the data pipeline can - introduce bias. - - - **Biased training sample (unbalanced samples)**: Model - parameters may be skewed towards majority classes. - - - **Overly strong regularization**: Model may be underfitting - model and too simple. - - - **Proxy variables**: Model features may be highly - correlated. - -- **Supervised Learning**: - - - **Overfitting and Underfitting**: Overfitting occurs when the the - model built corresponds too closely or exactly to a particular - set of data, and thus may fail to fit to predict additional data - reliably. An overfitted model is a mathematical model that - contains more parameters than can be justified by the data. - Underfitting occurs when the model built does adequately capture - the patterns in the data. As an example, a linear model will - underfit a non-linear dataset. - - - **Sensitivity**: Perform N-fold Cross validation to indicate how - much sensitivity the algorithm has to data variation and to avoid - overfitting operational models. - -- **Decision Tree Learning**: - - - **Sensitive to unbalanced classes**: Examine and determine target - class balance; decision tree learning algorithms are especially - sensitive to unbalanced target classes. - - - **Consider decision boundaries**: Perform exploratory data - analysis to determine if decision boundaries lie alongaxes of - features. _Decision trees are ideal when decision boundaries can - be found that lie along axes of features._ - - - **Decision tree overfitting** may require tuning algorithm hyperparameters such as tree depth, max features used, max leaf nodes, etc. - - - **Pruning** may result in a more robust model in real-word applications. - - - **Missing values**: Inspect the data set to determine if there - are missing values and select a means to address them, either by - choosing an algorithm that works well or a way to impute the - value or eliminate the missing values in the data sensors or - pipeline. - -## Platforms, Tools, or Libraries - -- **scikit-learn**: includes tree algorithms for ID3, C4.5, C5.0, and CART. - -- **Weka**: includes J48 (C4.5), SimpleCart (CART), Logistic Model Trees, Naive Bayes Trees, and more. - -### Validation Approach -- Use operationally relevant data across the range of application's operating environment. -- Incorporate some kind of continuous validation to address concept drift and the need to retrain the model and/or check data quality. - -## References -1. Decision tree learning. (2023, May 30). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Decision_tree_learning). -2. Decision Trees. (n.d.). In _scikit-learn User Guide 1.2.2_. [Link](https://scikit-learn.org/stable/modules/tree.html). -3. Concept drift. (2023, April 17). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Concept_drift). -4. 8 Concept Drift Detection Methods. (n.d.). In _Aporia Learning Center_. [Link](https://www.aporia.com/learn/data-drift/concept-drift-detection-methods/).""" . - -:DecisionTreeRegression a owl:Class, - owl:NamedIndividual ; - rdfs:label "Decision Tree Regression" ; - rdfs:subClassOf :RegressionAnalysisLearning ; - :d3fend-id "D3A-DTR" ; - :definition "Decision Trees Regression is asupervised learning method with the goal to create a model that predicts the value of a target variable by learning simple decision rules inferred from the data features" ; - :kb-article """## References -scikit-learn. (n.d.). Decision Trees. [Link](https://scikit-learn.org/stable/modules/tree.html#tree)""" . - -:DecoderApplication a owl:Class ; - rdfs:label "Decoder Application" ; - rdfs:subClassOf :CodecApplication ; - :definition "An application that decodes digital data." . - -:DecoyArtifact a owl:Class ; - rdfs:label "Decoy Artifact" ; - skos:altLabel "Decoy", - "Decoy Object", - "Lure", - "Trap" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :DigitalArtifact ] ; - :definition "A decoy is an imitation digital artifact in any sense of a digital artifact, object, or phenomenon that is intended to deceive a cyber attacker's surveillance devices or mislead their evaluation. Examples include fake files, accounts, hosts (honeypots), and network segments (honeynets)." ; - rdfs:seeAlso , - , - . - -:DecoyEnvironment a :DecoyEnvironment, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy Environment" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Deceive ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :DecoyArtifact ] ; - :d3fend-id "D3-DE" ; - :definition "A Decoy Environment comprises hosts and networks for the purposes of deceiving an attacker." ; - :enables :Deceive ; - :kb-article """## Technique Overview - -Systems in a decoy environment are typically configured so that some detectable means of communication does not have any legitimate business purpose. Any communication via these means should be logged and analyzed to find potential indicators of compromise for a possible past or future attack against other systems.""" ; - :synonym "Honeypot" . - -:DecoyFile a :DecoyFile, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy File" ; - rdfs:subClassOf :DecoyObject, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-DF" ; - :definition "A file created for the purposes of deceiving an adversary." ; - :kb-article """## How it works -The decoy file is made available as a local or network resource. Accesses to the file may be monitored. The files may be configurations, documents, executables, or other file types. - - -## Considerations -Properties of the file such as cryptographic checksums, file creation date, file modified date, file size, file owner etc may be modified to improve the credibility of the file. - -## Example -* A CSV file with decoy user credentials is placed on a system. The system or network is then monitored to detect any accesses to the decoy files.""" ; - :kb-reference , - :Reference-OpenSourceIntelligenceDeceptions_IllusiveNetworksLtd, - :Reference-SystemAndAMethodForIdentifyingThePresenceOfMalwareAndRansomwareUsingMini-trapsSetAtNetworkEndpoints_FidelisCybersecuritySolutionsInc, - :Reference-SystemAndMethodsThereofForPreventingRansomwareFromEncryptingDataElementsStoredInAMemoryOfAComputer-basedSystem_PaloAltoNetworksInc . - -:DecoyNetworkResource a :DecoyNetworkResource, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy Network Resource" ; - rdfs:subClassOf :DecoyObject, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :NetworkResource ] ; - :d3fend-id "D3-DNR" ; - :definition "Deploying a network resource for the purposes of deceiving an adversary." ; - :kb-article """## How it works -Decoy network resources are deployed to web application servers, network file shares, or other network based sharing services. - -A "honeypot" may serve a variety of decoy network resources. - -## Considerations - -* Developing a deployment and placement strategy for the decoy network resource. -* Personnel responsible for creation of decoy networks should consider the potential for resource exhaustion through denial of service attacks. - -## Examples -* Honeypots are typically used to mimic a known system with fake vulnerabilities. This may attract attackers to the honeypot. -* Decoy accounts are also used to scan for attempted logins. The decoy accounts can provide security analysts with the attacker's potential intents and strategies. -* Tarpits are used to monitor unallocated IP space for unauthorized network activity.""" ; - :kb-reference :Reference-AutomaticallyGeneratingNetworkResourceGroupsAndAssigningCustomizedDecoyPoliciesThereto_IllusiveNetworksLtd, - :Reference-Deception-BasedResponsesToSecurityAttacks_CrowdstrikeInc, - :Reference-DynamicSelectionAndGenerationOfAVirtualCloneForDetonationOfSuspiciousContentWithinAHoneyNetwork_PaloAltoNetworksInc, - :Reference-SystemAndMethodForIdentifyingThePresenceOfMalwareUsingMini-trapsSetAtNetworkEndpoints_FidelisCybersecuritySolutionsInc . - -:DecoyObject a :DecoyObject, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy Object" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Deceive ] ; - :d3fend-id "D3-DO" ; - :definition "A Decoy Object is created and deployed for the purposes of deceiving attackers." ; - :enables :Deceive ; - :kb-article """## Technique Overview -Decoy objects are typically configured with detectable means of communication but do not have any legitimate business purpose. Any communication via or to these objects should be logged and analyzed to find potential indicators of compromise for a possible past or future attack against other systems.""" ; - :synonym "Lure" . - -:DecoyPersona a :DecoyPersona, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy Persona" ; - rdfs:subClassOf :DecoyObject, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :User ] ; - :d3fend-id "D3-DP" ; - :definition "Establishing a fake online identity to misdirect, deceive, and or interact with adversaries." ; - :kb-article """## How it works -A false online identity is created for the purposes of interacting with adversaries in a direct or indirect manner. This includes the associated email addresses, social media accounts, and other online communication profiles. - -## Considerations -* Include phone numbers and online social profiles as well as automatically or manually responding to contact made to the persona to improve realism. -* Continuous updating and managing the decoy personas and online activity streams to ensure personas do not become stale and outdated.""" ; - :kb-reference , - :Reference-DecoyPersonasForSafeguardingOnlineIdentityUsingDeception_ . - -:DecoyPublicRelease a :DecoyPublicRelease, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy Public Release" ; - rdfs:subClassOf :DecoyObject ; - :d3fend-id "D3-DPR" ; - :definition "Issuing publicly released media to deceive adversaries." ; - :kb-article """## How it works -Publicly released media includes press release, videos, or other marketing collateral. The media may include URLs, points of contact, or other identifiers to entice interaction from adversaries. - -## Considerations -* Information used in decoy public released media must contain enough realism to deceive and provide interaction from adversaries. -* Continuous development, creation, and distribution of media and identifiers are needed to ensure adversary interaction continues over time. -* Decoy public releases could be placed on platforms with different degrees of ownership, including entirely enterprise-owned infrastructure, IaaS, and SaaS (including social applications). Platforms that are not entirely enterprise-owned may be more likely to gather information""" ; - :kb-reference :Reference-MockAttackCybersecurityTrainingSystemAndMethods_WOMBATSECURITYTECHNOLOGIESInc . - -:DecoySessionToken a :DecoySessionToken, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy Session Token" ; - rdfs:subClassOf :DecoyObject, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :SessionToken ] ; - :d3fend-id "D3-DST" ; - :definition "An authentication token created for the purposes of deceiving an adversary." ; - :kb-article """## How it works -Usage of decoy session tokens may be monitored to track attacker behavior or otherwise control the beliefs of the attacker. - -## Considerations -* Interaction and activity with the decoy session token must be constantly monitored and analyzed to detect unauthorized activity. -* Session tokens are typically short-lived and therefore the decoy must be continuously updated to provide the appearance of it being used in the production environment. -* Automated tools can assist with maintenance and updates by automatically adjusting the decoy session token and environment to mimic the production environment.""" ; - :kb-reference :Reference-DecoyAndDeceptiveDataObjectTechnology_CymmetriaInc . - -:DecoyUserCredential a :DecoyUserCredential, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Decoy User Credential" ; - rdfs:subClassOf :DecoyObject, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-DUC" ; - :definition "A Credential created for the purpose of deceiving an adversary." ; - :kb-article """## How it works -A detection analytic is developed to determine when a user uses decoy credentials. Subsequent actions by that user may be monitored or controlled by the defender. - -A credential may be: - * Domain username and password - * Local system username and password - -## Considerations -* Decoy credentials should be integrated with a larger decoy environment to ensure that when decoy credentials are compromised, the credentials are used to interact with a decoy asset that is being monitored. -* Continuous maintenance and updates are needed to ensure the legitimacy of the larger decoy environment and specifically the assets that utilize the decoy credentials.""" ; - :kb-reference :Reference-DecoyAndDeceptiveDataObjectTechnology_CymmetriaInc, - :Reference-DecoyNetwork-BasedServiceForDeceivingAttackers-AmazonTechnologies, - :Reference-SystemAndMethodForIdentifyingThePresenceOfMalwareUsingMini-trapsSetAtNetworkEndpoints_FidelisCybersecuritySolutionsInc . - -:DeepConvolutionalGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "Deep Convolutional GAN" ; - rdfs:subClassOf :ImageSynthesisGAN ; - :d3fend-id "D3A-DCG" ; - :definition "Deep Convolutional GAN (DCGAN) uses convolutional and convolutional-transpose layers in the generator and discriminator, respectively." ; - :kb-article """## References -Analytics Vidhya. (2021). Deep Convolutional Generative Adversarial Network (DCGAN) for Beginners. [Link](https://www.analyticsvidhya.com/blog/2021/07/deep-convolutional-generative-adversarial-network-dcgan-for-beginners/)""" ; - :synonym "DCGAN" . - -:DeepNeuralNetClassification a owl:Class, - owl:NamedIndividual ; - rdfs:label "Deep Neural Network Classification" ; - rdfs:subClassOf :ArtificialNeuralNetClassification ; - :d3fend-id "D3A-DNNC" ; - :definition "A deep neural network (DNN) is an artificial neural network (ANN) with multiple layers between the input and output layers. There are different types of neural networks but they always consist of the same components: neurons, synapses, weights, biases, and functions. These components as a whole function similarly to a human brain, and can be trained like any other ML algorithm" ; - :kb-article """## References -Deep learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Deep_learning).""" . - -:DeepQ-learning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Deep Q-learning" ; - rdfs:subClassOf :Q-Learning ; - :d3fend-id "D3A-DQL" ; - :definition "Uses a deep convolutional neural network, with layers of tiled convolutional filters to mimic the effects of receptive fields." ; - :kb-article """## References -Q-learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Q-learning#Deep_Q-learning).""" . - -:DefaultUserAccount a owl:Class ; - rdfs:label "Default User Account" ; - rdfs:subClassOf :UserAccount ; - :definition "Default accounts are those that are built-into an OS, such as the Guest or Administrator accounts on Windows systems or default factory/provider set accounts on other types of systems, software, or devices." ; - rdfs:seeAlso . - -:DefenseEvasionTechnique a owl:Class ; - rdfs:label "Defense Evasion Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0005 ] ; - :definition "The adversary is trying to avoid being detected." . - -:DefensiveAction a owl:Class ; - rdfs:label "Defensive Action" ; - rdfs:subClassOf :CyberAction . - -:DefensiveTactic a owl:Class ; - rdfs:label "Defensive Tactic" ; - rdfs:subClassOf :Goal, - [ a owl:Restriction ; - owl:onProperty :enabled-by ; - owl:someValuesFrom :DefensiveTechnique ] ; - rdfs:isDefinedBy ; - :definition "A plan for attaining a particular goal." . - -:DefensiveTechnique a :DefensiveTechnique, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Defensive Technique" ; - rdfs:subClassOf :CyberTechnique, - [ a owl:Restriction ; - owl:onProperty :d3fend-id ; - owl:someValuesFrom xsd:string ], - [ a owl:Restriction ; - owl:onProperty :date ; - owl:someValuesFrom xsd:dateTime ], - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :DefensiveTactic ], - [ a owl:Restriction ; - owl:onProperty :kb-reference ; - owl:someValuesFrom :TechniqueReference ] ; - :definition "A method which makes a computer system more difficult to attack." ; - :display-baseurl "/technique/" ; - rdfs:seeAlso ; - :synonym "Countermeasure Technique", - "Defensive Capability Feature", - "Technical Security Control" . - -:DeleteFile a owl:Class ; - rdfs:label "Delete File" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :File ] ; - :definition "Remove a file from a machine." . - -:Density-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Density-based Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-DBC" ; - :definition "Density-based clustering connects areas of high example density into clusters. This allows for arbitrary-shaped distributions as long as dense areas can be connected." ; - :kb-article """## References -Google Developers. (n.d.). Clustering algorithms. [Link](https://developers.google.com/machine-learning/clustering/clustering-algorithms)""" . - -:Density-weightedMethod a owl:Class, - owl:NamedIndividual ; - rdfs:label "Density-weighted Method" ; - rdfs:subClassOf :ActiveLearning ; - :d3fend-id "D3A-DWM" ; - :definition "An Actvie Learning technique that uses a density estimate meta-parameter to avoid sampling sparsely populated regions of the feature space and can be based parametrically or from a parameter free model." ; - :kb-article """## References -Intro to Active Learning. inovex Blog. [Link](https://www.inovex.de/de/blog/intro-to-active-learning/).""" . - -:DeonticLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Deontic Logic" ; - rdfs:subClassOf :ModalLogic ; - :d3fend-id "D3A-DL" ; - :definition "Deontic logic addresses the modality of obligations and norms; i.e., the modality of morality." ; - :kb-article """## References -1. Deontic logic. (2023, June 4). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Modal_logic#Deontic_logic)""" . - -:Dependency a owl:Class ; - rdfs:label "Dependency" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :dependent ; - owl:someValuesFrom :D3FENDCore ], - [ a owl:Restriction ; - owl:onProperty :provider ; - owl:someValuesFrom :D3FENDCore ] ; - :definition "A dependency is the relationship of relying on or being controlled by someone or something else. This class reifies dependencies that correspond to the object property depends-on." ; - rdfs:seeAlso , - . - -:DescriptionLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Description Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-DL" ; - :definition "A description logic (DL) is a form of logic usually more expressive than propositional logic but less expressive than first-order logic." ; - :kb-article """## How it works -The core reasoning problems for description logics (DLs) are (usually) decidable, and efficient decision procedures have been designed and implemented for these problems. There are general, spatial, temporal, spatiotemporal, and fuzzy description logics, and each description logic features a different balance between expressive power and reasoning complexity by supporting different sets of mathematical constructors. - -DLs are used in artificial intelligence to describe and reason about the relevant concepts of an application domain (known as terminological knowledge). It is of particular importance in providing a logical formalism for ontologies and the Semantic Web: the Web Ontology Language (OWL) and its profiles are based on DLs. - -## References -1. Description logic. (2023, April 16). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Description_logic)""" . - -:DescriptiveStatistics a owl:Class, - owl:NamedIndividual ; - rdfs:label "Descriptive Statistics" ; - rdfs:subClassOf :StatisticalMethod ; - :d3fend-id "D3A-DS" ; - :definition "Descriptive statistics provide simple summaries about the sample and about the observations that have been made." ; - :kb-article """## References -Wikipedia. (n.d.). Descriptive statistics. [Link](https://en.wikipedia.org/wiki/Descriptive_statistics)""" . - -:DeserializationFunction a owl:Class ; - rdfs:label "Deserialization Function" ; - rdfs:subClassOf :Subroutine ; - :definition "Function with an input of serialized data which deserializes that data, usually with data parsing methods." . - -:DesktopComputer a owl:Class ; - rdfs:label "Desktop Computer" ; - rdfs:subClassOf :PersonalComputer ; - rdfs:isDefinedBy ; - :definition "A desktop computer is a personal computer designed for regular use at a single location on or near a desk or table due to its size and power requirements. The most common configuration has a case that houses the power supply, motherboard (a printed circuit board with a microprocessor as the central processing unit (CPU), memory, bus, and other electronic components, disk storage (usually one or more hard disk drives, solid state drives, optical disc drives, and in early models a floppy disk drive); a keyboard and mouse for input; and a computer monitor, speakers, and, often, a printer for output. The case may be oriented horizontally or vertically and placed either underneath, beside, or on top of a desk." . - -:Detect a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Detect" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The detect tactic is used to identify adversary access to or unauthorized activity on computer networks." ; - :display-order 1 ; - :display-priority 0 . - -:DetectionEvent a owl:Class, - owl:NamedIndividual ; - rdfs:label "Detection Event" ; - rdfs:subClassOf :SecurityEvent ; - :definition "An event capturing the identification of a potential security issue, such as unauthorized access attempts, policy violations, or anomalous activities. Detection events form the foundation of cybersecurity monitoring and response." ; - rdfs:seeAlso ; - :related :Detect . - -:DeveloperApplication a owl:Class ; - rdfs:label "Developer Application" ; - rdfs:subClassOf :UserApplication ; - :definition "An application used to develop computer software including applications used for software construction, analysis, testing, packaging, or management." ; - rdfs:seeAlso , - . - -:DHCPAckEvent a owl:Class ; - rdfs:label "DHCP Ack Event" ; - skos:altLabel "DHCPACK" ; - rdfs:subClassOf :DHCPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DHCPRequestEvent ] ; - :definition "An event where a DHCP server sends an ACK message to acknowledge a client's REQUEST, confirming the allocation of an IP address and associated network settings." . - -:DHCPDiscoverEvent a owl:Class ; - rdfs:label "DHCP Discover Event" ; - skos:altLabel "DHCPDISCOVER" ; - rdfs:subClassOf :DHCPEvent ; - :definition "An event where a DHCP client broadcasts a DISCOVER message to identify available DHCP servers capable of providing IP configuration." . - -:DHCPEvent a owl:Class ; - rdfs:label "DHCP Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :UDPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :DHCPNetworkTraffic ] ; - :definition "An event involving the Dynamic Host Configuration Protocol (DHCP), a UDP-based protocol used to dynamically assign IP addresses and configure network parameters, enabling devices to communicate efficiently on a network." ; - rdfs:seeAlso . - -:DHCPInformEvent a owl:Class ; - rdfs:label "DHCP Inform Event" ; - skos:altLabel "DHCPINFORM" ; - rdfs:subClassOf :DHCPEvent ; - :definition "An event where a DHCP client sends an INFORM message to request configuration parameters, such as DNS or gateway information, without requiring IP address assignment." . - -:DHCPLeaseExpireEvent a owl:Class ; - rdfs:label "DHCP Lease Expire Event" ; - skos:altLabel "DHCPLEASEEXPIRE" ; - rdfs:subClassOf :DHCPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DHCPAckEvent ] ; - :definition "An event indicating that a DHCP lease has expired, rendering the previously assigned IP address available for reassignment to other devices." . - -:DHCPNakEvent a owl:Class ; - rdfs:label "DHCP Nak Event" ; - skos:altLabel "DHCPNAK" ; - rdfs:subClassOf :DHCPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DHCPRequestEvent ] ; - :definition "An event where a DHCP server sends a NAK message to reject a client's REQUEST, indicating that the requested configuration cannot be granted." . - -:DHCPNetworkTraffic a owl:Class ; - rdfs:label "DHCP Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "DHCP Network Traffic is network traffic related to the DHCP protocol, used by network nodes to negotiate and configure either IPv4 or IPv6 addresses." . - -:DHCPOfferEvent a owl:Class ; - rdfs:label "DHCP Offer Event" ; - skos:altLabel "DHCPOFFER" ; - rdfs:subClassOf :DHCPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DHCPDiscoverEvent ] ; - :definition "An event where a DHCP server sends an OFFER message to a client in response to a DISCOVER request, proposing an IP address and associated configuration parameters." . - -:DHCPReleaseEvent a owl:Class ; - rdfs:label "DHCP Release Event" ; - skos:altLabel "DHCPRELEASE" ; - rdfs:subClassOf :DHCPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DHCPAckEvent ] ; - :definition "An event where a DHCP client sends a RELEASE message to relinquish its assigned IP address and cancel any remaining lease duration." . - -:DHCPRequestEvent a owl:Class ; - rdfs:label "DHCP Request Event" ; - skos:altLabel "DHCPREQUEST" ; - rdfs:subClassOf :DHCPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DHCPOfferEvent ] ; - :definition "An event where a DHCP client sends a REQUEST message to confirm or renew its desired IP configuration with a specific DHCP server." . - -:DHCPServer a owl:Class ; - rdfs:label "DHCP Server" ; - rdfs:subClassOf :Server, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :DHCPServiceApplication ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :DHCPService ] ; - rdfs:isDefinedBy ; - :definition "A Dynamic Host Configuration Protocol (DHCP) server is a type of server that assigns IP addresses to computers. DHCP servers are used to assign IP addresses to computers and other devices automatically. The DHCP server is responsible for assigning the unique IP address to each device." . - -:DHCPService a owl:Class ; - rdfs:label "DHCP Service" ; - rdfs:subClassOf :NetworkService, - [ a owl:Restriction ; - owl:onProperty :may-produce ; - owl:someValuesFrom :DHCPNetworkTraffic ] ; - :definition "A DHCP service assigns IP address and modifies network configurations." . - -:DHCPServiceApplication a owl:Class ; - rdfs:label "DHCP Service Application" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :instructs ; - owl:someValuesFrom :DHCPService ] ; - :definition "An application that automates the assignment of IP addresses and other network configuration parameters to devices on a network" . - -:DialUpModem a owl:Class ; - rdfs:label "Dial Up Modem" ; - rdfs:subClassOf :Modem ; - rdfs:isDefinedBy ; - :definition "A dial-up modem transmits computer data over an ordinary switched telephone line that has not been designed for data use. This contrasts with leased line modems, which also operate over lines provided by a telephone company, but ones which are intended for data use and do not impose the same signaling constraints. The modulated data must fit the frequency constraints of a normal voice audio signal, and the modem must be able to perform the actions needed to connect a call through a telephone exchange, namely: picking up the line, dialing, understanding signals sent back by phone company equipment (dial tone, ringing, busy signal,) and on the far end of the call, the second modem in the connection must be able to recognize the incoming ring signal and answer the line." . - -:DifferentialVolumeSnapshot a owl:Class ; - rdfs:label "Differential Volume Snapshot" ; - rdfs:subClassOf :VolumeSnapshot ; - :definition "A differential volume snapshot is a point-in-time capture of the files and directories that were changed since the last full snapshot." ; - rdfs:seeAlso . - -:DigitalAccessBadge a owl:Class ; - rdfs:label "Digital Access Badge" ; - rdfs:subClassOf :Credential, - [ a owl:Restriction ; - owl:onProperty :operates ; - owl:someValuesFrom :ElectronicCombinationLock ] ; - :definition "A credential used to gain entry to an area having automated access control entry points. Example media being magnetic stripe, proximity, barcode, or smart cards are examples." ; - rdfs:seeAlso , - ; - :synonym "CAC", - "Common Access Card", - "Personal Identity Verification", - "PIV" . - -:DigitalArtifact a owl:Class ; - rdfs:label "Digital Artifact" ; - rdfs:subClassOf :Artifact ; - :definition "An information-bearing artifact (object) that is, or is encoded to be used with, a digital computer system. This concept is broad to include the literal instances of an artifact, or an implicit summarization of changes to or properties of other artifacts." ; - :display-baseurl "/dao/artifact/" ; - rdfs:seeAlso , - , - ; - :synonym "Digital Asset" . - -:DigitalAudio a owl:Class ; - rdfs:label "Digital Audio" ; - rdfs:subClassOf :DigitalMedia ; - rdfs:isDefinedBy "https://dbpedia.org/page/Digital_audio" ; - :definition "Digital audio is a representation of sound recorded in, or converted into, digital form." . - -:DigitalAudioVisualMedia a owl:Class ; - rdfs:label "Digital Audio Visual Media" ; - rdfs:subClassOf :DigitalMultimedia ; - rdfs:isDefinedBy "https://dbpedia.org/page/Audiovisual" ; - :definition "Audiovisual (AV) is electronic media possessing both a sound and a visual component." . - -:DigitalCamera a owl:Class ; - rdfs:label "Digital Camera" ; - rdfs:subClassOf :HardwareDevice ; - rdfs:isDefinedBy ; - :definition "An optical instrument that can capture an image. A digital camera that captures photographs in digital memory." . - -:DigitalDocument a owl:Class ; - rdfs:label "Digital Document" ; - rdfs:subClassOf :DigitalMedia ; - rdfs:isDefinedBy "https://dbpedia.org/page/Electronic_document" ; - :definition "An digital document is any electronic media content (other than computer programs or system files) that is intended to be used in either an electronic form or as printed output." . - -:DigitalEvent a owl:Class ; - rdfs:label "Digital Event" ; - rdfs:subClassOf :Event ; - :definition "A digital event represents an observable occurrence, action, or state change within digital systems, networks, or their interactions. These events are characterized by their impact on the confidentiality, integrity, availability, or functionality of digital resources, processes, identities, or communications. Digital events are essential units of information in cybersecurity, serving as the basis for detecting threats, analyzing anomalies, and orchestrating responses in complex, interconnected environments." . - -:DigitalEventRecord a owl:Class ; - rdfs:label "Digital Event Record" ; - rdfs:subClassOf :Record, - [ a owl:Restriction ; - owl:onProperty :records ; - owl:someValuesFrom :DigitalEvent ] ; - :definition "A digital event record is a structured representation of a digital event, encapsulating all relevant details about the occurrence for storage, analysis, and response. These records serve as the primary artifacts for cybersecurity operations, enabling threat detection, forensic investigations, and compliance reporting. Digital event records include metadata such as timestamps, origin, context, and associated resources, ensuring traceability and actionable intelligence in digital ecosystems." . - -:DigitalFingerprint a owl:Class ; - rdfs:label "Digital Fingerprint" ; - rdfs:subClassOf :Identifier ; - rdfs:isDefinedBy ; - :definition "A digital signature uniquely identifies data and has the property that changing a single bit in the data will cause a completely different message digest to be generated." ; - rdfs:seeAlso ; - :todo "Create relationship 'identifies some data' once data ontology implemented" . - -:DigitalIdentity a owl:Class ; - rdfs:label "Digital Identity" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :identified-by ; - owl:someValuesFrom :Identifier ] ; - rdfs:comment "Variously describes or designates. Designation is not compete or definite without context. The representation generally can be identified by a unique identifier, though this may be private information." ; - :definition "The unique representation of a subject engaged in an online transaction. A digital identity is always unique in the context of a digital service, but does not necessarily need to uniquely identify the subject in all contexts. In other words, accessing a digital service may not mean that the subject's real-life identity is known. Note: There is no single, widely accepted definition for this term and context is important. This definition is specific to online transactions." ; - rdfs:seeAlso . - -:DigitalImage a owl:Class ; - rdfs:label "Digital Image" ; - rdfs:subClassOf :DigitalMedia ; - rdfs:isDefinedBy "https://dbpedia.org/page/Digital_image" ; - :definition "A digital image is a pixel-based visual representation stored in formats like JPEG or PNG, used for various digital applications." . - -:DigitalInformation a owl:Class ; - rdfs:label "Digital Information" ; - rdfs:subClassOf :DigitalArtifact ; - :definition "Digital information is a broad category of encoded representations in digital form that convey meaning, instructions, or functionality." . - -:DigitalInformationBearer a owl:Class ; - rdfs:label "Digital Information Bearer" ; - rdfs:subClassOf :DigitalArtifact ; - :definition "A digital information bearer is a physical or virtual entity that stores, transmits, or processes digital information." . - -:DigitalMedia a owl:Class ; - rdfs:label "Digital Media" ; - rdfs:subClassOf :DigitalInformation ; - rdfs:isDefinedBy "https://dbpedia.org/page/Digital_media" ; - :definition "Digital media refers to any communication media that operate in conjunction with various encoded machine-readable data formats." . - -:DigitalMessage a owl:Class ; - rdfs:label "Digital Message" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A discrete unit of digital communication created by a sender for one or more intended recipients. Encoded in an application-layer format, a digital message conveys semantics such as commands, data, or status and is transported inside lower-layer containers like network frames or packets." . - -:DigitalMultimedia a owl:Class ; - rdfs:label "Digital Multimedia" ; - rdfs:subClassOf :DigitalMedia ; - rdfs:isDefinedBy "https://dbpedia.org/page/Multimedia" ; - :definition "Digital Multimedia refers to content that combines text, audio, images, animations, and video in a digital format for interactive applications." . - -:DigitalSystem a owl:Class ; - rdfs:label "Digital System" ; - rdfs:subClassOf :DigitalInformationBearer, - :System ; - :definition "A digital system is a group of interacting or interrelated digital artifacts that act according to a set of rules to form a unified whole. A digital system, surrounded and influenced by its environment, is described by its boundaries, structure and purpose and expressed in its functioning. Systems are the subjects of study of systems theory." ; - rdfs:seeAlso . - -:DigitalText a owl:Class ; - rdfs:label "Digital Text" ; - rdfs:subClassOf :DigitalMedia ; - :definition "Digital text is written content encoded in a digital format, allowing for storage, retrieval, and manipulation by electronic devices." . - -:DigitalVideo a owl:Class ; - rdfs:label "Digital Video" ; - rdfs:subClassOf :DigitalMedia ; - rdfs:isDefinedBy "https://dbpedia.org/page/Digital_video" ; - :definition "Digital video is an electronic representation of moving visual images (video) in the form of encoded digital data." . - -:DimensionReduction a owl:Class, - owl:NamedIndividual ; - rdfs:label "Dimension Reduction" ; - rdfs:subClassOf :UnsupervisedLearning ; - :d3fend-id "D3A-DR" ; - :definition "Dimensionality reduction is a key technique within unsupervised learning. It compresses the data by finding a smaller, different set of variables that capture what matters most in the original features, while minimizing the loss of information." ; - :kb-article """## References -O'Reilly Media. (n.d.). Chapter 7. Machine Learning and Security: Protecting Systems with Data and Algorithms. [Link](https://www.oreilly.com/library/view/machine-learning-and/9781492073048/ch07.html)""" . - -:DirectionalNetworkLink a :DirectionalNetworkLink, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Directional Network Link" ; - rdfs:subClassOf :NetworkIsolation, - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :PhysicalLink ] ; - :d3fend-id "D3-DNL" ; - :definition "Enforce one-way network communication by preventing two-way communication." ; - :kb-article """## How it works -Using a device such as a data diode, or otherwise enforcing unidirectional (one-way) network communication / data transfer, to physically prevent signals from traveling in the reverse direction. - -Unidirectional network link enforcement is a security measure used to separate control and safety systems in operational technology (OT) environments. By employing physical data diodes, this approach ensures one-way communication, allowing information from safety systems to be viewed without permitting any modification or interference, thereby protecting the integrity of the safety system. - -""" ; - :kb-reference :Reference-SecureOneWayDataTransferUsingCommunicationInterfaceCircuitry . - -:Directory a owl:Class ; - rdfs:label "Directory" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :File ] ; - rdfs:isDefinedBy ; - :definition "In computing, a directory is a file system cataloging structure which contains references to other computer files, and possibly other directories. On many computers, directories are known as folders, or drawers to provide some relevancy to a workbench or the traditional office file cabinet." . - -:DirectoryService a owl:Class ; - rdfs:label "Directory Service" ; - rdfs:subClassOf :NetworkService ; - rdfs:isDefinedBy ; - :definition "In computing, directory service or name service maps the names of network resources to their respective network addresses. It is a shared information infrastructure for locating, managing, administering and organizing everyday items and network resources, which can include volumes, folders, files, printers, users, groups, devices, telephone numbers and other objects. A directory service is a critical component of a network operating system. A directory server or name server is a server which provides such a service. Each resource on the network is considered an object by the directory server. Information about a particular resource is stored as a collection of attributes associated with that resource or object." . - -:DirectPhysicalLinkMapping a :DirectPhysicalLinkMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Direct Physical Link Mapping" ; - rdfs:subClassOf :PhysicalLinkMapping ; - :d3fend-id "D3-DPLM" ; - :definition "Direct physical link mapping creates a physical link map by direct observation and recording of the physical network links." ; - :kb-article """## How it works - -Direct Physical Link Mapping involves a manual process where a network engineer or administrator physically observes and documents the physical connections within the network infrastructure. - -## Considerations - -* Constructing and maintaining physical topologies for extensive networks can be challenging and time-consuming using manual methods. Therefore, where feasible, automated methods like active physical link mapping should be considered as a partial or complete solution for physical link mapping processes. - -* In scenarios where active physical link mapping is not an option, physical inspection of networks is necessary to accomplish physical link mapping. This is due to the lack of reliable techniques to accurately map physical links solely through passive network traffic monitoring.""" ; - :kb-reference :Reference-NetworkMapping ; - rdfs:seeAlso ; - :synonym "Manual Physical Link Mapping" . - -:DisableRemoteAccess a :DisableRemoteAccess, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Disable Remote Access" ; - rdfs:subClassOf :ApplicationConfigurationHardening, - [ a owl:Restriction ; - owl:onProperty :configures ; - owl:someValuesFrom :ApplicationConfiguration ] ; - :d3fend-id "D3-DRA" ; - :definition "Limiting access to a computing device which is not required through or from a non-organization-controlled network." ; - :kb-article """## How It Works -There are several different methods of achieving remote access restriction. This could include: time-based controls, just-in-time authorization, and deny-by-default controls. - -This can be done on a Windows machine by unchecking an "allow remote assistance" or checking the "don't allow remote connections" boxes; creating firewall rules to block remote access protocols; uninstalling remote access software; disabling Wi-Fi, Ethernet, Bluetooth, or other connection methods enabling remote access. - -One way to achieve remote access restrictions in OT is by programming logic in the OT Controller to give the Operator authorizing abilities which ensures local control is maintained. In this situation, a remote access modem would be powered on/off using a discrete output from an I/O module of the OT controller. - """ ; - rdfs:seeAlso "M0800 Authorization Enforcement", - . - -:DiscoveryTechnique a owl:Class ; - rdfs:label "Discovery Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0007 ] ; - :definition "The adversary is trying to figure out your environment." . - -:DiscriminantAnalysis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Discriminant Analysis" ; - rdfs:subClassOf :MultivariateAnalysis ; - :d3fend-id "D3A-DA" ; - :definition "Discriminant analysis attempts to establish whether a set of variables can be used to distinguish between two or more groups of cases." ; - :kb-article """## References -Wikipedia. (n.d.). Multivariate statistics. [Link](https://en.wikipedia.org/wiki/Multivariate_statistics)""" . - -:DiskEncryption a :DiskEncryption, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Disk Encryption" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :encrypts ; - owl:someValuesFrom :Storage ] ; - :d3fend-id "D3-DENCR" ; - :definition "Encrypting a hard disk partition to prevent cleartext access to a file system." ; - :kb-reference :Reference-LUKS1On-DiskFormatSpecificationVersion1.2.3 . - -:DiskErasure a :DiskErasure, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Disk Erasure" ; - rdfs:subClassOf :DiskFormatting, - [ a owl:Restriction ; - owl:onProperty :erases ; - owl:someValuesFrom :SecondaryStorage ] ; - :d3fend-id "D3-DKE" ; - :definition "Disk Erasure is the process of securely deleting all data on a disk to ensure that it cannot be recovered by any means." ; - :kb-article """### How it works - -Disk Erasure involves overwriting the existing data with random or specific patterns multiple times. Disk erasure is crucial for data sanitization, ensuring that sensitive information is completely removed from storage devices before they are repurposed, disposed of, or transferred to another party.""" ; - :kb-reference . - -:DiskFormatting a :DiskFormatting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Disk Formatting" ; - rdfs:subClassOf :ObjectEviction, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :SecondaryStorage ] ; - :d3fend-id "D3-DKF" ; - :definition "Disk Formatting is the process of preparing a data storage device, such as a hard drive, solid-state drive, or USB flash drive, for initial use." ; - :kb-article """### How it works - -This process involves setting up an empty file system on the disk, which includes creating a directory structure and initializing metadata structures. In cybersecurity, disk formatting can be used to remove all existing data on a disk, making it a clean slate for new data storage or to prevent unauthorized access to previously stored data.""" ; - :kb-reference . - -:DiskImage a owl:Class ; - rdfs:label "Disk Image" ; - rdfs:subClassOf :StorageImage ; - rdfs:isDefinedBy ; - :definition "A disk image is a snapshot of a storage device's structure and data typically stored in one or more computer files on another storage device." ; - rdfs:seeAlso . - -:DiskPartitioning a :DiskPartitioning, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Disk Partitioning" ; - rdfs:subClassOf :DiskFormatting, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :PartitionTable ] ; - :d3fend-id "D3-DKP" ; - :definition "Disk Partitioning is the process of dividing a disk into multiple distinct sections, known as partitions." ; - :kb-article """### How it works - -Each partition can be managed separately and can have its own file system. Disk partitioning can be used to segregate sensitive data from less critical data, improve system performance, and enhance data management and recovery processes. It can also help in isolating different operating systems or environments on the same physical disk.""" ; - :kb-reference . - -:DisplayAdapter a owl:Class ; - rdfs:label "Display Adapter" ; - skos:altLabel "Display Card", - "Graphics Adapter", - "Video Card" ; - rdfs:subClassOf :OutputDevice ; - rdfs:isDefinedBy ; - :definition "A graphics card (also called a display card, video card, display adapter, or graphics adapter) is an expansion card which generates a feed of output images to a display device (such as a computer monitor). Frequently, these are advertised as discrete or dedicated graphics cards, emphasizing the distinction between these and integrated graphics. At the core of both is the graphics processing unit (GPU), which is the main part that does the actual computations, but should not be confused with the video card as a whole, although \"GPU\" is often used to refer to video cards." . - -:DisplayDeviceDriver a owl:Class ; - rdfs:label "Display Device Driver" ; - rdfs:subClassOf :HardwareDriver, - [ a owl:Restriction ; - owl:onProperty :drives ; - owl:someValuesFrom :DisplayAdapter ] ; - :definition "A device driver for a display adapter." ; - rdfs:seeAlso , - . - -:DisplayServer a owl:Class ; - rdfs:label "Display Server" ; - skos:altLabel "Window Server" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A display server or window server is a program whose primary task is to coordinate the input and output of its clients to and from the rest of the operating system, the hardware, and each other. The display server communicates with its clients over the display server protocol, a communications protocol, which can be network-transparent or simply network-capable. The display server is a key component in any graphical user interface, specifically the windowing system." . - -:Distribution-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Distribution-based Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-DBC" ; - :definition "Distribution-based clustering creates and groups data points based on their likely hood of belonging to the same probability distribution (Gaussian, Binomial, etc.) in the data." ; - :kb-article """## References -AnalytixLabs. (n.d.). Types of Clustering Algorithms. [Link](https://www.analytixlabs.co.in/blog/types-of-clustering-algorithms/#:~:text=Distribution-Based)""" . - -:DistributionProperties a owl:Class, - owl:NamedIndividual ; - rdfs:label "Distribution Properties" ; - rdfs:subClassOf :DescriptiveStatistics ; - :d3fend-id "D3A-DP" ; - :definition "The properties derived from a probability distribution." ; - :kb-article """## References -Wikipedia. (n.d.). Probability distribution. [Link](https://en.wikipedia.org/wiki/Probability_distribution)""" ; - :todo "Might be lots more to add in this tree" . - -:DivisiveClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Divisive Clustering" ; - rdfs:subClassOf :HierarchicalClustering ; - :d3fend-id "D3A-DC" ; - :definition "A divisive clustering approach is a hierarchical, top-down approach to clustering a dataset." . - -:DNN-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "DNN-based Clustering" ; - rdfs:subClassOf :ANN-basedClustering ; - :d3fend-id "D3A-DBC" ; - :definition "DNNs serve for clustering as mappings to better representations. The features of these representations can be drawn from different layers of the network or even from several layers." ; - :kb-article """## References -OpenReview. (n.d.). Unsupervised Clustering using Pseudo Ensemble Models. [Link](https://openreview.net/pdf?id=B1eT9VMgOX)""" . - -:DNSAllowlisting a :DNSAllowlisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "DNS Allowlisting" ; - rdfs:subClassOf :NetworkIsolation, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :OutboundInternetDNSLookupTraffic ] ; - :d3fend-id "D3-DNSAL" ; - :definition "Permitting only approved domains and their subdomains to be resolved." ; - :kb-reference :Reference-DNSWhitelist-DNSWL-EmailAuthenticationMethodExtension ; - :synonym "DNS Whitelisting" . - -:DNSCacheEviction a :DNSCacheEviction, - owl:Class, - owl:NamedIndividual ; - rdfs:label "DNS Cache Eviction" ; - rdfs:subClassOf :ObjectEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :DNSRecord ] ; - :d3fend-id "D3-DNSCE" ; - :definition "Flushing DNS to clear any IP addresses or other DNS records from the cache." ; - :kb-article """# How it works - -Flushing the DNS Cache will clear the IP addresses of websites you have visited recently. This can help remediate DNS Cache Poisoning attacks, which is a type of cyber attack where corrupted DNS data is inserted into the cache, causing redirects to malicious websites. - -On windows, the DNS cache can be wiped by issuing the command `ipconfig /flushdns`.""" ; - :kb-reference ; - :synonym "Flush DNS Cache" . - -:DNSDenylisting a :DNSDenylisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "DNS Denylisting" ; - rdfs:subClassOf :NetworkIsolation, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :DNSNetworkTraffic ] ; - :d3fend-id "D3-DNSDL" ; - :definition "Blocking DNS Network Traffic based on criteria such as IP address, domain name, or DNS query type." ; - :kb-article """## How it works -Rules are implemented that filter DNS queries using criteria such as: -- Client subnet -- Type of network protocol used in query -- Fully qualified domain name (FQDN) of record in the query -- DNS Server IP address that received the DNS request -- Type of DNS record being queried -- Time of day the query is received -- Size of the response - -For example, a DNS policy can be created for blocking DNS queries for FQDNs that have been identified as unauthorized. - -## Considerations -- Implementation considerations for DNS filtering policies to avoid over-blocking or under-blocking domains. -- Continuous maintenance of unauthorized domain lists is needed to keep up to date with possible site content changes. -- File sharing or content delivery networks may require other filtering techniques that are more fine-grained (URL blocking). -- Access to malicious websites or other network resources directly by IP instead of by DNS record, or after alteration of local DNS hosts file, may not result in DNS network traffic.""" ; - :kb-reference :Reference-UseDNSPolicyForApplyingFiltersOnDNSQueries ; - :synonym "DNS Blacklisting" . - -:DNSEvent a owl:Class ; - rdfs:label "DNS Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - [ a owl:Class ; - owl:unionOf ( - :TCPEvent - :UDPEvent ) ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :DNSNetworkTraffic ] ; - :definition "An event involving the Domain Name System (DNS), which translates domain names to IP addresses and operates over UDP and TCP." ; - rdfs:seeAlso . - -:DNSLookup a owl:Class ; - rdfs:label "DNS Lookup" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A Domain Name System (DNS) lookup is a record returned from a DNS resolver after querying a DNS name server. Typically considered an A or AAAA record, where a domain name is resolved to an IPv4 or IPv6 address, respectively." ; - rdfs:seeAlso , - , - . - -:DNSNetworkTraffic a owl:Class ; - rdfs:label "DNS Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "DNS network traffic is network traffic related to queries and responses involving the Domain Name System. DNS traffic can involve clients, servers such as relays or resolvers. This includes only network traffic conforming to standard DNS protocol; not custom protocols." . - -:DNSQueryEvent a owl:Class ; - rdfs:label "DNS Query Event" ; - rdfs:subClassOf :DNSEvent ; - :definition "An event where a DNS query is made to resolve a domain name." . - -:DNSRecord a owl:Class ; - rdfs:label "DNS Record" ; - rdfs:subClassOf :Record ; - :definition "A Domain Name System (DNS) record is a record of information returned to clients seeking to find computers, services, and other resources connected to the Internet or a private network. Record information is stored on a domain name server so it can respond to DNS queries from clients.There are a variety of record types, depending on the client's information needs. Common types include Start of Authority, IP addresses, SMTP mail exchangers, name servers, reverse DNS lookup pointers, etc." ; - rdfs:seeAlso , - . - -:DNSResponseEvent a owl:Class ; - rdfs:label "DNS Response Event" ; - rdfs:subClassOf :DNSEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DNSQueryEvent ] ; - :definition "An event where a DNS server responds to a query with resolution data." . - -:DNSServer a owl:Class ; - rdfs:label "DNS Server" ; - rdfs:subClassOf :Server ; - rdfs:isDefinedBy ; - :definition """A Domain Name System (DNS) name server is a kind of name server. Domain names are one of the two principal namespaces of the Internet. The most important function of DNS servers is the translation (resolution) of human-memorable domain names and hostnames into the corresponding numeric Internet Protocol (IP) addresses, the second principal name space of the Internet which is used to identify and locate computer systems and resources on the Internet. (en). - -More generally, a name server is a computer application that implements a network service for providing responses to queries against a directory service. It translates an often humanly meaningful, text-based identifier to a system-internal, often numeric identification or addressing component. This service is performed by the server in response to a service protocol request.""" . - -:DNSTrafficAnalysis a :DNSTrafficAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "DNS Traffic Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :OutboundInternetDNSLookupTraffic ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :DNSLookup ] ; - :d3fend-id "D3-DNSTA" ; - :definition "Analysis of domain name metadata, including name and DNS records, to determine whether the domain is likely to resolve to an undesirable host." ; - :kb-article """## How it works -This technique can be accomplished in a number of ways. - -* One example analytic determines whether or not a domain name was generated with an algorithm. Domain generation algorithms (DGAs) are sometimes used to create a domain name automatically that will resolve to C2 infrastructure, without directly coding the domains in question into the malicious code. -* Another method analyzes information about domains that have been visited, including whether a domain name is longer than a common length, if a dynamic DNS domain was visited, if a fast-flux domain was visited, and if a recently created domain was visited. These factors are used to develop a score and if that score is over a certain threshold, an alert is generated. -* Collected malware samples can be executed in a virtual environment to identify network domains that are connected to during execution. The network domains are then generated into signatures to identity bad domains for other hosts. - -This technique does not check for content hosted at the domain. - -## Considerations - -* DNS produces a large amount of traffic which can be resource-intensive to analyze in real time. -* If a server is compromised, for example, as part of a watering hole attack, but the DNS information pointing to that server is not altered, this technique would not catch such an incident.""" ; - :kb-reference :Reference-DomainAgeRegistrationAlert_IncRapid7IncRAPID7Inc, - :Reference-HeuristicBotnetDetection_PaloAltoNetworksInc, - :Reference-MethodAndSystemForDetectingAlgorithm-generatedDomains_VECTRANETWORKSInc, - :Reference-PredictingDomainGenerationAlgorithmsWithLongShort-TermMemoryNetworks_, - :Reference-SinkholingBadNetworkDomainsByRegisteringTheBadNetworkDomainsOnTheInternet_PaloAltoNetworksInc ; - :synonym "Domain Name Analysis" . - -:DocumentFile a owl:Class ; - rdfs:label "Document File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ExecutableScript ] ; - :definition "A document is a written, drawn, presented or recorded representation of thoughts. An electronic document file is usually used to describe a primarily textual file, along with its structure and design, such as fonts, colors and additional images." ; - rdfs:seeAlso . - -:DomainAccountMonitoring a :DomainAccountMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Domain Account Monitoring" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :DomainUserAccount ] ; - :d3fend-id "D3-DAM" ; - :definition "Monitoring the existence of or changes to Domain User Accounts." ; - :kb-reference :Reference-AuditUserAccountManagement . - -:DomainLogicValidation a :DomainLogicValidation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Domain Logic Validation" ; - rdfs:subClassOf :SourceCodeHardening, - [ a owl:Restriction ; - owl:onProperty :validates ; - owl:someValuesFrom :Subroutine ] ; - :d3fend-id "D3-DLV" ; - :definition "Validation of variable state in the context of the domain application." ; - :kb-article """## How it works -Validates the type, value, and/or range of an variable taking into context the current application in the business domain.""" ; - :kb-reference :Reference-SecurePLCCodingPracticesTop20List . - -:DomainName a owl:Class ; - rdfs:label "Domain Name" ; - rdfs:subClassOf :Identifier, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :IPAddress ] ; - :definition "A domain name is an identification string that defines a realm of administrative autonomy, authority or control within the Internet. Domain names are formed by the rules and procedures of the Domain Name System (DNS). Any name registered in the DNS is a domain name.Domain names are used in various networking contexts and application-specific naming and addressing purposes. In general, a domain name represents an Internet Protocol (IP) resource, such as a personal computer used to access the Internet, a server computer hosting a web site, or the web site itself or any other service communicated via the Internet. In 2015, 294 million domain names had been registered." . - -:DomainNameReputationAnalysis a :DomainNameReputationAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Domain Name Reputation Analysis" ; - rdfs:subClassOf :IdentifierReputationAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :DomainName ] ; - :d3fend-id "D3-DNRA" ; - :definition "Analyzing the reputation of a domain name." ; - :kb-reference :Reference-Database_for_receiving_storing_and_compiling_information_about_email_messages, - :Reference-Finding_phishing_sites . - -:DomainRegistration a owl:Class ; - rdfs:label "Domain Registration" ; - skos:altLabel "Domain Name Registration Data" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :DomainName ] ; - :definition "A domain registration, or domain name registration data, is the relevant registration data from Internet resources such as domain names, IP addresses, and autonomous system numbers. Registration data is typically retrieved by means of either the Registration Data Access Protocol (RDAP) or its predecessor, the WHOIS protocol." ; - rdfs:seeAlso , - . - -:DomainRegistrationTakedown a :DomainRegistrationTakedown, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Domain Registration Takedown" ; - rdfs:subClassOf :ObjectEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :DomainRegistration ] ; - :d3fend-id "D3-DRT" ; - :definition "The process of performing a takedown of the attacker's domain registration infrastructure." ; - :kb-article """## How it works - -Most nameserver hosts and domain name registrars comply with internationally recognised standards and supply their services based on terms and conditions that provide users and organisations protection from abuse and trademark infringement. Performing a WHOIS query on the attacker's domain will provide a contact that can be notified in the case of abuse. Formal takedown processes should be initiated to suspend or disable the normal function of the domain name. - -## Considerations - -- Takedown notifications should clearly demonstrate (with evidence) that the nameserver or registrars Terms and Conditions have been breached. -- Takedown processes are notoriously slow and sometimes unsuccessful. -- Many government organisations will have takedown processes that should also be followed. They may use this for intelligence to assist other organisations suffering an attack. -- Top level domain registrars will have takedown processes that can be followed, as an escalation path, when the nameserver host and/or registrar have not responded or complied timeously or inline with the TLD expectations. - -## Examples of Domain Registration Abuse - -Attackers will create infrastructure from which to carry out their operations and this may include registering domain names to be used in the various attacks. Known misuse cases include: - -- Registering domain names that are similar to the victim's. This is known as typosquatting or URL hijacking. Legitimate looking mails or URLs could be sent using this domain in phishing campaigns. -- Registring domain names that are used in C2 beacons.""" ; - :kb-reference :Reference-UnderstandingtheDomainRegistrationBehaviorofSpammers . - -:DomainTrustPolicy a :DomainTrustPolicy, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Domain Trust Policy" ; - rdfs:subClassOf :AccessPolicyAdministration, - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :DirectoryService ], - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :T1087.002 ] ; - :d3fend-id "D3-DTP" ; - :definition "Restricting inter-domain trust by modifying domain configuration." ; - :kb-reference :Reference-HowTrustRelationshipsWorkForResourceForestsInAzureActiveDirectoryDomainServices . - -:DomainUserAccount a owl:Class ; - rdfs:label "Domain User Account" ; - rdfs:subClassOf :UserAccount ; - :definition "A domain user account in Microsoft Windows (2000) defines that user's access to a logical group of network objects (computers, users, devices) that share the same Active Directory databases; that is, a user's access to a domain." ; - rdfs:seeAlso . - -:DriverLoadIntegrityChecking a :DriverLoadIntegrityChecking, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Driver Load Integrity Checking" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :HardwareDriver ] ; - :d3fend-id "D3-DLIC" ; - :definition "Ensuring the integrity of drivers loaded during initialization of the operating system." ; - :kb-article """## How it works -This technique can be accomplished in a number of ways: - -* A kernel level security agent installed on a host machine ensures that the driver associated with the agent is first in the initialization order. A dependent DLL associated with the driver is configured to be processed before other dependent DLLs and executes a number of operations to ensure the driver associated with the security agent is initialized first. - -* Kernel components can be signed by a certificate obtained by a third party to verify the source of the component and whether it has been modified. When signed, the component will include a signature block implemented as a hash value of the component header and can also include a certificate chain. The signature and certificate data are typically added before the kernel component is distributed to the public. - - -## Considerations - -* The private keys to sign certificates as reputable companies have been stolen in the past -- in cases such as where certificates from Adobe, Realtek, and JMicron have been used to sign malicious executables. (Source: https://resources.infosecinstitute.com/cybercrime-exploits-digital-certificates/#gref) - -* Trusted Root Certificate Authorities have been compromised, yielding the ability to use the compromised keys to generate certificates with an arbitrary company name. - -* It may not be difficult for an attacker to start an organization which can obtain a signed certificate. - -* A root certificate authority (CA) whose certificate is trusted in the verification logic could generate incorrect certificates, if they are lax or have ulterior motives.""" ; - :kb-reference :Reference-IntegrityAssuranceThroughEarlyLoadingInTheBootPhase_CrowdstrikeInc, - :Reference-ProtectedComputingEnvironment_MicrosoftTechnologyLicensingLLC . - -:Dyna-Q a owl:Class, - owl:NamedIndividual ; - rdfs:label "Dyna-Q" ; - rdfs:subClassOf :Model-basedReinforcementLearning ; - :d3fend-id "D3A-DQ" ; - :definition "A Dyna-Q agent combines acting, learning, and planning." ; - :kb-article """## References -CompNeuro Neuromatch Academy Tutorials. [Link](https://compneuro.neuromatch.io/tutorials/W3D4_ReinforcementLearning/student/W3D4_Tutorial4.html)""" . - -:DynamicAnalysis a :DynamicAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Dynamic Analysis" ; - rdfs:subClassOf :FileAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :DocumentFile ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :ExecutableFile ] ; - :d3fend-id "D3-DA" ; - :definition "Executing or opening a file in a synthetic \"sandbox\" environment to determine if the file is a malicious program or if the file exploits another program such as a document reader." ; - :kb-article """## How it works -Analyzing the interaction of a piece of code with a system while the code is being executed in a controlled environment such as a sandbox, virtual machine, or simulator. This exposes the natural behavior of the piece of code without requiring the code to be disassembled. - -## Considerations - * Malware often detects a fake environment, then changes its behavior accordingly. For example, it could detect that the system clock is being sped up in an effort to get it to execute commands that it would normally only execute at a later time, or that the hardware manufacturer of the machine is a virtualization provider. - * Malware can attempt to determine if it is being debugged, and change its behavior accordingly. - * For maximum fidelity, the simulated and real environments should be as similar as possible because the malware could perform differently in different environments. - * Sometimes the malware behavior is triggered only under certain conditions (on a specific system date, after a certain time, or after it is sent a specific command) and can't be detected through a short execution in a virtual environment. - -## Implementations -* Cuckoo Sandbox""" ; - :kb-reference :Reference-MalwareAnalysisSystem_PaloAltoNetworksInc, - :Reference-UseOfAnApplicationControllerToMonitorAndControlSoftwareFileAndApplicationEnvironments_SophosLtd ; - :synonym "Malware Detonation", - "Malware Sandbox" . - -:DynamicAnalysisTool a owl:Class ; - rdfs:label "Dynamic Analysis Tool" ; - rdfs:subClassOf :CodeAnalyzer ; - rdfs:isDefinedBy ; - :definition "Dynamic program analysis is the analysis of computer software that is performed by executing programs on a real or virtual processor." ; - :todo "Find better full description; wikipedia entry is too narrow in focus after first sentence and misses a lot of the security aspects" . - -:ElectricalSignal a owl:Class ; - rdfs:label "Electrical Signal" ; - rdfs:subClassOf :Signal ; - rdfs:isDefinedBy ; - :definition "Time-varying voltage or current that carries information." . - -:ElectromagneticSignal a owl:Class ; - rdfs:label "Electromagnetic Signal" ; - rdfs:subClassOf :Signal ; - rdfs:isDefinedBy ; - :definition "An electromagnetic wave that carries information." . - -:ElectronicCombinationLock a owl:Class ; - rdfs:label "Electronic Combination Lock" ; - rdfs:subClassOf :CombinationLock, - :HardwareDevice, - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :Password ] ; - rdfs:isDefinedBy "NRC Regulatory Guide 5.12 Rev1" ; - :definition "A system comprised of an automatic door closer on the door, an input device, a controlling device, and a lock, usually mechanical, which is released or activated when the correct combination is entered or correct token is presented." ; - rdfs:seeAlso . - -:ElectronicCombinationLockEvent a owl:Class ; - rdfs:label "Electronic Combination Lock Event" ; - rdfs:subClassOf :PhysicalAccessAlarmEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ElectronicCombinationLock ] ; - rdfs:comment "An event occuring when combination lock's bolt changes position." ; - rdfs:seeAlso "NRC Regulatory Guide 5.12 Rev1" . - -:ElectronicLockMonitoring a :ElectronicLockMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Electronic Lock Monitoring" ; - rdfs:subClassOf :PhysicalAccessMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :ElectronicCombinationLock ] ; - :d3fend-id "D3-ELM" ; - :definition "Monitoring electronic lock and door hardware states and access events (e.g., locked/unlocked, access granted/denied, door forced/held, tamper) to detect and respond to unauthorized entry." ; - :kb-article """## How it works - -Electronic lock monitoring collects status and events from door controllers, readers (badge/PIV, keypad), and door hardware (door position switch, request-to-exit, bolt/latch, tamper). The physical access control system (PACS) logs access decisions, correlates door-held/forced conditions, and generates alarms for response. Secure, supervised reader links, such as Open Supervised Device Protocol (OSDP), help detect wiring faults and reduce credential interception. Integration with video systems can pop relevant camera views on lock-related alarms. - -## Considerations - -* Use encrypted, supervised reader-to-controller protocols to protect credentials and detect wiring faults. -* Harden door controllers and isolate the PACS network to limit the attack surface. -* Configure fail-safe or fail-secure behavior and emergency release to meet life-safety requirements. -* Tune alarms for door-held, door-forced, and invalid retries to reduce noise while catching misuse. -* Supervise inputs, provide backup power, and regularly test door, bolt, and tamper sensors to ensure reliability.""" ; - :kb-reference :Reference-FIPS-201-3, - :Reference-NIST-SP800-116r1, - :Reference-NIST-Special-Publication-800-53-Revision-5, - :Reference-SIA-OSDP-2-2 ; - :synonym "Door Lock Monitoring", - "Lock State Monitoring" . - -:Email a owl:Class ; - rdfs:label "Email" ; - rdfs:subClassOf :DocumentFile, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :URL ] ; - :definition "An email, or email message, is a document that is sent between computer users across computer networks." ; - rdfs:seeAlso , - . - -:EmailAttachment a owl:Class ; - rdfs:label "Email Attachment" ; - rdfs:subClassOf :DocumentFile, - [ a owl:Restriction ; - owl:onProperty :attached-to ; - owl:someValuesFrom :Email ] ; - rdfs:isDefinedBy ; - :definition "An email attachment is a computer file sent along with an email message. One or more files can be attached to any email message, and be sent along with it to the recipient. This is typically used as a simple method to share documents and images." . - -:EmailEvent a owl:Class ; - rdfs:label "Email Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :TCPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :MailNetworkTraffic ] ; - :definition "An event involving email communication, including sending, receiving, and processing emails. Email events encapsulate activities essential to the transmission and analysis of email messages in a networked environment." ; - rdfs:seeAlso . - -:EmailFiltering a :EmailFiltering, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Email Filtering" ; - rdfs:subClassOf :InboundTrafficFiltering, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :Email ] ; - :d3fend-id "D3-EF" ; - :definition "Filtering incoming email traffic based on specific criteria." ; - :kb-article """## How it works - -Mail filters can be implemented to scan inbound email messages at the initial SMTP connection stage to detect and reject email containing spam and malware. - -This technique is distinct from d3f:EmailDeletion because it prevents an email from reaching an user's inbox. This technique can also be used for outbound email traffic. - -## Considerations -* The effectiveness of mail filters depend on the completeness of the filter policies""" ; - :kb-reference :Reference-SystemAndMethodForProvidingAnonymousRemailingAndFilteringOfElectronicMail_Nokia . - -:EmailReceiveEvent a owl:Class ; - rdfs:label "Email Receive Event" ; - rdfs:subClassOf :EmailEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :EmailSendEvent ] ; - :definition "An event where an email is delivered to a recipient's mail server or mailbox. This includes receiving messages from internal or external sources via protocols such as IMAP, POP3, or their secure variants." . - -:EmailRemoval a :EmailRemoval, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Email Removal" ; - rdfs:subClassOf :FileEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :Email ], - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :MailServer ] ; - :d3fend-id "D3-ER" ; - :definition "The email removal technique deletes email files from system storage." ; - :kb-article """## How it works - -Email removal is a technique that can be used to prevent a user from executing malware or responding to phishing attempts. Security software or users themselves may detect malicious or suspicious email in a local or remote mail folder email and then employ this technique. - -## Considerations - -For email that needs to be removed, an infosec organization may choose to take additional follow-up actions (such as blocking the sources or notifying providers), rather than only relying on email deletion. - -For the case where users detect likely suspicious email files, the organization should consider implementing a means for reporting these emails to their infosec organization. - -Email files may propagate through many storage systems across the an organization's systems over time, so early detection and blocking helps avoid residual, latent stores of malicous email content in the enterprise.""" ; - :kb-reference :Reference-SystemAndMethodForScanningRemoteServicesToLocateStoredObjectsWithMalware ; - :synonym "Email Deletion" . - -:EmailRule a owl:Class ; - rdfs:label "Email Rule" ; - rdfs:subClassOf :ApplicationRule ; - :definition "A configuration of an email application which is used to apply logical or data processing functions to data processed by the email application." . - -:EmailScanEvent a owl:Class ; - rdfs:label "Email Scan Event" ; - rdfs:subClassOf :EmailEvent ; - :definition "An event where an email is inspected or analyzed for content, security, or compliance purposes. Scanning often involves identifying spam, detecting malware, or ensuring policy adherence before delivery or after reception." . - -:EmailSendEvent a owl:Class ; - rdfs:label "Email Send Event" ; - rdfs:subClassOf :EmailEvent ; - :definition "An event where an email is transmitted from a client to a recipient via a mail server. This process often involves protocols such as SMTP or its secure variants, with potential authentication and encryption for secure delivery." . - -:EmbeddedComputer a owl:Class ; - rdfs:label "Embedded Computer" ; - skos:altLabel "Embedded System" ; - rdfs:subClassOf :ClientComputer ; - rdfs:isDefinedBy ; - :definition "An embedded computer is a computer system -- a combination of a computer processor, computer memory, and input/output peripheral devices-that has a dedicated function within a larger mechanical or electrical system. It is embedded as part of a complete device often including electrical or electronic hardware and mechanical parts. Because an embedded system typically controls physical operations of the machine that it is embedded within, it often has real-time computing constraints. Embedded systems control many devices in common use today. Ninety-eight percent of all microprocessors manufactured are used in embedded systems." . - -:EmbeddedDatabaseApplication a owl:Class ; - rdfs:label "Embedded Database Application" ; - rdfs:subClassOf :DatabaseApplication, - [ a owl:Restriction ; - owl:onProperty :executes ; - owl:someValuesFrom :DatabaseQuery ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :Database ] ; - :definition "A software application that integrates a database management system (DBMS) directly within its own structure, rather than relying on a separate, standalone database server. Examples include SQLite and Berkeley DB." . - -:EmulatedFileAnalysis a :EmulatedFileAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Emulated File Analysis" ; - rdfs:subClassOf :FileAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :DocumentFile ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :ExecutableFile ] ; - :d3fend-id "D3-EFA" ; - :definition "Emulating instructions in a file looking for specific patterns." ; - :kb-reference :Reference-Network-levelPolymorphicShellcodeDetectionUsingEmulation . - -:Enclave a owl:Class ; - rdfs:label "Enclave" ; - skos:altLabel "Network Enclave" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :LocalAreaNetwork ] ; - rdfs:isDefinedBy ; - :definition "Network enclaves consist of standalone assets that do not interact with other information systems or networks. A major difference between a DMZ or demilitarized zone and a network enclave is a DMZ allows inbound and outbound traffic access, where firewall boundaries are traversed. In an enclave, firewall boundaries are not traversed. Enclave protection tools can be used to provide protection within specific security domains. These mechanisms are installed as part of an Intranet to connect networks that have similar security requirements." . - -:EncoderApplication a owl:Class ; - rdfs:label "Encoder Application" ; - rdfs:subClassOf :CodecApplication ; - :definition "An application that encodes digital data." . - -:EncryptedCredential a owl:Class ; - rdfs:label "Encrypted Credential" ; - rdfs:subClassOf :Credential ; - :definition "A credential that is encrypted." . - -:EncryptedPassword a owl:Class ; - rdfs:label "Encrypted Password" ; - rdfs:subClassOf :EncryptedCredential, - :Password ; - :definition "A password that is encrypted." . - -:EncryptedTunnels a :EncryptedTunnels, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Encrypted Tunnels" ; - rdfs:subClassOf :NetworkIsolation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :IntranetNetwork ] ; - :d3fend-id "D3-ET" ; - :definition "Encrypted encapsulation of routable network traffic." ; - :kb-reference :Reference-SecurityArchitectureForTheInternetProtocol . - -:Endpoint-basedWebServerAccessMediation a :Endpoint-basedWebServerAccessMediation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Endpoint-based Web Server Access Mediation" ; - rdfs:subClassOf :WebSessionAccessMediation ; - :d3fend-id "D3-EBWSAM" ; - :definition "Endpoint-based web server access mediation regulates web server access directly from user endpoints by implementing mechanisms such as client-side certificates and endpoint security software to authenticate devices and ensure compliant access." ; - :kb-article """## How it works - -Endpoint-based Web Server Access Mediation focuses on managing access to web servers directly from user devices. This involves implementing security measures like client certificates or endpoint security software to ensure that only authorized devices can initiate sessions with web servers. Examples include direct access to internal web applications from company laptops. -""" ; - :kb-reference :Reference-NIST-Special-Publication-800-41-Revision-1 . - -:EndpointHealthBeacon a :EndpointHealthBeacon, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Endpoint Health Beacon" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :NetworkNode ] ; - :d3fend-id "D3-EHB" ; - :definition "Monitoring the security status of an endpoint by sending periodic messages with health status, where absence of a response may indicate that the endpoint has been compromised." ; - :kb-article """## How it works -Endpoints are configured to periodically generate and transmit a secure heartbeat that is delivered on a configured schedule and provides endpoint status information. Status information can include software details (version, configuration, etc), endpoint identification (MAC, IP address, machine ID) or other hardware/software configuration information. Interruption of the heartbeat can signal that the endpoint has been compromised. - -## Considerations -* Security of heartbeat messages to ensure message integrity -* Disappearance of the heartbeat could simply mean that the endpoint is powered off or intentionally disconnected from the network. Therefore other criteria may need to be used to accurately detect endpoint compromise. -* Attacker presence on the machine may leave the heartbeat intact. -* An attacker may determine the format of the heartbeat and continue to send it even after the machine is compromised.""" ; - :kb-reference :Reference-IntrusionDetectionUsingAHeartbeat_SophosLtd ; - :synonym "Endpoint Health Telemetry" . - -:EndpointSensor a owl:Class ; - rdfs:label "Endpoint Sensor" ; - rdfs:subClassOf :CyberSensor ; - :definition "A sensor application installed on a endpoint (platform) to collect information on platform components." ; - rdfs:seeAlso :ComputerPlatform . - -:EnsembleLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Ensemble Learning" ; - rdfs:subClassOf :MachineLearning ; - :d3fend-id "D3A-EL" ; - :definition "In statistics and machine learning, ensemble methods use multiple learning algorithms to obtain better predictive performance than could be obtained from any of the constituent learning algorithms alone" ; - :kb-article """## References -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning).""" . - -:EpistemicLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Epistemic Logic" ; - rdfs:subClassOf :ModalLogic ; - :d3fend-id "D3A-EL" ; - :definition "Epistemic logic addresses modalities of knowledge; i.e., the certainty of sentences." ; - :kb-article """## References -1. Epistemic logic. (2023, June 4). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Modal_logic#Epistemic_logic)""" ; - :synonym "Epistemic Modal Logic" . - -:EquivalenceMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Equivalence Matching" ; - rdfs:subClassOf :LogicalRules ; - :d3fend-id "D3A-EM" ; - :definition "Equivalence matching is matching two values, which may be bound to variables, to see if they are equivalent." ; - :kb-article """## How it works -Equality is a relationship between two quantities or, more generally two mathematical expressions, asserting that the quantities have the same value, or that the expressions represent the same mathematical object. - -Programming languages can have multiple senses of equality that may include, but are not limited to: - -- Identity: The objects are identical; often indicated by having values indicating the same logical address. -- Equality: The values of the expessions and properties are equivalent when evaluated; they do not need to have the same logical address. - -## References -1. Equality (mathematics). (2023, May 31). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Equality_(mathematics)] -2. Types of Equality. (2007, March 2). In _WikiWikiWeb_. [Link](https://wiki.c2.com/?TypesOfEquality)""" . - -:Estimation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Estimation" ; - rdfs:subClassOf :InferentialStatistics ; - :d3fend-id "D3A-EST" ; - :definition "Estimation represents ways or a process of learning and determining the population parameter based on the model fitted to the data." ; - :kb-article """## References -Pennsylvania State University. (n.d.). Statistical Inference and Estimation. [Link](https://online.stat.psu.edu/stat504/lesson/statistical-inference-and-estimation)""" ; - :todo "Seems like there should be more than just interval and pont estimation in here." . - -:EvalFunction a owl:Class ; - rdfs:label "Eval Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :Subroutine ] ; - :definition "Takes inputs of strings and evaluations them as expressions." . - -:Event a owl:Class ; - rdfs:label "Event" ; - rdfs:subClassOf :D3FENDCore ; - :definition "An Event is an occurrence or action within a system, process, or environment within a finite span of time." . - -:EventLog a owl:Class ; - rdfs:label "Event Log" ; - rdfs:subClassOf :Log, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :DigitalEventRecord ] ; - rdfs:isDefinedBy ; - :definition "Event logs record events taking place in the execution of a system in order to provide an audit trail that can be used to understand the activity of the system and to diagnose problems. They are essential to understand the activities of complex systems, particularly in the case of applications with little user interaction (such as server applications)." ; - :synonym "Digital Event Log" . - -:EventLogArchiveEvent a owl:Class ; - rdfs:label "Event Log Archive Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event involving the archiving of event log data, typically to preserve historical records in a compressed or secure format." . - -:EventLogClearEvent a owl:Class ; - rdfs:label "Event Log Clear Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event where the event log data is cleared from the system, often as part of log maintenance or potentially to cover tracks." . - -:EventLogDeleteEvent a owl:Class ; - rdfs:label "Event Log Delete Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event where the event log database, file, or cache is deleted from the system, removing the log's historical records." . - -:EventLogDisableEvent a owl:Class ; - rdfs:label "Event Log Disable Event" ; - rdfs:subClassOf :EventLogEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :EventLogEnableEvent ] ; - :definition "An event indicating that the event logging service has been disabled, preventing it from collecting or recording logs." . - -:EventLogEnableEvent a owl:Class ; - rdfs:label "Event Log Enable Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event where the event logging service is enabled, allowing it to actively collect and record logs." . - -:EventLogEvent a owl:Class ; - rdfs:label "Event Log Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :EventLog ] ; - :definition "An event that captures actions or operations related to the management of system event logs, including modifications, access, and service state changes." ; - rdfs:seeAlso . - -:EventLogExportEvent a owl:Class ; - rdfs:label "Event Log Export Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event representing the export of event log data to a file or external system for backup or analysis purposes." . - -:EventLogRestartEvent a owl:Class ; - rdfs:label "Event Log Restart Event" ; - rdfs:subClassOf :EventLogEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :EventLogStopEvent ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :EventLogStartEvent ] ; - :definition "An event representing the restarting of the event logging service, often performed during system maintenance or troubleshooting." . - -:EventLogRotateEvent a owl:Class ; - rdfs:label "Event Log Rotate Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event where the event log is rotated, often as part of log rotation policies to manage storage and ensure continuity." . - -:EventLogStartEvent a owl:Class ; - rdfs:label "Event Log Start Event" ; - rdfs:subClassOf :EventLogEvent ; - :definition "An event where the event logging service is started, enabling the collection and recording of system events." . - -:EventLogStopEvent a owl:Class ; - rdfs:label "Event Log Stop Event" ; - rdfs:subClassOf :EventLogEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :EventLogStartEvent ] ; - :definition "An event indicating that the event logging service has been stopped, halting the recording of system events." . - -:Evict a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Evict" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The eviction tactic is used to remove an adversary from a computer network." ; - :display-order 4 ; - :display-priority 0 . - -:EvictionEvent a owl:Class, - owl:NamedIndividual ; - rdfs:label "Eviction Event" ; - rdfs:subClassOf :SecurityEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :DetectionEvent ] ; - :definition "An event describing actions to remove adversaries or malicious resources from a system, re-establishing security and operational integrity." ; - :related :Evict . - -:ExactMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Exact Matching" ; - rdfs:subClassOf :EquivalenceMatching, - :NumericPatternMatching ; - :d3fend-id "D3A-EM" ; - :definition "Exact matching for numeric types is just the simple test for mathematical equivalence of the values being matched." ; - :kb-article """## References -1. Equality (mathematics). (2023, May 31). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Equality_(mathematics)]""" ; - :synonym "Numeric Equivalence Matching" . - -:ExceptionHandler a owl:Class ; - rdfs:label "Exception Handler" ; - rdfs:subClassOf :Subroutine ; - :definition "An exception handler is a code segment that processes an exception." ; - rdfs:seeAlso . - -:ExceptionHandlerPointerValidation a :ExceptionHandlerPointerValidation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Exception Handler Pointer Validation" ; - rdfs:subClassOf :ApplicationHardening, - [ a owl:Restriction ; - owl:onProperty :validates ; - owl:someValuesFrom :Pointer ] ; - :d3fend-id "D3-EHPV" ; - :definition "Validates that a referenced exception handler pointer is a valid exception handler." ; - :kb-article """## How It Works -When a process encounters an exception, it calls an exception handler to deal with the exception. The method by which this exception handler is determined varies by the operating system. The exception handler is called, even if it is the default exception handler to terminate the program and display a message that the program stopped working. In the case that no valid exception handler is found, the program would fail to proceed as normal and could be programmed to terminate. - -In Windows, the address of the exception registration record is stored at the very start of the the Thread Information Block; the GS register points to this structure. - -The exception registration record contains two pointers: a pointer to the next exception registration record should this handler fail to handle the exception, and a pointer to the handler. - -A buffer overflow can overwrite the saved return pointer with an invalid location to execute memory; this often triggers the exception handler chain, which could also be corrupted by the buffer overflow. Although Process Exception Handler Validation does not make sure that the exception handler pointer or the code at the exception handler was unaltered, or that the exception handler code is secure, this technique does ensure that the pointer is at least an exception handler that could be called by the program. - -With Process Exception Handler Validation, before the handler is called, it checks the exception handler against a source of valid exception handlers. If the requested handler is not in this list, other techniques such as those in Process Eviction might be invoked, such as Process Termination to end the current process, or Executable Blacklisting to blacklist the potentially vulnerable or malfunctioning executable. - -### Runtime valid exception handler source generation -The source of valid exception handlers could be generated at runtime, with the risk of the information that is used to determine the validity of exception handlers being compromised. - -### Compile-time -The source of valid exception handlers could also be generated at compile time or as a binary patch. Given the source code, it would be rather straightforward to find the exceptions, as they are pointed in the catch statement of a try-catch clause and the compiler must already generate the code to call exceptions from this. - -## Considerations -If the program file can be altered by the attacker, then the security could be bypassed by replacing it with any desired program, without even bypassing SEH. - -If the attacker was already able to overwrite the code for a valid exception handler via other functionality in the program, this defense would not prevent arbitrary code execution. -If an exception handler recognized as valid is vulnerable, it would be executed anyway. - -SafeSEH might be applied only to some executable files or modules, allowing an attacker to call any piece of code as an exception handler in the unprotected modules.""" ; - :kb-reference :Reference-SAFESEH_ImageHasSafeExceptionHandlers_MicrosoftDocs ; - :synonym "Exception Handler Validation" . - -:Exec a owl:Class ; - rdfs:label "Exec" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :executes ; - owl:someValuesFrom :ExecutableBinary ] ; - rdfs:seeAlso . - -:ExecutableAllowlisting a :ExecutableAllowlisting, - owl:Class, - owl:NamedIndividual, - :PlatformHardening ; - rdfs:label "Executable Allowlisting" ; - rdfs:subClassOf :ExecutionIsolation, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :ExecutableFile ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :CreateProcess ] ; - :d3fend-id "D3-EAL" ; - :definition "Using a digital signature to authenticate a file before opening." ; - :kb-article """## How it works - -This technique is generic and there are numerous ways to compute and authenticate digital signatures. -A digital certificate is generated from a private/public key pair issued by a certificate authority (CA). A hash of the file is encrypted using the private key. When the file is downloaded by another user, the user's system uses the public key to decrypt the hash and a new hash is created of the downloaded file. The hash decrypted by the public key is compared to the new hash and if there is a mismatch, further techniques, such as file deletion, file quarantine, or **Executable Blacklisting** may be invoked. - -This technique may be invoked when deciding whether to execute a file. - -## Considerations - -Organizations which download or create high volumes of software make management complex, in particular engineering or scientific organizations.""" ; - :kb-reference , - :Reference-EnhancingNetworkSecurityByPreventingUser-InitiatedMalwareExecution_ ; - :synonym "File Signature Authentication" . - -:ExecutableBinary a owl:Class ; - rdfs:label "Executable Binary" ; - rdfs:subClassOf :ExecutableFile, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ImageCodeSegment ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ImageDataSegment ], - [ a owl:Restriction ; - owl:onProperty :may-interpret ; - owl:someValuesFrom :ExecutableScript ] ; - :definition "An executable binary contains machine code instructions for a physical CPU. D3FEND also considers byte code for a virtual machine to be binary code. This is in contrast to executable scripts written in a scripting language." ; - rdfs:seeAlso . - -:ExecutableDenylisting a :ExecutableDenylisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Executable Denylisting" ; - rdfs:subClassOf :ExecutionIsolation, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :ExecutableFile ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :CreateProcess ] ; - :d3fend-id "D3-EDL" ; - :definition "Blocking the execution of files on a host in accordance with defined application policy rules." ; - :kb-article """## How it works - -#### Criteria - -A policy-enforcing application can register an application for denylisting based on conditions including the following: - -* File attributes - * file name - * file path - * file hash - * file publisher, as obtained from the digital signature - * permissions of the file -* File malware scan (eg. Windows SmartScreen) -* User-File combination - -This may be done to prevent execution of applications which are: - -* an old version with known vulnerabilities -* without a valid license, which could cause legal issues -* in a directory that is accessible to low-privileged users, that could be accessed by a malware dropper -* known trojan horse programs -* too open in their permissions, possibly set to run as a user other than the originator or allowing execution when they should not be -* a match to the hash of other known malware -* are detected as undesirable based on a file scan runtime behavior - -System administrators will customize the rules for the given environment. - -#### Backend - -The policy-enforcing program may work by running in kernel mode, and [intercepting] [system calls which execute a process]. - -## Considerations - -* If denylisting is done by filename, filepath, or hash, these mechanisms may be a worthy first line of defense and detection, but could still be evaded by an attacker. -* Continuous management is needed to keep the denylist up to date, whether it is based on hash, publisher, behavior, or any other digital artifact. -* Although denylists based on attributes such as file path and virus scan could defend against some threats which they have not been explicitly coded to block, denylists may not provide protection from new, unknown, or zero day attacks. - - -## Examples -On a Windows machine the Windows Defender Application Control (WDAC) policy enforcement is run in the kernel and allows for restricting applications.""" ; - :kb-reference , - :Reference-MethodAndApparatusForIncreasingTheSpeedAtWhichComputerVirusesAreDetected_McAfeeLLC ; - :synonym "Executable Blacklisting" . - -:ExecutableFile a owl:Class ; - rdfs:label "Executable File" ; - skos:altLabel "Executable" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Subroutine ] ; - rdfs:isDefinedBy ; - :definition "In computing, executable code or an executable file or executable program, sometimes simply an executable, causes a computer \"to perform indicated tasks according to encoded instructions,\" as opposed to a data file that must be parsed by a program to be meaningful. These instructions are traditionally machine code instructions for a physical CPU. However, in a more general sense, a file containing instructions (such as bytecode) for a software interpreter may also be considered executable; even a scripting language source file may therefore be considered executable in this sense. The exact interpretation depends upon the use; while the term often refers only to machine code files, in the context of protection against computer viruses all files which cause potentially hazardous instruction" . - -:ExecutableScript a owl:Class ; - rdfs:label "Executable Script" ; - rdfs:subClassOf :ExecutableFile ; - :definition "An executable script is written in a scripting language and interpreted at run time. This is in contrast with an executable binary, which contains machine code instructions for a physical CPU or byte code for a virtual machine." ; - rdfs:seeAlso . - -:ExecutionIsolation a :ExecutionIsolation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Execution Isolation" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Isolate ] ; - :d3fend-id "D3-EI" ; - :definition "Execution Isolation techniques prevent application processes from accessing non-essential system resources, such as memory, devices, or files." ; - :enables :Isolate . - -:ExecutionTechnique a owl:Class ; - rdfs:label "Execution Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0002 ] ; - :definition "The adversary is trying to run malicious code." . - -:ExfiltrationTechnique a owl:Class ; - rdfs:label "Exfiltration Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0010 ] ; - :definition "The adversary is trying to steal data." . - -:Expectation-maximizationClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Expectation-maximization Clustering" ; - rdfs:subClassOf :Distribution-basedClustering ; - :d3fend-id "D3A-EMC" ; - :definition "An unsupervised clustering algorithm and extends to NLP applications like Latent Dirichlet Allocation, the Baum-Welch algorithm for Hidden Markov Models, and medical imaging." ; - :kb-article """## References -Towards Data Science. (n.d.). Expectation Maximization Explained. [Link](https://towardsdatascience.com/expectation-maximization-explained-c82f5ed438e5#:~:text=Expectation%20Maximization%20(EM)%20is%20a,Markov%20Models%2C%20and%20medical%20imaging.)""" . - -:ExpectedErrorReduction a owl:Class, - owl:NamedIndividual ; - rdfs:label "Expected Error Reduction" ; - rdfs:subClassOf :ActiveLearning ; - :d3fend-id "D3A-EER" ; - :definition "Expected Error Reduction (EER) follows similar ideas as EMC, but again looks at the model output instead of the model itself and also takes the other data into account. In particular, a sample x is considered useful, if we can expect that knowing the label will reduce the future error on unseen samples" ; - :kb-article """## References -Intro to Active Learning. inovex Blog. [Link](https://www.inovex.de/de/blog/intro-to-active-learning/).""" . - -:ExpectedModelChange a owl:Class, - owl:NamedIndividual ; - rdfs:label "Expected Model Change" ; - rdfs:subClassOf :ActiveLearning ; - :d3fend-id "D3A-EMC" ; - :definition "Supervised learning establishes a relationship between the known input and output variables to conduct a predictive analysis." ; - :kb-article """nal Consiterations - -## References -Intro to Active Learning. inovex Blog. [Link](https://www.inovex.de/de/blog/intro-to-active-learning/).""" . - -:ExternalContentInclusionFunction a owl:Class ; - rdfs:label "External Content Inclusion Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :File ] ; - :definition "A subroutine which handles a content inclusion directive from an original file. When invoked, the external content is included in the resulting open file." . - -:ExternalControl a owl:Class ; - rdfs:label "External Control" ; - rdfs:subClassOf :ExternalControlThing, - [ a owl:Restriction ; - owl:onProperty :member-of ; - owl:someValuesFrom :ControlCatalog ], - [ a owl:Restriction ; - owl:onProperty :semantic-relation ; - owl:someValuesFrom :DefensiveTechnique ] . - -:ExternalControlThing a owl:Class ; - rdfs:label "External Control Thing" ; - rdfs:subClassOf :ExternalThing . - -:ExternalKnowledgeBase a owl:Class ; - rdfs:label "External Knowledge Base" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "External Knowledge Base" ; - :todo "Consider working on alias or new preferred name... meh on \"Knowledge Content Entity\", not sure \"External\" is helpful in conveying core concept; examples would be DBPedia, ATT&CK, CAPEC, CVE, ..., we included CAR; maybe even STIG or are they better as Guidance?" . - -:ExternalThing a owl:Class ; - rdfs:label "External Thing" . - -:ExternalThreatModelThing a owl:Class ; - rdfs:label "External Threat Model Thing" ; - rdfs:subClassOf :ExternalThing . - -:FastSymbolicLink a owl:Class ; - rdfs:label "Fast Symbolic Link" ; - skos:altLabel "Fast Symlink" ; - rdfs:subClassOf :SymbolicLink, - :UnixLink ; - owl:disjointWith :SlowSymbolicLink ; - rdfs:isDefinedBy ; - :definition "Fast symbolic links, allow storage of the target path within the data structures used for storing file information on disk (e.g., within the inodes). This space normally stores a list of disk block addresses allocated to a file. Thus, symlinks with short target paths are accessed quickly. Systems with fast symlinks often fall back to using the original method if the target path exceeds the available inode space." ; - rdfs:seeAlso . - -:File a owl:Class ; - rdfs:label "File" ; - rdfs:subClassOf :Resource, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :FileSection ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :URL ] ; - :definition "A file maintained in computer-readable form." ; - rdfs:seeAlso . - -:FileAccessEvent a owl:Class ; - rdfs:label "File Access Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :FilePathOpenFunction ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event where a file is accessed for operations such as reading, opening, or inspecting its contents or metadata, without necessarily modifying its state." . - -:FileAccessPatternAnalysis a :FileAccessPatternAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Access Pattern Analysis" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :LocalResourceAccess ] ; - :d3fend-id "D3-FAPA" ; - :definition "Analyzing the files accessed by a process to identify unauthorized activity." ; - :kb-article """## How it works -File modifying malware such as wipers and ransomware are detected by identifying file access patterns that are associated with a malicious process. Examples of file access patterns include accessing a large number of files, accessing multiple file types, files being accessed located in multiple locations in a directory, and copying a file and encrypting the contents of that file into a copy. - -## Considerations -Certain file access actions may not be statistically different from authorized activity.""" ; - :kb-reference :Reference-File-modifyingMalwareDetection_CrowdstrikeInc . - -:FileAnalysis a :FileAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Analysis" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-FA" ; - :definition "File Analysis is an analytic process to determine a file's status. For example: virus, trojan, benign, malicious, trusted, unauthorized, sensitive, etc." ; - :enables :Detect ; - :kb-article """## Technique Overview -Some techniques use file signatures or file metadata to compare against historical collections of malware. Files may also be compared against a source of ground truth such as cryptographic signatures. Examining files for potential malware using pattern matching against file contents/file behavior. Binary code may be dissembled and analyzed for predictive malware behavior, such as API call signatures. Analysis might occur within a protected environment such as a sandbox or live system.""" . - -:FileCarving a :FileCarving, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Carving" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileTransferNetworkTraffic ] ; - :d3fend-id "D3-FC" ; - :definition "Identifying and extracting files from network application protocols through the use of network stream reassembly software." ; - :kb-article """## How it works -Protocol stream reassembly software recreates a directional byte stream by analyzing captured network packets. Once the stream is reassembled pattern matching is applied to determine if it contains a file of interest. Files of interest range from executable, archive, or document file formats. Once the file is captured, it is then processed with standard File Analysis Techniques. Example network protocols include HTTP, SMTP, FTP, HTTP/2, and TLS/HTTP/Dropbox. - -## Considerations -- This is an error prone process due to the intricacies of network protocols and network packet capture. For example reassembly may be done in real-time or streaming fashion, or packets may be written to disk, then bulk processed. The packets may arrive out of order, with fragmentation, duplicates, or re-transmissions. The reassembly software must compensate for the imperfect packet stream in order to recreate the well formed file which was transmitted. -- File type identification can be a difficult process which can be exploited by adversaries.""" ; - :kb-reference :Reference-ComputerWormDefenseSystemAndMethod_FireEyeInc . - -:FileContentAnalysis a :FileContentAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Content Analysis" ; - rdfs:subClassOf :FileAnalysis ; - :d3fend-id "D3-FCOA" ; - :definition "Employing a pattern matching algorithm to statically analyze the content of files." ; - :kb-article """## How it works -Analyzing a piece of code without it being executed in a sandbox, virtual machine, or simulator. Patterns or signatures in the file can indicate whati kind of software it is, including whether it is malware.""" ; - :kb-reference :Reference-CyberVaccineAndPredictiveMalwareDefensiveMethodsAndSystems . - -:FileContentBlock a owl:Class ; - rdfs:label "File Content Block" ; - rdfs:subClassOf :FileSection ; - :definition "A section within a file that contains the main content or data payload." . - -:FileContentBlockData a owl:Class ; - rdfs:label "File Content Block Data" ; - rdfs:subClassOf :DigitalInformation ; - :definition "The actual content or main data within a file or data block." . - -:FileContentBlockMetadata a owl:Class ; - rdfs:label "File Content Block Metadata" ; - rdfs:subClassOf :FileMetadata ; - :definition "Content Blocks may contain metadata specific to the block's content at the beginning." . - -:FileContentDecompressionChecking a :FileContentDecompressionChecking, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Content Decompression Checking" ; - rdfs:subClassOf :FileFormatVerification, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileContentBlockData ] ; - :d3fend-id "D3-FCDC" ; - :definition "Checking if compressed or encoded data sections can be successfully decompressed or decoded. Can follow with further analysis with semantic knowledge" ; - :kb-article """## How it works - -Some file formats such as JPEGs include encoded or compressed sections. This technique verfies that those expected sections are present and can be properly decoded according to the spec.""" ; - :kb-reference :Reference-CarvingContiguousandFragmentedFilesWithFastObjectValidation, - :Reference-GatheringEvidenceModel-DrivenSoftwareEngineeringinAutomatedDigitalForensics . - -:FileContentRules a :FileContentRules, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Content Rules" ; - rdfs:subClassOf :FileContentAnalysis ; - :d3fend-id "D3-FCR" ; - :definition "Employing a pattern matching rule language to analyze the content of files." ; - :kb-article """## How it works -Rules, often called signatures, are used for both generic and targeted malware detection. The rules are usually expressed in a domain specific language (DSL), then deployed to software that scans files for matches. The rules are developed and broadly distributed by commercial vendors, or they are developed and deployed by enterprise security teams to address highly targeted or custom malware. Conceptually, there are public and private rule sets. Both leverage the same technology, but they are intended to detect different types of cyber adversaries. - -## Considerations -* Patterns expressed in the DSLs range in their complexity. Some scanning engines support file parsing and normalization for high fidelity matching, others support only simple regular expression matching against raw file data. Engineers must make a trade-off in terms of: - * The fidelity of the matching capabilities in order to balance high recall with avoiding false positives, - * The computational load for scanning, and - * The resilience of the engine to deal with adversarial content presented in different forms-- content which in some cases is designed to exploit or defeat the scanning engines. - * Signature libraries can become large over time and impact scanning performance. - * Some vendors who sell signatures have to delete old signatures over time. - * Simple signatures against raw content cannot match against encoded, encrypted, or sufficiently obfuscated content. - -## Implementations - * YARA - * ClamAV""" ; - :kb-reference :Reference-ComputationalModelingAndClassificationOfDataStreams_CrowdstrikeInc, - :Reference-DetectingScript-basedMalware_CrowdstrikeInc, - :Reference-DistributedMeta-informationQueryInANetwork_Bit9Inc, - :Reference-SystemAndMethodsThereofForLogicalIdentificationOfMaliciousThreatsAcrossAPluralityOfEnd-pointDevicesCommunicativelyConnectedByANetwork_PaloAltoNetworksIncCyberSecdoLtd ; - :synonym "File Content Signatures", - "File Signatures" . - -:FileCopyEvent a owl:Class ; - rdfs:label "File Copy Event" ; - rdfs:subClassOf :FileCreationEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileAccessEvent ] ; - :definition "An event where a file is duplicated, creating a new file in a different location or under a different name while preserving the original file's content and attributes." . - -:FileCreationAnalysis a :FileCreationAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Creation Analysis" ; - rdfs:subClassOf :SystemCallAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :CreateFile ] ; - :d3fend-id "D3-FCA" ; - :definition "Analyzing the properties of file create system call invocations." ; - :kb-reference :Reference-CAR-2020-09-001%3AScheduledTask-FileAccess_MITRE, - :Reference-LsassProcessDumpViaProcdump_MITRE . - -:FileCreationEvent a owl:Class ; - rdfs:label "File Creation Event" ; - rdfs:subClassOf :FileEvent ; - :definition "An event representing the creation of a new file within the system, establishing its existence and initial attributes in the file system or storage medium." . - -:FileDecryptionEvent a owl:Class ; - rdfs:label "File Decryption Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileEncryptionEvent ] ; - :definition "An event where a previously encrypted file is decoded, rendering its content accessible to authorized users or processes." . - -:FileDeletionEvent a owl:Class ; - rdfs:label "File Deletion Event" ; - rdfs:subClassOf :FileEvent ; - :definition "An event where a file is permanently removed from the file system or storage medium, potentially triggering actions related to data retention or recovery." . - -:FileEncryption a :FileEncryption, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Encryption" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :encrypts ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-FE" ; - :definition "Encrypting a file using a cryptographic key." ; - :kb-article """## How it Works -Files are encrypted using either a single key for both encryption and decryption or separate keys. Single key encryption is symmetric encryption and using two key distinct keys is asymmetric encryption. - -### Symmetric Cryptography -Symmetric encryption uses the same cryptographic key for both the encryption and decryption a file. Managing keys at scale sometimes uses asymmetric key exchange. Protocols such as RSA or Diffie-Hellman can be used to share the symmetric cryptographic key with the others. - -### Asymmetric Cryptography -Asymmetric encryption is typically accomplished using public and private key certificates based on the X.509 standard. Files are encrypted using the public key and decrypted using their private key. Asymmetric encryption is typically slower than symmetric encryption and not widely used for large file encryption, but is popular for key wrapping, key exchanges, and digital signatures. - -## Considerations -- Continuous monitoring must be carried out to ensure private keys are not compromised and the certificate authority (CA) is trusted. -- Transfer of private keys between multiple devices must be performed securely.""" ; - :kb-reference :Reference-FileEncryption101SafeguardingYourSensitiveData, - :Reference-GuideToStorageEncryptionTechnologiesForEndUserDevices, - :Reference-SecurityConsiderationsForExchangingFilesOverTheInternet . - -:FileEncryptionEvent a owl:Class ; - rdfs:label "File Encryption Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event involving the application of cryptographic techniques to a file, ensuring its content is securely encoded and inaccessible without proper decryption keys." . - -:FileEvent a owl:Class ; - rdfs:label "File Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :File ] ; - :definition "An event involving operations performed on digital files, encompassing actions such as creation, modification, deletion, access, and attribute or permission changes." ; - rdfs:seeAlso . - -:FileEviction a :FileEviction, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Eviction" ; - rdfs:subClassOf :ObjectEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-FEV" ; - :definition "File eviction techniques delete files from system storage." ; - :kb-article """## How it works - -Adversaries may place files or programs into a computer's file system to perform malicious actions. As part of the eviction process, these files and programs should be removed to prevent further compromise or reinfection. Examples of malicious types of files are malware which is directly harmful and content files with the intent to deceive users (e.g., phishing.) - -On Windows systems, antivirus (AV) software should be used to safely and permanently remove malicious files. AV software may first quarantine a suspected malicious file, which is the process of moving a file from its original location to a new location and makes changes so that it cannot be executed. Users can then verify that the file is not benign and then permanently delete it. - -## Considerations - -When it is determined that a file should be removed for security purposes, the organization--or systems implementing an organization's policies--may determine that the file should not simply be deleted from the enterprise's mission systems, but be quarantined to a secure system by an approved mechanism, so as to allow follow-up investigation by security staff. - -On Windows systems, deleting a file in File Explorer does not permanently delete a file - it sends it to the Recycle Bin instead. The Recycle Bin must be emptied, or alternative steps must be performed to remove files completely. Even then, in some cases the data may persist in disk, so data shredder tools may be needed to completely wipe a file. Thus, AV tools are recommended.""" ; - :kb-reference :Reference-HowDoesAntivirusQuarantineWork-SafetyDetectives . - -:FileFooterBlock a owl:Class ; - rdfs:label "File Footer Block" ; - rdfs:subClassOf :FileSection ; - :definition "A section at the end of a file that contains metadata or control information." . - -:FileFooterBlockContent a owl:Class ; - rdfs:label "File Footer Block Content" ; - rdfs:subClassOf :FileMetadata ; - :definition "The content of a footer block not including the signature." . - -:FileFooterBlockSignature a owl:Class ; - rdfs:label "File Footer Block Signature" ; - rdfs:subClassOf :FileMetadata ; - :definition "A sequence of bytes used to identify and validate the footer section within a file." . - -:FileFormatVerification a :FileFormatVerification, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Format Verification" ; - rdfs:subClassOf :ContentValidation, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileSection ] ; - :d3fend-id "D3-FFV" ; - :definition "Verifying that a file conforms to its expected format specifications" ; - :kb-reference :Reference-FileSecurityUsingFileFormatValidation_OPSWATInc . - -:FileGetAttributesEvent a owl:Class ; - rdfs:label "File Get Attributes Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileAccessEvent ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event where a file's metadata attributes, such as size, creation date, or type, are queried or retrieved without altering its content." . - -:FileGetPermissionsEvent a owl:Class ; - rdfs:label "File Get Permissions Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event where a file's security settings or access control list (ACL) is retrieved, detailing permissions granted to users or processes." . - -:FileHash a owl:Class, - owl:NamedIndividual ; - rdfs:label "File Hash" ; - rdfs:subClassOf :DigitalFingerprint, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :File ] ; - :definition "A File Hash is a fixed-length, unique digital fingerprint generated by applying a cryptographic hash function to the contents of a file." . - -:FileHashing a :FileHashing, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Hashing" ; - rdfs:subClassOf :FileAnalysis ; - :d3fend-id "D3-FH" ; - :definition "Employing file hash comparisons to detect known malware." ; - :kb-article """## How it works -This technique requires a list of hashes to compare a file against. - -## Considerations -Performance on large files or very large numbers of files.""" ; - :kb-reference :Reference-Munin . - -:FileHashReputationAnalysis a :FileHashReputationAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Hash Reputation Analysis" ; - rdfs:subClassOf :IdentifierReputationAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileHash ] ; - :d3fend-id "D3-FHRA" ; - :definition "Analyzing the reputation of a file hash." ; - :kb-reference :Reference-Reputation_of_an_entity_associated_with_a_content_item . - -:FileHeaderBlock a owl:Class ; - rdfs:label "File Header Block" ; - rdfs:subClassOf :FileSection ; - :definition "Headers are sections of a file that organize and provide information about specific sections or components of the file. Typically found at the beginning of a file, they often contain file type identification, version information, and metadata such as size, format, and encoding." . - -:FileHeaderBlockContent a owl:Class ; - rdfs:label "File Header Block Content" ; - rdfs:subClassOf :FileMetadata ; - :definition "The content of a header block not including the signature." . - -:FileHeaderBlockSignature a owl:Class ; - rdfs:label "File Header Block Signature" ; - rdfs:subClassOf :FileMetadata ; - :definition "A sequence of bytes used to identify and validate specific header sections within a file." . - -:FileIntegrityMonitoring a :FileIntegrityMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Integrity Monitoring" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-FIM" ; - :definition "Detecting any suspicious changes to files in a computer system." ; - :kb-article """## How it Works -There are a number of tools in Windows and Unix that can monitor specific files in a system and generate alerts if any artifacts have been created, modified, or removed. They accomplish this by comparing the current artifacts to a previous snapshot. - -Unix - Unix systems have a file integrity checker tool called tripwire. Tripwire first initializes a database that serves as a basis for comparison and can then scan the system to compare the state of the current file system against the initial baseline database. Additionally, users can define policies that specify potential violations. - -Windows - In Microsoft Azure, file integrity monitoring can be enabled which can track file and registry key creation, removals, and modifications of specific files. - -## Considerations -Files can change constantly due to the non-static nature of a computer system. File Integrity Monitoring works best when pointed at a narrow scope of critical files to limit the number of unneccessary files that may be modified over the course of normal use. The accuracy and precision of defined policies also affect the efficacy of this technique.""" ; - :kb-reference :Reference-FileIntegrityMonitoringinMicrosoftDefenderforCloud-Microsoft, - :Reference-Tripwire . - -:FileInternalStructureVerification a :FileInternalStructureVerification, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Internal Structure Verification" ; - rdfs:subClassOf :FileFormatVerification, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileContentBlock ] ; - :d3fend-id "D3-FISV" ; - :definition "The process of checking specific static values within a file, such as file signatures or magic numbers, to ensure they match the expected values defined by the file format specification." ; - :kb-article """## How it works - -File format specifications often define expected values for specific fields. A common example are file signatures, or magic numbers, which are used to quickly identify files. Another example is within the Compound Document Header of Microsoft Office files, the 29th and 30th byte identifies the byte order, specifically 0xFFFE for little-endian. This technique verifies that the file's static values match the values of the declared file format's specification.""" ; - :kb-reference :Reference-CarvingContiguousandFragmentedFilesWithFastObjectValidation, - :Reference-GatheringEvidenceModel-DrivenSoftwareEngineeringinAutomatedDigitalForensics . - -:FileMagicBytes a owl:Class ; - rdfs:label "File Magic Bytes" ; - rdfs:subClassOf :FileHeaderBlockSignature ; - :definition "A specific type of header signature located at the beginning of a file, used to identify the file format." . - -:FileMagicByteVerification a :FileMagicByteVerification, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Magic Byte Verification" ; - rdfs:subClassOf :FileMetadataValueVerification, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileMagicBytes ] ; - :d3fend-id "D3-FMBV" ; - :definition "Utilizing the magic number to verify the file" ; - :kb-article """## How it works - -Many file formats use magic numbers to identify a file format or protocol. Verifying that the magic number matches the expected value of its declared format is a simple way of verifying the file format.""" ; - :kb-reference :Reference-CarvingContiguousandFragmentedFilesWithFastObjectValidation, - :Reference-GatheringEvidenceModel-DrivenSoftwareEngineeringinAutomatedDigitalForensics . - -:FileMetadata a owl:Class ; - rdfs:label "File Metadata" ; - rdfs:subClassOf :Metadata ; - :definition "Information that describes and provides context about a file's content, structure, and attributes." . - -:FileMetadataConsistencyValidation a :FileMetadataConsistencyValidation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Metadata Consistency Validation" ; - rdfs:subClassOf :FileFormatVerification, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileContentBlockData ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileMetadata ] ; - :d3fend-id "D3-FMCV" ; - :definition "The process of validating the consistency between a file's metadata and its actual content, ensuring that elements like declared lengths, pointers, and checksums accurately describe the file's content." ; - :kb-article """## How it works - -This technique involves validating the consistency between a file's metadata and its actual content. It checks elements like declared lengths, pointers, and checksums to ensure they accurately describe the file's content. For instance, if a header specifies a content block of 50 bytes, this should be verified, and CRC values should be recalculated and compared.""" ; - :kb-reference :Reference-GatheringEvidenceModel-DrivenSoftwareEngineeringinAutomatedDigitalForensics . - -:FileMetadataValueVerification a :FileMetadataValueVerification, - owl:Class, - owl:NamedIndividual ; - rdfs:label "File Metadata Value Verification" ; - rdfs:subClassOf :FileFormatVerification, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileFooterBlock ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :FileHeaderBlock ] ; - :d3fend-id "D3-FMVV" ; - :definition "The process of checking specific static values within a file, such as file signatures or magic numbers, to ensure they match the expected values defined by the file format specification." ; - :description """## How it works - -File format specifications often define expected values for specific fields. A common example are file signatures, or magic numbers, which are used to quickly identify files. Another example is within the Compound Document Header of Microsoft Office files, the 29th and 30th byte identifies the byte order, specifically 0xFFFE for little-endian. This technique verifies that the file's static values match the values of the declared file format's specification.""" ; - :kb-reference :Reference-CarvingContiguousandFragmentedFilesWithFastObjectValidation, - :Reference-IntroductoryComputerForensics . - -:FileMountEvent a owl:Class ; - rdfs:label "File Mount Event" ; - rdfs:subClassOf :FileEvent ; - :definition "An event where a file system or storage volume is mounted, making its files and directories accessible to the operating system or applications." . - -:FilePathOpenFunction a owl:Class ; - rdfs:label "File Path Open Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :OpenFile ] ; - :definition "Has an input of a file path, and opens a file handle for reading or writing." . - -:FileRenamingEvent a owl:Class ; - rdfs:label "File Renaming Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileAccessEvent ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event representing the renaming of a file, modifying its identifier within the file system while retaining its content and metadata." . - -:FileSection a owl:Class ; - rdfs:label "File Section" ; - skos:altLabel "File Part" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A file section is one of the portions of a file in which the file is regarded as divided and where together the file sections constitute the whole file." ; - rdfs:seeAlso . - -:FileServer a owl:Class ; - rdfs:label "File Server" ; - rdfs:subClassOf :Server ; - rdfs:isDefinedBy ; - :definition "The term server highlights the role of the machine in the traditional client-server scheme, where the clients are the workstations using the storage. A file server does not normally perform computational tasks or run programs on behalf of its client workstations. File servers are commonly found in schools and offices, where users use a local area network to connect their client computers." . - -:FileSetAttributesEvent a owl:Class ; - rdfs:label "File Set Attributes Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileAccessEvent ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event where a file's metadata attributes are modified, such as changing its timestamps, labels, or categorization within the system." . - -:FileSetPermissionsEvent a owl:Class ; - rdfs:label "File Set Permissions Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event involving the modification of a file's permissions or access control list (ACL), specifying which users or processes are granted or restricted access." . - -:FileShareService a owl:Class ; - rdfs:label "File Share Service" ; - rdfs:subClassOf :NetworkService ; - :definition "A file sharing service (or file share service) provides the ability to share data across a network." ; - rdfs:seeAlso . - -:FileSystem a owl:Class ; - rdfs:label "File System" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Directory ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :FileSystemLink ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :FileSystemMetadata ] ; - rdfs:isDefinedBy ; - :definition "In computing, a file system or filesystem is used to control how data is stored and retrieved. Without a file system, information placed in a storage medium would be one large body of data with no way to tell where one piece of information stops and the next begins. By separating the data into pieces and giving each piece a name, the information is easily isolated and identified. Taking its name from the way paper-based information systems are named, each group of data is called a \"file\". The structure and logic rules used to manage the groups of information and their names is called a \"file system\"." . - -:FileSystemLink a owl:Class ; - rdfs:label "File System Link" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A file system link associates a name with a file on a file system. Most generally, this may be a direct reference (a hard link) or an indirect one (a soft link)." . - -:FileSystemMetadata a owl:Class, - owl:NamedIndividual ; - rdfs:label "File System Metadata" ; - rdfs:subClassOf :Metadata ; - :definition "Metadata about the files and directories in a file system. For example file name, file length, time modified, group and user ids, and other file attributes." ; - rdfs:seeAlso . - -:FileSystemSensor a owl:Class ; - rdfs:label "File System Sensor" ; - rdfs:subClassOf :EndpointSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :File ] ; - :definition "Collects files and file metadata on an endpoint." . - -:FileTransferNetworkTraffic a owl:Class ; - rdfs:label "File Transfer Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "File transfer network traffic is network traffic related to file transfers between network nodes. This includes only network traffic conforming to standard file transfer protocols, not custom transfer protocols." . - -:FileUnmountEvent a owl:Class ; - rdfs:label "File Unmount Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileMountEvent ] ; - :definition "An event where a file system or storage volume is unmounted, disconnecting its files and directories from the operating system or applications." . - -:FileUpdateEvent a owl:Class ; - rdfs:label "File Update Event" ; - rdfs:subClassOf :FileEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileAccessEvent ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FileCreationEvent ] ; - :definition "An event involving changes to the content or metadata of an existing file, reflecting updates that alter its state or properties." . - -:FingerPrintScannerInputDevice a owl:Class ; - rdfs:label "Finger Print Scanner Input Device" ; - skos:altLabel "Fingerprint Sensor" ; - rdfs:subClassOf :ImageScannerInputDevice ; - rdfs:isDefinedBy ; - :definition "A fingerprint sensor is an electronic device used to capture a digital image of the fingerprint pattern. The captured image is called a live scan. This live scan is digitally processed to create a biometric template (a collection of extracted features) which is stored and used for matching. Many technologies have been used including optical, capacitive, RF, thermal, piezoresistive, ultrasonic, piezoelectric, and MEMS." . - -:Firewall a owl:Class, - owl:NamedIndividual ; - rdfs:label "Firewall" ; - skos:altLabel "Network Firewall" ; - rdfs:subClassOf :ComputerNetworkNode, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :NetworkTraffic ] ; - :definition "In computing, a firewall is a network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules. A firewall typically establishes a barrier between a trusted internal network and untrusted external network, such as the Internet. Firewalls are often categorized as either network firewalls or host-based firewalls. Network firewalls filter traffic between two or more networks and run on network hardware. Host-based firewalls run on host computers and control network traffic in and out of those machines. This definition refers to network firewalls." ; - rdfs:seeAlso . - -:Firmware a owl:Class ; - rdfs:label "Firmware" ; - rdfs:subClassOf :Software ; - rdfs:isDefinedBy ; - :definition "In electronic systems and computing, firmware is a type of software that provides control, monitoring and data manipulation of engineered products and systems. Typical examples of devices containing firmware are embedded systems (such as traffic lights, consumer appliances, remote controls and digital watches), computers, computer peripherals, mobile phones, and digital cameras. The firmware contained in these devices provides the low-level control program for the device." . - -:FirmwareBehaviorAnalysis a :FirmwareBehaviorAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Firmware Behavior Analysis" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Firmware ] ; - :d3fend-id "D3-FBA" ; - :definition "Analyzing the behavior of embedded code in firmware and looking for anomalous behavior and suspicious activity." ; - :kb-article """## How it works -Firmware behavior analysis provides protections by ensuring that installed firmware has not been tampered with or modified. Firmware analysis applies to mutable firmware and immutable read-only memory (ROMs). - -Firmware in deployed network devices is typically not analyzed and monitored for vulnerabilities and thus is subject to potential attacks. This technique makes use of known and measured behavioral attributes, including timing attributes, of analyzed firmware on deployed devices. - -A behavioral method that employs known timing measurements may use the timing results from a challenge and response protocol to detect the presence of malware in embedded firmware. Firmware device timing measurements are made, specific to the installed device, and are used in the verifying function. - -The original firmware image is modified by injecting a monitoring software component into the embedded firmware code. The injected software components will allow for a software root of trust, the challenge and response protocol, to be implement in the firmware. - -A challenge-response is issued and includes a nonce so that replays are not allowed. The firmware will calculate a checksum over all of memory, including the nonce, and return the result. The verification system will compare the computed checksum and the time it took for the computation of the checksum to determine if the firmware has been modified. - -## Considerations -* The firmware code will need to be modified to include the behavioral monitoring functionality. -* This technique is sensitive to the device the embedded firmware is hosted on and it is expected that the devices and firmware will need to be profiled and analyzed to determine timing estimation. -* This technique is not expected to be one hundred percent correct as you would expect in a hardware root of trust solution and may require some tuning.""" ; - :kb-reference :Reference-FirmwareBehaviorAnalysisConFirm, - :Reference-FirmwareBehaviorAnalysisVIPER ; - :synonym "Firmware Timing Analysis" . - -:FirmwareEmbeddedMonitoringCode a :FirmwareEmbeddedMonitoringCode, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Firmware Embedded Monitoring Code" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Firmware ] ; - :d3fend-id "D3-FEMC" ; - :definition "Monitoring code is injected into firmware for integrity monitoring of firmware and firmware data." ; - :kb-article """## How it works -Firmware in deployed network devices is typically not monitored for malicious changes. This technique provides a method to embed a software security component into the deployed firmware which provides a near real-time monitoring hook. The exception handling code, in the firmware, is typically used to expose any detected vulnerabilities. - -The injected software components provide a feature similar to intrusion detection systems for the firmware by detecting unauthorized modifications of the embedded firmware. The integrity of static code and firmware data are monitored continuously in the hosted devices. Comparisons are made to monitored elements like firmware memory addresses and data segments. Memory pages are scanned and if a modification is detected the software component may lock the page. This will protect subsequent attempted modifications to the firmware. The software component may utilize the exception handling code and thus be able to disclose the exact address of the modified memory. - -The injected software components are inserted during the firmware imaging process. The injected software is assumed to have knowledge of both the embedded code and the current execution state of the host program. The injected software will monitor and alert, in near real-time, on potential suspicious activity. The injected code is run alongside of the embedded code in the host. The injected software operates as an independent entity and is not dependent on the host software. - -Finally, this technique may implement other countermeasure techniques as part of their analytical processes. These should be identified by referencing other countermeasure techniques directly as necessary. - -## Considerations -* The firmware code will need to be modified and re-hosted on the device. -* Exposing monitoring hooks to the injected code may introduce additional risk.""" ; - :kb-reference :Reference-FirmwareEmbeddedMonitoringCodeRedBalloon, - :Reference-FirmwareEmbeddedMonitoringCodeSymbiotes . - -:FirmwareSensor a owl:Class ; - rdfs:label "Firmware Sensor" ; - rdfs:subClassOf :EndpointSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :Firmware ] ; - :definition "Collects information on firmware installed on an Endpoint." . - -:FirmwareVerification a :FirmwareVerification, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Firmware Verification" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :verifies ; - owl:someValuesFrom :Firmware ] ; - :d3fend-id "D3-FV" ; - :definition "Cryptographically verifying firmware integrity." ; - :kb-article """## How it works -Cryptographic hash values are computed for system and peripheral firmware. The hash values are compared against precomputed hash values for the identified firmware. A hash value mismatch may indicate that the firmware may have been tampered with or updated with a non-current release indicating a misconfiguration for the system. - -## Considerations -* Requires cryptographically computed hash values of firmware -* Requires storage of precomputed firmware hash values""" ; - :kb-reference :Reference-FirmwareVerificationEclypsium, - :Reference-FirmwareVerificationTrapezoid, - :Reference-PlatformFirmwareResiliencyGuidelines_NIST . - -:First-orderLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "First-order Logic" ; - rdfs:subClassOf :PredicateLogic ; - :d3fend-id "D3A-FOL" ; - :definition "First-order logic is a collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic uses quantified variables over non-logical objects, and allows the use of sentences that contain variables." ; - :kb-article """## How it works - -For propositions such as "Socrates is a man", one can have expressions in the form "there exists x such that x is Socrates and x is a man", where "there exists" is a quantifier, while x is a variable. This distinguishes it from propositional logic, which does not use quantifiers or relations. - -The term "first-order" distinguishes first-order logic from higher-order logic, in which there are predicates having predicates or functions as arguments, or in which quantification over predicates, functions, or both, are permitted. - -## Considerations - -- Advantages: --- First-order logic is more expressive than propositional logic; one can talk about objects and their properties, relations between objects. --- First-order logic is able to make use of variables and quantifiers (e.g., "for all" and "exists".) --- First-order logic supports power forms of reasoning, such as inferring the properties of an unknown object from the properties of known objects. - -- Disadvantages: --- First-order logic is more difficult to learn and use than propositional logic, due to its greater complexity. --- First-order logic is also less tractable than propositional logic in many cases; reasoning about quantifiers and variables adds complexity. --- First-order logic can be difficult to apply in practice, due to the need to find appropriate axioms and rules for each application. - -### Verification Approach - -- Automated theorem provers can assist in formal verification, performing automated reasoning over system modeled in first-order logic and explore a complete space of system behaviors -- First-order logic may be more expressive than necessary for many types of problems and may be more difficult to verify by SMEs. -- Theorem provers based in FOL are capable of use in software verification tasks, but an SMT solver such as Z3 might be more appropriate. -- Defining a set of competency questions (i.e., query use cases for a first-order logic ontology) can help scope the logic required for a complete solution. - -### Validation Approach - -- Domain SMEs should be identified to review the analytics results and compare them to expected results for a given input. -- Where possible, an outside team of SMEs should inspect the formal logic specification of a system against its stated requirements and suitability to address its domain problem sets. -- Defining a set of competency questions and the expected results provides one means of validation. - -## References - -1. First-order logic. (2023, May 26). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/First-order_logic) -2. Shapiro, S. and Kissel, T. Classical Logic. (2022). Stanford Encyclopedia of Philosophy. [Link](https://plato.stanford.edu/entries/logic-classical/) -3. A.I. For Anyone. First-order Logic (n.d.). [Link](https://www.aiforanyone.org/glossary/first-order-logic) -4. Smith, P. An Introduction to Formal Logic. (2020). [Link](https://doi.org/10.1017/9781108328999) -5. Gruninger, M. and Fox, M. (1995). Methodology for the Design and Evaluation of Ontologies. [Link](https://www.researchgate.net/publication/2288533_Methodology_for_the_Design_and_Evaluation_of_Ontologies) -6. Keet, C., Suarez-Figurosa, M., and Poveda-Villalon, M. (2014). Pitfalls in Ontologies and TIPS to Prevent Them. [Link](https://dl.acm.org/doi/10.4018/ijswis.2014040102) -7. Bjorner, N. et al. The inner magic behind the Z3 theorem prover. (2019) [Link](https://www.microsoft.com/en-us/research/blog/the-inner-magic-behind-the-z3-theorem-prover/)""" ; - :synonym "First-order Predicate Calculus", - "FOL", - "Quantificational Logic" . - -:First-stageBootLoader a owl:Class ; - rdfs:label "First-stage Boot Loader" ; - rdfs:subClassOf :BootLoader ; - :definition "The very first routine run in order to load the operating system." . - -:FlashMemory a owl:Class ; - rdfs:label "Flash Memory" ; - rdfs:subClassOf :SecondaryStorage ; - rdfs:isDefinedBy ; - :definition "Flash memory is an electronic non-volatile computer memory storage medium that can be electrically erased and reprogrammed." . - -:Forecasting a owl:Class ; - rdfs:label "Forecasting" ; - rdfs:subClassOf :AnalyticalPurpose . - -:ForwardProxyServer a owl:Class ; - rdfs:label "Forward Proxy Server" ; - rdfs:subClassOf :ProxyServer ; - rdfs:isDefinedBy ; - :definition "An forward (or open) proxy is a proxy server that is accessible by any Internet user. Generally, a proxy server only allows users within a network group (i.e. a closed proxy) to store and forward Internet services such as DNS or web pages to reduce and control the bandwidth used by the group. With an open proxy, however, any user on the Internet is able to use this forwarding service." . - -:ForwardResolutionDomainDenylisting a :ForwardResolutionDomainDenylisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Forward Resolution Domain Denylisting" ; - rdfs:subClassOf :DNSDenylisting, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :OutboundInternetDNSLookupTraffic ] ; - :d3fend-id "D3-FRDDL" ; - :definition "Blocking a lookup based on the query's domain name value." ; - :kb-article """## How it works - -Policies are created that filter DNS queries using fully qualified domain name (FQDN) of record in the query. A DNS policy can be created for blocking DNS queries from FQDNs that have been identified as unauthorized. - -## Considerations - -Continuous maintenance of unauthorized domain lists is needed to keep up to date as updates occur.""" ; - :kb-reference :Reference-UseDNSPolicyForApplyingFiltersOnDNSQueries ; - :synonym "Forward Resolution Domain Blacklisting" . - -:ForwardResolutionIPDenylisting a :ForwardResolutionIPDenylisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Forward Resolution IP Denylisting" ; - rdfs:subClassOf :DNSDenylisting, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :InboundInternetDNSResponseTraffic ] ; - :d3fend-id "D3-FRIDL" ; - :definition "Blocking a DNS lookup's answer's IP address value." ; - :kb-article """## How it works - -This technique prevents a client from learning IP addresses deemed to be potentially malicious, which would have been delivered via forward resolution responses. - -Responses to forward resolution requests (that is, requests where a domain is sent and IP(s) are returned) are collected, and the IP address(es) included as a response are examined. If the IP address(es) are in a range included in the blacklist, then the response is dropped and not forwarded to the client. - -The DNS lookup can be blocked by either dropping the network traffic with an inline device, or modifying the value of the response sent by the DNS server. To transparently prevent client applications from hanging on a request, it is common practice to replace malicious values with addresses in the range 127.0.0.0/8 or the address of a honeypot maintained by the network administrators. - -## Considerations - -* This technique does not prevent the client from contacting the blacklisted IP, only from learning about this IP address via a nameserver lookup request. -* DNS Response traffic can be transmitted over many different protocols, which presents a challenge to implementing methods to extract all DNS answer IP address value(s). - * DNS has historically used UDP port 53, with TCP port 53 instead used for responses over 512 bytes or after a lack of response over UDP. - * Usage of new protocols to provide confidentiality for DNS traffic, such as DoH (DNS over HTTPS) and DoT (DNS over TLS), complicates collection of the IP address(es) in DNS responses. These protocols have often been enabled in browser settings transparently after a browser update, with DNS requests proxied over one of these cryptographic protocols through a specified host. -* This technique must be implemented logically between the application that receives the response and the server which sent the response. - * DNS responses sent in an encrypted manner, such as those using DoH or DoT, will require interception of the TLS connections in order to determine the IP address(es) in the response. -* Replacing the response is not effective in the case that the nameserver uses a technique to provide integrity of its responses, such as DNSSEC for DNS responses.""" ; - :kb-reference :Reference-UseDNSPolicyForApplyingFiltersOnDNSQueries ; - :synonym "Forward Resolution IP Blacklisting" . - -:FreeMemory a owl:Class ; - rdfs:label "Free Memory" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :MemoryBlock ] . - -:FTPDeleteEvent a owl:Class ; - rdfs:label "FTP Delete Event" ; - rdfs:subClassOf :FTPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FTPPutEvent ] ; - :definition "An event where files or directories are removed from an FTP server, resulting in their permanent deletion from the remote system." . - -:FTPEvent a owl:Class ; - rdfs:label "FTP Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :TCPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :FileTransferNetworkTraffic ] ; - :definition "An event involving the File Transfer Protocol (FTP), a standard network protocol used to transfer files between a client and server over a TCP/IP network. FTP facilitates operations such as file uploads, downloads, directory listing, and remote file management." ; - rdfs:seeAlso . - -:FTPGetEvent a owl:Class ; - rdfs:label "FTP Get Event" ; - rdfs:subClassOf :FTPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FTPPutEvent ] ; - :definition "An event where a file is downloaded from an FTP server to a client, retrieving data from the remote system to the local destination." . - -:FTPListEvent a owl:Class ; - rdfs:label "FTP List Event" ; - rdfs:subClassOf :FTPEvent ; - :definition "An event where the contents of a directory on an FTP server are listed, providing metadata such as file names, sizes, and timestamps." . - -:FTPPollEvent a owl:Class ; - rdfs:label "FTP Poll Event" ; - rdfs:subClassOf :FTPEvent ; - :definition "An event where a client queries an FTP server to check for the presence of specific files or directories without initiating a transfer." . - -:FTPPutEvent a owl:Class ; - rdfs:label "FTP Put Event" ; - rdfs:subClassOf :FTPEvent ; - :definition "An event where a file is uploaded from a client to an FTP server, transferring data from the local system to the remote destination." . - -:FTPRenameEvent a owl:Class ; - rdfs:label "FTP Rename Event" ; - rdfs:subClassOf :FTPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :FTPPutEvent ] ; - :definition "An event where files or directories on an FTP server are renamed, modifying their identifiers without altering their content or location." . - -:FullVolumeSnapshot a owl:Class ; - rdfs:label "Full Volume Snapshot" ; - rdfs:subClassOf :VolumeSnapshot ; - :definition "A full volume snapshot is a point-in-time copy of the complete contents of a volume." ; - rdfs:seeAlso . - -:FuzzyLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Fuzzy Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-FL" ; - :definition "Fuzzy logic is a form of many-valued logic in which the truth value of variables may be any real number between 0 and 1." ; - :kb-article """## How it works -It is employed to handle the concept of partial truth, where the truth value may range between completely true and completely false.[1] By contrast, in Boolean logic, the truth values of variables may only be the integer values 0 or 1. - -## References -1. Fuzzy logic. (2023, May 28). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Fuzzy_logic)""" . - -:GatedRecurrentUnit a owl:Class, - owl:NamedIndividual ; - rdfs:label "Gated Recurrent Unit" ; - rdfs:subClassOf :RecurrentNeuralNetwork ; - :d3fend-id "D3A-GRU" ; - :definition "The GRU is like a long short-term memory (LSTM) with a forget gate, but has fewer parameters than LSTM, as it lacks an output gate. GRU's performance on certain tasks of polyphonic music modeling, speech signal modeling and natural language processing was found to be similar to that of LSTM" ; - :kb-article """## References -Wikipedia. (2021, September 20). Gated Recurrent Unit. [Link](https://en.wikipedia.org/wiki/Gated_recurrent_unit)""" . - -:Generation a owl:Class ; - rdfs:label "Media Generation" ; - rdfs:subClassOf :AnalyticalPurpose . - -:GenerativeAdversarialNetwork a owl:Class, - owl:NamedIndividual ; - rdfs:label "Generative Adversarial Network" ; - rdfs:subClassOf :UnsupervisedLearning ; - :d3fend-id "D3A-GAN" ; - :definition "Generative Adversarial Networks (GAN) are an approach to generative modeling using deep learning methods, such as convolutional neural networks." ; - :kb-article """## References -Brownlee, J. (2019). What Are Generative Adversarial Networks (GANs)? Machine Learning Mastery. [Link](https://machinelearningmastery.com/what-are-generative-adversarial-networks-gans/)""" ; - :synonym "GAN" . - -:GeometricMean a owl:Class, - owl:NamedIndividual ; - rdfs:label "Geometric Mean" ; - rdfs:subClassOf :CentralTendency ; - :d3fend-id "D3A-GM" ; - :definition "The nth root of the product of the data values, where there are n of these. This measure is valid only for data that are measured absolutely on a strictly positive scale." ; - :kb-article """## References -Wikipedia. (n.d.). Central tendency. [Link](https://en.wikipedia.org/wiki/Central_tendency)""" . - -:GetOpenSockets a owl:Class ; - rdfs:label "Get Open Sockets" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :enumerates ; - owl:someValuesFrom :Pipe ] . - -:GetOpenWindows a owl:Class ; - rdfs:label "Get Open Windows" ; - rdfs:subClassOf :SystemCall . - -:GetRunningProcesses a owl:Class ; - rdfs:label "Get Running Processes" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :enumerates ; - owl:someValuesFrom :Process ] . - -:GetScreenCapture a owl:Class ; - rdfs:label "Get Screen Capture" ; - rdfs:subClassOf :SystemCall . - -:GetSystemConfigValue a owl:Class ; - rdfs:label "Get System Config Value" ; - rdfs:subClassOf :SystemConfigSystemCall, - [ a owl:Restriction ; - owl:onProperty :reads ; - owl:someValuesFrom :SystemConfigurationDatabaseRecord ] ; - rdfs:seeAlso . - -:GetSystemNetworkConfigValue a owl:Class ; - rdfs:label "Get System Network Config Value" ; - rdfs:subClassOf :GetSystemConfigValue . - -:GetSystemTime a owl:Class ; - rdfs:label "Get System Time" ; - rdfs:subClassOf :SystemCall ; - :definition "A system call that gets the system time. For POSIX.1 systems, time() invokes a call to get the system time." ; - rdfs:seeAlso . - -:GetThreadContext a owl:Class ; - rdfs:label "Get Thread Context" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :queries ; - owl:someValuesFrom :Thread ] ; - rdfs:seeAlso . - -:GlobalUserAccount a owl:Class ; - rdfs:label "Global User Account" ; - rdfs:subClassOf :DomainUserAccount ; - :definition "A type of user account in Microsoft Windows (NT) that has a domain-wide scope.defines that user's access to a logical group of network objects (computers, users, devices) that share the same Active Directory databases; that is, a user's access to the domain." ; - rdfs:seeAlso . - -:Goal a owl:Class ; - rdfs:label "Goal" ; - rdfs:subClassOf :D3FENDCore . - -:GoodmanAndKruskalsGamma a owl:Class, - owl:NamedIndividual ; - rdfs:label "Goodman and Kruskal's Gamma" ; - rdfs:subClassOf :RankCorrelationCoefficient ; - rdfs:isDefinedBy ; - :d3fend-id "D3A-GAKG" ; - :definition "Goodman-Kruskal $\\\\gamma$ is a measure of rank correlation between x and y and is given by $(n_c -n_d) / (n_c + n_d)$, where $n_c$ is the number of concordant pairs of the observations and $n_d$ is the number of discordant pairs." ; - :kb-article """## References -1. Wolfram Research. (2012). GoodmanKruskalGamma. Wolfram Language function. [Link](https://reference.wolfram.com/language/ref/GoodmanKruskalGamma.html) -1. Goodman and Kruskal's gamma. (2022, Nov 23). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Goodman_and_Kruskal%27s_gamma]""" . - -:GPT a owl:Class, - owl:NamedIndividual ; - rdfs:label "GPT" ; - rdfs:subClassOf :Transformer-basedLearning ; - :d3fend-id "D3A-GPT" ; - :definition "Generative pre-trained transformers (GPT) are a type of large language model (LLM) and a prominent framework for generative artificial intelligence." ; - :kb-article """## References -Generative pre-trained transformer. (n.d.). In Wikipedia. [Link](https://en.wikipedia.org/wiki/Generative_pre-trained_transformer)""" ; - :synonym "Generative Pre-trained Transformer" . - -:GradientBoostedDecisionTree a owl:Class, - owl:NamedIndividual ; - rdfs:label "Gradient-Boosted Decision Tree" ; - rdfs:subClassOf :CART ; - :d3fend-id "D3A-GBDT" ; - :definition "A gradient-boosted decision tree is, as in other bagging and boosting methods, a method where the relatively 'weak' machine learning model (a decision tree) is used in an ensemble to form a 'strong' machine learning model." ; - :kb-article """## Reference - -1. Google. (28 Sep 2023). Gradient Boosted Decision Trees. -[Link](https://developers.google.com/machine-learning/decision-forests/intro-to-gbdt).""" . - -:Graph-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Graph-based Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-GBC" ; - :definition "Graph-based Clustering is a form of clustering where data is represented with graphs to identify clusters. We include Connection-based Clustering in this class." ; - :kb-article """## References -1. Jagota, A. (13 Dec 2020). Density-based and Graph-based Clustering. towardsdatascience.com. [Link](https://towardsdatascience.com/density-based-and-graph-based-clustering-a1f0d45ff5fb) - -1. Connectivity-Based Clustering. Sarang, P. (2023) in Thinking Data Science. The Springer Series in Applied Machine Learning. Springer, Cham. [Link](https://doi.org/10.1007/978-3-031-02363-7_10).""" ; - :synonym "Connection-based Clustering" . - -:Graph-basedSemi-supervisedLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Graph-based Semi-supervised Learning" ; - rdfs:subClassOf :Semi-supervisedTransductiveLearning ; - :d3fend-id "D3A-GBSSL" ; - :definition "Graph-based Semi-Supervised Learning (GSSL) methods aim to classify unlabeled data by learning the graph structure and labeled data jointly." ; - :kb-article """## References -Yang, S., Pan, L., & Cheng, J. (2021). Graph-based Semi-Supervised Learning Methods for Imbalanced Data Classification. [Link](https://www.sciencedirect.com/science/article/pii/S0031320321002132?viewFullText=true).""" . - -:GraphicalUserInterface a owl:Class ; - rdfs:label "Graphical User Interface" ; - skos:altLabel "GUI" ; - rdfs:subClassOf :UserInterface ; - rdfs:isDefinedBy ; - :definition "A graphical user interface (GUI) is a type of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation, instead of text-based user interfaces, typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard." . - -:GraphicsCardFirmware a owl:Class ; - rdfs:label "Graphics Card Firmware" ; - skos:altLabel "Video Card Firmware" ; - rdfs:subClassOf :PeripheralFirmware ; - :definition "Firmware that is installed on computer graphics card." ; - rdfs:seeAlso :Firmware . - -:GraphicsProcessingUnit a owl:Class ; - rdfs:label "Graphics Processing Unit" ; - rdfs:subClassOf :Processor, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :GraphicsCardFirmware ] ; - :definition "A Graphics Processing Unit (GPU) is a specialized processor designed to efficiently perform parallel computations, primarily for rendering graphics and visual data." ; - :synonym "GPU" . - -:Grid-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Grid-based Clustering" ; - rdfs:subClassOf :High-dimensionClustering ; - :d3fend-id "D3A-GBC" ; - :definition "Divides the entire data space into a finite number of cells reducing the complexity of the data and focuses on the cells rather than the data." ; - :kb-article """## References -TechVidvan. (n.d.). Clustering in Machine Learning Tutorial. [Link](https://techvidvan.com/tutorials/clustering-in-machine-learning/)""" . - -:Grid-CNN a owl:Class, - owl:NamedIndividual ; - rdfs:label "Grid-CNN" ; - rdfs:subClassOf :ConvolutionalNeuralNetwork ; - :d3fend-id "D3A-GC" ; - :definition "A class of neural networks that specializes in processing data that has a grid-like topology, such as an image." ; - :kb-article """## References -Talukdar, P. (2020, June 10). Convolutional Neural Networks Explained. Towards Data Science. [Link](https://towardsdatascience.com/convolutional-neural-networks-explained-9cc5188c4939)""" . - -:Group a owl:Class ; - rdfs:label "Group" ; - rdfs:subClassOf :D3FENDCore . - -:GroupCreationEvent a owl:Class ; - rdfs:label "Group Creation Event" ; - rdfs:subClassOf :GroupManagementEvent ; - :definition "An event where a new group is established within the system, defining an entity to manage users and permissions collectively." . - -:GroupDeletionEvent a owl:Class ; - rdfs:label "Group Deletion Event" ; - rdfs:subClassOf :GroupManagementEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :GroupCreationEvent ] ; - :definition "An event where an existing group is permanently removed from the system, dissolving its associated memberships and privileges." . - -:Grouping a owl:Class ; - rdfs:label "Grouping" ; - rdfs:subClassOf :Summarizing . - -:GroupManagementEvent a owl:Class ; - rdfs:label "Group Management Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :AccessControlGroup ] ; - :definition "An event involving the creation, modification, or deletion of a group, or changes to its membership and privileges. Group management events facilitate the enforcement of role-based access control by organizing users and permissions into logical units for streamlined administration and policy enforcement." ; - rdfs:seeAlso . - -:GroupPolicy a owl:Class ; - rdfs:label "Group Policy" ; - rdfs:subClassOf :AccessControlConfiguration ; - :definition "Group Policy is a feature of the Microsoft Windows NT family of operating systems that controls the working environment of user accounts and computer accounts. Group Policy provides the centralized management and configuration of operating systems, applications, and users' settings in an Active Directory environment. A version of Group Policy called Local Group Policy (\"LGPO\" or \"LocalGPO\") also allows Group Policy Object management on standalone and non-domain computers." . - -:GuidelineReference a owl:Class ; - rdfs:label "Guideline Reference" ; - rdfs:subClassOf :PolicyReference ; - :pref-label "Guideline" . - -:HardDiskFirmware a owl:Class ; - rdfs:label "Hard Disk Firmware" ; - skos:altLabel "Hard Drive Firmware" ; - rdfs:subClassOf :PeripheralFirmware ; - :definition "Firmware that is installed on a hard disk device." ; - rdfs:seeAlso . - -:Harden a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Harden" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The harden tactic is used to increase the opportunity cost of computer network exploitation. Hardening differs from Detection in that it generally is conducted before a system is online and operational." ; - :display-order 0 ; - :display-priority 0 . - -:HardeningEvent a owl:Class, - owl:NamedIndividual ; - rdfs:label "Hardening Event" ; - rdfs:subClassOf :SecurityEvent ; - :definition "An event involving actions to strengthen defenses, such as applying patches or implementing secure configurations, reducing attack surfaces, and increasing the difficulty of exploitation by adversaries." ; - :related :Harden . - -:HardLink a owl:Class ; - rdfs:label "Hard Link" ; - rdfs:subClassOf :FileSystemLink ; - rdfs:isDefinedBy ; - :definition "In computing, a hard link is a directory entry that associates a name with a file on a file system. All directory-based file systems must have at least one hard link giving the original name for each file. The term \"hard link\" is usually only used in file systems that allow more than one hard link for the same file. Multiple hard links -- that is, multiple directory entries to the same file -- are supported by POSIX-compliant and partially POSIX-compliant operating systems, such as Linux, Android, macOS, and also Windows NT4 and later Windows NT operating systems." . - -:Hardware-basedProcessIsolation a :Hardware-basedProcessIsolation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Hardware-based Process Isolation" ; - rdfs:subClassOf :ExecutionIsolation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Process ], - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :CreateProcess ] ; - :d3fend-id "D3-HBPI" ; - :definition "Preventing one process from writing to the memory space of another process through hardware based address manager implementations." ; - :kb-article """## How it works -Process isolation, in this context, is address space separation controlled by a security function that limits the communication between processes so that one process cannot directly modify the executing code of another process. For example with virtual address space: - -* Process A address space is different from process B address space, which prevents process A from writing to process B - -Hardware process isolation is commonly implemented through Direct Memory Access (DMA) which collaborates with a Memory Management Unit (MMU), or Input-Output Memory Management Unit (IOMMU). These hardware controls are deployed directly on processors to aid hosts or enclaves in process isolation. - -* DMA - Direct memory access allows memory access to occur independently of the program currently run by the microprocessor. DMA allows for I/O devices to directly read from and write to memory, or it can be used to efficiently copy blocks of memory. During DMA transfers, the microprocessor can execute an unrelated program. -* MMU - A memory management unit acts as an access control and is responsible for performing the translation of virtual memory addresses to physical memory addresses. The MMU allocates each process its own virtual memory space. -* IOMMU - An input-output memory management unit is used to allocate each I/O device its own virtual address space to the underlying physical addresses. IOMMU allows devices that do not support long memory addresses to address the entire memory space. - -## Considerations -* Private hosts may be vulnerable to DMA attack if they have a PCI or PCI Express port that connects attached devices directly to physical address space. - -## Implementations: - * Intel Virtualization Technology for Directed I/O (Intel VT-d) - * Firecracker""" ; - :kb-reference , - , - :Reference-VirtualizedProcessIsolation_AdvancedMicroDevicesInc ; - :synonym "Virtualization" . - -:Hardware-basedWriteProtection a :Hardware-basedWriteProtection, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Hardware-based Write Protection" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :SecondaryStorage ] ; - :d3fend-id "D3-HBWP" ; - :definition "Physical methods of preventing data from being written to computer storage." ; - :kb-reference :Reference-WhatisHardwareWriteProtect . - -:HardwareComponentInventory a :HardwareComponentInventory, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Hardware Component Inventory" ; - rdfs:subClassOf :AssetInventory, - [ a owl:Restriction ; - owl:onProperty :inventories ; - owl:someValuesFrom :HardwareDevice ] ; - :d3fend-id "D3-HCI" ; - :definition "Hardware component inventorying identifies and records the hardware items in the organization's architecture." ; - :kb-article """## How it works -Administrators collect information on hardware devices such as peripherals, NICs, processors, and memory devices that are components of the computers in their architecture using a variety of administrative and management tools that query for this information. In some cases, where such queries are not supported or provide specific information of interest, an administrator may also collect this information through remote adminstration tools and system commands, either manually or using scripts. - -## Considerations -* Scanning and probing techniques using mapping tools can result in side effects to information technology (IT) and operational technology (OT) systems. -* An adversary conducting network enumeration may engage in activities that parallel normal hardware inventorying activities, but would require escalating to admin privileges for most of the operations requiting administrative tools - -## Examples -* Bus discovery - * Admin-scripted PCI Bus inventory using ssh and pciutils -* Application-layer discovery - * Simple Network Management Protocol (SNMP) collects MIB information - * Web-based Enterprise Management (WBEM) collects CIM information - * Windows Management Instrumentation (WMI) - * Windows Management Infrastructure (MI)""" ; - :kb-reference :Reference-AdvancedDeviceMatchingSystem ; - :synonym "Hardware Component Discovery", - "Hardware Component Inventorying" . - -:HardwareDevice a owl:Class ; - rdfs:label "Hardware Device" ; - rdfs:subClassOf :DigitalInformationBearer, - :PhysicalArtifact ; - rdfs:isDefinedBy ; - :definition "Hardware devices are the physical artifacts that constitute a network or computer system. Hardware devices are the physical parts or components of a computer, such as the monitor, keyboard, computer data storage, hard disk drive (HDD), graphic cards, sound cards, memory (RAM), motherboard, and so on, all of which are tangible physical objects. By contrast, software is instructions that can be stored and run by hardware. Hardware is directed by the software to execute any command or instruction. A combination of hardware and software forms a usable computing system." ; - rdfs:seeAlso . - -:HardwareDeviceBindEvent a owl:Class ; - rdfs:label "Hardware Device Bind Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent ; - :definition "An event where a device is logically bound to a system or process, typically for exclusive use or integration with specific software components." . - -:HardwareDeviceConnectionEvent a owl:Class ; - rdfs:label "Hardware Device Connection Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent ; - :definition "An event representing the physical or logical attachment of a device to a system, enabling its operational functionality." . - -:HardwareDeviceDisabledEvent a owl:Class ; - rdfs:label "Hardware Device Disabled Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :HardwareDeviceEnabledEvent ] ; - :definition "An event where a device transitions to an inactive or unavailable state, often due to deactivation, failure, or maintenance." . - -:HardwareDeviceDisconnectionEvent a owl:Class ; - rdfs:label "Hardware Device Disconnection Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :HardwareDeviceConnectionEvent ] ; - :definition "An event representing the removal of a device from a system, ceasing its operational functionality or availability." . - -:HardwareDeviceEnabledEvent a owl:Class ; - rdfs:label "Hardware Device Enabled Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :HardwareDeviceConnectionEvent ] ; - :definition "An event where a device becomes operational and available for use, typically following initialization, activation, or repair." . - -:HardwareDeviceEvent a owl:Class ; - rdfs:label "Hardware Device Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :HardwareDevice ] ; - :definition "An event capturing the existence, state, or interaction of hardware or virtual devices within a system. Device events encompass activities such as discovery, connection, disconnection, operational state changes, or configuration modifications, providing visibility into device behavior and health." . - -:HardwareDeviceMoveEvent a owl:Class ; - rdfs:label "Hardware Device Move Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent ; - :definition "An event where a device is relocated or reassigned within a system or network, potentially affecting its operational scope or connectivity." . - -:HardwareDeviceStateEvent a owl:Class ; - rdfs:label "Hardware Device State Event" ; - rdfs:subClassOf :HardwareDeviceEvent ; - :definition "An event involving a change to a device's state, such as connection, disconnection, modification, or operational state transitions (e.g., online or offline). Device state events provide visibility into device availability and operational conditions." . - -:HardwareDeviceUnbindEvent a owl:Class ; - rdfs:label "Hardware Device Unbind Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :HardwareDeviceBindEvent ] ; - :definition "An event where a device is logically unbound from a system or process, releasing it from exclusive use or integration." . - -:HardwareDeviceUpdateEvent a owl:Class ; - rdfs:label "Hardware Device Update Event" ; - rdfs:subClassOf :HardwareDeviceStateEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :HardwareDeviceConnectionEvent ] ; - :definition "An event capturing updates or changes to a device's configuration, properties, or state, including firmware updates, reconfigurations, or optimizations." . - -:HardwareDriver a owl:Class ; - rdfs:label "Hardware Driver" ; - skos:altLabel "Device Driver" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :drives ; - owl:someValuesFrom :HardwareDevice ] ; - rdfs:isDefinedBy ; - :definition "In computing, a device driver (commonly referred to simply as a driver) is a computer program that operates or controls a particular type of device that is attached to a computer. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details of the hardware being used. A driver communicates with the device through the computer bus or communications subsystem to which the hardware connects. When a calling program invokes a routine in the driver, the driver issues commands to the device. Once the device sends data back to the driver, the driver may invoke routines in the original calling program. Drivers are hardware dependent and operating-system-specific. They usually provide the interrupt handling required for any necessary asynchronous time-dependent hardware interface." . - -:HarmonicMean a owl:Class, - owl:NamedIndividual ; - rdfs:label "Harmonic Mean" ; - rdfs:subClassOf :CentralTendency ; - :d3fend-id "D3A-HM" ; - :definition "The reciprocal of the arithmetic mean of the reciprocals of the data values. This measure too is valid only for data that are measured absolutely on a strictly positive scale." ; - :kb-article """## References -Wikipedia. (n.d.). Central tendency. [Link](https://en.wikipedia.org/wiki/Central_tendency)""" . - -:HeapSegment a owl:Class ; - rdfs:label "Heap Segment" ; - rdfs:subClassOf :ProcessSegment ; - :definition "The heap segment (or free store) is a large pool of memory from which dynamic memory requests of a process are allocated and satisfied." ; - rdfs:seeAlso . - -:HeterogeneousAsymmetricFeature-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Heterogeneous Asymmetric Feature-based Transfer Learning" ; - rdfs:subClassOf :HeterogeneousTransferLearning ; - :d3fend-id "D3A-HAFBTL" ; - :definition "Asymmetric transformation mapping transforms the source feature space to align with that of the target or the target to that of the source. This, in effect, bridges the feature space gap and reduces the problem into a homogeneous transfer problem when further distribution differences need to be corrected." ; - :kb-article """## References -Wang, Q., Mao, K. Z., Wang, B., & Guan, J. (2017). Big data clustering by hybrid optimization algorithm. Journal of Big Data, 4(1), 25. [Link](https://journalofbigdata.springeropen.com/articles/10.1186/s40537-017-0089-0).""" . - -:HeterogeneousFeature-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Heterogeneous Feature-based Transfer Learning" ; - rdfs:subClassOf :HeterogeneousTransferLearning ; - :d3fend-id "D3A-HFBTL" ; - :definition "Symmetric transformation takes both the source feature space Xs and target feature space Xt and learns feature transformations as to project each onto a common subspace Xc for adaptation purposes. This derived subspace becomes a domain-invariant feature subspace to associate cross-domain data, and in effect, reduces marginal distribution differences." ; - :kb-article """## References -Wang, Q., Mao, K. Z., Wang, B., & Guan, J. (2017). Big data clustering by hybrid optimization algorithm. Journal of Big Data, 4(1), 25. [Link](https://journalofbigdata.springeropen.com/articles/10.1186/s40537-017-0089-0).""" . - -:HeterogeneousTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Heterogeneous Transfer Learning" ; - rdfs:subClassOf :TransferLearning ; - :d3fend-id "D3A-HTL" ; - :definition "Heterogeneous transfer learning is characterized by the source and target domains having differing feature spaces, but may also be combined with other issues such as differing data distributions and label spaces." ; - :kb-article """## References -Wang, Q., Mao, K. Z., Wang, B., & Guan, J. (2017). Big data clustering by hybrid optimization algorithm. Journal of Big Data, 4(1), 25. [Link](https://journalofbigdata.springeropen.com/articles/10.1186/s40537-017-0089-0).""" . - -:HierarchicalClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Hierarchical Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-HC" ; - :definition "Hierarchical clustering (also called hierarchical cluster analysis or HCA) is a method of cluster analysis that seeks to build a hierarchy of clusters." ; - :kb-article """## References -Wikipedia. (2021, August 10). Hierarchical clustering. [Link](https://en.wikipedia.org/wiki/Hierarchical_clustering) -html)""" ; - :todo "Consider Divisive clustering as per the wiki" . - -:HierarchicalDomainDenylisting a :HierarchicalDomainDenylisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Hierarchical Domain Denylisting" ; - rdfs:subClassOf :ForwardResolutionDomainDenylisting ; - :d3fend-id "D3-HDDL" ; - :definition "Blocking the resolution of any subdomain of a specified domain name." ; - :kb-article """## How it works -This technique is used to block DNS queries from related domains and subdomains that are unauthorized. - -Hierarchical domain blacklisting considers the blacklisting of second level domains and additional sub-domains and specific hosts for a given query value. A denylist is maintained that contains DNS names and corresponding subdomains, including wildcards, that should be blocked for a given lookup. - -## Considerations -* The denylist of domain names will have to be maintained and will need to be kept up to date -* Other domains that resolve to the domain of interest for blocking (CNAME, etc). -* Denylists should have identified maintenance cycles to ensure lists are not stale.""" ; - :kb-reference :Reference-UseDNSPolicyForApplyingFiltersOnDNSQueries ; - :synonym "Hierarchical Domain Blacklisting" . - -:High-dimensionClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "High-dimension Clustering" ; - rdfs:subClassOf :ClusterAnalysis ; - :d3fend-id "D3A-HDC" ; - :definition "The cluster analysis of data with anywhere from a few dozen to many thousands of dimensions." ; - :kb-article """## References -Wikipedia. (n.d.). Clustering high-dimensional data. [Link](https://en.wikipedia.org/wiki/Clustering_high-dimensional_data)""" . - -:Higher-orderLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Higher-order Logic" ; - rdfs:subClassOf :PredicateLogic ; - :d3fend-id "D3A-HOL" ; - :definition "Higher-order logic is a form of predicate logic that is distinguished from first-order logic by additional quantifiers and, sometimes, stronger semantics. Higher-order logics with their standard semantics are more expressive, but their model-theoretic properties are less well-behaved than those of first-order logic." ; - :kb-article """## References -1. Higher-order logic. (2023, May 13). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Higher-order_logic)""" ; - :synonym "HOL" . - -:Histogramming a owl:Class ; - rdfs:label "Histogramming" ; - rdfs:subClassOf :Summarizing . - -:HMIApplication a owl:Class ; - rdfs:label "HMI Application" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OTControlFunction ], - [ a owl:Restriction ; - owl:onProperty :instructs ; - owl:someValuesFrom :HMIApplicationProcess ] ; - :definition "Application software which runs the main program in an HMI." . - -:HMIApplicationProcess a owl:Class ; - rdfs:label "HMI Application Process" ; - rdfs:subClassOf :Process ; - :definition "The instructions within an HMI defined by user programming to interpret visual (and potentially audio) inputs and define visual (and potentially) audio outputs." . - -:HomogenousTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Homogenous Transfer Learning" ; - rdfs:subClassOf :TransferLearning ; - :d3fend-id "D3A-HTL" ; - :definition "In homogeneous transfer learning, the feature spaces of the source and target domains is of the same dimension (Ds = Dt) while the data of both domains is represented by the same attributes (Xs = Xt) and labels (Ys = Yt). Thus, homogeneous transfer learning aims to bridge the gap in the data distributions experienced during cross-domain transfer." ; - :kb-article """## References -Khalil, K., Asgher, U., & Ayaz, Y. (2022). Novel fNIRS study on homogeneous symmetric feature-based transfer learning for brain-computer interface. Scientific Reports, 12, 3198. [Link](https://www.nature.com/articles/s41598-022-06805-4).""" . - -:HomoglyphDenylisting a :HomoglyphDenylisting, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Homoglyph Denylisting" ; - rdfs:subClassOf :ForwardResolutionDomainDenylisting ; - :d3fend-id "D3-HDL" ; - :definition "Blocking DNS queries that are deceptively similar to legitimate domain names." ; - :kb-article """## How it works - -Homoglyph domain blacklisting considers the domain and subdomain structure of a lookup and compares the named components to blacklisted named components. The blacklisted named components are typically crafted modifications of known good domains, e.g., gooogle.com versus google.com. The blacklisted domains typically resemble trusted domains, but have been altered slightly to deceive users. - -The blacklisted named components also include consideration for fonts or Unicode characters that can make certain characters appear very similar (zero vs capital O and the letter l vs the number one). The blacklisted domains under certain fonts will appear to be a trusted domain. - -## Considerations -* Maintaining the currency of the list can be a challenge especially with newly registered domain entries. -* Blacklists should have identified maintenance cycles to ensure lists are not stale.""" ; - :kb-reference :Reference-DetectionOfMaliciousIDNHomoglyphDomains ; - :synonym "Homoglyph Blacklisting" . - -:HomoglyphDetection a :HomoglyphDetection, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Homoglyph Detection" ; - rdfs:subClassOf :IdentifierAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Email ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :URL ] ; - :d3fend-id "D3-HD" ; - :definition "Comparing strings using a variety of techniques to determine if a deceptive or malicious string is being presented to a user." ; - :kb-article """## How it works -A homoglyph, in this context, is a deceptive string or word which looks like a trusted word, but is composed of different characters, for example: goooogle.com versus google.com. This is commonly found in phishing and typo squatting attacks where a human exploiting through a social engineering campaign. - -## Considerations -* In very large environments processing DNS queries can be computationally expensive due to the amount of traffic that is generated -* Legitimate companies and products use non-dictionary words in their names that could result in many false positives""" ; - :kb-reference :Reference-Computer-implementedMethodsAndSystemsForIdentifyingVisuallySimilarTextCharacterStrings_GreathornInc, - :Reference-SystemAndMethodForDetectingHomoglyphAttacksWithASiameseConvolutionalNeuralNetwork_EndgameInc . - -:Host a owl:Class ; - rdfs:label "Host" ; - skos:altLabel "Network Host" ; - rdfs:subClassOf :ComputerNetworkNode, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Application ] ; - rdfs:isDefinedBy ; - :definition "A host is a computer or other device, typically connected to a computer network. A network host may offer information resources, services, and applications to users or other nodes on the network. A network host is a network node that is assigned a network layer host address. Network hosts that participate in applications that use the client-server model of computing, are classified as server or client systems. Network hosts may also function as nodes in peer-to-peer applications, in which all nodes share and consume resources in an equipotent manner." ; - rdfs:seeAlso . - -:Host-basedFirewall a owl:Class ; - rdfs:label "Host-based Firewall" ; - rdfs:subClassOf :SystemSoftware ; - :definition "A software firewall which controls network inbound and outbound network traffic to the host computer." . - -:HostConfigurationSensor a owl:Class ; - rdfs:label "Host Configuration Sensor" ; - rdfs:subClassOf :EndpointSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :ApplicationConfiguration ], - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :OperatingSystemConfiguration ] ; - :definition "Collects the configuration data on an endpoint." . - -:HostGroup a owl:Class ; - rdfs:label "Host Group" ; - rdfs:subClassOf :AccessControlGroup, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Host ] ; - :definition "A collection of Hosts used to allow operations such as access control to be applied to the entire group." . - -:Hostname a :DomainName, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Hostname" ; - skos:altLabel "Nodename" ; - rdfs:subClassOf :Identifier, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :Host ] ; - rdfs:isDefinedBy ; - :definition "In computer networking, a hostname (archaically nodename) is a label that is assigned to a device connected to a computer network and that is used to identify the device in various forms of electronic communication, such as the World Wide Web. Hostnames may be simple names consisting of a single word or phrase, or they may be structured." . - -:HostReboot a :HostReboot, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Host Reboot" ; - rdfs:subClassOf :HostShutdown, - [ a owl:Restriction ; - owl:onProperty :terminates ; - owl:someValuesFrom :Process ] ; - :d3fend-id "D3-HR" ; - :definition "Initiating a host's reboot sequence to terminate all running processes." ; - :kb-article """## How It Works - -Host reboot can either be initiated in the physical presence of the device using the power functions or remotely using the provided user interface or an installed EDR agent (with the available function). This process may allow for the removal of specific types of malware, such as fileless malware, and can also prevent further damage, for example, if the system is part of a botnet. - -## Considerations - -- If the attacker has achieved persistence techniques, this technique may not be effective -- Compromised systems may not respond to remote commands to shutdown or reboot, requiring physical intervention. -- Shutting down a system will usually result in the memory losing its state which can be useful in forensic activities so this should be considered when deciding to shutdown. -- Shutting down or rebooting systems may disrupt access to computer resources for legitimate users.""" ; - :kb-reference :Reference-NearMemoryInMemoryDetectionofFilelessMalware . - -:HostShutdown a :HostShutdown, - owl:Class, - owl:NamedIndividual, - :ProcessTermination ; - rdfs:label "Host Shutdown" ; - rdfs:subClassOf :ProcessEviction, - [ a owl:Restriction ; - owl:onProperty :terminates ; - owl:someValuesFrom :Process ] ; - :d3fend-id "D3-HS" ; - :definition "Initiating a host's shutdown sequence to terminate all running processes." ; - :kb-article """## How It Works - -Host shutdown can either be initiated in the physical presence of the device using the power functions or remotely using the provided user interface or an installed EDR agent (with the available function). This process may allow for the removal of specific types of malware, such as fileless malware, and can also prevent further damage, for example, if the system is part of a botnet. - -## Considerations - -- If the attacker has achieved persistence techniques, this technique may not be effective -- Compromised systems may not respond to remote commands to shutdown or reboot, requiring physical intervention. -- Shutting down a system will usually result in the memory losing its state which can be useful in forensic activities so this should be considered when deciding to shutdown. -- Shutting down systems may disrupt access to computer resources for legitimate users.""" ; - :kb-reference :Reference-NearMemoryInMemoryDetectionofFilelessMalware . - -:HTMLFile a owl:Class ; - rdfs:label "HTML File" ; - skos:altLabel "HTML File" ; - rdfs:subClassOf :DocumentFile ; - :definition "A document file encoded in HTML.The HyperText Markup Language, or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript. Web browsers receive HTML documents from a web server or from local storage and render the documents into multimedia web pages. HTML describes the structure of a web page semantically and originally included cues for the appearance of the document." ; - rdfs:seeAlso . - -:HTTPConnectEvent a owl:Class ; - rdfs:label "HTTP CONNECT Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP CONNECT method is used to establish a tunnel to the server identified by the target resource." . - -:HTTPDeleteEvent a owl:Class ; - rdfs:label "HTTP DELETE Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP DELETE method is used to delete the specified resource." . - -:HTTPEvent a owl:Class ; - rdfs:label "HTTP Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :TCPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :WebNetworkTraffic ] ; - :definition "An event involving the Hypertext Transfer Protocol (HTTP), which operates over TCP to transmit hypermedia documents." ; - rdfs:seeAlso . - -:HTTPGetEvent a owl:Class ; - rdfs:label "HTTP GET Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP GET method is used to request a representation of the specified resource." . - -:HTTPHeadEvent a owl:Class ; - rdfs:label "HTTP HEAD Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP HEAD method is used to request metadata about the specified resource without the response body." . - -:HTTPOptionsEvent a owl:Class ; - rdfs:label "HTTP OPTIONS Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP OPTIONS method is used to describe the communication options for the target resource." . - -:HTTPPostEvent a owl:Class ; - rdfs:label "HTTP POST Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP POST method is used to submit data to the specified resource, often causing a change in state or side effects on the server." . - -:HTTPPutEvent a owl:Class ; - rdfs:label "HTTP PUT Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP PUT method is used to replace all current representations of the target resource with the request payload." . - -:HTTPRequestEvent a owl:Class ; - rdfs:label "HTTP Request Event" ; - rdfs:subClassOf :HTTPEvent ; - :definition "An event where an HTTP request is sent from a client to a server over an established TCP connection." . - -:HTTPResponseEvent a owl:Class ; - rdfs:label "HTTP Response Event" ; - rdfs:subClassOf :HTTPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :HTTPRequestEvent ] ; - :definition "An event where an HTTP response is sent from a server to a client over an established TCP connection." . - -:HTTPTraceEvent a owl:Class ; - rdfs:label "HTTP TRACE Event" ; - rdfs:subClassOf :HTTPRequestEvent ; - :definition "An event where the HTTP TRACE method is used to perform a message loop-back test along the path to the target resource." . - -:HumanInputDeviceFirmware a owl:Class ; - rdfs:label "Human Input Device Firmware" ; - rdfs:subClassOf :PeripheralFirmware ; - :definition "Firmware that is installed on an HCI device such as a mouse or keyboard." ; - rdfs:seeAlso :Firmware, - . - -:Hybrid-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Hybrid-based Transfer Learning" ; - rdfs:subClassOf :HomogenousTransferLearning ; - :d3fend-id "D3A-HBTL" ; - :definition "This method creates an asymmetric mapping from the target to the source and takes into account bias issues of cross-domain correspondences." ; - :kb-article """## References -Day, O., & Khoshgoftaar, T.M. (2017). A survey on heterogeneous transfer learning. Journal of Big Data, 4(1), 29. [Link](https://doi.org/10.1186/s40537-017-0089-0).""" . - -:HypothesisTesting a owl:Class, - owl:NamedIndividual ; - rdfs:label "Hypothesis Testing" ; - rdfs:subClassOf :InferentialStatistics ; - :d3fend-id "D3A-HT" ; - :definition "A statistical hypothesis test is a method of statistical inference used to decide whether the data at hand sufficiently support a particular hypothesis. Hypothesis testing allows us to make probabilistic statements about population parameters." ; - :kb-article """## References -Wikipedia. (n.d.). Statistical hypothesis testing. [Link](https://en.wikipedia.org/wiki/Statistical_hypothesis_testing)""" . - -:ID3 a owl:Class, - owl:NamedIndividual ; - rdfs:label "ID3" ; - rdfs:subClassOf :DecisionTree ; - :d3fend-id "D3A-ID3" ; - :definition "ID3 stands for Iterative Dichotomiser 3 and is named such because the algorithm iteratively (repeatedly) dichotomizes(divides) features into two or more groups at each step." ; - :kb-article """## Addtional Consiterations -ID3 is the basis of C4.5, and is best used in natural language processing. - -## References -Decision Trees for Classification: ID3 Algorithm Explained. Towards Data Science. [Link](https://towardsdatascience.com/decision-trees-for-classification-id3-algorithm-explained-89df76e72df1).""" . - -:Identifier a owl:Class ; - rdfs:label "Identifier" ; - skos:altLabel "ID" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :Artifact ] ; - rdfs:isDefinedBy ; - :definition "An identifier is a name that identifies (that is, labels the identity of) either a unique object or a unique class of objects, where the \"object\" or class may be an idea, physical [countable] object (or class thereof), or physical [noncountable] substance (or class thereof). The abbreviation ID often refers to identity, identification (the process of identifying), or an identifier (that is, an instance of identification). An identifier may be a word, number, letter, symbol, or any combination of those." . - -:IdentifierActivityAnalysis a :IdentifierActivityAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Identifier Activity Analysis" ; - rdfs:subClassOf :IdentifierAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Identifier ] ; - :d3fend-id "D3-IAA" ; - :definition "Taking known malicious identifiers and determining if they are present in a system." ; - :kb-article """## How it works - -Identifier activity analysis is the process of taking identifiers--typically known malicious identifiers--and determining the artifacts that have interacted with those identifiers. - -There are many open and closed source repositories of identifiers that represent indicators of compromise. For example, VirusTotal contains hash signatures of malware and IP Addresses used by threat actors. Defenders can search for these indicators of compromise their own systems to gain context on activity around an identifier. - -## Considerations - -Indicator activity analysis is a good way to gain high precision analysis, but adversaries can modify their own signatures such as hashes quickly to evade detection. This is related to David Bianco’s Pyramid of Pain - Indicators on the lower level (hash values, IP addresses domain names) are easy for adversaries to change. - -Identifier activity data of interest for analysis with the identifier might include, but is not limited to: - -* network traffic activity where the identifier was used to identify communicating entities or referred to in the communication -* process activity referencing the identifier, especially for resource access -* file activity referencing the identifier -* registry settings referencing the identifier""" ; - :kb-reference :Reference-ThePyramidOfPain-DavidBianco . - -:IdentifierAnalysis a :IdentifierAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Identifier Analysis" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-ID" ; - :definition "Analyzing identifier artifacts such as IP address, domain names, or URL(I)s." ; - :enables :Detect . - -:IdentifierReputationAnalysis a :IdentifierReputationAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Identifier Reputation Analysis" ; - rdfs:subClassOf :IdentifierAnalysis ; - :d3fend-id "D3-IRA" ; - :definition "Analyzing the reputation of an identifier." ; - :kb-reference :Reference-Finding_phishing_sites . - -:Image-to-ImageTranslationGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "Image-to-Image Translation GAN" ; - rdfs:subClassOf :GenerativeAdversarialNetwork ; - :d3fend-id "D3A-ITITG" ; - :definition "Image-to-image translation is the task of transferring styles and characteristics from one image domain to another." ; - :kb-article """## References -MathWorks. (n.d.). Get Started with GANs for Image-to-Image Translation. [Link](https://www.mathworks.com/help/images/get-started-with-gans-for-image-to-image-translation.html)""" . - -:ImageCodeSegment a owl:Class, - owl:NamedIndividual ; - rdfs:label "Image Code Segment" ; - rdfs:subClassOf :ImageSegment, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Subroutine ] ; - :definition "An image code segment, also known as a text segment or simply as text, is a portion of an object file that contains executable instructions. The term \"segment\" comes from the memory segment, which is a historical approach to memory management that has been succeeded by paging. When a program is stored in an object file, the code segment is a part of this file; when the loader places a program into memory so that it may be executed, various memory regions are allocated (in particular, as pages), corresponding to both the segments in the object files and to segments only needed at run time. For example, the code segment of an object file is loaded into a corresponding code segment in memory." ; - rdfs:seeAlso , - :ProcessCodeSegment . - -:ImageDataSegment a owl:Class ; - rdfs:label "Image Data Segment" ; - rdfs:subClassOf :ImageSegment ; - :definition "An image data segment (often denoted .data) is a portion of an object file that contains initialized static variables, that is, global variables and static local variables. The size of this segment is determined by the size of the values in the program's source code, and does not change at run time. This segmenting of the memory space into discrete blocks with specific tasks carried over into the programming languages of the day and the concept is still widely in use within modern programming languages." ; - rdfs:seeAlso , - :ProcessDataSegment . - -:ImageFile a owl:Class ; - rdfs:label "Image File" ; - rdfs:subClassOf :File ; - :definition "A file that contains graphics data." . - -:ImageScannerInputDevice a owl:Class ; - rdfs:label "Image Scanner Input Device" ; - skos:altLabel "Scanner" ; - rdfs:subClassOf :VideoInputDevice ; - rdfs:isDefinedBy ; - :definition "An image scanner -- often abbreviated to just scanner, is a device that optically scans images, printed text, handwriting or an object and converts it to a digital image. Commonly used in offices are variations of the desktop flatbed scanner where the document is placed on a glass window for scanning. Hand-held scanners, where the device is moved by hand, have evolved from text scanning \"wands\" to 3D scanners used for industrial design, reverse engineering, test and measurement, orthotics, gaming and other applications. Mechanically driven scanners that move the document are typically used for large-format documents, where a flatbed design would be impractical." . - -:ImageSegment a owl:Class ; - rdfs:label "Image Segment" ; - rdfs:subClassOf :BinarySegment, - :FileSection ; - :definition "Image segments are distinct partitions of an object file. Both data and code segments are examples of image segments." ; - rdfs:seeAlso , - :ObjectFile . - -:ImageSynthesisGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "Image Synthesis GAN" ; - rdfs:subClassOf :GenerativeAdversarialNetwork ; - :d3fend-id "D3A-ISG" ; - :definition "Image synthesis thorugh the application of Generative Adversarial Networks." ; - :kb-article """## References - -Zhang, Q., Wang, H., Lu, H., Won, D., & Yoon, S. W. (2018). Medical Image Synthesis with Generative Adversarial Networks for Tissue Recognition. 2018 IEEE International Conference on Healthcare Informatics (ICHI), 199-207. doi: 10.1109/ICHI.2018.00030. [Link](https://ieeexplore.ieee.org/document/8419363)""" . - -:ImpactTechnique a owl:Class ; - rdfs:label "Impact Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0040 ] ; - :definition "The adversary is trying to manipulate, interrupt, or destroy your systems and data." . - -:ImpersonateUser a owl:Class, - owl:NamedIndividual, - :SystemCall ; - rdfs:label "Impersonate User" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :forges ; - owl:someValuesFrom :UserAccount ] . - -:ImportLibraryFunction a owl:Class ; - rdfs:label "Import Library Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :loads ; - owl:someValuesFrom :SharedLibraryFile ] ; - :definition "Loads an external software library to enable the invocations of its methods." . - -:In-memoryPasswordStore a owl:Class ; - rdfs:label "In-memory Password Store" ; - rdfs:subClassOf :PasswordStore ; - :definition "A password store held in memory." . - -:InboundInternetDNSResponseTraffic a owl:Class ; - rdfs:label "Inbound Internet DNS Response Traffic" ; - rdfs:subClassOf :InboundInternetNetworkTraffic ; - :definition "Inbound internet DNS response traffic is DNS response traffic from a host outside a given network initiated on an incoming connection to a host inside that network." . - -:InboundInternetEncryptedTraffic a owl:Class ; - rdfs:label "Inbound Internet Encrypted Traffic" ; - rdfs:subClassOf :InboundInternetNetworkTraffic ; - :definition "Inbound internet encrypted traffic is encrypted network traffic on an incoming connection initiated from a host outside the network to a host within a network ." . - -:InboundInternetEncryptedWebTraffic a owl:Class ; - rdfs:label "Inbound Internet Encrypted Web Traffic" ; - rdfs:subClassOf :InboundInternetEncryptedTraffic, - :InboundInternetWebTraffic ; - :definition "Inbound internet web traffic is network traffic that is: (a) on an incoming connection initiated from a host outside the network to a host within a network, and (b) using a standard web encryption protocol." ; - rdfs:seeAlso . - -:InboundInternetMailTraffic a owl:Class ; - rdfs:label "Inbound Internet Mail Traffic" ; - rdfs:subClassOf :InboundInternetNetworkTraffic, - :InboundNetworkTraffic, - :MailNetworkTraffic ; - :definition "Inbound internet mail traffic is network traffic that is: (a) coming from a host outside a given network via an incoming connection to a host inside that same network, and (b) using a standard protocol for email." ; - rdfs:seeAlso . - -:InboundInternetNetworkTraffic a owl:Class ; - rdfs:label "Inbound Internet Network Traffic" ; - rdfs:subClassOf :InboundNetworkTraffic, - :InternetNetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :NetworkTraffic ] ; - :definition "Inbound internet traffic is network traffic from a host outside a given network initiated on an incoming connection to a host inside that network." ; - rdfs:seeAlso . - -:InboundInternetWebTraffic a owl:Class ; - rdfs:label "Inbound Internet Web Traffic" ; - rdfs:subClassOf :InboundInternetNetworkTraffic ; - :definition "Inbound internet web traffic is network traffic that is: (a) on an incoming connection initiated from a host outside the network to a host within a network, and (b) using a standard web protocol." ; - rdfs:seeAlso . - -:InboundNetworkTraffic a owl:Class ; - rdfs:label "Inbound Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "Inbound traffic is network traffic originating from another host (client), to the host of interest (server)." . - -:InboundSessionVolumeAnalysis a :InboundSessionVolumeAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Inbound Session Volume Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :InboundInternetNetworkTraffic ] ; - :d3fend-id "D3-ISVA" ; - :definition "Analyzing inbound network session or connection attempt volume." ; - :kb-article """## How it works -Network appliances are configured to alert on certain packets that typically are involved in DoS attacks. Typical packets include ICMP packets and SYN requests that are commonly used to flood networks. A sampling period is used to define a time window in which collected counts of the identified packets can be measured. If the collected number of packets exceeds a predefined limit then an alert is generated. - -## Considerations -Scalability as volume of attacks increase; single servers may not have the memory and storage resources to handle high volumes of network traffic.""" ; - :kb-reference :Reference-DetectingDDoSAttackUsingSnort, - , - :Reference-MethodAndSystemForUDPFloodAttackDetection-RioreyLLC, - , - . - -:InboundTrafficFiltering a :InboundTrafficFiltering, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Inbound Traffic Filtering" ; - rdfs:subClassOf :NetworkTrafficFiltering, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :InboundNetworkTraffic ] ; - :d3fend-id "D3-ITF" ; - :definition "Restricting network traffic originating from untrusted networks destined towards a private host or enclave." ; - :kb-article """## How it works -Inbound Traffic, in this context, is network traffic originating from an untrusted network towards a private host or enclave. -For example: - -* An untrusted network host connecting to a internal commercial portal, shopping.example.com -* An external mail server connecting to an internal mail server, mail.example.com - -Filtering policies are developed by administrators to meet business requirements and limit connectivity. These policies are implemented on edge devices such as firewalls, routers, and intrusion prevention systems. Examples of filters: - -* Blocking incoming traffic from spoofed internally facing IP addresses -* Blocking specific ports and services from establishing connections -* Limiting specific IP ranges from connecting to the network -* Dynamic inbound filtering (Hole punching, STUN, NAT-T) - -## Considerations -* Business requirements typically drive the development of filtering rulesets -* Protocols using non-standard ports may circumvent filtering technology, which does not detect application protocol based on traffic content - -## Implementations -* OpenWRT (Embedded) -* Netfilter (Linux) -* Windows Firewall -* pf(BSD)""" ; - :kb-reference :Reference-ActiveFirewallSystemAndMethodology_McAfeeLLC, - :Reference-AutomaticallyGeneratingRulesForConnectionSecurity_Microsoft, - :Reference-FirewallForInterentAccess_SecureComputingLLC, - :Reference-FirewallForProcessingAConnectionlessNetworkPacket_NationalSecurityAgency, - :Reference-FirewallForProcessingConnection-orientedAndConnectionlessDatagramsOverAConnection-orientedNetwork_NationalSecurityAgency, - :Reference-FirewallsThatFilterBasedUponProtocolCommands_IntelCorp, - :Reference-FWTK-FirewallToolkit_, - :Reference-MethodForControllingComputerNetworkSecurity_CheckpointSoftwareTechnologiesLtd, - :Reference-NetworkFirewallWithProxy_SecureComputingLLC . - -:IndirectBranchCallAnalysis a :IndirectBranchCallAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Indirect Branch Call Analysis" ; - rdfs:subClassOf :ProcessAnalysis ; - :d3fend-id "D3-IBCA" ; - :definition "Analyzing vendor specific branch call recording in order to detect ROP style attacks." ; - :kb-article """## How it works - -This technique is used to detect an attacker attempting to exploit and execute code on a target system's call stack using return-oriented programming (ROP). Modern processors that have the ability to maintain a list of the branching calls, e.g., Intel's Last Branch Recording (LBR), can be used to track and analyze indirect branching calls that are indicative of malicious activity. - -In order to reduce the number of indirect branch calls to analyze to a manageable set it is assumed that malicious ROP activity will involve the use of system calls. The technique observes indirect branch calls that are part of paths that lead to system calls, all others are ignored. Branching calls chained together is often referred to as gadgets and gadgets are often used in ROP attacks. Indirect branch calls that involve a transfer from user-space to kernel-space are of interest for this technique. - -Identification of potential ROP exploit execution includes: - -- Inspecting the LBR when a system function call is made - - - The LBR is configured to return only instruction of interest (ret, indirect jmp, indirect calls) - - -- Behavior is analyzed for - - Ret instructions that appear to target areas not preceded by the call sites - - Sequences of small code fragments that appear to be chained through the indirect branching calls (gadgets) - - -- Of interest are returns that appear to not render control back after calls - - Typical ret-call are paired - - gadgets will appear to have ret followed by instruction of next instruction of the following gadget - - -## Considerations - -* May be operating system dependent since specific system calls are used to scope branching behavoir -* Processors need to support access to a Last Branch Recording list feature -* The size of the LBR stack can limit the expected size of the analyzed execution stack -* If processor does not support LBR then overhead costs for the analysis can be significant""" ; - :kb-reference :Reference-IndirectBranchingCalls . - -:InferentialStatistics a owl:Class, - owl:NamedIndividual ; - rdfs:label "Inferential Statistics" ; - rdfs:subClassOf :StatisticalMethod ; - :d3fend-id "D3A-IS" ; - :definition "Statistical inference is the process of using data analysis to infer properties of an underlying distribution of probability." ; - :kb-article """## References -Wikipedia. (n.d.). Statistical inference. [Link](https://en.wikipedia.org/wiki/Statistical_inference)""" . - -:InitialAccessTechnique a owl:Class ; - rdfs:label "Initial Access Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0001 ] ; - :definition "The adversary is trying to get into your network." . - -:InitScript a owl:Class ; - rdfs:label "Init Script" ; - skos:altLabel "Initialization Script" ; - rdfs:subClassOf :ExecutableScript ; - :definition "An init script (or initialization script) is an executable script that initializes the an application, a process, or a service's state. Examples include scripts run at boot by Unix or Windows, or those run to initialize a shell." ; - rdfs:seeAlso , - . - -:InputDevice a owl:Class ; - rdfs:label "Input Device" ; - rdfs:subClassOf :HardwareDevice, - :LocalResource ; - rdfs:isDefinedBy ; - :definition "In computing, an input device is a piece of equipment used to provide data and control signals to an information processing system such as a computer or information appliance. Examples of input devices include keyboards, mouse, scanners, digital cameras, joysticks, and microphones. Input devices can be categorized based on:" . - -:InputDeviceAnalysis a :InputDeviceAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Input Device Analysis" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :InputDevice ] ; - :d3fend-id "D3-IDA" ; - :definition "Operating system level mechanisms to prevent abusive input device exploitation." ; - :kb-article """## How it works - -Input Device Hardening techniques filter certain commands, or disable related operating system functionality. - -### Analytics - -All of these values can be analyzed and compared to a baseline: - -* Amount of input -* Duration of a single input -* Durations between inputs -* Value of input - -Context can also include: - -* User which is logged in, to include attributes such as physical location of the user -* Date and time -* System which is processing the input -* Source device of input, to include its properties (eg. manufacturer), configuration (eg. keyboard layout) and behavioral attributes of this device (eg. first use) -* Source system of input (local or remote system) -* Other hardware devices attached to the system - - -### Actions - -Actions can include: - -* Disabling the source device -* Sending an alert -* Locking the current session (eg. system screen lock, or returning to an authentication screen in a web app) and requiring one or more methods of authentication to continue -* Administratively disabling credentials for the account or the entire account -- the technique *Account Locking* - - -### Examples -A malicious input device sends many keystrokes with approximately the same delay between each. This does not match the normal cadence of input, and the device is disabled. - -Input to type the session user's name takes abnormally longer for each keystroke. The system is locked to the password prompt screen. - -A system receives key press events from two different devices -- one device sends keystrokes after the other has been idle for a long time. - -A system receives physical input in a user session, while that user has sent input from a device located out of the country in the past hour. - -Network traffic is suddenly routed through a new external device, and nearly the same volume of network traffic is subsequently sent out the previously existing interface. The new external device is disabled, and an alert is raised to investigate the network configuration for a potential compromise. - - -## Considerations - -Given some example of legitimate behavioral input patterns, attackers could mimic those input patterns, a technique which has been used in popular culture in the creation of Deepfake videos and [This Person Does Not Exist](https://thispersondoesnotexist.com).""" ; - :kb-reference , - :Reference-www.biometric-solutions.com_keystroke-dynamics . - -:InputDeviceEvent a owl:Class ; - rdfs:label "Input Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :InputDevice ] ; - :definition "An event involving human-machine interface devices, such as keyboards, mice, or touchscreens." . - -:InputFunction a owl:Class ; - rdfs:label "Input Function" ; - rdfs:subClassOf :Subroutine ; - :definition "Generic function that receives input from an untrusted source." . - -:Instance-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Instance-based Transfer Learning" ; - rdfs:subClassOf :HomogenousTransferLearning ; - :d3fend-id "D3A-IBTL" ; - :definition "Instance-based transfer learning methods try to reweight the samples in the source domain in an attempt to correct for marginal distribution differences. These reweighted instances are then directly used in the target domain for training." ; - :kb-article """## References -Georgian Impact Blog. (n.d.). Transfer Learning Part 1. [Link](https://medium.com/georgian-impact-blog/transfer-learning-part-1-ed0c174ad6e7#:~:text=Homogeneous%20Transfer%20Learning-,1.,the%20target%20domain%20for%20training).""" . - -:InstantMessagingClient a owl:Class ; - rdfs:label "Instant Messaging Client" ; - rdfs:subClassOf :CollaborativeSoftware ; - rdfs:isDefinedBy ; - :definition "Client software used to engage in Instant Messaging, a type of online chat that offers real-time text transmission over the Internet. A LAN messenger operates in a similar way over a local area network. Short messages are typically transmitted between two parties, when each user chooses to complete a thought and select \"send\". Some IM applications can use push technology to provide real-time text, which transmits messages character by character, as they are composed. More advanced instant messaging can add file transfer, clickable hyperlinks, Voice over IP, or video chat." . - -:IntegerRangeValidation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Integer Range Validation" ; - rdfs:subClassOf :SourceCodeHardening, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :MathematicalFunction ] ; - :d3fend-id "D3-IRV" ; - :definition "Ensuring that an integer is within a valid range." ; - :kb-article """## How it Works -Integer Range Validation can be done by programmatically checking the value of an integer before or after an operation to determine if the resulting value will be valid. -Checking the value of an integer to ensure it is in a valid range helps prevent integer overflow, wraparound, and logical errors. - -## Considerations -* A valid range can be defined by language, data-type, or logical constraints. -* Take extra care when doing operations on integers that will result in a value close to the bounds of a valid range. -* Note: This resource should not be considered a definitive or exhaustive coding guideline.""" ; - :kb-reference :Reference-IntegerRangeValidation_SEI . - -:IntegratedHoneynet a :IntegratedHoneynet, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Integrated Honeynet" ; - rdfs:subClassOf :DecoyEnvironment, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :IntranetNetwork ] ; - :d3fend-id "D3-IHN" ; - :definition "The practice of setting decoys in a production environment to entice interaction from attackers." ; - :kb-article """## How it works -Integrated honeynets use full production environments connected to the enterprise network, that utilize computing resources or software that attract attackers, and allow full interaction and access that provides a complete view of an attack. - -## Considerations -An attacker with control of a system on an Integrated Honeynet could: -* try to attack other connected hosts on the network, its IP range of internal hosts not properly configured to react to connections from machines on the integrated honeynet, or position behind the firewall. -* exploit its position by eavesdropping on network traffic -If an attacker manages to stop the processes used to log an attack without setting off any alarms. [1] - -1. Honeypots for Windows, Roger Grimes, 2005""" ; - :kb-reference :Reference-SynchronizingAHoneyNetworkConfigurationToReflectATargetNetworkEnvironment_PaloAltoNetworksInc . - -:IntegrationTestExecutionTool a owl:Class ; - rdfs:label "Integration Test Execution Tool" ; - rdfs:subClassOf :TestExecutionTool ; - :definition "An integration test execution tool automatically performs integration testing. Integration testing (sometimes called integration and testing, abbreviated I&T) is the phase in software testing in which individual software modules are combined and tested as a group." ; - rdfs:seeAlso . - -:InternetArticleReference a owl:Class ; - rdfs:label "Internet Article Reference" ; - skos:altLabel "Internet Blog Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Internet Article" . - -:InternetBasedAttacker a owl:Class ; - rdfs:label "Internet-based Attacker" ; - rdfs:subClassOf :RemoteAttacker, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :WideAreaNetwork ] ; - :definition "A remote attacker who leverages the internet to conduct attacks, such as through phishing, malware, or direct network attacks." . - -:InternetDNSLookup a owl:Class ; - rdfs:label "Internet DNS Lookup" ; - rdfs:subClassOf :DNSLookup ; - :definition "An internet Domain Name System (DNS) lookup is a DNS lookup made from a host on a network that is resolved after querying a DNS name server hosted on a different network." ; - rdfs:seeAlso . - -:InternetFileTransferTraffic a owl:Class ; - rdfs:label "Internet File Transfer Traffic" ; - rdfs:subClassOf :FileTransferNetworkTraffic, - :InternetNetworkTraffic ; - :definition "Internet file transfer network traffic is network traffic related to file transfers between network nodes that crosses a boundary between networks. This includes only network traffic conforming to standard file transfer protocols, not custom transfer protocols." . - -:InternetNetwork a owl:Class ; - rdfs:label "Internet Network" ; - skos:altLabel "Interconnected Network", - "Internet", - "Internetwork" ; - rdfs:subClassOf :Network ; - rdfs:isDefinedBy ; - :definition "A network of multiple, connected networks. Internetworking is the practice of connecting a computer network with other networks through the use of gateways that provide a common method of routing information packets between the networks. The resulting system of interconnected networks are called an internetwork, or simply an internet. Internetworking is a combination of the words inter (\"between\") and networking; not internet-working or international-network." . - -:InternetNetworkTraffic a owl:Class ; - rdfs:label "Internet Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "Internet network traffic is network traffic that crosses a boundary between networks. [This is the general sense of inter-networking; It may or may not cross to or from the Internet]" ; - rdfs:seeAlso . - -:InternetPersona a owl:Class ; - rdfs:label "Internet Persona" ; - skos:altLabel "Online Identity", - "Online Persona", - "Online Personality" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A social identity that an Internet user establishes in online communities and websites. It may also be an actively constructed presentation of oneself." ; - rdfs:seeAlso . - -:InterprocessCommunication a owl:Class ; - rdfs:label "Interprocess Communication" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In computer science, inter-process communication or inter-process communication (IPC) refers specifically to the mechanisms an operating system provides to allow processes it manages to share data. Typically, applications can use IPC categorized as clients and servers, where the client requests data and the server responds to client requests. Many applications are both clients and servers, as commonly seen in distributed computing. Methods for achieving IPC are divided into categories which vary based on software requirements, such as performance and modularity requirements, and system circumstances, such as network bandwidth and latency." . - -:InterquartileRange a owl:Class, - owl:NamedIndividual ; - rdfs:label "Interquartile Range" ; - rdfs:subClassOf :Variability ; - :d3fend-id "D3A-IR" ; - :definition "The interquartile range (IQR) is a measure of statistical dispersion, which is the spread of the data and is defined as the difference between the 75th and 25th percentiles of the data." ; - :kb-article """## References -Wikipedia. (n.d.). Interquartile range. [Link](https://en.wikipedia.org/wiki/Interquartile_range)""" ; - :synonym "IQR" . - -:IntervalEstimation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Interval Estimation" ; - rdfs:subClassOf :Estimation ; - :d3fend-id "D3A-IE" ; - :definition "Interval estimation is the use of sample data to estimate an interval of possible values of a parameter of interest." ; - :kb-article """## References -Wikipedia. (n.d.). Interval estimation. [Link](https://en.wikipedia.org/wiki/Interval_estimation)""" . - -:IntranetAdministrativeNetworkTraffic a owl:Class ; - rdfs:label "Intranet Administrative Network Traffic" ; - rdfs:subClassOf :AdministrativeNetworkTraffic, - :IntranetNetworkTraffic ; - :definition "Intranet administrative network traffic is administrative network traffic that does not cross a given network's boundaries and uses a standard administrative protocol." ; - rdfs:seeAlso . - -:IntranetDNSLookup a owl:Class ; - rdfs:label "Intranet DNS Lookup" ; - rdfs:subClassOf :DNSLookup ; - :definition "An Intranet Domain Name System (DNS) lookup is a DNS lookup made from a host on a network that is resolved after querying a DNS name server hosted on a that same network." ; - rdfs:seeAlso . - -:IntranetFileTransferTraffic a owl:Class ; - rdfs:label "Intranet File Transfer Traffic" ; - rdfs:subClassOf :FileTransferNetworkTraffic, - :IntranetNetworkTraffic ; - :definition "Intranet file transfer traffic is file transfer traffic that does not cross a given network's boundaries and uses a standard file transfer protocol." ; - rdfs:seeAlso , - . - -:IntranetIPCNetworkTraffic a owl:Class ; - rdfs:label "Intranet IPC Network Traffic" ; - rdfs:subClassOf :IntranetNetworkTraffic, - :IPCNetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :File ] ; - :definition "Intranet IPC network traffic is network traffic that does not cross a given network's boundaries and uses a standard inter-process communication (IPC) networking protocol." ; - rdfs:seeAlso , - . - -:IntranetMulticastNetworkTraffic a owl:Class ; - rdfs:label "Intranet Multicast Network Traffic" ; - rdfs:subClassOf :IntranetNetworkTraffic ; - :definition "Intranet IPC network traffic is multicast network traffic that does not cross a given network's boundaries." ; - rdfs:seeAlso ; - :todo "Add Multicast Network Traffic class under Network Traffic and subclass this to that added class." . - -:IntranetNetwork a owl:Class ; - rdfs:label "Intranet Network" ; - rdfs:subClassOf :Network ; - rdfs:isDefinedBy ; - :definition "An intranet is a private network accessible only to an organization's staff or delegates. Generally a wide range of information and services from the organization's internal IT systems are available that would not be available to the public from the Internet. A company-wide intranet can constitute an important focal point of internal communication and collaboration, and provide a single starting point to access internal and external resources. In its simplest form an intranet is established with the technologies for local area networks (LANs) and wide area networks (WANs)." . - -:IntranetNetworkTraffic a owl:Class ; - rdfs:label "Intranet Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "Intranet network traffic is network traffic traversing that does not traverse a given network's boundaries." ; - rdfs:seeAlso . - -:IntranetRPCNetworkTraffic a owl:Class ; - rdfs:label "Intranet RPC Network Traffic" ; - rdfs:subClassOf :IntranetNetworkTraffic, - :RPCNetworkTraffic ; - :definition "Intranet RPC network traffic is network traffic that does not cross a given network's boundaries and uses a standard remote procedure call (e.g., RFC 1050) protocol." ; - rdfs:seeAlso , - . - -:IntranetWebNetworkTraffic a owl:Class ; - rdfs:label "Intranet Web Network Traffic" ; - rdfs:subClassOf :IntranetNetworkTraffic, - :WebNetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :File ] ; - :definition "Intranet web network traffic is network traffic that does not cross a given network's boundaries and uses a standard web protocol." ; - rdfs:seeAlso . - -:IntrinsicallySemi-supervisedLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Intrinsically Semi-supervised Learning" ; - rdfs:subClassOf :Semi-SupervisedLearning ; - :d3fend-id "D3A-ISSL" ; - :definition "These methods directly optimize an objective function with components for labeled and unlabeled samples and do not rely on any intermediate steps or supervised base learners. Basically, these methods are extension of existing supervised methods to include the effect of unlabeled data samples in the objective function." ; - :kb-article """## References -Beginner's Guide to Semi-Supervised Learning. Jashish Blog. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/).""" . - -:IntrusionDetectionSystem a owl:Class ; - rdfs:label "Intrusion Detection System" ; - skos:altLabel "IDS" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "An intrusion detection system (IDS) is a device or software application that monitors a network or systems for malicious activity or policy violations. Any intrusion activity or violation is typically reported either to an administrator or collected centrally using a security information and event management (SIEM) system. A SIEM system combines outputs from multiple sources and uses alarm filtering techniques to distinguish malicious activity from false alarms." . - -:IntrusionPreventionSystem a owl:Class ; - rdfs:label "Intrusion Prevention System" ; - skos:altLabel "IDPS", - "Intrusion Detection and Prevention System", - "IPS" ; - rdfs:subClassOf :IntrusionDetectionSystem ; - rdfs:isDefinedBy ; - :definition """Intrusion prevention systems (IPS), also known as intrusion detection and prevention systems (IDPS), are network security appliances that monitor network or system activities for malicious activity. The main functions of intrusion prevention systems are to identify malicious activity, log information about this activity, report it and attempt to block or stop it. - -Intrusion prevention systems are considered extensions of intrusion detection systems because they both monitor network traffic and/or system activities for malicious activity. The main differences are, unlike intrusion detection systems, intrusion prevention systems are placed in-line and are able to actively prevent or block intrusions that are detected. IPS can take such actions as sending an alarm, dropping detected malicious packets, resetting a connection or blocking traffic from the offending IP address. An IPS also can correct cyclic redundancy check (CRC) errors, defragment packet streams, mitigate TCP sequencing issues, and clean up unwanted transport and network layer options.""" ; - rdfs:seeAlso . - -:IOModule a owl:Class ; - rdfs:label "I/O Module" ; - rdfs:subClassOf :HardwareDevice ; - :definition "An I/O Module is a hardware device that translates signals between external sensors or actuators and control systems. It typically handles analog-to-digital (and vice versa) conversion, serving as the data interface that allows physical processes to be monitored and controlled by digital controllers." . - -:IOPortRestriction a :IOPortRestriction, - owl:Class, - owl:NamedIndividual ; - rdfs:label "IO Port Restriction" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :InputDevice ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :RemovableMediaDevice ], - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :IOModule ] ; - :d3fend-id "D3-IOPR" ; - :definition "Limiting access to computer input/output (IO) ports to restrict unauthorized devices." ; - :kb-article """## How It works - -Software-based restriction uses agent software installed on a computer system. The agent software monitors all IO port system traffic. The agent software is configurable to limit the use of certain devices connected to IO ports. The restriction software can also be configured to limit the access to files and applications on external storage devices connected to IO ports. - -Hardware-based restriction can also be employed to limit access to IO ports. For example, a hardware USB filter device that is placed between the host system and the external devices can filter IO port connections based on configurable rules. When new devices are connected to the USB filter the type of device is determined. Using an allow list a connection determination is made for the device. - -Some implementations detect when a device is connected in order to authorize the connection against a list of approved devices, in some cases by device type. For example, if the device is determined to be a storage device, then the contained files and executables are examined to more accurately identify the device type. - -Types of restrictions that may be applied: -- Device connection -- Device command filtering -- Device file system read or write restrictions - -## Considerations - * Agent software will need to be installed on host systems - * Configurations for allow/deny for devices and files will need to be maintained""" ; - :kb-reference :Reference-ComputerMotherboardHavingPeripheralSecurityFunctions, - :Reference-MethodAndSystemForControllingCommunicationPorts, - :Reference-USBFilterForHubMaliciousCodePreventionSystem . - -:IPAddress a owl:Class ; - rdfs:label "IP Address" ; - rdfs:subClassOf :Identifier, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :NetworkNode ] ; - rdfs:isDefinedBy ; - :definition "An Internet Protocol address (IP address) is a numerical label assigned to each device connected to a computer network that uses the Internet Protocol for communication.An IP address serves two main functions: host or network interface identification and location addressing. Internet Protocol version 4 (IPv4) defines an IP address as a 32-bit number. However, because of the growth of the Internet and the depletion of available IPv4 addresses, a new version of IP (IPv6), using 128 bits for the IP address, was standardized in 1998. IPv6 deployment has been ongoing since the mid-2000s." . - -:IPCNetworkTraffic a owl:Class ; - rdfs:label "IPC Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "IPC network traffic is network traffic related to inter-process communication (IPC) between network nodes..This includes only network traffic conforming to a standard IPC protocol; not custom protocols." . - -:IPCTrafficAnalysis a :IPCTrafficAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "IPC Traffic Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :IntranetIPCNetworkTraffic ] ; - :d3fend-id "D3-IPCTA" ; - :definition "Analyzing standard inter process communication (IPC) protocols to detect deviations from normal protocol activity." ; - :kb-article """## How it works -Inter process communication enables applications or threads to share data. This can involve one or more computers. Monitoring IPC in your environment can reveal abnormal or malicious activity. -IPC can occur within a single computer or between multiple computers remotely through network protocols. Thus there are multiple ways to collect and monitor these exchanges between processes. A network protocol analyzer may monitor and parse SMB network traffic to record system activity. A host based monitoring agent may monitor IPC activity contained within a single host to look for deviations from standard usages. - -### Examples - * SMB - * Zeromq - * Java RMI API - -## Considerations -* IPC can generate substantial amounts of data, and it may not be feasible to collect all of it. -* IPC may occur over loopback interfaces or direct memory access granted by the operating system.""" ; - :kb-reference :Reference-CAR-2015-04-001%3ARemotelyScheduledTasksViaAT_MITRE, - :Reference-SecuritySystemWithMethodologyForInterprocessCommunicationControl_CheckPointSoftwareTechInc, - :Reference-SMBCopyAndExecution_MITRE, - :Reference-SMBEventsMonitoring_MITRE, - :Reference-SMBSessionSetups_MITRE, - :Reference-SMBWriteRequest-NamedPipes_MITRE, - :Reference-SMBWriteRequest_MITRE ; - :synonym "IPC Analysis" ; - :todo "Rec'd delete analyzes itself (same class). Intent was probably to capture target DAOs for IPC. Some IPC is between processes on same machine, and not just process analysis. System Calls/Streams/Pipes/Mesg Queues covered?" . - -:IPPhone a owl:Class ; - rdfs:label "IP Phone" ; - skos:altLabel "VoIP Phone" ; - rdfs:subClassOf :PersonalComputer ; - rdfs:isDefinedBy ; - :definition "A VoIP phone or IP phone uses voice over IP technologies for placing and transmitting telephone calls over an IP network, such as the Internet, instead of the traditional public switched telephone network (PSTN). Digital IP-based telephone service uses control protocols such as the Session Initiation Protocol (SIP), Skinny Client Control Protocol (SCCP) or various other proprietary protocols." ; - :todo "Rename and merge to URI with \"VoIP Phone\" as label VoipPhone as IRI" . - -:IPReputationAnalysis a :IPReputationAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "IP Reputation Analysis" ; - rdfs:subClassOf :IdentifierReputationAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :IPAddress ] ; - :d3fend-id "D3-IPRA" ; - :definition "Analyzing the reputation of an IP address." ; - :kb-reference :Reference-Database_for_receiving_storing_and_compiling_information_about_email_messages, - :Reference-Finding_phishing_sites . - -:Isolate a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Isolate" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The isolate tactic creates logical or physical barriers in a system which reduces opportunities for adversaries to create further accesses." ; - :display-order 2 ; - :display-priority 0 . - -:IsolationEvent a owl:Class, - owl:NamedIndividual ; - rdfs:label "Isolation Event" ; - rdfs:subClassOf :SecurityEvent ; - :definition "An event involving actions to create logical or physical barriers that isolate compromised components, preventing adversary movement and reducing attack surfaces." ; - :related :Isolate . - -:JavaArchive a owl:Class ; - rdfs:label "Java Archive" ; - rdfs:subClassOf :ArchiveFile, - :SoftwarePackage ; - :definition "A JAR (Java ARchive) is a package file format typically used to aggregate many Java class files and associated metadata and resources (text, images, etc.) into one file for distribution." ; - rdfs:seeAlso . - -:JavaScriptBlob a owl:Class ; - rdfs:label "JavaScript Blob" ; - rdfs:subClassOf :BinaryLargeObject ; - :definition "A JavaScript Blob is a Blob that was created by a JavaScript Blob() constructor call or equivalent function." . - -:JobFunctionAccessPatternAnalysis a :JobFunctionAccessPatternAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Job Function Access Pattern Analysis" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authorization ] ; - :d3fend-id "D3-JFAPA" ; - :definition "Detecting anomalies in user access patterns by comparing user access activity to behavioral profiles that categorize users by role such as job title, function, department." ; - :kb-article """## How it works -Peer group analysis identifies functionally similar groups of actors (users or resources) based on categorizations such as job title, organizational hierarchy, or other attribute that indicates similarity of job function. Current user access activity is then compared to the appropriate peer group behavior profile to identify anomalies. - -## Considerations -Potential for false positives from anomalies that are not associated with malicious activity.""" ; - :kb-reference :Reference-AnomalyDetectionUsingAdaptiveBehavioralProfiles_SecuronixInc . - -:JobSchedule a owl:Class ; - rdfs:label "Job Schedule" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ScheduledJob ], - [ a owl:Restriction ; - owl:onProperty :modified-by ; - owl:someValuesFrom :JobSchedulerSoftware ] ; - :definition "A job schedule contains specification of tasks to be executed at particular times or time intervals. The schedule is a plan that enacted by a task scheduling process. In Windows, the schedule can be accessed at 'C:\\Windows\\System32\\Tasks' or in the registry. In Linux, the schedule is located at '/etc/crontab'" ; - rdfs:seeAlso , - ; - :synonym "Task Schedule" . - -:JobSchedulerSoftware a owl:Class ; - rdfs:label "Job Scheduler Software" ; - rdfs:subClassOf :SystemServiceSoftware, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :ScheduledJob ], - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :JobSchedule ], - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :ScheduledJob ] ; - :definition "A job scheduler software is operating system software that when run executes scheduled tasks (time-scheduling in the sense of wall clock time; not operating system scheduling of processes for multitasking). Processes running such software are task scheduler processes. In Windows, Scheduled Tasks are created and managed by the Task Scheduler. In Unix-like OSes, the `cron` utitility serves a similar role." ; - rdfs:seeAlso , - , - :ScheduledJob ; - :synonym "Task Scheduler Software" . - -:K-CenterClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "K-Center Clustering" ; - rdfs:subClassOf :Graph-basedClustering ; - :d3fend-id "D3A-KCC" ; - :definition "K-center Clustering is a type of clustering based on an combinatorial optimization methods. It clusters a set of points so as to minimize the maximum intercluster distance." ; - :kb-article """## How it works - -An example K-center Clustering problem is to mimimize the number of points in a set that are necessary so that a every other point in the set is within some fixed distance of those points. For instance, given n cities with specified distances, one wants to build k warehouses in different cities and minimize the maximum distance of a city to a warehouse. - -## Considerations - -- **Scalability**: Exact solutions are NP-hard. However, algorithms - that have been proven effective and create no more than 2x the - optimal set of clusters can run in O(kn) proportional to k*n where - k is the minimum number of clusters and n is the number of data - points being clustered. - -## Key Test Considerations - -- **Unsupervised Learning**: - - - **Number of Clusters**: The Gonzalez (Gon) algorithm guarantees - creating no more than twice the optimal number of clusters, - where the optimal number is the minimum number of clusters to - minimize total distance between representative points in the - clusters [1]. - -- **Cluster Analysis**: - - - **Rand Index and Adjusted Rand Index**: Given ground truth set - of class labels for the data, the Rand Index is a measure of the - similarity between two data clusterings. The Rand Index is the - accuracy of determining if a link belongs within a cluster or - not. A form of the Rand Index may be defined that is adjusted - for the chance grouping of elements, this is the Adjusted Rand - Index [5]. - - - **Adjusted Mutual Information**: Given ground truth set of class - labels for the data, Adjusted Mutual Information corrects the - effect of agreement solely due to chance between clusterings, - similar to the way the Adjusted Rand Index corrects the Rand - Index [6]. - -- **Connection-based Clustering**: - - - **Choice of Distance Metric**: The outcome can vary significantly depending on the chosen distance metric (e.g., Euclidean, Manhattan). - - - **Sensitivity**: Connection-based method can be sensitive to outliers, which might affect the quality of the clusters formed. - -- **K-center Clustering**: - - - **Silhouette Score**: The silhouette score refers to a scoring - method that helps validate the consistency between clusters of - data. The evaluation technique also produces a concise graphical - representation of how well each object appear to have been - classified. It is suited to K-centric Clustering in that it also - works for different metric spaces. - - - **Distance Metric**: The distance measure must be a true metric (see - [2]). Differences in the metric chosen may (e.g., Euclidean,a - Manhattan) affect results significantly. - - - **Sensitivity**: Greedy implementations may be sensitive to - outliers. - -## Platforms, Tools, or Libraries - -N/A. _Note that this algorithm is relatively simple and so it is -usually implemented from scratch by those incorporating this algorithm -into a system._ - -## References - -1. Gonzalez, T.F. (1985). Clustering to Minimize the Maximum Intercluster Distance. Theor. Comput. Sci., 38, 293-306. -[Link](https://www.sciencedirect.com/science/article/pii/0304397585902245?via%3Dihub). - -1. Weisstein, Eric W. (n.d.). "Metric." From MathWorld--A Wolfram Web Resource. [Link](https://mathworld.wolfram.com/Metric.html). - -1. Wikipedia. (8 Aug 2023). Metric k-center [Link](https://en.wikipedia.org/wiki/Metric_k-center). - -1. Wikipedia. (14 Aug 2023). Vertex k-center problem. [Link](https://en.wikipedia.org/wiki/Vertex_k-center_problem). - -1. Wikipedia. (n.d.). Rand Index. [Link](https://en.wikipedia.org/wiki/Rand_index). - -1. Wikipedia. (n.d.). Adjusted Mutual Information. [Link](https://en.wikipedia.org/wiki/Adjusted_mutual_information). - -1. Wikipedia. (1 Aug 2023). Silhouette (clustering). [Link](https://en.wikipedia.org/wiki/Silhouette_(clustering)).""" . - -:K-FoldCross-Validation a owl:Class, - owl:NamedIndividual ; - rdfs:label "K-Fold Cross-Validation" ; - rdfs:subClassOf :ResamplingEnsemble ; - :d3fend-id "D3A-KFCV" ; - :definition "Cross-validation is a resampling procedure used to evaluate machine learning models on a limited data sample. The procedure has a single parameter called k that refers to the number of groups that a given data sample is to be split into. As such, the procedure is often called k-fold cross-validation. When a specific value for k is chosen, it may be used in place of k in the reference to the model, such as k=10 becoming 10-fold cross-validation" ; - :kb-article """## References -K-Fold Cross-Validation. Machine Learning Mastery. [Link](https://machinelearningmastery.com/k-fold-cross-validation/#:~:text=Cross%2Dvalidation%20is%20a%20resampling,k%2Dfold%20cross%2Dvalidation).""" . - -:K-meansClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "K-means Clustering" ; - rdfs:subClassOf :Centroid-basedClustering ; - :d3fend-id "D3A-KMC" ; - :definition "K-means algorithm identifies k number of centroids, and then allocates every data point to the nearest cluster, while keeping the centroids as small as possible." ; - :kb-article """## References -Towards Data Science. (n.d.). Understanding K-means Clustering in Machine Learning. [Link](https://towardsdatascience.com/understanding-k-means-clustering-in-machine-learning-6a6e67336aa1)""" . - -:K-NearestNeighbors a owl:Class, - owl:NamedIndividual ; - rdfs:label "K-Nearest Neighbors" ; - rdfs:subClassOf :Classification ; - :d3fend-id "D3A-KNN" ; - :definition "The k-nearest neighbors algorithm, also known as KNN or k-NN, is a non-parametric, supervised learning classifier, which uses proximity to make classifications or predictions about the grouping of an individual data point." ; - :kb-article """## **How it works** -The goal of the k-nearest neighbor algorithm is to identify the nearest neighbors of a given query point, so that we can assign a class label to that point. To determine which data points are closest to a given query point, the distance between the query point and the other data points will need to be calculated. The distance measures used can vary depending on the data set or implementation and help inform decision boundaries, which query points into different regions. Then, by defining the k-value (the number of neighbors to be checked to determine the classification of a specific query point), the data can be assigned its class label. - -For classification problems, a class label is assigned on the basis of a majority vote—i.e. the label that is most frequently represented around a given data point is used (the term “majority vote” is commonly used in literature, however, the technique is more technically considered “plurality voting”). Regression problems use a similar concept as classification problem, but in this case, the average the k nearest neighbors is taken to make a prediction about a classification. The main distinction here is that classification is used for discrete values, whereas regression is used with continuous ones. - -Unlike other algorithms that explicitly model the problem, such as linear regression, KNN is instance-based. It means that the algorithm doesn't explicitly learn a model. Instead, it memorizes the training instances and uses them as "knowledge" for the prediction phase. It's also worth noting that the KNN algorithm is also part of a family of “lazy learning” models, meaning that it only stores a training dataset versus undergoing a training stage. - -## **Considerations** - -* **Scaling:** Scaling is a problem as KNN is a lazy algorithm and takes up more memory and storage compared to other classification methods. - -* **Implementation and Hyperparameters:** As KNN only requires a k-value and a distance metric, it is often an easy implementation and can adjust will to new training data. - -## Key Test Considerations - -- **Supervised Learning:** - - - **Cross Validation:** As cross validation methods like k-fold, leave-one-out, and stratified cross validation can help validate model performance. However, nuances like pessimism bias in k-fold cross validation or high variability in leave-one-out cross validation may need consideration. - -- **Classification:** - - - **ROC Curve:** A standard technique used to summarize classifier performance over a range of tradeoffs between true and false positives is the Receiver Operating Characteristic (ROC) curve. - - - **Data Imbalance:** Imbalanced data sets where one class significantly outnumbers others, under sampling techniques like SMOTE may be beneficial in sampling minority classes. - -- **K-Nearest Neighbor** - - - **Choice of K:** The number of neighbors, K, affects the decision boundary. A smaller K can lead to a noisy decision boundary, while a large K can smooth it out, but may also blur class distinctions. - - - **K-d Tree:** Exact searching on large datasets can be computationally costly and inefficient. Implementing approximate nearest neighbor algorithms like the K-d tree algorithm. - - - **Dimensionality:** KNN does not perform well while using high-dimensional data and can be sensitive to irrelevant features which can lead to overfitting. - - - **Distance Metric:** Choosing the appropriate distance metric (Euclidean, Manhattan, MinKowski, Hamming etc.) is essential, based on the nature of the data. - -## **References** -1. IBM. K-Nearest Neighbors Algorithm. [Link](https://www.ibm.com/topics/knn?mhsrc=ibmsearch_a&mhq=k-nearest%20neighbors%20). -2. Muja, M., & Lowe, D. G. (2014). Scalable nearest neighbor algorithms for high dimensional data. IEEE Transactions on Pattern Analysis and Machine Intelligence. [Link]( https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6809191). -3. Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: synthetic minority over-sampling technique. Journal of artificial intelligence research, 16, 321-357. [Link]( https://www.jair.org/index.php/jair/article/view/10302/24590). -4. Kohavi, R. (1995). A study of cross-validation and bootstrap for accuracy estimation and model selection. Proceedings of the 14th international joint conference on Artificial intelligence . [Link]( https://www.ijcai.org/Proceedings/95-2/Papers/016.pdf).""" . - -:KendallsRankCorrelationCoefficient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Kendall's Rank Correlation Coefficient" ; - rdfs:subClassOf :RankCorrelationCoefficient ; - rdfs:isDefinedBy ; - :d3fend-id "D3A-KRCC" ; - :definition "Kendall's $\\\\tau$ between and is given by $(n_c - n_d) / \\\\sqrt((n_c+n_d+n_x)(n_c+n_d+n_y)$, where is the number of concordant pairs of observations, is the number of discordant pairs, is the number of ties involving only the variable, and is the number of ties involving only the variable.\" ;" ; - :kb-article """## References -1. Wolfram Research. (2012). KendallTau. Wolfram Language function. [Link](https://reference.wolfram.com/language/ref/KendallTau.html) -1. Kendall's Tau. (2023, May 23). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Kendall_rank_correlation_coefficient]\"\"\",""" ; - :synonym "Kendall's Tau Coefficient" . - -:KerberosTicket a owl:Class ; - rdfs:label "Kerberos Ticket" ; - rdfs:subClassOf :AccessToken ; - :definition "An access ticket/token issued by a Kerberos system." . - -:KerberosTicketGrantingServiceTicket a owl:Class ; - rdfs:label "Kerberos Ticket Granting Service Ticket" ; - skos:altLabel "TGS Ticket" ; - rdfs:subClassOf :KerberosTicket ; - :definition "A Kerberos ticket-granting service (TGS) ticket is given in response to requesting a Kerberos TGS request." . - -:KerberosTicketGrantingTicket a owl:Class ; - rdfs:label "Kerberos Ticket Granting Ticket" ; - rdfs:subClassOf :KerberosTicket, - :TicketGrantingTicket ; - :definition "A ticket granting ticket issued by a Kerberos system; that is, a ticket that grants a user domain admin access." ; - rdfs:seeAlso . - -:KerberosTicketGrantingTicketAccount a owl:Class ; - rdfs:label "Kerberos Ticket Granting Ticket Account" ; - rdfs:subClassOf :ServiceAccount, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :KerberosTicketGrantingTicket ] ; - :definition "KRBTGT is an account used by Key Distribution Center (KDC) service to issue Ticket Granting Tickets (TGTs) as part of the Kerberos authentication protocol." ; - rdfs:seeAlso ; - :synonym "krbtgt" . - -:Kernel a owl:Class ; - rdfs:label "Kernel" ; - rdfs:subClassOf :SystemSoftware, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :KernelProcessTable ], - [ a owl:Restriction ; - owl:onProperty :loads ; - owl:someValuesFrom :Application ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :OperatingSystemProcess ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :UserProcess ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :HardwareDriver ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :KernelModule ] ; - rdfs:isDefinedBy ; - :definition "The kernel is a computer program that constitutes the central core of a computer's operating system. It has complete control over everything that occurs in the system. As such, it is the first program loaded on startup, and then manages the remainder of the startup, as well as input/output requests from software, translating them into data processing instructions for the central processing unit. It is also responsible for managing memory, and for managing and communicating with computing peripherals, like printers, speakers, etc. The kernel is a fundamental part of a modern computer's operating system." ; - rdfs:seeAlso . - -:Kernel-basedProcessIsolation a :Kernel-basedProcessIsolation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Kernel-based Process Isolation" ; - rdfs:subClassOf :ExecutionIsolation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Process ] ; - rdfs:comment "e.g. KVM" ; - :d3fend-id "D3-KBPI" ; - :definition "Using kernel-level capabilities to isolate processes." ; - :kb-reference :Reference-OverviewOfTheSeccompSandbox ; - :todo "Write kb-article for KBPI" . - -:KernelAPISensor a owl:Class ; - rdfs:label "Kernel API Sensor" ; - rdfs:subClassOf :EndpointSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :SystemCall ] ; - :definition "Monitors system calls (operating system api functions)." . - -:KernelEvent a owl:Class ; - rdfs:label "Kernel Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Kernel ] ; - :definition "An event involving operations at the kernel level of an operating system, encompassing interactions with core system resources such as drivers, modules, system calls, and other privileged processes. Kernel events are critical for understanding low-level system behavior and ensuring the integrity of the operating environment." ; - rdfs:seeAlso . - -:KernelModule a owl:Class ; - rdfs:label "Kernel Module" ; - skos:altLabel "LKM", - "Loadable Kernel Module" ; - rdfs:subClassOf :ObjectFile ; - rdfs:isDefinedBy ; - :definition """A loadable kernel module (LKM) is an object file that contains code to extend the running kernel, or so-called base kernel, of an operating system. LKMs are typically used to add support for new hardware (as device drivers) and/or filesystems, or for adding system calls. When the functionality provided by a LKM is no longer required, it can be unloaded in order to free memory and other resources. - -Most current Unix-like systems and Microsoft Windows support loadable kernel modules, although they might use a different name for them, such as kernel loadable module (kld) in FreeBSD, kernel extension (kext) in macOS,[1] kernel extension module in AIX, kernel-mode driver in Windows NT[2] and downloadable kernel module (DKM) in VxWorks. They are also known as kernel loadable modules (or KLM), and simply as kernel modules (KMOD).""" ; - rdfs:seeAlso . - -:KernelModuleEvent a owl:Class ; - rdfs:label "Kernel Module Event" ; - rdfs:subClassOf :KernelEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :HardwareDriver ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :KernelModule ] ; - :definition "An event involving the management of kernel modules, such as the loading or unloading of device drivers, extensions, or other dynamically linked components essential for kernel functionality." ; - rdfs:seeAlso . - -:KernelModuleLoadEvent a owl:Class ; - rdfs:label "Kernel Module Load Event" ; - rdfs:subClassOf :KernelModuleEvent, - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :MemoryAllocationEvent ] ; - :definition "An event representing the loading of a kernel module, such as a device driver or dynamically linked extension, into the operating system kernel to extend or modify its capabilities." . - -:KernelModuleUnloadEvent a owl:Class ; - rdfs:label "Kernel Module Unload Event" ; - rdfs:subClassOf :KernelModuleEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :KernelModuleLoadEvent ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :MemoryDeletionEvent ] ; - :definition "An event representing the removal of a kernel module from the operating system kernel, deallocating resources and potentially altering system functionality." . - -:KernelProcessTable a owl:Class ; - rdfs:label "Kernel Process Table" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A data structure in the kernel which is a table containing all of the information that must be saved when the CPU switches from running one process to another in a multitasking system. It allows the operating system to track all the process's execution status, and contains the For every process managed by the kernel, there is a process control block (PCB) in the process table." ; - rdfs:seeAlso , - . - -:KeyboardInputDevice a owl:Class ; - rdfs:label "Keyboard Input Device" ; - skos:altLabel "Computer Keyboard", - "Keyboard" ; - rdfs:subClassOf :InputDevice ; - rdfs:isDefinedBy ; - :definition "A computer keyboard is a typewriter-style device which uses an arrangement of buttons or keys to act as mechanical levers or electronic switches. Following the decline of punch cards and paper tape, interaction via teleprinter-style keyboards became the main input method for computers. A keyboard is also used to give commands to the operating system of a computer, such as Windows' Control-Alt-Delete combination. Although on Pre-Windows 95 Microsoft operating systems this forced a re-boot, now it brings up a system security options screen." . - -:KioskComputer a owl:Class ; - rdfs:label "Kiosk Computer" ; - skos:altLabel "Interactive Kiosk" ; - rdfs:subClassOf :SharedComputer ; - rdfs:isDefinedBy ; - :definition "An interactive kiosk is a computer terminal featuring specialized hardware and software that provides access to information and applications for communication, commerce, entertainment, or education. Early interactive kiosks sometimes resembled telephone booths, but have been embraced by retail, food service and hospitality to improve customer service and streamline operations. Interactive kiosks are typically placed in high foot traffic settings such as shops, hotel lobbies or airports." . - -:Kurtosis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Kurtosis" ; - rdfs:subClassOf :DistributionProperties ; - :d3fend-id "D3A-KUR" ; - :definition "The measure of the \"fatness\" of the tails of a pmf or pdf. The fourth standardized moment of the distribution." ; - :kb-article """## References -Wikipedia. (n.d.). Probability distribution. [Link](https://en.wikipedia.org/wiki/Probability_distribution)""" . - -:LANAccessMediation a :LANAccessMediation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "LAN Access Mediation" ; - rdfs:subClassOf :NetworkAccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :LocalAreaNetwork ] ; - rdfs:comment "Layer 2 Enforcement" ; - :d3fend-id "D3-LAMED" ; - :definition "LAN access mediation encompasses the application of strict access control policies, systematic verification of devices, and authentication mechanisms to govern connectivity to a Local Area Network." ; - :kb-article """## How it works - -LAN Access Mediation is a network security approach that manages and controls access to a Local Area Network by using key components such as Access Control Lists (ACLs) to specify which devices are allowed or denied access, Port Security to restrict device connections to specific switch ports, RADIUS for determining the level of access or specific resources available to users or devices, and 802.1X for enforcing device authentication before granting network access. This comprehensive strategy ensures that only authorized devices and users can connect to the network, enhancing overall security.""" ; - :kb-reference :Reference-WhatIsNetworkAccessControl ; - rdfs:seeAlso . - -:LaptopComputer a owl:Class ; - rdfs:label "Laptop Computer" ; - skos:altLabel "Laptop", - "Notebook" ; - rdfs:subClassOf :PersonalComputer ; - rdfs:isDefinedBy ; - :definition "A laptop computer (also laptop), is a small, portable personal computer (PC) with a \"clamshell\" form factor, typically having a thin LCD or LED computer screen mounted on the inside of the upper lid of the clamshell and an alphanumeric keyboard on the inside of the lower lid. The clamshell is opened up to use the computer. Laptops are folded shut for transportation, and thus are suitable for mobile use. Its name comes from lap, as it was deemed to be placed on a person's lap when being used. Although originally there was a distinction between laptops and notebooks (the former being bigger and heavier than the latter), as of 2014, there is often no longer any difference. Today, laptops are commonly used in a variety of settings, such as at work, in education, for playing games, web browsing" . - -:LateralMovementTechnique a owl:Class ; - rdfs:label "Lateral Movement Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0008 ] ; - :definition "The adversary is trying to move through your environment." . - -:LegacySystem a owl:Class ; - rdfs:label "Legacy System" ; - rdfs:subClassOf :DigitalSystem ; - rdfs:isDefinedBy ; - :definition "In computing, a legacy system is an old method, technology, computer system, or application program, \"of, relating to, or being a previous or outdated computer system,\" yet still in use. Often referencing a system as \"legacy\" means that it paved the way for the standards that would follow it. This can also imply that the system is out of date or in need of replacement." ; - :synonym "Legacy Digital System" . - -:LevenshteinMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Levenschtein Matching" ; - rdfs:subClassOf :ApproximateStringMatching ; - :d3fend-id "D3A-LM" ; - :definition "The Levenshtein distance (LD) is a metric for measuring the differences between two sequences - or strings. Informally, the LD is the number of individual edits one would have to make to turn one sequence into another." ; - :kb-article """## References -1. Navarro, G. (2001). A guided tour to approximate string matching. _ACM Computing Surveys_, 33(1), 31-88. [Link](https://doi.org/10.1145/375360.375365)""" ; - :synonym "Edit Distance" . - -:LinearClassifier a owl:Class, - owl:NamedIndividual ; - rdfs:label "Linear Classifier" ; - rdfs:subClassOf :Classification ; - :d3fend-id "D3A-LC" ; - :definition "A linear classifier is a model that makes a decision to categories a set of data points to a discrete class based on a linear combination of its explanatory variables" ; - :kb-article """## References -A Look at the Maths Behind Linear Classification. Towards Data Science. [Link](https://towardsdatascience.com/a-look-at-the-maths-behind-linear-classification-166e99a9e5fb).""" . - -:LinearLogicProgramming a owl:Class, - owl:NamedIndividual ; - rdfs:label "Linear Logic Programming" ; - rdfs:subClassOf :LogicProgramming ; - :d3fend-id "D3A-LLP" ; - :definition "Linear logic programming is a form of logic programming that uses linear logic, that is, it emphasizes the use of formulas as resources." ; - :kb-article """## References -1. Cosmo, R. and Miller D. (2019, May 24). _Linear logic_. Stanford Encyclopedia of Philosophy. [Link](https://plato.stanford.edu/entries/logic-linear/#LinLogComSci) -2. Linear logic programming. (2023, May 16). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Logic_programming#Linear_logic_programming)""" . - -:LinearRegression a owl:Class, - owl:NamedIndividual ; - rdfs:label "Linear Regression" ; - rdfs:subClassOf :RegressionAnalysis ; - :d3fend-id "D3A-LR" ; - :definition "Statistical regression method used for predictive analysis by modeling the linear relationship between independent and dependent variables." ; - :kb-article """## How it works -Takes independent variables (i.e. covariate, features, predictors, input variables) and dependent variables (i.e. response, output, “thing to be estimated”) and produces the coefficient(s) and intercept for a linear equation (e.g. (β1, β0) for y = β1x + β0) which predicts the relationship between the independent and independent variables by minimizing a cost function, Mean Squared Error, either directly in the case of univariate linear regression or by gradient descent* in the case of multivariate linear regression. - -## Considerations - - There are four principal assumptions required for good results using linear regression (the first letters of the four principal assumptions form the "LINE" mnemonic): - - Linearity and Additivity - - Independent Residuals - - Normal Residual Distributions - - Equal Variances (i.e. homoscedasticity) - - Linear regression is a low variance/high bias model. - - Optimizers like Adam, Batch, and Mini-Batch and others are available for certain applications and data sets. -- A large learning ratio or training coefficient may lead to divergent behavior of the model and too small of values may lead to long run times and inefficiency. - - -## Verification Approach - - Models are often evaluated by examining one or more of the metrics of R2, Root Mean Squared Error (RMSE), Mean Absolute Error (MAE), and Mean Absolute Percentage Error (MAPE). - - While there is no generally accepted single best performance metric as a criterion, users of linear regression should consider the suitability of one or more of these metrics for assessing the performance of their model. - - Use well known data sets to verify model execution. - -## Validation Approach - - Violating the principal assumptions of linear regression results in poor or misleading results. - - Ensure data is truly representative and if there are any known biases. - - -## References -1. Gawali, Suvarna. “Linear Regression Algorithm to Make Predictions Easily.” Analytics Vidhya, 22 July 2022, https://www.analyticsvidhya.com/blog/2021/06/linear-regression-in-machine-learning/. -1. Nau, Robert. “Statistical Forecasting: Notes On Regression and Time Series Analysis.” Introduction to Linear Regression Analysis, Duke University Fuqua School of Business, 18 Aug. 2020, https://people.duke.edu/~rnau/regintro.htm. -1. Ng, Ritchie. “Evaluating a Linear Regression Model.” Ritchieng.github.io, 8 Jan. 2023, https://www.ritchieng.com/machine-learning-evaluate-linear-regression-model/. -1. Bochkarev, Alexei. "A New Typology Design of Performance Metrics to Measure Errors in Machine Learning Regression Algorithms", 2019, https://www.researchgate.net/publication/330661543_A_New_Typology_Design_of_Performance_Metrics_to_Measure_Errors_in_Machine_Learning_Regression_Algorithms.""" . - -:LinearRegressionLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Linear Regression Learning" ; - rdfs:subClassOf :RegressionAnalysisLearning ; - :d3fend-id "D3A-LRL" ; - :definition "A supervised learning method that builds a linear regression model using training data." ; - :kb-article """## References -- Gawali, Suvarna. “Linear Regression Algorithm to Make Predictions Easily.” Analytics Vidhya, 22 July 2022, https://www.analyticsvidhya.com/blog/2021/06/linear-regression-in-machine-learning/. -- Nau, Robert. “Statistical Forecasting: Notes On Regression and Time Series Analysis.” Introduction to Linear Regression Analysis, Duke University Fuqua School of Business, 18 Aug. 2020, https://people.duke.edu/~rnau/regintro.htm. -- Ng, Ritchie. “Evaluating a Linear Regression Model.” Ritchieng.github.io, 8 Jan. 2023, https://www.ritchieng.com/machine-learning-evaluate-linear-regression-model/. -- Bochkarev, Alexei. "A New Typology Design of Performance Metrics to Measure Errors in Machine Learning Regression Algorithms", 2019, https://www.researchgate.net/publication/330661543_A_New_Typology_Design_of_Performance_Metrics_to_Measure_Errors_in_Machine_Learning_Regression_Algorithms.""" ; - rdfs:seeAlso :LinearRegression . - -:Link a owl:Class ; - rdfs:label "Link" ; - rdfs:subClassOf :D3FENDCore, - :DigitalInformationBearer ; - :definition "A link is a connection or association between two entities that facilitates communication, interaction, or data transfer." ; - rdfs:seeAlso . - -:Linux_Exit a owl:Class ; - rdfs:label "Linux _Exit" ; - rdfs:subClassOf :OSAPITerminateProcess ; - rdfs:isDefinedBy ; - :definition "Terminate the calling process." . - -:LinuxClone a owl:Class ; - rdfs:label "Linux Clone" ; - rdfs:subClassOf :OSAPICreateProcess ; - rdfs:isDefinedBy ; - :definition "Creates a child process and provides more precise control over the data shared between the parent and child processes." . - -:LinuxClone3 a owl:Class ; - rdfs:label "Linux Clone3" ; - rdfs:subClassOf :OSAPICreateProcess ; - rdfs:isDefinedBy ; - :definition """Creates a child process and provides more precise control over the data shared between the parent and child processes. - -Newer system call.""" . - -:LinuxClone3ArgumentCLONE_THREAD a owl:Class ; - rdfs:label "Linux Clone3 Argument CLONE_THREAD" ; - rdfs:subClassOf :OSAPICreateThread ; - rdfs:isDefinedBy ; - :definition "A flag parameter to the Clone3 syscall. If set, the child is placed in the same thread group as the calling process." . - -:LinuxCloneArgumentCLONE_THREAD a owl:Class ; - rdfs:label "Linux Clone Argument CLONE_THREAD" ; - rdfs:subClassOf :OSAPICreateThread ; - rdfs:isDefinedBy ; - :definition "A flag parameter to the Clone syscall. If set, the child is placed in the same thread group as the calling process." . - -:LinuxConnect a owl:Class ; - rdfs:label "Linux Connect" ; - rdfs:subClassOf :OSAPIConnectSocket ; - rdfs:isDefinedBy ; - :definition "Initiate a connection on a socket." . - -:LinuxCreat a owl:Class ; - rdfs:label "Linux Creat" ; - rdfs:subClassOf :OSAPICreateFile ; - rdfs:isDefinedBy ; - :definition "Equivalent to calling Linux Open with flags equal to O_CREAT|O_WRONLY|O_TRUNC." . - -:LinuxDeleteModule a owl:Class ; - rdfs:label "Linux Delete Module" ; - rdfs:subClassOf :OSAPIUnloadModule ; - rdfs:isDefinedBy ; - :definition "Attempts to remove the unused loadable module entry identified by name. If the module has an exit function, then that function is executed before unloading the module." . - -:LinuxExecve a owl:Class ; - rdfs:label "Linux Execve" ; - rdfs:subClassOf :OSAPIExec ; - rdfs:isDefinedBy ; - :definition "Executes a program by replacing the calling process with a new program, with newly initialized stack, heap, and (initialized and uninitialized) data segments. The PID stays the same." . - -:LinuxExecveat a owl:Class ; - rdfs:label "Linux Execveat" ; - rdfs:subClassOf :OSAPIExec ; - rdfs:isDefinedBy ; - :definition "Execute program relative to a directory file descriptor. Behavior is similar to Linux Execve." . - -:LinuxFork a owl:Class ; - rdfs:label "Linux Fork" ; - rdfs:subClassOf :OSAPICreateProcess ; - rdfs:isDefinedBy ; - :definition "Creates a child process with unique PID but retains parent PID as Parent Process Identifier (PPID)." . - -:LinuxInitModule a owl:Class ; - rdfs:label "Linux Init_Module" ; - rdfs:subClassOf :OSAPILoadModule ; - rdfs:isDefinedBy ; - :definition "Loads an ELF image into kernel space, performs any necessary symbol relocations, initializes module parameters to values provided by the caller, and then runs the module's init function." . - -:LinuxKillArgumentSIGKILL a owl:Class ; - rdfs:label "Linux Kill Argument SIGKILL" ; - rdfs:subClassOf :OSAPITerminateProcess ; - rdfs:isDefinedBy ; - :definition "Send SIGKILL signal to a process." . - -:LinuxMmap a owl:Class ; - rdfs:label "Linux Mmap" ; - rdfs:subClassOf :OSAPIAllocateMemory ; - rdfs:isDefinedBy ; - :definition "Map files or devices into memory." . - -:LinuxMmap2 a owl:Class ; - rdfs:label "Linux Mmap2" ; - rdfs:subClassOf :OSAPIAllocateMemory ; - rdfs:isDefinedBy ; - :definition "Map files or devices into memory." . - -:LinuxMunmap a owl:Class ; - rdfs:label "Linux Munmap" ; - rdfs:subClassOf :OSAPIFreeMemory ; - rdfs:isDefinedBy ; - :definition "Unmap files or devices from memory." . - -:LinuxOpenArgumentO_CREAT a owl:Class ; - rdfs:label "Linux Open Argument O_CREAT" ; - rdfs:subClassOf :OSAPICreateFile ; - rdfs:isDefinedBy ; - :definition "Create a regular file." . - -:LinuxOpenArgumentO_RDONLY-O_WRONLY-O_RDWR a owl:Class ; - rdfs:label "Linux Open Argument O_RDONLY, O_WRONLY, O_RDWR" ; - rdfs:subClassOf :OSAPIOpenFile ; - rdfs:isDefinedBy ; - :definition "Opens a file specified by pathname." . - -:LinuxOpenAt2ArgumentO_CREAT a owl:Class ; - rdfs:label "Linux OpenAt2 Argument O_CREAT" ; - rdfs:subClassOf :OSAPICreateFile ; - rdfs:isDefinedBy ; - :definition "Create a regular file. Extension of Linux Openat." . - -:LinuxOpenAt2ArgumentO_RDONLY-O_WRONLY-O_RDWR a owl:Class ; - rdfs:label "Linux OpenAt2 Argument O_RDONLY, O_WRONLY, O_RDWR" ; - rdfs:subClassOf :OSAPIOpenFile ; - rdfs:isDefinedBy ; - :definition "Extension of Linux Openat." . - -:LinuxOpenAtArgumentO_CREAT a owl:Class ; - rdfs:label "Linux OpenAt Argument O_CREAT" ; - rdfs:subClassOf :OSAPICreateFile ; - rdfs:isDefinedBy ; - :definition "Create a regular file. Same functionality as Linux Open but slight differences in parameter." . - -:LinuxOpenAtArgumentO_RDONLY-O_WRONLY-O_RDWR a owl:Class ; - rdfs:label "Linux OpenAt Argument O_RDONLY, O_WRONLY, O_RDWR" ; - rdfs:subClassOf :OSAPIOpenFile ; - rdfs:isDefinedBy ; - :definition "Same functionality as Linux Open but slight differences in parameter." . - -:LinuxPauseProcess a owl:Class ; - rdfs:label "Linux Pause Process" ; - rdfs:subClassOf :OSAPISuspendProcess ; - rdfs:isDefinedBy ; - :definition "Causes the calling process to sleep until a signal is delivered that either terminates the process or causes the invocation of a signal-catching function." . - -:LinuxPauseThread a owl:Class ; - rdfs:label "Linux Pause Thread" ; - rdfs:subClassOf :OSAPISuspendThread ; - rdfs:isDefinedBy ; - :definition "Causes the calling thread to sleep until a signal is delivered that either terminates the thread or causes the invocation of a signal-catching function." . - -:LinuxPtraceArgumentPTRACE_DETACH a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_DETACH" ; - rdfs:subClassOf :OSAPIResumeProcess ; - rdfs:isDefinedBy ; - :definition "Restart the stopped tracee as for PTRACE_CONT, but first detach from it." . - -:LinuxPtraceArgumentPTRACE_TRACEME a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_TRACEME" ; - rdfs:subClassOf :OSAPITraceProcess ; - rdfs:isDefinedBy ; - :definition "Indicates that the process is to be traced by its parent." . - -:LinuxPtraceArgumentPTRACEATTACH a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_ATTACH" ; - rdfs:subClassOf :OSAPIAccessProcess ; - rdfs:isDefinedBy ; - :definition "Attach to the process specified in pid, making it a tracee of the calling process." . - -:LinuxPtraceArgumentPTRACECONT a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_CONT" ; - rdfs:subClassOf :OSAPIResumeProcess ; - rdfs:isDefinedBy ; - :definition "Restart the stopped tracee process." . - -:LinuxPtraceArgumentPTRACEGETREGS a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_GETREGS" ; - rdfs:subClassOf :OSAPISaveRegisters ; - rdfs:isDefinedBy ; - :definition "Copy the tracee's general-purpose or floating-point registers, respectively, to the address data in the tracer." . - -:LinuxPtraceArgumentPTRACEINTERRUPT a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_INTERRUPT" ; - rdfs:subClassOf :OSAPISuspendProcess ; - rdfs:isDefinedBy ; - :definition "Stops a tracee." . - -:LinuxPtraceArgumentPTRACEPEEKTEXT a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_PEEKTEXT" ; - rdfs:subClassOf :OSAPIReadMemory ; - rdfs:isDefinedBy ; - :definition "Read a word at the address addr in the tracee's memory, returning the word as the result of the ptrace() call." . - -:LinuxPtraceArgumentPTRACEPOKETEXT a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_POKETEXT" ; - rdfs:subClassOf :OSAPIWriteMemory ; - rdfs:isDefinedBy ; - :definition "Copy the word data to the address addr in the tracee's memory." . - -:LinuxPtraceArgumentPTRACESETREGS a owl:Class ; - rdfs:label "Linux Ptrace Argument PTRACE_SETREGS" ; - rdfs:subClassOf :OSAPISetRegisters ; - rdfs:isDefinedBy ; - :definition "Modify the tracee's general-purpose or floating-point registers, respectively, from the address data in the tracer." . - -:LinuxRead a owl:Class ; - rdfs:label "Linux Read" ; - rdfs:subClassOf :OSAPIReadFile ; - rdfs:isDefinedBy ; - :definition "Read from a file descriptor." . - -:LinuxReadv a owl:Class ; - rdfs:label "Linux Readv" ; - rdfs:subClassOf :OSAPIReadFile ; - rdfs:isDefinedBy ; - :definition "Read data into multiple buffers." . - -:LinuxRename a owl:Class ; - rdfs:label "Linux Rename" ; - rdfs:subClassOf :OSAPIMoveFile ; - rdfs:isDefinedBy ; - :definition "Change the name or location of a file." . - -:LinuxRenameat a owl:Class ; - rdfs:label "Linux Renameat" ; - rdfs:subClassOf :OSAPIMoveFile ; - rdfs:isDefinedBy ; - :definition "Change the name or location of a file. Different parameter handling than Linux Rename." . - -:LinuxRenameat2 a owl:Class ; - rdfs:label "Linux Renameat2" ; - rdfs:subClassOf :OSAPIMoveFile ; - rdfs:isDefinedBy ; - :definition "Change the name or location of a file. Additional flags argument." . - -:LinuxSocket a owl:Class ; - rdfs:label "Linux Socket" ; - rdfs:subClassOf :OSAPICreateSocket ; - rdfs:isDefinedBy ; - :definition "Create an endpoint for communication." . - -:LinuxSocketcallArgumentSYS_CONNECT a owl:Class ; - rdfs:label "Linux Socketcall Argument SYS_CONNECT" ; - rdfs:subClassOf :OSAPIConnectSocket ; - rdfs:isDefinedBy . - -:LinuxSocketcallArgumentSYS_SOCKET a owl:Class ; - rdfs:label "Linux Socketcall Argument SYS_SOCKET" ; - rdfs:subClassOf :OSAPICreateSocket ; - rdfs:isDefinedBy . - -:LinuxTime a owl:Class ; - rdfs:label "Linux Time" ; - rdfs:subClassOf :OSAPIGetSystemTime ; - rdfs:isDefinedBy ; - :definition "Get time in seconds." . - -:LinuxUnlink a owl:Class ; - rdfs:label "Linux Unlink" ; - rdfs:subClassOf :OSAPIDeleteFile ; - rdfs:isDefinedBy ; - :definition "Delete a name and possibly the file it refers to." . - -:LinuxUnlinkat a owl:Class ; - rdfs:label "Linux Unlinkat" ; - rdfs:subClassOf :OSAPIDeleteFile ; - rdfs:isDefinedBy ; - :definition "Delete a name and possibly the file it refers to. Different parameter handling than Linux Unlink" . - -:LinuxVfork a owl:Class ; - rdfs:label "Linux Vfork" ; - rdfs:subClassOf :OSAPICreateProcess ; - rdfs:isDefinedBy ; - :definition "Create child process that temp suspends parent process until it terminates." . - -:LinuxWrite a owl:Class ; - rdfs:label "Linux Write" ; - rdfs:subClassOf :OSAPIWriteFile ; - rdfs:isDefinedBy ; - :definition "Write to a file descriptor." . - -:LinuxWritev a owl:Class ; - rdfs:label "Linux Writev" ; - rdfs:subClassOf :OSAPIWriteFile ; - rdfs:isDefinedBy ; - :definition "Write data into multiple buffers." . - -:LoadLibraryEvent a owl:Class ; - rdfs:label "Load Library Event" ; - rdfs:subClassOf :ProcessEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :SharedLibraryFile ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ProcessCreationEvent ] ; - :definition "An event where a process dynamically loads a library or module into its memory space, extending its capabilities." . - -:LoadModule a owl:Class ; - rdfs:label "Load Module" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :loads ; - owl:someValuesFrom :HardwareDriver ], - [ a owl:Restriction ; - owl:onProperty :loads ; - owl:someValuesFrom :KernelModule ] ; - :definition "A system call that loads a driver or extension into the kernel." . - -:LocalAccountMonitoring a :LocalAccountMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Local Account Monitoring" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :LocalUserAccount ] ; - :d3fend-id "D3-LAM" ; - :definition "Analyzing local user accounts to detect unauthorized activity." ; - :kb-reference :Reference-AuditUserAccountManagement, - :Reference-CAR-2016-04-004_SuccessfulLocalAccountLogin, - :Reference-OSQueryWindowsUserCollectionCode . - -:LocalAreaNetwork a owl:Class ; - rdfs:label "Local Area Network" ; - skos:altLabel "LAN" ; - rdfs:subClassOf :Network, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :Host ] ; - rdfs:isDefinedBy ; - :definition "A local area network (LAN) is a computer network that interconnects computers within a limited area such as a residence, school, laboratory, university campus or office building and has its network equipment and interconnects locally managed. Ethernet and Wi-Fi are the two most common transmission technologies in use for local area networks. Historical technologies include ARCNET, Token ring, and AppleTalk." . - -:LocalAreaNetworkAttacker a owl:Class ; - rdfs:label "Local Area Network Attacker" ; - rdfs:subClassOf :LocalAttacker, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :LocalAreaNetwork ] ; - :definition "An attacker who exploits vulnerabilities within the same local area network." ; - :synonym "LAN Attacker" . - -:LocalAreaNetworkTraffic a owl:Class ; - rdfs:label "Local Area Network Traffic" ; - rdfs:subClassOf :IntranetNetworkTraffic ; - :definition "Intranet local area network (LAN) traffic is network traffic that does not cross a given network's boundaries; where that network is defined as a LAN." ; - rdfs:seeAlso . - -:LocalAttacker a owl:Class ; - rdfs:label "Local Attacker" ; - rdfs:subClassOf :Attacker ; - :definition "An attacker who is physically near or on the premises of the target network or systems." . - -:LocalAuthenticationService a owl:Class ; - rdfs:label "Local Authentication Service" ; - rdfs:subClassOf :AuthenticationService, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :LocalUserAccount ] ; - :definition "A local authentication service running on a host can authenticate a user logged into just that local host computer." . - -:LocalAuthorizationService a owl:Class ; - rdfs:label "Local Authorization Service" ; - rdfs:subClassOf :AuthorizationService, - [ a owl:Restriction ; - owl:onProperty :authorizes ; - owl:someValuesFrom :LocalUserAccount ] ; - :definition "A local authorization service running on a host can authorize a user logged into just that local host computer." . - -:LocalFileAccessMediation a :LocalFileAccessMediation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Local File Access Mediation" ; - rdfs:subClassOf :SystemCallFiltering, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :OpenFile ] ; - rdfs:comment "Replaces d3-LFP" ; - :d3fend-id "D3-LFAM" ; - :definition "Local file access mediation is the process of an operating system granting or denying a specific access request to a local file." ; - :kb-reference :Reference-FileAndFolderPermissions ; - :synonym "Local File Access Control" . - -:LocalFilePermissions a :LocalFilePermissions, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Local File Permissions" ; - rdfs:subClassOf :AccessPolicyAdministration, - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :Directory ], - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-LFP" ; - :definition "Local file permissions is the systematic process of defining, implementing, and managing access control policies that dictate user permissions for accessing files on a local system through the configuration of operating system functionality." ; - :kb-reference :Reference-FileAndFolderPermissions . - -:LocalResource a owl:Class ; - rdfs:label "Local Resource" ; - skos:altLabel "System Resource" ; - rdfs:subClassOf :Resource ; - :definition "In computing, a system resource, or simply resource, is any physical or virtual component of limited availability within a computer system. Every device connected to a computer system is a resource. Every internal system component is a resource. Virtual system resources include files (concretely file handles), network connections (concretely network sockets), and memory areas. Managing resources is referred to as resource management, and includes both preventing resource leaks (releasing a resource when a process has finished using it) and dealing with resource contention (when multiple processes wish to access a limited resource)." ; - rdfs:seeAlso . - -:LocalResourceAccess a owl:Class ; - rdfs:label "Local Resource Access" ; - skos:altLabel "Endpoint Resource Access" ; - rdfs:subClassOf :ResourceAccess, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :LocalResource ] ; - :definition "Ephemeral digital artifact comprising a request of a local resource and any response from that resource." . - -:LocalUserAccount a owl:Class ; - rdfs:label "Local User Account" ; - rdfs:subClassOf :UserAccount ; - :definition "A user account on a given host is a local user account for that specific host." . - -:Log a owl:Class, - owl:NamedIndividual ; - rdfs:label "Log" ; - skos:altLabel "Chronology" ; - rdfs:subClassOf :D3FENDCore, - :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A record of events in the order of their occurrence." ; - rdfs:seeAlso . - -:LogFile a owl:Class ; - rdfs:label "Log File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Log ] ; - rdfs:isDefinedBy ; - :definition """A log file is a file that records either events that occur in an operating system or other software runs, or messages between different users of a communication software. Logging is the act of keeping a log. In the simplest case, messages are written to a single log file. - -A transaction log is a file (i.e., log) of the communications between a system and the users of that system, or a data collection method that automatically captures the type, content, or time of transactions made by a person from a terminal with that system. For Web searching, a transaction log is an electronic record of interactions that have occurred during a searching episode between a Web search engine and users searching for information on that Web search engine. - -Many operating systems, software frameworks and programs include a logging system. A widely used logging standard is syslog, defined in Internet Engineering Task Force (IETF) RFC 5424). The syslog standard enables a dedicated, standardized subsystem to generate, filter, record, and analyze log messages. This relieves software developers of having to design and code their own ad hoc logging systems.""" ; - rdfs:seeAlso . - -:LogicalLink a owl:Class ; - rdfs:label "Logical Link" ; - rdfs:subClassOf :Link ; - :definition "A Logical Link is an abstract or virtual connection between two entities that facilitates communication or data exchange without requiring a direct physical connection." . - -:LogicalLinkMapping a :LogicalLinkMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Logical Link Mapping" ; - rdfs:subClassOf :NetworkMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :LogicalLink ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :Network ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :NetworkNode ] ; - :d3fend-id "D3-LLM" ; - :definition "Logical link mapping creates a model of existing or previous node-to-node connections using network-layer data or metadata." ; - :kb-reference :Reference-LibreNMSDocsNetworkMapExtension . - -:LogicalRules a owl:Class, - owl:NamedIndividual ; - rdfs:label "Logical Rules" ; - rdfs:subClassOf :SymbolicLogic ; - :d3fend-id "D3A-LR" ; - :definition "A logical rule matches event data or set of values to a conditional expression and results in the determination of a truth value, which may be used to determine the next action or step to take." ; - :kb-article """## How it works - -Logic rules define a set of patterns that in some patterns must match input data. If the the conditions are met, then the rule will "fire" and some action will be taken, usually notifying a person or another system that the event being monitored needs further processing or attention. - -## Key Test Considerations - -- **Performance (Accuracy)** Identify instances in data where rule is expected to be triggered. Implement traceability and metrics for individual rule performance. Traceability of cases could be implemented as unit tests or as part of a fine-grained classification performance platform. For simple rule-based matching systems with many rules, individual rules may be unused or may create unusually high false positives (or false negatives relative to expectation. - -- **Performance (Computational)** Generate model performance measures (see Classification Performance Measures), esp. a confusion matrix for each rule and identify outliers and relative contribution of rule to overall performance. - -## References -1. Event condition action. (2019, Nov 21). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Event_condition_action). -2. Business rule. (2023, April 10). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Business_rule). -3. YARA. (2023, June 5). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/YARA).""" . - -:LogicProgramming a owl:Class, - owl:NamedIndividual ; - rdfs:label "Logic Programming" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-LP" ; - :definition "Logic programming is a programming paradigm which is largely based on formal logic." ; - :kb-article """## How it works -Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, answer set programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses: - -H :- B_1, ..., B_n. - -## References -1. Logic programming. (2023, May 29). In _Wikipedia_. [Link]( https://en.wikipedia.org/wiki/Logic_programming)""" . - -:LoginSession a owl:Class, - owl:NamedIndividual ; - rdfs:label "Login Session" ; - skos:altLabel "Logon Session" ; - rdfs:subClassOf :Session ; - rdfs:isDefinedBy ; - :definition "In computing, a login session is the period of activity between a user logging in and logging out of a (multi-user) system. This includes local login sessions, where a user has direct physical access to a computer, as well as domain login sessions, where a user logs into a computer that is part of a network domain." ; - rdfs:seeAlso . - -:LogisticRegression a owl:Class, - owl:NamedIndividual ; - rdfs:label "Logistic Regression" ; - rdfs:subClassOf :RegressionAnalysis ; - :d3fend-id "D3A-LR" ; - :definition "Logistic regression is estimating the parameters of a logistic model." ; - :kb-article """## References -Wikipedia. (n.d.). Logistic regression. [Link](https://en.wikipedia.org/wiki/Logistic_regression)""" . - -:LogististicRegressionLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Logistic Regression Learning" ; - rdfs:subClassOf :RegressionAnalysisLearning ; - :d3fend-id "D3A-LRL" ; - :definition "A supervised learning method that builds a logistic regression model using training data." ; - :kb-article """## References -Wikipedia. (n.d.). Logistic regression. [Link](https://en.wikipedia.org/wiki/Logistic_regression)""" ; - rdfs:seeAlso :LogisticRegression . - -:LogMessageFunction a owl:Class ; - rdfs:label "Log Message Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :DigitalEventRecord ] ; - :definition "Produces an entry in a log." . - -:LogoffEvent a owl:Class ; - rdfs:label "Logoff Event" ; - rdfs:subClassOf :AuthenticationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Session ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :LogonEvent ] ; - :definition "An authentication event where an active session is conclusively terminated, resulting in the cessation of access and deallocation of resources associated with the session, ensuring that the connection to the system, application, or resource no longer exists." . - -:LogonEvent a owl:Class ; - rdfs:label "Logon Event" ; - rdfs:subClassOf :AuthenticationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Session ] ; - :definition "An authentication event where a new session is initiated, signifying the successful validation of credentials and establishment of an authorized connection to a system, application, or resource. This marks the beginning of the subject’s authenticated interaction with the system." . - -:LogonUser a owl:Class ; - rdfs:label "Logon User" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :UserAccount ] . - -:LongShort-termMemory a owl:Class, - owl:NamedIndividual ; - rdfs:label "Long Short-term Memory" ; - rdfs:subClassOf :RecurrentNeuralNetwork ; - :d3fend-id "D3A-LSTM" ; - :definition "Unlike standard feedforward neural networks, LSTM has feedback connections. Such a recurrent neural network (RNN) can process not only single data points (such as images), but also entire sequences of data (such as speech or video). This characteristic makes LSTM networks ideal for processing and predicting data" ; - :kb-article """## References -Wikipedia. (2021, September 29). Long short-term memory. [Link](https://en.wikipedia.org/wiki/Long_short-term_memory)""" . - -:MACAddress a owl:Class ; - rdfs:label "MAC Address" ; - rdfs:subClassOf :Identifier, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :NetworkInterfaceCard ] ; - rdfs:isDefinedBy ; - :definition "A media access control address (MAC address) is a unique identifier assigned to a network interface controller (NIC) for use as a network address in communications within a network segment." . - -:MachineLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Machine Learning" ; - rdfs:subClassOf :AnalyticTechnique ; - :d3fend-id "D3A-ML" ; - :definition "Machine learning techniques are computational methods that combine statistics, probability, and optimization to make accurate predictions and/or improve performance." ; - :kb-article """## References -Machine learning." Wikipedia. [Link](https://en.wikipedia.org/wiki/Machine_learning).""" . - -:MacOSKeychain a owl:Class ; - rdfs:label "MacOS Keychain" ; - skos:altLabel "Keychain" ; - rdfs:subClassOf :PasswordStore ; - rdfs:isDefinedBy ; - :definition "Keychain is the password management system in macOS, developed by Apple. It was introduced with Mac OS 8.6, and has been included in all subsequent versions of the operating system, now known as macOS. A Keychain can contain various types of data: passwords (for websites, FTP servers, SSH accounts, network shares, wireless networks, groupware applications, encrypted disk images), private keys, certificates, and secure notes." . - -:MailNetworkTraffic a owl:Class ; - rdfs:label "Mail Network Traffic" ; - rdfs:subClassOf :NetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Email ] ; - :definition "Mail traffic is network traffic that uses a standard mail transfer protocol." . - -:MailServer a owl:Class ; - rdfs:label "Mail Server" ; - skos:altLabel "Email Server Resource", - "Mail Exchanger", - "Mail transfer agent", - "Message transfer agent", - "MTA", - "MX Host" ; - rdfs:subClassOf :Server, - [ a owl:Restriction ; - owl:onProperty :runs ; - owl:someValuesFrom :MessageTransferAgent ] ; - rdfs:isDefinedBy ; - :definition "Within the Internet email system, a message transfer agent or mail transfer agent (MTA) or mail relay is software that transfers electronic mail messages from one computer to another using SMTP. The terms mail server, mail exchanger, and MX host are also used in some contexts. Messages exchanged across networks are passed between mail servers, including any attached data files (such as images, multimedia or documents). These servers also often keep mailboxes for email. Access to this email by end users is typically either via webmail or an email client." . - -:MailService a owl:Class ; - rdfs:label "Mail Service" ; - skos:altLabel "Email Service" ; - rdfs:subClassOf :NetworkService ; - :definition "A mail service provides the ability to send and receive mail across a computer network. The mail service runs on message transfer agents (i.e., mail servers) and is accessed by users through an email client." ; - rdfs:seeAlso , - . - -:Matching a owl:Class ; - rdfs:label "Matching" ; - rdfs:subClassOf :AnalyticalPurpose . - -:MathematicalFunction a owl:Class ; - rdfs:label "Mathematical Function" ; - rdfs:subClassOf :Subroutine ; - :definition "Computes mathematical expressions." . - -:Maximum-marginLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Maximum-margin Learning" ; - rdfs:subClassOf :IntrinsicallySemi-supervisedLearning ; - :d3fend-id "D3A-MML" ; - :definition "Maximum-margin classifiers attempt to maximize the distance between the given data points and the decision boundary" ; - :kb-article """## References -Engelen, S., & Hoos, H. (2020). A survey on semi-supervised learning. Machine Learning, 109(2), 299-337. [Link](https://link.springer.com/article/10.1007/s10994-019-05855-6). - -Support Vector Machines for Machine Learning. [Link](https://machinelearningmastery.com/support-vector-machines-for-machine-learning/#:~:text=The%20distance%20between%20the%20line,called%20the%20Maximal%2DMargin%20hyperplane.)""" . - -:Mean a owl:Class, - owl:NamedIndividual ; - rdfs:label "Mean" ; - rdfs:subClassOf :CentralTendency ; - :d3fend-id "D3A-MEA" ; - :definition "The sum of all measurements divided by the number of observations in the data set." ; - :kb-article """## References -Wikipedia. (n.d.). Central tendency. [Link](https://en.wikipedia.org/wiki/Central_tendency)""" . - -:MeanAbsoluteDeviation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Mean Absolute Deviation" ; - rdfs:subClassOf :AverageAbsoluteDeviation ; - :d3fend-id "D3A-MAD" ; - :definition "The mean absolute deviation (MAD), also referred to as the \"mean deviation\" or sometimes \"average absolute deviation\", is the mean of the data's absolute deviations around the data's mean: the average (absolute) distance from the mean." ; - :kb-article """## References -Wikipedia. (n.d.). Average absolute deviation. [Link](https://en.wikipedia.org/wiki/Average_absolute_deviation)""" ; - :synonym "MAD" . - -:MediaGeneration a owl:Class ; - rdfs:label "Media Generation" ; - rdfs:subClassOf :Generation ; - owl:disjointWith :Simulation . - -:Median a owl:Class, - owl:NamedIndividual ; - rdfs:label "Median" ; - rdfs:subClassOf :CentralTendency ; - :d3fend-id "D3A-MED" ; - :definition "The middle value that separates the higher half from the lower half of the data set. The median and the mode are the only measures of central tendency that can be used for ordinal data, in which values are ranked relative to each other but are not measured absolutely." ; - :kb-article """## References -Wikipedia. (n.d.). Central tendency. [Link](https://en.wikipedia.org/wiki/Central_tendency)""" . - -:MedianAbsoluteDeviation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Median Absolute Deviation" ; - rdfs:subClassOf :AverageAbsoluteDeviation ; - :d3fend-id "D3A-MAD" ; - :definition "The median absolute deviation (also MAD) is the median of the absolute deviation from the median." ; - :kb-article """## References -Wikipedia. (n.d.). Average absolute deviation. [Link](https://en.wikipedia.org/wiki/Average_absolute_deviation)""" . - -:MediaServer a owl:Class ; - rdfs:label "Media Server" ; - rdfs:subClassOf :Server ; - rdfs:isDefinedBy ; - :definition "A media server is a computer appliance or an application software that stores digital media (video, audio or images) and makes it available over a network. Media servers range from servers that provide video on demand to smaller personal computers or NAS (Network Attached Storage) for the home." . - -:MemoryAddress a owl:Class ; - rdfs:label "Memory Address" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :addresses ; - owl:someValuesFrom :MemoryWord ] ; - rdfs:isDefinedBy ; - :definition "In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware." . - -:MemoryAddressSpace a owl:Class ; - rdfs:label "Memory Address Space" ; - rdfs:subClassOf :AddressSpace, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :MemoryAddress ] ; - :definition "A memory address space is a space containing memory addresses." . - -:MemoryAllocationEvent a owl:Class ; - rdfs:label "Memory Allocation Event" ; - rdfs:subClassOf :MemoryEvent ; - :definition "An event representing the allocation of memory resources to a process, providing it with the capacity to store data or execute instructions." . - -:MemoryAllocationFunction a owl:Class ; - rdfs:label "Memory Allocation Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :AllocateMemory ] ; - :definition "Reserves memory for a running process to use." . - -:MemoryBlock a owl:Class ; - rdfs:label "Memory Block" ; - rdfs:subClassOf :MemoryExtent, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :MemoryWord ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :Record ] ; - rdfs:isDefinedBy ; - :definition "In computing (specifically data transmission and data storage), a block, sometimes called a physical record, is a sequence of bytes or bits, usually containing some whole number of records, having a maximum length; a block size. Data thus structured are said to be blocked. The process of putting data into blocks is called blocking, while deblocking is the process of extracting data from blocks. Blocked data is normally stored in a data buffer and read or written a whole block at a time." . - -:MemoryBlockStartValidation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Memory Block Start Validation" ; - rdfs:subClassOf :PointerValidation, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :MemoryFreeFunction ] ; - :d3fend-id "D3-MBSV" ; - :definition "Ensuring that a pointer accurately references the beginning of a designated memory block." ; - :kb-article """## How it Works -Ensure that a pointer is referencing the beginning of the intended block before using. - -## Considerations -Be careful with pointer arithmetic.""" ; - :kb-reference :Reference-CManualPointerArithmetic_GNU . - -:MemoryBoundaryTracking a :MemoryBoundaryTracking, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Memory Boundary Tracking" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :ProcessCodeSegment ] ; - :d3fend-id "D3-MBT" ; - :definition "Analyzing a call stack for return addresses which point to unexpected memory locations." ; - :kb-article """## How it works -This technique monitors for indicators of whether a return address is outside memory previously allocated for an object (i.e. function, module, process, or thread). If so, code that the return address points to is treated as malicious code. - -## Considerations -Kernel malware can manipulate memory contents, for example modifying pointers to hide processes, and thereby impact the accuracy of memory allocation information used to perform the analysis.""" ; - :kb-reference :Reference-InferentialExploitAttemptDetection_CrowdstrikeInc . - -:MemoryDeletionEvent a owl:Class ; - rdfs:label "Memory Deletion Event" ; - rdfs:subClassOf :MemoryEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :MemoryFreeFunction ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :MemoryAllocationEvent ] ; - :definition "An event marking the release or deallocation of memory resources, reclaiming them for reuse within the system." . - -:MemoryDeviceEvent a owl:Class ; - rdfs:label "Memory Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :PrimaryStorage ] ; - :definition "An event describing activity in primary storage devices, such as DRAM or SRAM memory initialization, reconfiguration, or failures." . - -:MemoryEvent a owl:Class ; - rdfs:label "Memory Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :MemoryAddress ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :MemoryExtent ] ; - :definition "An event capturing operations on the memory resources of a system, encompassing allocation, modification, access, protection, or deallocation." ; - rdfs:seeAlso . - -:MemoryExtent a owl:Class ; - rdfs:label "Memory Extent" ; - rdfs:subClassOf :DigitalInformation ; - :definition "A memory extent is a defined, contiguous region of memory within a computing system, characterized by its size, location, and purpose. It represents an abstraction of physical or virtual memory used for storing data, instructions, or other computational artifacts." . - -:MemoryFreeFunction a owl:Class ; - rdfs:label "Memory Free Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :FreeMemory ] ; - :definition "Releases previously reserved memory associated with a process." . - -:MemoryManagementUnit a owl:Class ; - rdfs:label "Memory Management Unit" ; - rdfs:subClassOf :ProcessorComponent, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :TranslationLookasideBuffer ], - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :VirtualAddress ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :PageTable ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :Storage ] ; - rdfs:isDefinedBy ; - :definition "A computer’s memory management unit (MMU) is the physical hardware that handles its virtual memory and caching operations. The MMU is usually located within the computer’s central processing unit (CPU), but sometimes operates in a separate integrated chip (IC)." ; - rdfs:seeAlso . - -:MemoryManagementUnitComponent a owl:Class ; - rdfs:label "Memory Management Unit Component" ; - rdfs:subClassOf :HardwareDevice ; - :definition "A Memory Management Unit Component is a hardware or software element that contributes to the functionality of a Memory Management Unit, which is responsible for managing and translating memory addresses in a computing system." . - -:MemoryMapEvent a owl:Class ; - rdfs:label "Memory Map Event" ; - rdfs:subClassOf :MemoryEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :VirtualMemorySpace ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :MemoryAllocationEvent ] ; - :definition "An event representing the mapping of memory regions into a process's virtual address space, enabling efficient access to shared or reserved memory." . - -:MemoryModificationEvent a owl:Class ; - rdfs:label "Memory Modification Event" ; - rdfs:subClassOf :MemoryEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :MemoryAllocationEvent ] ; - :definition "An event where a process modifies allocated memory, potentially altering its content, behavior, or state." . - -:MemoryPool a owl:Class ; - rdfs:label "Memory Pool" ; - rdfs:subClassOf :MemoryExtent, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :MemoryBlock ] ; - rdfs:isDefinedBy ; - :definition "Memory pools, also called fixed-size blocks allocation, is the use of pools for memory management… preallocating a number of memory blocks with the same size called the memory pool. The application can allocate, access, and free blocks represented by handles at run time." . - -:MemoryProtectionUnit a owl:Class ; - rdfs:label "Memory Protection Unit" ; - rdfs:subClassOf :ProcessorComponent ; - :definition "A Memory Protection Unit (MPU) is a processor component that enforces access control policies on memory regions to ensure the integrity, security, and proper operation of a computing system." ; - :synonym "MPU" . - -:MemoryReadEvent a owl:Class ; - rdfs:label "Memory Read Event" ; - rdfs:subClassOf :MemoryEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :RawMemoryAccessFunction ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :MemoryAllocationEvent ] ; - :definition "An event where a process retrieves data from a specific memory address, either from its own allocated space or that of another process." . - -:MemoryWord a owl:Class ; - rdfs:label "Memory Word" ; - rdfs:subClassOf :MemoryExtent ; - rdfs:isDefinedBy ; - :definition "A memory word is the natural unit of data used by a particular computer processor design; a fixed-size piece of data handled as a unit by the instruction set or the hardware of the processor." . - -:MemoryWriteEvent a owl:Class ; - rdfs:label "Memory Write Event" ; - rdfs:subClassOf :MemoryEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :MemoryAllocationEvent ] ; - :definition "An event where a process writes data to a memory address, storing new information or updating existing content." . - -:MessageAnalysis a :MessageAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Message Analysis" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-MA" ; - :definition "Analyzing email or instant message content to detect unauthorized activity." ; - :enables :Detect ; - :kb-article """## Technique Overview - -Email and messaging are frequently used to deliver malicious content to targets. These enterprise capabilities are used to deliver software exploits or social engineering tricks. If the recipient of a message trusts the sender, attackers can avoid escalating suspicion. - -Emails and messages are also complex data structures. They contain files and links, and complex data encodings which vary region to region. Thus the defensive techniques used to analyze emails and messages are highly varied ranging from deep content analysis and execution to social network graph-style analytics to analyze trust or risk.""" ; - :synonym "Electronic Message Analysis", - "Email Or Messaging Analysis" . - -:MessageAuthentication a :MessageAuthentication, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Message Authentication" ; - rdfs:subClassOf :MessageHardening, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :UserToUserMessage ] ; - :d3fend-id "D3-MAN" ; - :definition "Authenticating the sender of a message and ensuring message integrity." ; - :kb-article """## How it works - -### Digital Signature -Digital signatures are used to verifying a message is from the expected sender. In email, Secure/Multipurpose Internet Mail Extensions (S/MIME) protocol is typically used to digitally sign messages. A hash value of the sender's message is created and encrypted with the sender's private key to create a digital signature. The message and the digital signature are sent to the recipient where the sender's public key is used to decrypt the digital signature and compute the hash of the message. The computed hash is compared with the hash from the received message, and any difference in the hash values signify the message did not originate from the sender and has been alerted in transit. - -### Message Authentication Code (MAC) -MAC is a fixed size string that is appended to a message to provide message authentication and integrity. The sender MAC signing algorithm takes as input a secret symmetric key shared between sender and recipient and the message to calculate a short tag that is appended to the message. The recipient receives the message with the appended tag, and a MAC verification algorithm is run using the symmetric key to verify the message came from the stated sender and ensure the message has not been tampered with. - -## Considerations -- Public keys associated with digital signatures should be verified by a Certification Authority (CA) to prevent impersonation. The CA verifies the owner of a public key and puts the sender's identity and public key into a certificate that is signed by the CA. -- Digital signatures provide non-repudiation where a third party can verify the authenticity of the message using the sender's digital certificate signed by the CA. -- Symmetric keys must be exchanged securely via a private channel and management of new symmetric keys are needed for each pair of participants wishing to exchange messages.""" ; - :kb-reference :Reference-DomainKeysIdentifiedMail-Signatures-IETF, - :Reference-SecureMultipurposeInternetMailExtensionsMIME-Version3.1 . - -:MessageEncryption a :MessageEncryption, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Message Encryption" ; - rdfs:subClassOf :MessageHardening, - [ a owl:Restriction ; - owl:onProperty :encrypts ; - owl:someValuesFrom :UserToUserMessage ] ; - :d3fend-id "D3-MENCR" ; - :definition "Encrypting a message body using a cryptographic key." ; - :kb-article """## How it works - -### Asymmetric Cryptography -Asymmetric encryption is typically accomplished using public and private key certificates based on the X.509 standard. The sender encrypts messages using the recipient's public key and the receipt decrypts the message using their private key. Standards that can be used to implement message encryption include S/MIME (Secure/Multipurpose Internet Mail Extensions) and PGP. -### Symmetric Cryptography -Symmetric encryption uses the same cryptographic key by both the sender and receiver to encrypt and decrypt a message. Asymmetric key exchange protocols such as Diffie-Hellman can be used to share the cryptographic key with the recipient. - -## Considerations -- Separate configuration settings to enable message encryption are often needed for each messenger client (e.g. webmail, desktop client, mobile). -- Continuous monitoring to ensure private keys are not compromised and the certificate authority (CA) is trusted. -- Secure transfer of private keys between multiple devices.""" ; - :kb-reference :Reference-SecureMultipurposeInternetMailExtensionsMIME-Version3.1 . - -:MessageHardening a :MessageHardening, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Message Hardening" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Harden ] ; - :d3fend-id "D3-MH" ; - :definition "Email or Messaging Hardening includes measures taken to ensure the confidentiality and integrity of user to user computer messages." ; - :enables :Harden ; - :synonym "Email Or Messaging Hardening" . - -:MessageTransferAgent a owl:Class ; - rdfs:label "Message Transfer Agent" ; - skos:altLabel "Mail Transfer Agent", - "MTA" ; - rdfs:subClassOf :MailService ; - :definition "A message transfer agent or mail transfer agent (MTA) or mail relay is software that transfers electronic mail messages from one computer to another using a client-server application architecture. An MTA implements both the client (sending) and server (receiving) portions of the Simple Mail Transfer Protocol." ; - rdfs:seeAlso . - -:Metadata a owl:Class ; - rdfs:label "Metadata" ; - rdfs:subClassOf :DigitalInformation ; - rdfs:isDefinedBy ; - :definition "Metadata is information which describes aspects of other information." ; - rdfs:seeAlso . - -:Microcode a owl:Class ; - rdfs:label "Microcode" ; - rdfs:subClassOf :Firmware ; - rdfs:isDefinedBy ; - :definition "Microcode is a computer hardware technique that interposes a layer of organization between the CPU hardware and the programmer-visible instruction set architecture of the computer. As such, the microcode is a layer of hardware-level instructions that implement higher-level machine code instructions or internal state machine sequencing in many digital processing elements." . - -:MicrosoftHTMLApplication a owl:Class ; - rdfs:label "Microsoft HTML Application" ; - rdfs:subClassOf :HTMLFile, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ExecutableScript ] ; - rdfs:isDefinedBy ; - :definition "An HTML Application (HTA) is a Microsoft Windows program whose source code consists of HTML, Dynamic HTML, and one or more scripting languages supported by Internet Explorer, such as VBScript or JScript." ; - :synonym "HTA" . - -:MobilePhone a owl:Class ; - rdfs:label "Mobile Phone" ; - skos:altLabel "Cellphone", - "Cellular Phone" ; - rdfs:subClassOf :PersonalComputer ; - rdfs:isDefinedBy ; - :definition "A mobile phone, cellular phone, cell phone, cellphone or hand phone, sometimes shortened to simply mobile, cell or just phone, is a portable telephone that can make and receive calls over a radio frequency link while the user is moving within a telephone service area. The radio frequency link establishes a connection to the switching systems of a mobile phone operator, which provides access to the public switched telephone network (PSTN). Modern mobile telephone services use a cellular network architecture and, therefore, mobile telephones are called cellular telephones or cell phones in North America. In addition to telephony, digital mobile phones (2G) support a variety of other services, such as text messaging, MMS, email, Internet access, short-range wireless communications (infrared," . - -:ModalLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Modal Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-ML" ; - :definition "Modal logic is a collection of formal systems developed to represent statements about necessity and possibility. It plays a major role in philosophy of language, epistemology, metaphysics, and natural language semantics." ; - :kb-article """## References -1. Modal logic. (2023, June 4). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Modal_logic)""" . - -:Mode a owl:Class, - owl:NamedIndividual ; - rdfs:label "Mode" ; - rdfs:subClassOf :CentralTendency ; - :d3fend-id "D3A-MOD" ; - :definition "The most frequent value in the data set. This is the only central tendency measure that can be used with nominal data, which have purely qualitative category assignments." ; - :kb-article """## References -Wikipedia. (n.d.). Central tendency. [Link](https://en.wikipedia.org/wiki/Central_tendency)""" . - -:Model a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Model" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The model tactic is used to apply security engineering, vulnerability, threat, and risk analyses to digital systems. This is accomplished by creating and maintaining a common understanding of the systems being defended, the operations on those systems, actors using the systems, and the relationships and interactions between these elements." ; - :display-order -1 ; - :display-priority 1 . - -:Model-basedPolicyOptimization a owl:Class, - owl:NamedIndividual ; - rdfs:label "Model-based Policy Optimization" ; - rdfs:subClassOf :Model-basedReinforcementLearning ; - :d3fend-id "D3A-MBPO" ; - :definition "Model-based policy optimization (MBPO) is a model-based, online, off-policy reinforcement learning algorithm. For more information on the different types of reinforcement learning agents" ; - :kb-article """## References -MBPO Agents. MathWorks. [Link](https://www.mathworks.com/help/reinforcement-learning/ug/mbpo-agents.html).""" . - -:Model-basedReinforcementLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Model-based Reinforcement Learning" ; - rdfs:subClassOf :ReinforcementLearning ; - :d3fend-id "D3A-MBRL" ; - :definition "Model-based Reinforcement Learning refers to learning optimal behavior indirectly by learning a model of the environment by taking actions and observing the outcomes that include the next state and the immediate reward. The models predict the outcomes of actions and are used in lieu of or in addition to interaction with the environment to learn optimal policies." ; - :kb-article """## References -Model-Based Reinforcement Learning. In *Encyclopedia of Machine Learning*, pp. 642-644. Springer, 2010. [Link](https://link.springer.com/referenceworkentry/10.1007/978-0-387-30164-8_556#:~:text=Model%2Dbased%20Reinforcement%20Learning%20refers,state%20and%20the%20immediate%20reward).""" ; - :todo "Review: Which definition to use" . - -:Model-basedValueIteration a owl:Class, - owl:NamedIndividual ; - rdfs:label "Model-based Value Iteration" ; - rdfs:subClassOf :Model-basedReinforcementLearning ; - :d3fend-id "D3A-MBVI" ; - :definition "Value Iteration effectively reducesthe evaluation stage down to a single sweep of the states. Additionally, to improve things further, it combines the Policy Evaluation and Policy Improvement stages into a single update." ; - :kb-article """## References -Policy and Value Iteration. Towards Data Science. [Link](https://towardsdatascience.com/policy-and-value-iteration-78501afb41d2).""" ; - :synonym "MBVI" . - -:Model-freeReinforcementLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Model-free Reinforcement Learning" ; - rdfs:subClassOf :ReinforcementLearning ; - :d3fend-id "D3A-MFRL" ; - :definition "In reinforcement learning (RL), a model-free algorithm (as opposed to a model-based one) is an algorithm which does not use the transition probability distribution (and the reward function) associated with the Markov decision process (MDP),which, in RL, represents the problem to be solved. The transition probability distribution (or transition model) and the reward function are often collectively called the \"model\" of the environment (or MDP), hence the name \"model-free\". A model-free RL algorithm can be thought of as an \"explicit\" trial-and-error algorithm. An example of a model-free algorithm is Q-learning." ; - :kb-article """## References -Model-free (reinforcement learning). Wikipedia. [Link](https://en.wikipedia.org/wiki/Model-free_(reinforcement_learning)).)""" . - -:Modem a owl:Class ; - rdfs:label "Modem" ; - rdfs:subClassOf :ComputerNetworkNode ; - rdfs:isDefinedBy ; - :definition "A modem -- a portmanteau of \"modulator-demodulator\" -- is a hardware device that converts data into a format suitable for a transmission medium so that it can be transmitted from one computer to another (historically along telephone wires). A modem modulates one or more carrier wave signals to encode digital information for transmission and demodulates signals to decode the transmitted information. The goal is to produce a signal that can be transmitted easily and decoded reliably to reproduce the original digital data. Modems can be used with almost any means of transmitting analog signals from light-emitting diodes to radio. A common type of modem is one that turns the digital data of a computer into modulated electrical signal for transmission over telephone lines and demodulated by another modem at the receiver side to recover the digital data." . - -:Moments a owl:Class, - owl:NamedIndividual ; - rdfs:label "Moments" ; - rdfs:subClassOf :DistributionProperties ; - :d3fend-id "D3A-MOM" ; - :definition "With a probability distribution function, the the first moment is the expected value, the second central moment is the variance, the third standardized moment is the skewness, and the fourth standardized moment is the kurtosis." ; - :kb-article """## References -Wikipedia. (n.d.). Moment (mathematics). [Link](https://en.wikipedia.org/wiki/Moment_(mathematics))""" ; - :todo "Split out the different moments as leaves under moments instead of having them and moments at the same level" . - -:MotionDetectedEvent a owl:Class ; - rdfs:label "Motion Detected Event" ; - rdfs:subClassOf :PhysicalAccessAlarmEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :MotionDetector ] . - -:MotionDetector a owl:Class ; - rdfs:label "Motion Detector" ; - rdfs:subClassOf :HardwareDevice ; - rdfs:isDefinedBy ; - :definition "An electrical device that utilizes a sensor to detect nearby motion." . - -:MotionSensorMonitoring a :MotionSensorMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Motion Sensor Monitoring" ; - rdfs:subClassOf :PhysicalAccessMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :MotionDetector ] ; - :d3fend-id "D3-MSM" ; - :definition "Monitoring events from motion detectors (e.g., passive IR, microwave, dual-technology) to detect presence or movement within protected areas." ; - :kb-article """## How it works - -Motion sensors generate events when movement is detected within their coverage pattern. Alarm panels or PACS correlate motion with arming schedules, door openings, and other sensors; video systems can use motion to trigger recording or bookmarks. Cross-zoning and sensitivity/pulse-count settings are commonly adjusted to balance detection and false-alarm rates. - -## Considerations - -* Place sensors at appropriate height and angle with clear line of sight, avoiding obstructions or reflective surfaces that can cause missed or false detections. -* Reduce false alarms by tuning sensitivity and pulse-count, using cross-zoning when needed, and accounting for HVAC airflow or rapid thermal changes. -* Monitor tamper and supervision signals; for wireless devices, verify periodic check-ins and battery levels; perform regular walk tests to validate coverage. -* Integrate motion events with cameras and with door position switches and other sensors in the protected area to provide context and faster verification; use motion to trigger recording or bookmarks.""" ; - :kb-reference :Reference-NIST-Special-Publication-800-53-Revision-5, - :Reference-Wikipedia-MotionDetector, - :Reference-Wikipedia-PIRSensor ; - :synonym "Motion Alarm Monitoring", - "Motion Detector Monitoring" . - -:MouseInputDevice a owl:Class ; - rdfs:label "Mouse Input Device" ; - skos:altLabel "Computer Mouse" ; - rdfs:subClassOf :InputDevice ; - rdfs:isDefinedBy ; - :definition "A computer mouse (plural mice or mouses) is a hand-held pointing device that detects two-dimensional motion relative to a surface. This motion is typically translated into the motion of a pointer on a display, which allows a smooth control of the graphical user interface of a computer. In addition to moving a cursor, computer mice have one or more buttons to allow operations such as selection of a menu item on a display. Mice often also feature other elements, such as touch surfaces and scroll wheels, which enable additional control and dimensional input." ; - rdfs:seeAlso . - -:MoveFile a owl:Class ; - rdfs:label "Move File" ; - skos:altLabel "Rename File" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :FileSystemMetadata ] ; - :definition "A system call to rename or move a file. Linux's rename() is an example of this kind of system call. Another way of handling it is to call a copy file system call followed by a delete file system call." ; - rdfs:seeAlso . - -:MovingAverageModel a owl:Class, - owl:NamedIndividual ; - rdfs:label "Moving Average Model" ; - rdfs:subClassOf :TimeSeriesAnalysis ; - :d3fend-id "D3A-MAM" ; - :definition "the moving-average model (MA model) is an approach for modeling univariate time series and specifies that the output variable is cross-correlated with a non-identical to itself random-variable." ; - :kb-article """## Refrences -Wikipedia. (n.d.). Moving average model. [Link](https://en.wikipedia.org/wiki/Moving_average_model)""" ; - :synonym "MA Model" . - -:Multi-factorAuthentication a :Multi-factorAuthentication, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Multi-factor Authentication" ; - rdfs:subClassOf :AgentAuthentication, - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-MFA" ; - :definition "Requiring proof of two or more pieces of evidence in order to authenticate a user." ; - :kb-article """## How it works -When logging into an account users present two or more credentials that fall into different categories: something you know (password or PIN), something you have (smart card or phone), or something you are (fingerprint). - -## Considerations -MFA configuration steps may vary across accounts and in some cases left up to users to activate and implement.""" ; - :kb-reference . - -:MulticlassClassification a owl:Class ; - rdfs:label "Multiclass Classification" ; - rdfs:subClassOf :Classifying . - -:MultilayerPerceptronClassification a owl:Class, - owl:NamedIndividual ; - rdfs:label "Multilayer Perceptron Classification" ; - rdfs:subClassOf :ArtificialNeuralNetClassification ; - :d3fend-id "D3A-MPC" ; - :definition "A multilayer perceptron (MLP) is a fully connected class of feedforward artificial neural network (ANN).An MLP consists of at least three layers of nodes: an input layer, a hidden layer and an output layer." ; - :kb-article """## References -Multilayer perceptron. Wikipedia. [Link](https://en.wikipedia.org/wiki/Multilayer_perceptron).""" . - -:MultimediaDocumentFile a owl:Class ; - rdfs:label "Multimedia Document File" ; - rdfs:subClassOf :DocumentFile ; - :definition "Digital video files which often contain audio." ; - rdfs:seeAlso . - -:MultimediaFile a owl:Class ; - rdfs:label "Multimedia File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :DigitalMultimedia ] ; - :definition "A file that contains digital multimedia." . - -:MultipleRegression a owl:Class, - owl:NamedIndividual ; - rdfs:label "Multiple Regression" ; - rdfs:subClassOf :RegressionAnalysis ; - :d3fend-id "D3A-MR" ; - :definition "Multiple (linear) regression attempts to model the relationship between two or more explanatory variables and a response variable by fitting a linear equation to observed data." ; - :kb-article """## References -Yale University Department of Statistics. (1997-98). Linear regression and multivariate analysis. [Link](http://www.stat.yale.edu/Courses/1997-98/101/linmult.htm)""" ; - :synonym "Multiple Linear Regression" . - -:MultipleRegressionLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Multiple Regression Learning" ; - rdfs:subClassOf :RegressionAnalysisLearning ; - :d3fend-id "D3A-MRL" ; - :definition "A supervised learning method that builds a multiple regression model using training data." ; - :kb-article """## References -Yale University Department of Statistics. (1997-98). Linear regression and multivariate analysis. [Link](http://www.stat.yale.edu/Courses/1997-98/101/linmult.htm)""" ; - rdfs:seeAlso :MultipleRegression . - -:MultivariateAnalysis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Multivariate Analysis" ; - rdfs:subClassOf :StatisticalMethod ; - :d3fend-id "D3A-MA" ; - :definition "Multivariate statistics encompassed the simultaneous observation and analysis of more than one outcome variable, i.e., multivariate random variables." ; - :kb-article """## References -Wikipedia. (n.d.). Multivariate statistics. [Link](https://en.wikipedia.org/wiki/Multivariate_statistics)""" ; - :todo "Looks like there may be lots to add here." . - -:NaiveBayesClassifier a owl:Class, - owl:NamedIndividual ; - rdfs:label "Naive Bayes Classifier" ; - rdfs:subClassOf :Classification ; - :d3fend-id "D3A-NBC" ; - :definition "The Naïve Bayes classifier is a supervised machine learning algorithm, which is used for classification tasks, like text classification. It is also part of a family of generative learning algorithms, meaning that it seeks to model the distribution of inputs of a given class or category." ; - :kb-article """## References -Naive Bayes. IBM. [Link](https://www.ibm.com/topics/naive-bayes?mhsrc=ibmsearch_a&mhq=naive%20bayes).""" . - -:NamedPipe a owl:Class, - owl:NamedIndividual ; - rdfs:label "Named Pipe" ; - rdfs:subClassOf :Pipe ; - rdfs:isDefinedBy ; - :definition "In computing, a named pipe (also known as a FIFO for its behavior) is an extension to the traditional pipe concept on Unix and Unix-like systems, and is one of the methods of inter-process communication (IPC). The concept is also found in OS/2 and Microsoft Windows, although the semantics differ substantially. A traditional pipe is 'unnamed' and lasts only as long as the process. A named pipe, however, can last as long as the system is up, beyond the life of the process. It can be deleted if no longer used. Usually a named pipe appears as a file, and generally processes attach to it for IPC." ; - rdfs:seeAlso . - -:Network a owl:Class ; - rdfs:label "Network" ; - skos:altLabel "Computer Network" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A network is a group of computers that use a set of common communication protocols over digital interconnections for the purpose of sharing resources located on or provided by the network nodes. The interconnections between nodes are formed from a broad spectrum of telecommunication network technologies, based on physically wired, optical, and wireless radio-frequency methods that may be arranged in a variety of network topologies." ; - rdfs:seeAlso . - -:NetworkAccessMediation a :NetworkAccessMediation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Access Mediation" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Network ] ; - :d3fend-id "D3-NAM" ; - :definition "Network access mediation is the control method for authorizing access to a system by a user (or a process acting on behalf of a user) communicating through a network, including a local area network, a wide area network, and the Internet." ; - :kb-article """## How it works - -Network Access Mediation is a crucial process in telecommunications and IT networks that involves controlling access to network resources. It acts as an intermediary layer between network access requests and the actual network resources, ensuring that only authorized users and devices can access the network.""" ; - :kb-reference :Reference-WhatIsNetworkAccessControl ; - rdfs:seeAlso ; - :synonym "Network Access Control" . - -:NetworkAgent a owl:Class ; - rdfs:label "Network Agent" ; - rdfs:subClassOf :Software ; - :definition "A network agent is software installed on a network node or device that transmits information back to a collector agent or management system. Kinds of network agents include SNMP Agent, IPMI agents, WBEM agents, and many proprietary agents capturing network monitoring and management information." ; - :synonym "Exporter" . - -:NetworkAudioStreamingResource a owl:Class ; - rdfs:label "Network Audio Streaming Resource" ; - rdfs:subClassOf :NetworkMediaStreamingResource ; - :definition "A server that provides digital audio media content to users." . - -:NetworkAudioVisualStreamingResource a owl:Class ; - rdfs:label "Network Audio Visual Streaming Resource" ; - rdfs:subClassOf :NetworkMultimediaStreamingResource ; - :definition "A server that provides digital audio-visual media content to users." . - -:NetworkCardFirmware a owl:Class ; - rdfs:label "Network Card Firmware" ; - skos:altLabel "Network Controller Firmware" ; - rdfs:subClassOf :PeripheralFirmware ; - :definition "Firmware that is installed on a network card (network interface controller)." ; - rdfs:seeAlso . - -:NetworkConnectionCloseEvent a owl:Class ; - rdfs:label "Network Connection Close Event" ; - rdfs:subClassOf :NetworkConnectionEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :NetworkConnectionOpenEvent ] ; - :definition "An event where a network connection is closed." . - -:NetworkConnectionEvent a owl:Class ; - rdfs:label "Network Connection Event" ; - rdfs:subClassOf :NetworkEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :NetworkSession ] ; - :definition "An event related to the establishment, maintenance, or termination of a network connection." ; - rdfs:seeAlso . - -:NetworkConnectionFailEvent a owl:Class ; - rdfs:label "Network Connection Fail Event" ; - rdfs:subClassOf :NetworkConnectionEvent ; - :definition "An event where a network connection attempt fails." . - -:NetworkConnectionListenEvent a owl:Class ; - rdfs:label "Network Connection Listen Event" ; - rdfs:subClassOf :NetworkConnectionEvent ; - :definition "An event where a network endpoint begins listening for new network connections." . - -:NetworkConnectionOpenEvent a owl:Class ; - rdfs:label "Network Connection Open Event" ; - rdfs:subClassOf :NetworkConnectionEvent ; - :definition "An event where a network connection is successfully opened." . - -:NetworkConnectionRefuseEvent a owl:Class ; - rdfs:label "Network Connection Refuse Event" ; - rdfs:subClassOf :NetworkConnectionEvent ; - :definition "An event where a network connection is refused." . - -:NetworkConnectionResetEvent a owl:Class ; - rdfs:label "Network Connection Reset Event" ; - rdfs:subClassOf :NetworkConnectionEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :NetworkConnectionOpenEvent ] ; - :definition "An event where an attempt is made to establish a network connection." . - -:NetworkDeviceEvent a owl:Class ; - rdfs:label "Network Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent ; - :definition "An event capturing the activity or state of network devices, such as Ethernet adapters, Wi-Fi modules, or virtual interfaces. These events highlight connectivity, configuration, or performance changes." . - -:NetworkDirectoryResource a owl:Class ; - rdfs:label "Network Directory Resource" ; - rdfs:subClassOf :NetworkFileShareResource, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Directory ] ; - :definition "A directory resource made available from one host to other hosts on a computer network." . - -:NetworkEvent a owl:Class ; - rdfs:label "Network Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :NetworkTraffic ] ; - :definition "An event involving network communications within or between digital systems." ; - rdfs:seeAlso . - -:NetworkFileResource a owl:Class ; - rdfs:label "Network File Resource" ; - rdfs:subClassOf :NetworkFileShareResource, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :File ] ; - :definition "A computer file resource made available from one host to other hosts on a computer network." . - -:NetworkFileShareResource a owl:Class ; - rdfs:label "Network File Share Resource" ; - rdfs:subClassOf :NetworkResource ; - :definition "A shared file resource, or network file share, is a computer file made available from one host to other hosts on a computer network. Network sharing is made possible by inter-process communication over the network. It includes both files and directories." . - -:NetworkFlow a owl:Class ; - rdfs:label "Network Flow" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :summarizes ; - owl:someValuesFrom :NetworkTraffic ] ; - :definition "A summarization of network transactions between a client and server. It often summarizes bytes sent, bytes received, and protocol flags." . - -:NetworkFlowSensor a owl:Class ; - rdfs:label "Network Flow Sensor" ; - rdfs:subClassOf :NetworkSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :NetworkFlow ] ; - :definition "Monitors network traffic and produces summaries of data flows traversing the network." . - -:NetworkFrame a owl:Class ; - rdfs:label "Network Frame" ; - skos:altLabel "Frame" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A finite, self-delimited sequence of bits exchanged as one unit over a single data link. Formed by link-layer encapsulation, a frame typically begins with synchronization and control fields, carries a payload, ends with an integrity check, and is bounded from adjacent frames by explicit timing or delimiter symbols." . - -:NetworkInitScriptFileResource a owl:Class ; - rdfs:label "Network Init Script File Resource" ; - rdfs:subClassOf :InitScript, - :NetworkFileResource ; - :definition "A computer file resource made available from one host to other hosts on a computer network that is also an initialization script." . - -:NetworkInterfaceCard a owl:Class ; - rdfs:label "Network Interface Card" ; - rdfs:subClassOf :HardwareDevice, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :NetworkCardFirmware ] ; - rdfs:isDefinedBy ; - :definition "A network interface card (NIC, also known as a network interface controller, network adapter, LAN adapter or physical network interface, and by similar terms) is a computer hardware component that connects a computer to a computer network." ; - :synonym "Network Interface Controller" . - -:NetworkIsolation a :NetworkIsolation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Isolation" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Isolate ] ; - :d3fend-id "D3-NI" ; - :definition "Network Isolation techniques prevent network hosts from accessing non-essential system network resources." ; - :enables :Isolate . - -:NetworkLink a owl:Class ; - rdfs:label "Network Link" ; - rdfs:subClassOf :LogicalLink ; - :definition "A network link is a link within the network layer, which is responsible for packet forwarding including routing through intermediate routers." ; - rdfs:seeAlso , - ; - :synonym "Layer-3 Link", - "Network Layer Link" . - -:NetworkMapping a :NetworkMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Mapping" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Model ] ; - :d3fend-id "D3-NM" ; - :definition "Network mapping encompasses the techniques to identify and model the physical layer, network layer, and data exchange layers of the organization's network and their physical location, and determine allowed pathways through that network." ; - :display-order 3 ; - rdfs:seeAlso . - -:NetworkMediaStreamingResource a owl:Class ; - rdfs:label "Network Media Streaming Resource" ; - rdfs:subClassOf :NetworkResource ; - :definition "A server that provides digital media content to users." . - -:NetworkMultimediaStreamingResource a owl:Class ; - rdfs:label "Network Multimedia Streaming Resource" ; - rdfs:subClassOf :NetworkMediaStreamingResource ; - :definition "A server that provides digital multimedia content to users." . - -:NetworkNode a owl:Class ; - rdfs:label "Network Node" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In telecommunications networks, a node (Latin nodus, 'knot') is either a redistribution point or a communication endpoint. The definition of a node depends on the network and protocol layer referred to. A physical network node is an electronic device that is attached to a network, and is capable of creating, receiving, or transmitting information over a communications channel. A passive distribution point such as a distribution frame or patch panel is consequently not a node." . - -:NetworkNodeInventory a :NetworkNodeInventory, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Node Inventory" ; - rdfs:subClassOf :AssetInventory, - [ a owl:Restriction ; - owl:onProperty :inventories ; - owl:someValuesFrom :NetworkNode ] ; - :d3fend-id "D3-NNI" ; - :definition "Network node inventorying identifies and records all the network nodes (hosts, routers, switches, firewalls, etc.) in the organization's architecture." ; - :kb-article """## How it works -Administrators collect information on network nodes in their architecture using a variety of administrative and management tools that query network devices and nodes for information. In some cases, where such queries are not supported or provide specific information of interest, an administrator may also collect this information through network enumeration methods to include host discovery and scanning for active ports and services. - -## Considerations -* Scanning and probing techniques using mapping tools can result in side effects to information technology (IT) and operational technology (OT) systems. -* An adversary conducting network enumeration may engage in activities that parallel normal network node inventorying activities, but would require escalating to admin privileges for most of the operations requiting administrative tools - -## Examples -* Link-layer discovery - * Link-layer Discovery Protocol (LLDP) - * Cisco Discovery Protocol (CDP) -* Application-layer discovery - * Simple Network Management Protocol (SNMP) collects MIB information - * Web-based Enterprise Management (WBEM) collects CIM information - * Windows Management Instrumentation (WMI) - * Windows Management Infrastructure (MI)""" ; - :kb-reference :Reference-IEEE-802_1AB-2016, - :Reference-QualysNetworkPassiveSensorGettingStartedGuide, - :Reference-RFC3411-AnArchitectureForDescribingSimpleNetworkManagementProtocolSNMPManagementFrameworks, - :Reference-Web-BasedEnterpriseManagement, - :Reference-Windows-Management-Infrastructure, - :Reference-Windows-Management-Instrumentation ; - :synonym "System Discovery", - "System Inventorying" . - -:NetworkPacket a owl:Class ; - rdfs:label "Network Packet" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A network packet is a formatted unit of data carried by a packet-switched network. Computer communications links that do not support packets, such as traditional point-to-point telecommunications links, simply transmit data as a bit stream. When data is formatted into packets, packet switching is possible and the bandwidth of the communication medium can be better shared among users than with circuit switching." . - -:NetworkPrinter a owl:Class ; - rdfs:label "Network Printer" ; - rdfs:subClassOf :SharedComputer ; - rdfs:isDefinedBy ; - :definition "In computing, a network printer is a device that can be accessed over a network which makes a persistent representation of graphics or text, usually on paper. While most output is human-readable, bar code printers are an example of an expanded use for printers. The different types of printers include 3D printer, inkjet printer, laser printer, thermal printer, etc. Note that not all printers are networked and the digital information to be printed must be passed either by removable media or as directly connecting the printer to a computer (e.g., by USB.)" ; - :todo "Need printer superclass (to encompass standalone/pc-connected printing devices)?" . - -:NetworkProtocolAnalyzer a owl:Class ; - rdfs:label "Network Protocol Analyzer" ; - rdfs:subClassOf :NetworkSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :NetworkTraffic ] ; - :definition "Monitors and parses network protocols to extract values from various network protocol layers." . - -:NetworkResource a owl:Class ; - rdfs:label "Network Resource" ; - skos:altLabel "Shared Resource" ; - rdfs:subClassOf :RemoteResource ; - :definition "In computing, a shared resource, or network share, is a computer resource made available from one host to other hosts on a computer network. It is a device or piece of information on a computer that can be remotely accessed from another computer, typically via a local area network or an enterprise intranet, transparently as if it were a resource in the local machine.Network sharing is made possible by inter-process communication over the network." ; - rdfs:seeAlso . - -:NetworkResourceAccess a owl:Class ; - rdfs:label "Network Resource Access" ; - rdfs:subClassOf :ResourceAccess, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :NetworkResource ], - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Resource ] ; - :definition "Ephemeral digital artifact comprising a request of a network resource and any response from that network resource." . - -:NetworkResourceAccessMediation a :NetworkResourceAccessMediation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Resource Access Mediation" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :NetworkResource ] ; - :d3fend-id "D3-NRAM" ; - :definition "Control of access to organizational systems and services by users or processes over a network." ; - :kb-article """## How it works - -Network Resource Access Control involves managing and regulating access to resources within an organization's network. This includes ensuring that only authorized users or processes can access specific systems or data, often through authentication and authorization mechanisms. Examples include accessing internal databases, file servers, or application services.""" ; - :kb-reference :Reference-NIST-Special-Publication-800-53-Revision-5 ; - :synonym "Remote Access Control" . - -:NetworkScanner a owl:Class ; - rdfs:label "Network Scanner" ; - skos:altLabel "Network Enumerator" ; - rdfs:subClassOf :CyberSensor, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :Network ] ; - rdfs:isDefinedBy ; - :definition "A network scanner is a computer program used to retrieve usernames and info on groups, shares, and services of networked computers. This type of program scans networks for vulnerabilities in the security of that network. If there is a vulnerability with the security of the network, it will send a report back to a hacker who may use this info to exploit that network glitch to gain entry to the network or for other malicious activities. Ethical hackers often also use the information to remove the glitches and strengthen their network." ; - rdfs:seeAlso . - -:NetworkSensor a owl:Class ; - rdfs:label "Network Sensor" ; - rdfs:subClassOf :CyberSensor ; - :definition "A Network Sensor monitors network traffic and communication patterns." . - -:NetworkService a owl:Class ; - rdfs:label "Network Service" ; - rdfs:subClassOf :ServiceApplicationProcess ; - rdfs:isDefinedBy ; - :definition "In computer networking, a network service is an application running at the network application layer and above, that provides data storage, manipulation, presentation, communication or other capability which is often implemented using a client-server or peer-to-peer architecture based on application layer network protocols. Clients and servers will often have a user interface, and sometimes other hardware associated with it." . - -:NetworkSession a owl:Class ; - rdfs:label "Network Session" ; - rdfs:subClassOf :Session, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :NetworkTraffic ] ; - :definition "A network session is a temporary and interactive information interchange between two or more devices communicating over a network. A session is established at a certain point in time, and then 'torn down' - brought to an end - at some later point. An established communication session may involve more than one message in each direction. A session is typically stateful, meaning that at least one of the communicating parties needs to hold current state information and save information about the session history in order to be able to communicate, as opposed to stateless communication, where the communication consists of independent requests with responses. Network sessions may be established and implemented as part of protocols and services at the application, session, or transport layers of the OSI model." ; - rdfs:seeAlso , - , - . - -:NetworkTimeServer a owl:Class ; - rdfs:label "Network Time Server" ; - rdfs:subClassOf :Server ; - :definition "A network time server is a server computer that reads the actual time from a reference clock and distributes this information to its clients using a computer network. The time server may be a local network time server or an internet time server. The time server may also be a stand-alone hardware device. It can use NTP (RFC5905) or other protocols." ; - rdfs:seeAlso . - -:NetworkTraffic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic" ; - skos:altLabel "Data Traffic" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :NetworkPacket ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :DomainName ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :RemoteCommand ], - [ a owl:Restriction ; - owl:onProperty :originates-from ; - owl:someValuesFrom :PhysicalLocation ] ; - :definition "Network traffic or data traffic is the data, or alternatively the amount of data, moving across a network at a given point of time. Network data in computer networks is mostly encapsulated in network packets, which provide the load in the network." ; - rdfs:seeAlso , - . - -:NetworkTrafficAnalysis a :NetworkTrafficAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic Analysis" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-NTA" ; - :definition "Analyzing intercepted or summarized computer network traffic to detect unauthorized activity." ; - :enables :Detect . - -:NetworkTrafficAnalysisSoftware a :DigitalArtifact, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic Analysis Software" ; - skos:altLabel "Network Sniffer" ; - rdfs:subClassOf :DeveloperApplication ; - rdfs:isDefinedBy ; - :definition "A packet analyzer, also known as packet sniffer, protocol analyzer, or network analyzer, is a computer program or computer hardware such as a packet capture appliance, that can intercept and log traffic that passes over a computer network or part of a network." ; - rdfs:seeAlso . - -:NetworkTrafficCommunityDeviation a :NetworkTrafficCommunityDeviation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic Community Deviation" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id "D3-NTCD" ; - :definition "Establishing baseline communities of network hosts and identifying statistically divergent inter-community communication." ; - :kb-article """## How it works -Hosts/users within a computer network are analyzed to identify communities of hosts which frequently communicate. Future communications between communities that don't usually communicate can then be detected. For example, if a community of hosts that communicate in support of a company's finance division suddenly starts to access the code server usually accessed only by engineers, this may indicate unauthorized activity. - -## Considerations -* Potential for false positives in very dynamic network environments. -* Attackers that move low and slow may not differentiate their behavior enough to trigger an alert.""" ; - :kb-reference :Reference-SystemForImplementingThreatDetectionUsingDailyNetworkTrafficCommunityOutliers_VECTRANETWORKSInc . - -:NetworkTrafficFiltering a :NetworkTrafficFiltering, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic Filtering" ; - rdfs:subClassOf :NetworkIsolation, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :NetworkTraffic ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :OTProtocolMessage ], - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :RemoteCommand ] ; - :d3fend-id "D3-NTF" ; - :definition "Restricting network traffic originating from any location." ; - :kb-reference :Reference-ActiveFirewallSystemAndMethodology_McAfeeLLC, - :Reference-AutomaticallyGeneratingRulesForConnectionSecurity_Microsoft, - :Reference-FirewallForInterentAccess_SecureComputingLLC, - :Reference-FirewallForProcessingAConnectionlessNetworkPacket_NationalSecurityAgency, - :Reference-FirewallForProcessingConnection-orientedAndConnectionlessDatagramsOverAConnection-orientedNetwork_NationalSecurityAgency, - :Reference-FirewallsThatFilterBasedUponProtocolCommands_IntelCorp, - :Reference-FWTK-FirewallToolkit_, - :Reference-MethodForControllingComputerNetworkSecurity_CheckpointSoftwareTechnologiesLtd, - :Reference-NetworkFirewallWithProxy_SecureComputingLLC . - -:NetworkTrafficPolicyMapping a :NetworkTrafficPolicyMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic Policy Mapping" ; - rdfs:subClassOf :NetworkMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :AccessControlConfiguration ], - [ a owl:Restriction ; - owl:onProperty :queries ; - owl:someValuesFrom :NetworkAgent ] ; - :d3fend-id "D3-NTPM" ; - :definition "Network traffic policy mapping identifies and models the allowed pathways of data at the network, transport, and/or application levels." ; - :kb-reference :Reference-CiscoASR9000AccessListCommands ; - :synonym "DLP Policy Mapping", - "Firewall Mapping", - "IPS Policy Mapping", - "Web Security Gateway Policy Mapping" . - -:NetworkTrafficSignatureAnalysis a :NetworkTrafficSignatureAnalysis, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Traffic Signature Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id "D3-NTSA" ; - :definition "Analyzing network traffic and compares it to known signatures" ; - :kb-article """## How it works - -Network signature analysis relies on predefined patterns, or signatures, to identify malicious network activity. These signatures typically match against specific byte sequences, packet header information, or protocol anomalies indicative of known threats. - -The process works as follows: - -* Packet Capture: Network traffic is captured on an interface or port, resulting in a stream of raw packets. -* Preprocessing: The captured packets are preprocessed, cleaning and normalizing the data for efficient analysis. -* Signature Matching: Each packet is compared against a database of signatures using dedicated engines. - -## Considerations - -### False Negatives - -Network signature analysis is susceptible to generating false negatives. These occur when malicious activity evades detection due to limitations in the signature-based approach. Here are some common causes: - -* Evolving threats: Attackers frequently modify their tactics, rendering existing signatures ineffective against new variants. -* Obfuscation: Attackers may disguise malicious content using encryption, encoding, or other techniques to bypass signature detection. -* Limited visibility: Signatures rely on specific patterns. If crucial information is encrypted or hidden, the signature might miss the threat. -* Zero-day attacks: By definition, new and unknown attacks lack corresponding signatures, allowing them to pass undetected. - -### False Positives - -Network signature analysis is susceptible to generating false positives. These occur when the signature analysis triggers an alert for benign traffic. Common causes include: - -* Overly broad signatures: Rules designed to be too general might match harmless activities, generating false alarms. -* Network misconfigurations: Improperly configured devices or legitimate network activity can mimic malicious patterns, triggering false positives. -* Data errors: Corrupted or incomplete network data can lead to misinterpretations and false alerts. - -""" ; - :kb-reference :Reference-SystemAndMethodForStrategicAntiMalwareMonitoring . - -:NetworkVideoStreamingResource a owl:Class ; - rdfs:label "Network Video Streaming Resource" ; - rdfs:subClassOf :NetworkMediaStreamingResource ; - :definition "A server that provides digital video media content to users." . - -:NetworkVulnerabilityAssessment a :NetworkVulnerabilityAssessment, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Network Vulnerability Assessment" ; - rdfs:subClassOf :NetworkMapping, - [ a owl:Restriction ; - owl:onProperty :evaluates ; - owl:someValuesFrom :Network ], - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :Vulnerability ] ; - :d3fend-id "D3-NVA" ; - :definition "Network vulnerability assessment relates all the vulnerabilities of a network's components in the context of their configuration and interdependencies and can also include assessing risk emerging from the network's design as a whole, not just the sum of individual network node or network segment vulnerabilities." ; - :kb-reference :Reference-ReachabilityGraphBasedSafeRemediationsforSecuirytofOnPremiseAndCloudComputingEnvironments . - -:NISTControl a owl:Class ; - rdfs:label "NIST Control" ; - rdfs:subClassOf :ExternalControl, - [ a owl:Restriction ; - owl:onProperty :member-of ; - owl:someValuesFrom :NISTSP800-53ControlCatalog ] . - -:NISTSP800-53ControlCatalog a owl:Class ; - rdfs:label "NIST SP 800-53 Control Catalog" ; - rdfs:subClassOf :ControlCatalog, - [ a owl:Restriction ; - owl:onProperty :has-member ; - owl:someValuesFrom :NISTControl ] ; - :definition "A NIST SP 800-53 control catalog provides the entire set of security and privacy controls for a version of NIST SP 800-53." ; - rdfs:seeAlso . - -:Non-monotonicLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Non-monotonic Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-NML" ; - :definition "Non-monotonic logic is a formal logic whose conclusion relation is not monotonic. In other words, non-monotonic logics are devised to capture and represent defeasible inferences (cf. defeasible reasoning), i.e., a kind of inference in which reasoners draw tentative conclusions, enabling reasoners to retract their conclusion(s) based on further evidence." ; - :kb-article """## References -1. Non-monotonic logic. (2023, June 1). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Non-monotonic_logic)""" . - -:Non-ParametricTests a owl:Class, - owl:NamedIndividual ; - rdfs:label "Non-Parametric Tests" ; - rdfs:subClassOf :HypothesisTesting ; - :d3fend-id "D3A-NPT" ; - :definition "A non-parametric test relies is used when the underlying distribution of data is non-symmetric (non-normal distribution)." ; - :kb-article """## References -Newcastle University. (n.d.). Parametric Hypothesis Tests. [Link](https://www.ncl.ac.uk/webtemplate/ask-assets/external/maths-resources/psychology/non-parametric-hypothesis-tests.html)""" . - -:Non-PersonEntity a owl:Class ; - rdfs:label "Non-Person Entity" ; - rdfs:subClassOf :Agent ; - :definition "An entity related to information technology with a digital identity that acts in cyberspace, but is not a human actor. This can include organizations, hardware objects (physical entities/devices), software objects (virtual/logical entities), and information artifacts." ; - rdfs:seeAlso , - :NIST_SP_800-53_R5, - :Reference-CNNSI-4009 ; - :synonym "NPE" . - -:NonlinearRegression a owl:Class, - owl:NamedIndividual ; - rdfs:label "Nonlinear Regression" ; - rdfs:subClassOf :RegressionAnalysis ; - :d3fend-id "D3A-NR" ; - :definition "Nonlinear regression is a form of regression analysis in which observational data are modeled by a function which is a nonlinear combination of the model parameters and depends on one or more independent variables." ; - :kb-article """## References -Wikipedia. (n.d.). Nonlinear regression. [Link](https://en.wikipedia.org/wiki/Nonlinear_regression)""" . - -:NonlinearRegressionLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Nonlinear Regression Learning" ; - rdfs:subClassOf :RegressionAnalysisLearning ; - :d3fend-id "D3A-NRL" ; - :definition "A supervised learning method that builds a non-linear regression model using training data." ; - :kb-article """## References -Wikipedia. (n.d.). Nonlinear regression. [Link](https://en.wikipedia.org/wiki/Nonlinear_regression)""" ; - rdfs:seeAlso :NonlinearRegression . - -:NTFSHardLink a owl:Class ; - rdfs:label "NTFS Hard Link" ; - rdfs:subClassOf :HardLink, - :NTFSLink ; - rdfs:isDefinedBy ; - :definition "An NTFS hard link points to another file, and files share the same MFT entry (inode), in the same filesystem." ; - rdfs:seeAlso . - -:NTFSJunctionPoint a owl:Class ; - rdfs:label "NTFS Junction Point" ; - skos:altLabel "Junction Point" ; - rdfs:subClassOf :NTFSLink, - :SymbolicLink ; - rdfs:isDefinedBy ; - :definition "NTFS junction points are are similar to NTFS symlinks but are defined only for directories. Only accepts local absolute paths." . - -:NTFSLink a owl:Class ; - rdfs:label "NTFS Link" ; - rdfs:subClassOf :File, - :FileSystemLink ; - :definition "The NTFS filesystem defines various ways to link files, i.e. to make a file point to another file or its contents. The object being pointed to is called the target. There are three classes of NTFS links: (a) Hard links, which have files share the same MFT entry (inode), in the same filesystem; (b) Symbolic links, which record the path of another file that the links contents should show and can accept relative paths; and (c) Junction points, which are similar to symlinks but defined only for directories and only accepts local absolute paths" . - -:NTFSSymbolicLink a owl:Class ; - rdfs:label "NTFS Symbolic Link" ; - skos:altLabel "NTFS Symlink" ; - rdfs:subClassOf :NTFSLink, - :SymbolicLink ; - rdfs:isDefinedBy ; - :definition "An NTFS symbolic link records the path of another file that the links contents should show. Can accept relative paths. SMB networking (UNC path) and directory support added in NTFS 3.1." . - -:NTPBroadcastEvent a owl:Class ; - rdfs:label "NTP Broadcast Event" ; - rdfs:subClassOf :NTPEvent ; - :definition "An event where an NTP server broadcasts time synchronization messages to multiple clients simultaneously, enabling synchronization without individual request-response cycles." . - -:NTPClientSyncEvent a owl:Class ; - rdfs:label "NTP Client Synchronization Event" ; - rdfs:subClassOf :NTPEvent ; - :definition "An event where an NTP client requests and adjusts its clock based on time synchronization data provided by an NTP server, ensuring alignment with a standard time source." . - -:NTPControlMessageEvent a owl:Class ; - rdfs:label "NTP Control Message Event" ; - rdfs:subClassOf :NTPEvent ; - :definition "An event where an NTP client or server exchanges control messages used for diagnostic, monitoring, or administrative management of the NTP protocol, rather than time synchronization." . - -:NTPEvent a owl:Class ; - rdfs:label "NTP Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :UDPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :NetworkTimeServer ] ; - :definition "An event involving the Network Time Protocol (NTP), a protocol designed to synchronize the clocks of computer systems over packet-switched, variable-latency data networks, UDP as its transport protocol." ; - rdfs:seeAlso . - -:NTPServerResponseEvent a owl:Class ; - rdfs:label "NTP Server Response Event" ; - rdfs:subClassOf :NTPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :NTPClientSyncEvent ] ; - :definition "An event where an NTP server sends time synchronization data to a client, enabling the client to align its local clock with the server's reference time." . - -:NTPSymmetricActiveExchangeEvent a owl:Class ; - rdfs:label "NTP Symmetric Active Exchange Event" ; - rdfs:subClassOf :NTPEvent ; - :definition "An event where an NTP peer operating in symmetric active mode initiates clock synchronization messages to a peer in symmetric passive mode, enabling time synchronization between equal-status systems." . - -:NTPSymmetricPassiveExchangeEvent a owl:Class ; - rdfs:label "NTP Symmetric Passive Exchange Event" ; - rdfs:subClassOf :NTPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :NTPSymmetricActiveExchangeEvent ] ; - :definition "An event where an NTP peer operating in symmetric passive mode responds to clock synchronization messages initiated by a symmetric active peer, facilitating mutual timekeeping." . - -:NullPointerChecking a owl:Class, - owl:NamedIndividual ; - rdfs:label "Null Pointer Checking" ; - rdfs:subClassOf :PointerValidation, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :MemoryFreeFunction ], - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :PointerDereferencingFunction ] ; - :d3fend-id "D3-NPC" ; - :definition "Checking if a pointer is NULL." ; - :kb-article """ -## How it Works -Programmatically checking if a pointer is NULL before use. - -## Considerations -* Pointers should be checked prior to use after they have, or may have been modified. -* Note that it may vary by circumstance whether the caller, or callee is responsible for checking if a pointer is NULL. -* Note: This resource should not be considered a definitive or exhaustive coding guideline.""" ; - :kb-reference :Reference-NullPointerChecking_SEI, - :Reference-NullPointerDereference_CWE, - :Reference-PointerValidationFunction_SEI ; - :synonym "Nil Pointer Checking" . - -:NumericPatternMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Numeric Pattern Matching" ; - rdfs:subClassOf :PatternMatching ; - :d3fend-id "D3A-NPM" ; - :definition "Numeric pattern matching uses a pattern specification and sees if the numeric value matches that pattern--simple forms include exact matching and range matching." . - -:ObjectEviction a :ObjectEviction, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Object Eviction" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Evict ] ; - :d3fend-id "D3-OE" ; - :definition "Terminate or remove an object from a host machine. This is the broadest class for object eviction." ; - :enables :Evict . - -:ObjectFile a owl:Class ; - rdfs:label "Object File" ; - rdfs:subClassOf :File ; - :comment "This is the most general category of files that contain 'objects' for execution, but they themselves are not generally the primary target for execution, an d3f:ExecutableBinaryFile usually references these files to load and execute their objects." ; - :definition "An object file is a file that contains relocatable machine code." ; - rdfs:seeAlso ; - :todo "Fix IRI to fix 'i' in \"File\" substring of IRI" . - -:OffensiveAction a owl:Class ; - rdfs:label "Offensive Action" ; - rdfs:subClassOf :CyberAction . - -:OffensiveTactic a owl:Class ; - rdfs:label "Offensive Tactic" ; - rdfs:subClassOf :Goal, - [ a owl:Restriction ; - owl:onProperty :enabled-by ; - owl:someValuesFrom :OffensiveTechnique ] ; - rdfs:isDefinedBy ; - :definition "Per ATT&CK, these are defined as Tactical Goals, not Tactics per se. Many children also fit definition of tactics. Some are neither tactics or tactical goals really (e.g., Execution, which is a useful grouping, but an action, not really a tactic or technique." ; - :synonym "Tactical Objective" . - -:OffensiveTechnique a owl:Class ; - rdfs:label "Offensive Technique" ; - rdfs:subClassOf :CyberTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :OffensiveTactic ], - [ a owl:Restriction ; - owl:onProperty :initiates ; - owl:someValuesFrom :Access ] ; - rdfs:isDefinedBy ; - :display-baseurl "/offensive-technique/attack/" . - -:OfficeApplication a owl:Class ; - rdfs:label "Office Application" ; - rdfs:subClassOf :UserApplication ; - :definition "An office application is one that is part of an application suite (e.g., Microsoft Office, Open Office)." . - -:OfficeApplicationFile a owl:Class ; - rdfs:label "Office Application File" ; - rdfs:subClassOf :DocumentFile, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ImageFile ] ; - :definition "A document file in a format associated with an d3f:OfficeApplication." ; - rdfs:seeAlso :OfficeApplication . - -:One-timePassword a :One-timePassword, - owl:Class, - owl:NamedIndividual ; - rdfs:label "One-time Password" ; - rdfs:subClassOf :PasswordRotation, - [ a owl:Restriction ; - owl:onProperty :use-limits ; - owl:someValuesFrom :Password ] ; - :d3fend-id "D3-OTP" ; - :definition "A one-time password is valid for only one user authentication." ; - :kb-article """## How it works - -When a user initiates authentication, they are asked for a one-time password, often in addition to other credentials such as a traditional password or smart card. The one-time password may be from a list provided in advance, sent via a channel such as SMS or HTTPS to an app, or a generated token. - -In the case of a physical token which generates one-time passwords incrementally based on time elapsed, that token device need not be connected to the internet. In different implementations, an administrator of the system, or a user with additional verification, can adjust for clock skew between the token and the verification system as needed. - -## Considerations - -### Compromise of delivery channel -- SIM Swapping -- Secure token visual compromise -- Insecure delivery channel - -### Compromise of delivery device -Physical loss of One-time Password device. - -### Compromise of long-term backup codes -These are often provided in the form of a downloadable document with a regular name, which can be searched for in the case that the user forgets where they put them. This digital file or printed document could be stolen. -Additionally, after the code file is printed, it could be recovered from the system printer spool unless the spooler cache is cleared.""" ; - :kb-reference :Reference-DigitalIdentityGuidelines800-63-3, - :Reference-RFC2289-AOne-TimePasswordSystem ; - rdfs:seeAlso ; - :synonym "OTP" . - -:Open-sourceDeveloper a owl:Class ; - rdfs:label "Open-source Developer" ; - rdfs:subClassOf :ProductDeveloper ; - :definition "An open-source developer contributes to the development, maintenance, or improvement of open-source projects." . - -:OpenFile a owl:Class ; - rdfs:label "Open File" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :File ] ; - rdfs:isDefinedBy ; - :definition "For most file systems, a program initializes access to a file in a file system using the open system call. This allocates resources associated to the file (the file descriptor), and returns a handle that the process will use to refer to that file. In some cases the open is performed by the first access. During the open, the filesystem may allocate memory for buffers, or it may wait until the first operation. Various other errors which may occur during the open include directory update failures, un-permitted multiple connections, media failures, communication link failures and device failures." . - -:OperatingMode a owl:Class ; - rdfs:label "Operating Mode" ; - rdfs:subClassOf :SystemPlatformVariable ; - :definition "The Operating Mode designates the specific, selectable state of an OT controller that delineates its operational behavior and governs access to engineering functions, commonly including Program, Run, Remote, Test, or Stop." ; - :synonym "Keyswitch Position" . - -:OperatingModeMonitoring a :OperatingModeMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operating Mode Monitoring" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :OperatingMode ] ; - :d3fend-id "D3-OMM" ; - :definition "Detects operating modes such as Program, Run, Remote, or Stop." ; - :kb-article """## How it works -Many OT Controllers have key switches to change the controller into various modes of operation. These modes of operation can include Program, Run, Remote, or Stop. - -The key switch position is often available as a system diagnostic function block of the programming logic. - -## Considerations -* It is advised to configure a key switch alarm such that an operator is alerted when the controller is put into a programming mode, as this could indicate unintentional or malicious changes to operational code.""" ; - :kb-reference :Reference-PLCKeySwitchMonitoring, - :Reference-TRITONMalwareRemainsThreattoGlobalCriticalInfrastructureICS . - -:OperatingModeRestriction a :OperatingModeRestriction, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operating Mode Restriction" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :OperatingMode ] ; - :d3fend-id "D3-OPR" ; - :definition "Restricting unauthorized changes to the operating mode prevents devices from switching into inappropriate or vulnerable states during normal use." ; - :kb-article """## How it works -Many OT Controllers use key switches to change the controller into different modes of operation. These modes of operation can include Program, Run, Remote, or Stop. - -The key switch should be left in the appropriate key switch position, e.g., run or remote during normal operations. - -Implement a key management procedure to include removing the physical key from the key switch when not in use.""" ; - :kb-reference :Reference-MITREATTACKAuthorizationEnforcement, - :Reference-TRITONMalwareRemainsThreattoGlobalCriticalInfrastructureICS . - -:OperatingSystem a owl:Class ; - rdfs:label "Operating System" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Kernel ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :LocalUserAccount ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :SystemServiceSoftware ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :OperatingSystemConfigurationComponent ] ; - :definition "An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs. All computer programs, excluding firmware, require an operating system to function. Time-sharing operating systems schedule tasks for efficient use of the system and may also include accounting software for cost allocation of processor time, mass storage, printing, and other resources." ; - rdfs:seeAlso , - . - -:OperatingSystemConfiguration a owl:Class ; - rdfs:label "Operating System Configuration" ; - rdfs:subClassOf :ConfigurationResource ; - :definition "Information used to configure the services, parameters, and initial settings for an operating system." . - -:OperatingSystemConfigurationComponent a owl:Class ; - rdfs:label "Operating System Configuration Component" ; - skos:altLabel "Operating System Configuration Information", - "System Configuration" ; - rdfs:subClassOf :OperatingSystemConfiguration ; - :definition "An component of the overall information necessary for the configuration of an operating system." ; - rdfs:seeAlso ; - :todo "Clean this up" . - -:OperatingSystemConfigurationFile a owl:Class ; - rdfs:label "Operating System Configuration File" ; - skos:altLabel "System Configuration File" ; - rdfs:subClassOf :ConfigurationFile, - :OperatingSystemFile ; - :comment "System configuration files configure system-wide software and services, as well as the operating system which supports scheduling and executing this software, as well as the configuration of peripherals." ; - :definition "An operating system configuration file is a file used to configure the operating system." ; - rdfs:seeAlso :ConfigurationFile, - , - :OperatingSystem . - -:OperatingSystemConfigurationModificationEvent a owl:Class ; - rdfs:label "Operating System Configuration Modification Event" ; - rdfs:subClassOf :ConfigurationModificationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingSystemConfiguration ] ; - :definition "An event that alters persistent operating-system configuration resources such as kernel options, registry keys, service definitions, or security policies; affecting system startup, hardware interfaces, or global security enforcement." . - -:OperatingSystemExecutableFile a owl:Class ; - rdfs:label "Operating System Executable File" ; - rdfs:subClassOf :OperatingSystemFile ; - :definition "An operating system executable is a critical executable that is part of the operating system, and without which, the operating system may not operate correctly." . - -:OperatingSystemFile a owl:Class ; - rdfs:label "Operating System File" ; - rdfs:subClassOf :File ; - :definition "An operating system file is a file that is part of, or used to store information about, the operating system itself." ; - rdfs:seeAlso , - . - -:OperatingSystemLogFile a owl:Class ; - rdfs:label "Operating System Log File" ; - rdfs:subClassOf :LogFile, - :OperatingSystemFile ; - rdfs:isDefinedBy ; - :definition "An operating system log file records events that occur in an operating system." . - -:OperatingSystemMonitoring a :OperatingSystemMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operating System Monitoring" ; - rdfs:subClassOf :PlatformMonitoring ; - :d3fend-id "D3-OSM" ; - :definition "The operating system software, for D3FEND's purposes, includes the kernel and its process management functions, hardware drivers, initialization or boot logic. It also includes and other key system daemons and their configuration. The monitoring or analysis of these components for unauthorized activity constitute **Operating System Monitoring**." ; - :enables :Detect ; - :kb-article """## Technique Overview - -"An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs." [1] - -Operating System Monitoring Techniques have varied implementations including built-in kernel modules, third-party privileged system daemons, or even standard systems administration tools included with an operating system. - -1. http://dbpedia.org/resource/Operating_system""" ; - :kb-reference :Reference-HostIntrusionPreventionSystemUsingSoftwareAndUserBehaviorAnalysis_SophosLtd, - :Reference-UserActivityFromClearingEventLogs_MITRE . - -:OperatingSystemPackagingTool a owl:Class ; - rdfs:label "Operating System Packaging Tool" ; - rdfs:subClassOf :SoftwarePackagingTool ; - :definition "A software packaging tool oriented on building a software package for a particular operating system (e.g. rpmbuild.)" . - -:OperatingSystemProcess a owl:Class ; - rdfs:label "Operating System Process" ; - skos:altLabel "System Process" ; - rdfs:subClassOf :Process ; - :definition "An operating system process, or system process, is a process running to perform operating system functions." ; - rdfs:seeAlso . - -:OperatingSystemSharedLibraryFile a owl:Class ; - rdfs:label "Operating System Shared Library File" ; - rdfs:subClassOf :OperatingSystemFile, - :SharedLibraryFile ; - :definition "An operating system shared library file is a shared library file that is part of the operating system and that incorporates common operating system code for use by any application or to provide operating system services." ; - rdfs:seeAlso . - -:OperationalActivityMapping a :OperationalActivityMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operational Activity Mapping" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Model ] ; - :d3fend-id "D3-OAM" ; - :definition "Operational activity mapping identifies activities of the organization and the organization's suborganizations, groups, roles, and individuals that carry out the activities and then establishes the dependencies of the activities on the systems and people that perform those activities." ; - :kb-reference :Reference-CatiaUAFPlugin ; - :synonym "Mission Mapping" . - -:OperationalDependencyMapping a :OperationalDependencyMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operational Dependency Mapping" ; - rdfs:subClassOf :OperationalActivityMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :Dependency ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :OrganizationalActivity ] ; - :d3fend-id "D3-ODM" ; - :definition "Operational dependency mapping identifies and models the dependencies of the organization's activities on each other and on the organization's performers (people, systems, and services.) This may include modeling the higher- and lower-level activities of an organization forming a hierarchy, or layering, of the dependencies in an organization's activities." ; - :kb-reference :Reference-CatiaUAFPlugin, - :Reference-CyberCommandSystemCYCS, - :Reference-DaggerFactSheet, - :Reference-DaggerModelingAndVisualizationForMissionImpactSituationalAwareness, - :Reference-MissionDependencyModelingForCyberSituationalAwareness, - :Reference-UnifiedArchitectureFrameworkUAF . - -:OperationalLogicValidation a :OperationalLogicValidation, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operational Logic Validation" ; - rdfs:subClassOf :DomainLogicValidation, - [ a owl:Restriction ; - owl:onProperty :validates ; - owl:someValuesFrom :OTControlFunction ] ; - :d3fend-id "D3-OLV" ; - :definition "Validation of variable state in the context of the control logic of the operational application." ; - :kb-article """## How it works -Validates the type, value, and/or range of a variable taking into account the local operational logic and operational state. - -For example, if a controller has a restricted range when in a specified state, this may crosscheck the value against the state in addition to a more general range validation. """ ; - :kb-reference :Reference-SecurePLCCodingPracticesTop20List . - -:OperationalProcessMonitoring a :OperationalProcessMonitoring, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operational Process Monitoring" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :EventLog ], - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :OTProcessDataHistorian ] ; - :d3fend-id "D3-OPM" ; - :definition "Monitoring physical parameters and operator actions related to an operational environment." ; - :kb-article """## How it works - -While some Operational Technology systems are designed to operate without human intervention, most systems are designed with the ability to monitor and modify the physical process with user input. - -This technique detects adversarial risks to operational processes by observing physical events and operator actions and analyzing event logs. - -Key steps in operational process security monitoring are: - -1. Read logs generated by controllers, and HMIs, through DAU's and DA agents; - -2. Produce digital event records; - -3. Display the aggregated data to a device such as an HMI or process historian, and write those records to event logs and/or to the OT process data historian for traceability and incident reconstruction. - -4. Monitor the procees and detect incidents or indicators of tampering such as: -- malfunctions -- unauthorized commands, -- unsafe setpoint changes, -- alarm suppression, and -- anomalous mode transitions; - -""" ; - :kb-reference :Reference-GuideToOTSecurity ; - :synonym "Supervisory Control Monitoring" . - -:OperationalRiskAssessment a :OperationalRiskAssessment, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Operational Risk Assessment" ; - rdfs:subClassOf :OperationalActivityMapping, - [ a owl:Restriction ; - owl:onProperty :evaluates ; - owl:someValuesFrom :Organization ], - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :Vulnerability ] ; - :d3fend-id "D3-ORA" ; - :definition "Operational risk assessment identifies and models the vulnerabilities of, and risks to, an organization's activities individually and as a whole." ; - :kb-reference :Reference-MGT516ManagingSecurityVulnerabilitiesEnterpriseAndCloud, - :Reference-NIST-RMF-Quick-Start-Guide-Assess-Step-FAQ, - :Reference-NIST-Special-Publication-800-37-Revision-2, - :Reference-NIST-Special-Publication-800-53A-Revision-5, - :Reference-NIST-Special-Publication-800-160-Volume-1, - :Reference-NISTIR-8011-Volume-1 ; - :synonym "Mission Risk Assessment" . - -:OperationsCenterComputer a owl:Class ; - rdfs:label "Operations Center Computer" ; - skos:altLabel "Mainframe" ; - rdfs:subClassOf :SharedComputer ; - rdfs:isDefinedBy ; - :definition "Mainframe computers or mainframes (colloquially referred to as \"big iron\") are computers used primarily by large organizations for critical applications; bulk data processing, such as census, industry and consumer statistics, and enterprise resource planning; and transaction processing. They are larger and have more processing power than some other classes of computers: minicomputers, servers, workstations, and personal computers." ; - rdfs:seeAlso . - -:OpticalDiscImage a owl:Class ; - rdfs:label "Optical Disc Image" ; - rdfs:subClassOf :DiskImage ; - rdfs:isDefinedBy ; - :definition "An optical disc image (or ISO image, from the ISO 9660 file system used with CD-ROM media) is a disk image that contains everything that would be written to an optical disc, disk sector by disc sector, including the optical disc file system." ; - rdfs:seeAlso . - -:OpticalModem a owl:Class ; - rdfs:label "Optical Modem" ; - rdfs:subClassOf :Modem ; - rdfs:isDefinedBy ; - :definition "A modem that connects to a fiber optic network is known as an optical network terminal (ONT) or optical network unit (ONU). These are commonly used in fiber to the home installations, installed inside or outside a house to convert the optical medium to a copper Ethernet interface, after which a router or gateway is often installed to perform authentication, routing, NAT, and other typical consumer internet functions, in addition to \"triple play\" features such as telephony and television service." . - -:OrchestrationController a owl:Class ; - rdfs:label "Orchestration Controller" ; - rdfs:subClassOf :OrchestrationServer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ContainerOrchestrationSoftware ] ; - :definition "An orchestration server provides orchestration services that automate the configuration, coordination, and management of computer systems and software." . - -:OrchestrationServer a owl:Class ; - rdfs:label "Orchestration Server" ; - rdfs:subClassOf :Server ; - :definition "A d3f:Server which is involved with the orchestration of workloads or the execution of orchestrated workloads." ; - rdfs:seeAlso . - -:OrchestrationWorker a owl:Class ; - rdfs:label "Orchestration Worker" ; - rdfs:subClassOf :OrchestrationServer ; - :definition "A d3f:Server which receives commands from a d3f:OrchestrationController to execute workloads." ; - rdfs:seeAlso :OrchestrationController . - -:Organization a owl:Class ; - rdfs:label "Organization" ; - rdfs:subClassOf :AgentGroup, - :Non-PersonEntity, - [ a owl:Restriction ; - owl:onProperty :has-member ; - owl:someValuesFrom :Person ] ; - :definition "An organization with a defined mission/goal and a defined boundary, using systems to execute that mission, and with responsibility for managing its own risks and performance. An enterprise may consist of all or some of the following business aspects: acquisition, program management, human resources, financial management, security, and systems, information and mission management" ; - rdfs:seeAlso :NIST_SP_800-53_R5 . - -:OrganizationalActivity a owl:Class ; - rdfs:label "Organizational Activity" ; - rdfs:subClassOf :Plan ; - :definition "An activity is a specific behavior representing a set of actions that may be accomplished by an agent." ; - rdfs:seeAlso , - , - , - ; - :synonym "Business Process", - "Mission Critical Function", - "Mission Function" . - -:OrganizationMapping a :OrganizationMapping, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Organization Mapping" ; - rdfs:subClassOf :OperationalActivityMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :Dependency ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :Organization ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :Person ], - [ a owl:Restriction ; - owl:onProperty :may-map ; - owl:someValuesFrom :OrganizationalActivity ] ; - :d3fend-id "D3-OM" ; - :definition "Organization mapping identifies and models the people, roles, and groups with an organization and the relations between them." ; - :display-order 4 ; - :kb-reference :Reference-CatiaUAFPlugin, - :Reference-OrganizationalManagementInSAPERPHCM, - :Reference-UnifiedArchitectureFrameworkUAF . - -:OSAPIAccessProcess a owl:Class ; - rdfs:label "OS API Access Process" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :AccessProcess ] ; - :definition "An OS API function for interacting with processes." . - -:OSAPIAllocateMemory a owl:Class ; - rdfs:label "OS API Allocate Memory" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :AllocateMemory ] ; - :definition "An OS API function that requests and allocates a region of memory for use by a process or application." . - -:OSAPIConnectSocket a owl:Class ; - rdfs:label "OS API Connect Socket" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :ConnectSocket ] ; - :definition "An OS API function that establishes a connection between a socket and a endpooint." . - -:OSAPICopyToken a owl:Class ; - rdfs:label "OS API Copy Token" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :CopyToken ] ; - :definition "An OS API function that creates a duplicate or copy of an existing security token." . - -:OSAPICreateFile a owl:Class ; - rdfs:label "OS API Create File" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :CreateFile ] ; - :definition "An OS API function that creates a file." . - -:OSAPICreateProcess a owl:Class ; - rdfs:label "OS API Create Process" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :CreateProcess ] ; - :definition "An OS API function that creates a new process within the system." . - -:OSAPICreateSocket a owl:Class ; - rdfs:label "OS API Create Socket" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :CreateSocket ] ; - :definition "An OS API function that creates a socket." . - -:OSAPICreateThread a owl:Class ; - rdfs:label "OS API Create Thread" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :CreateThread ] ; - :definition "An OS API function that creates a new thread of execution within a process." . - -:OSAPIDeleteFile a owl:Class ; - rdfs:label "OS API Delete File" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :DeleteFile ] ; - :definition "An OS API function that removes a file from the file system." . - -:OSAPIExec a owl:Class ; - rdfs:label "OS API Exec" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :Exec ] ; - :definition "An OS API function that replaces the current process image with a new processs image, executing a specified program." . - -:OSAPIFreeMemory a owl:Class ; - rdfs:label "OS API Free Memory" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :FreeMemory ] ; - :definition "An OS API function that releases or deallocates memory that was previously allocated by the program." . - -:OSAPIFunction a owl:Class ; - rdfs:label "OS API Function" ; - rdfs:subClassOf :Software ; - :definition "A callable interface provided by an operating system that allows applications or other software components to interact with and utilize the underlying system resources, services, or functionalities." ; - rdfs:seeAlso , - . - -:OSAPIGetSystemTime a owl:Class ; - rdfs:label "OS API Get System Time" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :GetSystemTime ] ; - :definition "An OS API function that retrieves the current system time or timestamp." . - -:OSAPIGetThreadContext a owl:Class ; - rdfs:label "OS API Get Thread Context" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :GetThreadContext ] ; - :definition "An OS API function that retrieves the execution context or state of a specific thread in a process." . - -:OSAPILoadModule a owl:Class ; - rdfs:label "OS API Load Module" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :LoadModule ] ; - :definition "An OS API function that loads a module into memory and makes it available for execution." . - -:OSAPIMoveFile a owl:Class ; - rdfs:label "OS API Move File" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :MoveFile ] ; - :definition "An OS API function that moves or renames a file or directory from one location to another within the file system." . - -:OSAPIOpenFile a owl:Class ; - rdfs:label "OS API Open File" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :OpenFile ] ; - :definition "An OS API function that opens a file for reading, writing, or both, and return a handle or descriptor that can be used to interact with the file." . - -:OSAPIReadFile a owl:Class ; - rdfs:label "OS API Read File" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :ReadFile ] ; - :definition "An OS API function that reads data from a file or input stream into memory." . - -:OSAPIReadMemory a owl:Class ; - rdfs:label "OS API Read Memory" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :ReadMemory ] ; - :definition "An OS API function that reads the contents of memory from a specific address or region." . - -:OSAPIResumeProcess a owl:Class ; - rdfs:label "OS API Resume Process" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :ResumeProcess ] ; - :definition "An OS API function that resumes the execution of a paused, stopped, or suspended process." . - -:OSAPIResumeThread a owl:Class ; - rdfs:label "OS API Resume Thread" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :ResumeThread ] ; - :definition "An OS API function that resumes the execution of a paused, stopped, or suspended thread." . - -:OSAPISaveRegisters a owl:Class ; - rdfs:label "OS API Save Registers" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :SaveRegister ] ; - :definition "An OS API function that retrieves and saves the values of CPU registers for a specific process or thread." . - -:OSAPISetRegisters a owl:Class ; - rdfs:label "OS API Set Registers" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :SetRegisters ] ; - :definition "An OS API function that modifies the values of CPU registers." . - -:OSAPISetThreadContext a owl:Class ; - rdfs:label "OS API Set Thread Context" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :SetThreadContext ] ; - :definition "An OS API function that modifies the execution context of a thread." . - -:OSAPISuspendProcess a owl:Class ; - rdfs:label "OS API Suspend Process" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :SuspendProcess ] ; - :definition "An OS API function that pauses the execution of a process." . - -:OSAPISuspendThread a owl:Class ; - rdfs:label "OS API Suspend Thread" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :SuspendThread ] ; - :definition "An OS API function that pauses the execution of a thread." . - -:OSAPISystemFunction a owl:Class ; - rdfs:label "OS API System Function" ; - rdfs:subClassOf :OSAPIFunction ; - :definition "Indirect System calls are made through an OS-specific library (like glibc in Linux) that provides a higher-level API for the system calls." ; - :synonym "Indirect System Call" . - -:OSAPITerminateProcess a owl:Class ; - rdfs:label "OS API Terminate Process" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :TerminateProcess ] ; - rdfs:seeAlso "An OS API function taht stops the execution of a process." . - -:OSAPITraceProcess a owl:Class ; - rdfs:label "OS API Trace Process" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :TraceProcess ] ; - :definition "An OS API function that enables a program to monitor, control, or interact with the execution of a process." . - -:OSAPITraceThread a owl:Class ; - rdfs:label "OS API Trace Thread" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :TraceThread ] ; - :definition "An OS API function that enables a program to monitor, control, or interact with the execution of a thread." . - -:OSAPIUnloadModule a owl:Class ; - rdfs:label "OS API Unload Module" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :UnloadModule ] ; - :definition "An OS API function that removes a previously loaded module from memory." . - -:OSAPIWriteFile a owl:Class ; - rdfs:label "OS API Write File" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :WriteFile ] ; - :definition "An OS API function that writes data from a buffer in memory to a file or output stream." . - -:OSAPIWriteMemory a owl:Class ; - rdfs:label "OS API Write Memory" ; - rdfs:subClassOf :OSAPISystemFunction, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :WriteMemory ] ; - :definition "An OS API function that writes data into the memory space of another process or into specific regions of memory." . - -:OTAbortCommand a owl:Class ; - rdfs:label "OT Abort Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Commands a device to abort a service/program." ; - rdfs:seeAlso , - , - . - -:OTAbortCommandEvent a owl:Class ; - rdfs:label "OT Abort Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTAbortCommand ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :OTRunCommandEvent ] . - -:OTActuator a owl:Class ; - rdfs:label "OT Actuator" ; - rdfs:subClassOf :Actuator ; - rdfs:isDefinedBy ; - :definition "An OT actuator is an industrial-grade actuator optimized for operational technology (OT) environments, such as SCADA or process-control systems. It tolerates harsher conditions, meets stricter safety and reliability standards, and integrates seamlessly with ICS protocols to enable real-time mechanical motion or adjustments in production lines and critical infrastructure." . - -:OTAlarmMessage a owl:Class ; - rdfs:label "OT Alarm Message" ; - rdfs:subClassOf :OTDiagnosticsMessage ; - rdfs:comment """BACnet: acknowledgeAlarm -BACnet: confirmedEventNotification -BACnet: getAlarmSummary -BACnet: unconfirmedEventNotification -BACnet: lifeSafetyOperation -BACnet: Abort: 1 -BACnet: Abort: 2 -BACnet: Abort: 3 -BACnet: Abort: 4 -BACnet: Abort: 5 -BACnet: Abort: 6 -BACnet: Abort: 7 -BACnet: Abort: 8 -BACnet: Abort: 9 -BACnet: Abort: 10 -BACnet: Abort: 11 -BACnet: Abort: 12 """, - """GE-SRTP: RETURN FAULT TABLE -GE-SRTP: CLEAR FAULT TABLE""" ; - :definition "Report danger, hazards, or serious errors." ; - rdfs:seeAlso , - , - . - -:OTAlarmMessageEvent a owl:Class ; - rdfs:label "OT Alarm Message Event" ; - rdfs:subClassOf :OTDiagnosticsMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTAlarmMessage ] ; - :definition "Report danger, hazards, or serious errors." . - -:OTChangeControlProgramCommand a owl:Class ; - rdfs:label "OT Change Control Program Command" ; - rdfs:subClassOf :OTModifyControlProgramCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OTControlProgram ] ; - rdfs:comment """GE-SRTP: WRITE PROGRAM BLOCK MEMORY -GE-SRTP: CHANGE PLC CPU PRIVILEGE LEVEL -GE-SRTP: SET CONTROL ID(CPU ID) -GE-SRTP: PROGRAM STORE (UPLOAD FROM PLC) -GE-SRTP: PROGRAM LOAD (DOWNLOAD TO PLC) -GE-SRTP: TOGGLE FORCE SYSTEM MEMORY""" ; - :definition "Commands a remote device to modify an existing control program." ; - rdfs:seeAlso , - , - . - -:OTChangeControlProgramCommandEvent a owl:Class ; - rdfs:label "OT Change Control Program Command Event" ; - rdfs:subClassOf :OTModifyControlProgramCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTChangeControlProgramCommand ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlProgram ] ; - :definition "Commands a remote device to modify an existing control program." . - -:OTChangeDataCommand a owl:Class ; - rdfs:label "OT Change Data Command" ; - rdfs:subClassOf :OTWriteCommand ; - rdfs:comment """BACnet: atomicWriteFile -BACnet: writeProperty -BACnet: writePropertyMultiple -BACnet: write-group """, - """CIP: Set Attributes All -CIP: Set Attribute List -CIP: Set Attribute Single -CIP: Set Member""", - """GE-SRTP: WRITE SYSTEM MEMORY -GE-SRTP: WRITE TASK MEMORY """, - """Modbus: Write Single Coil -Modbus: Write Single Register -Modbus: Write Multiple Coils -Modbus: Write Multiple Registers -Modbus: Write File Record -Modbus: Mask Write Register -Modbus: Read Write Register""" ; - :definition "OT command that modifies existing data on a remote device." ; - rdfs:seeAlso , - , - . - -:OTChangeDataCommandEvent a owl:Class ; - rdfs:label "OT Change Data Command Event" ; - rdfs:subClassOf :OTWriteCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTChangeDataCommand ] ; - :definition "OT command that modifies existing data on a remote device." . - -:OTConnectionCommand a owl:Class ; - rdfs:label "OT Connection Command" ; - rdfs:subClassOf :OTNetworkManagementCommand ; - rdfs:comment """BACnet: vtOpen -BACnet: vtClose """, - """ENIP: Register Session -ENIP: Unregister Session""" ; - :definition "Establish a network connection with a device." ; - rdfs:seeAlso , - , - . - -:OTConnectionCommandEvent a owl:Class ; - rdfs:label "OT Connection Command Event" ; - rdfs:subClassOf :OTNetworkManagementCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :NetworkTraffic ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTConnectionCommand ] ; - :definition "Establish a network connection with a device." . - -:OTControlCommand a owl:Class ; - rdfs:label "OT Control Command" ; - rdfs:subClassOf :OTProcessDataCommand ; - rdfs:comment """CIP: Reset -CIP: Start -CIP: Stop -CIP: Create -CIP: Delete -CIP: Apply Attributes -CIP: Restore -CIP: Save """, - "GE-SRTP: PLC SHORT STATUS REQUEST" ; - :definition "Command and control the managed process." ; - rdfs:seeAlso , - , - . - -:OTControlCommandEvent a owl:Class ; - rdfs:label "OT Control Command Event" ; - rdfs:subClassOf :OTProcessDataCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlCommand ] ; - :definition "Command and control the managed process." . - -:OTControlFunction a owl:Class ; - rdfs:label "OT Control Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :OTLogicVariable ] ; - :definition "A function which accesses OT Control Variables" . - -:OTController a owl:Class ; - rdfs:label "OT Controller" ; - rdfs:subClassOf :OTEmbeddedComputer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OTControlProgram ], - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :OTControlLogicProcess ], - [ a owl:Restriction ; - owl:onProperty :powered-by ; - owl:someValuesFrom :OTPowerSupply ] ; - rdfs:isDefinedBy ; - :definition "An OT Controller is an industrial control device that automatically regulates one or more controlled variables in response to command inputs and real-time feedback signals." . - -:OTControlLogicProcess a owl:Class ; - rdfs:label "OT Control Logic Process" ; - rdfs:subClassOf :ServiceApplicationProcess, - [ a owl:Restriction ; - owl:onProperty :communicates-with ; - owl:someValuesFrom :OTIOModule ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OTLogicVariable ], - [ a owl:Restriction ; - owl:onProperty :controls ; - owl:someValuesFrom :OTActuator ], - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :OTSensor ] ; - :definition "The instructions and algorithms within an OT Controller defined by user programming to interpret inputs, process information, and determine outputs." . - -:OTControlProgram a owl:Class ; - rdfs:label "OT Control Program" ; - rdfs:subClassOf :ServiceApplication, - [ a owl:Restriction ; - owl:onProperty :instructs ; - owl:someValuesFrom :OTControlLogicProcess ] ; - :definition "The file stored in controller memory that is used to operate the controller." ; - :synonym "OT Project File" . - -:OTControlVariable a owl:Class ; - rdfs:label "OT Control Variable" ; - rdfs:subClassOf :OTLogicVariable ; - rdfs:isDefinedBy "https://isagca.org/hubfs/2023%20ISA%20Website%20Redesigns/ISAGCA/PDFs/Industrial%20Cybersecurity%20Knowledge%20FINAL.pdf?hsLang=en" ; - :definition "A control variable is the measurement of the physical condition of the device that influences the Process Variables." ; - skos:example "If the Set Point of a temperature control system for a residential dwelling is 72 degrees, and the Process Variable is 82 degrees, the Control Variable for the air conditioner should be 'on.'" . - -:OTCreateDataCommand a owl:Class ; - rdfs:label "OT Create Data Command" ; - rdfs:subClassOf :OTWriteCommand ; - rdfs:comment """BACnet: addListElement -BACnet: createObject""", - "CIP: Insert Member" ; - :definition "OT command that creates data on a remote device." ; - rdfs:seeAlso , - , - . - -:OTCreateDataCommandEvent a owl:Class ; - rdfs:label "OT Create Data Command Event" ; - rdfs:subClassOf :OTWriteCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTCreateDataCommand ] ; - :definition "OT command that creates data on a remote device." . - -:OTCreateNewControlProgramCommand a owl:Class ; - rdfs:label "OT Create New Control Program Command" ; - rdfs:subClassOf :OTModifyControlProgramCommand, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlProgram ] ; - rdfs:comment """GE-SRTP: WRITE PROGRAM BLOCK MEMORY -GE-SRTP: SET CONTROL ID(CPU ID) -GE-SRTP: PROGRAM LOAD (DOWNLOAD TO PLC) -GE-SRTP: TOGGLE FORCE SYSTEM MEMORY""" ; - :definition "Commands a remote device to create an control program." ; - rdfs:seeAlso , - , - . - -:OTCreateNewControlProgramCommandEvent a owl:Class ; - rdfs:label "OT Create New Control Program Command Event" ; - rdfs:subClassOf :OTModifyControlProgramCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlProgram ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTCreateNewControlProgramCommand ] ; - :definition "Commands a remote device to create an control program." . - -:OTDebugCommand a owl:Class ; - rdfs:label "OT Debug Command" ; - rdfs:subClassOf :OTDiagnosticsMessage ; - rdfs:comment """BACnet: getEnrollmentSummary -BACnet: confirmed-audit-notification -BACnet: audit-log-query -BACnet: unconfirmed-audit-notification """, - """Modbus: Get Comm. Event Log -Modbus: Return Query Data -Modbus: Clear Counters -Modbus: Get Comm. Event Counters""" ; - :definition "Investigate or analyze the current state of the system." ; - rdfs:seeAlso , - , - . - -:OTDebugCommandEvent a owl:Class ; - rdfs:label "OT Debug Command Event" ; - rdfs:subClassOf :OTDiagnosticsMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDebugCommand ] ; - :definition "Investigate or analyze the current state of the system." . - -:OTDeleteControlProgramCommand a owl:Class ; - rdfs:label "OT Delete Control Program Command" ; - rdfs:subClassOf :OTModifyControlProgramCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OTControlProgram ] ; - :definition "Commands a remote device to remove an existing control program." ; - rdfs:seeAlso , - , - . - -:OTDeleteControlProgramCommandEvent a owl:Class ; - rdfs:label "OT Delete Control Program Command Event" ; - rdfs:subClassOf :OTModifyControlProgramCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlProgram ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeleteControlProgramCommand ] ; - :definition "Commands a remote device to remove an existing control program." . - -:OTDeleteDataCommand a owl:Class ; - rdfs:label "OT Delete Data Command" ; - rdfs:subClassOf :OTWriteCommand ; - rdfs:comment """BACnet: removeListElement -BACnet: deleteObject""" ; - :definition "OT command that removes data on a remote device." ; - rdfs:seeAlso , - , - . - -:OTDeleteDataCommandEvent a owl:Class ; - rdfs:label "OT Delete Data Command Event" ; - rdfs:subClassOf :OTWriteCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeleteDataCommand ] ; - :definition "OT command that removes data on a remote device." . - -:OTDeviceConfigurationCommand a owl:Class ; - rdfs:label "OT Device Configuration Command" ; - rdfs:subClassOf :OTDeviceManagementMessage ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - """GE-SRTP: READ PROGRAM MEMORY -GE-SRTP: WRITE PROGRAM BLOCK MEMORY -GE-SRTP: CHANGE PLC CPU PRIVILEGE LEVEL -GE-SRTP: SET CONTROL ID(CPU ID) -GE-SRTP: SET PLC (RUN VS STOP) -GE-SRTP: PROGRAM STORE (UPLOAD FROM PLC) -GE-SRTP: PROGRAM LOAD (DOWNLOAD TO PLC) -GE-SRTP: TOGGLE FORCE SYSTEM MEMORY""" ; - :definition "Configure or administer managed devices." ; - rdfs:seeAlso , - , - . - -:OTDeviceConfigurationCommandEvent a owl:Class ; - rdfs:label "OT Device Configuration Command Event" ; - rdfs:subClassOf :OTDeviceManagementMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeviceConfigurationCommand ] ; - :definition "Configure or administer managed devices." . - -:OTDeviceDescriptionMessage a owl:Class ; - rdfs:label "OT Device Description Message" ; - rdfs:subClassOf :OTDeviceManagementMessage ; - rdfs:comment """ENIP: List Services -ENIP: List Interfaces """, - """GE-SRTP: RETURN CONTROL PROGRAM NAMES -GE-SRTP: RETURN CONTROLLER TYPE AND ID INFORMATION""" ; - :definition "Describe features, abilities, or performance of system components." ; - rdfs:seeAlso , - , - . - -:OTDeviceDescriptionMessageEvent a owl:Class ; - rdfs:label "OT Device Description Message Event" ; - rdfs:subClassOf :OTDeviceManagementMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeviceDescriptionMessage ] ; - :definition "Describe features, abilities, or performance of system components." . - -:OTDeviceFirmwareCommand a owl:Class ; - rdfs:label "OT Device Firmware Command" ; - rdfs:subClassOf :OTDeviceManagementMessage ; - :definition "Interact with the software responsible for low-level control of the system." ; - rdfs:seeAlso , - , - . - -:OTDeviceFirmwareCommandEvent a owl:Class ; - rdfs:label "OT Device Firmware Command Event" ; - rdfs:subClassOf :OTDeviceManagementMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeviceFirmwareCommand ] ; - :definition "Interact with the software responsible for low-level control of the system." . - -:OTDeviceIdentificationMessage a owl:Class ; - rdfs:label "OT Device Identification Message" ; - rdfs:subClassOf :OTDeviceManagementMessage ; - rdfs:comment """BACnet: i-Am -BACnet: i-Have -BACnet: who-Has -BACnet: who-Is """, - "ENIP: List Identity ", - """Modbus: Read Device Identification -Modbus: Report Slave ID""" ; - :definition "Identify devices on the network." ; - rdfs:seeAlso , - , - . - -:OTDeviceIdentificationMessageEvent a owl:Class ; - rdfs:label "OT Device Identification Message Event" ; - rdfs:subClassOf :OTDeviceManagementMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeviceIdentificationMessage ] ; - :definition "Identify devices on the network." . - -:OTDeviceManagementMessage a owl:Class ; - rdfs:label "OT Device Management Message" ; - rdfs:subClassOf :OTProtocolMessage ; - :definition "Manage devices and their configurations." ; - rdfs:seeAlso , - , - . - -:OTDeviceManagementMessageEvent a owl:Class ; - rdfs:label "OT Device Management Message Event" ; - rdfs:subClassOf :OTEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDeviceManagementMessage ] ; - :definition "Manage devices and their configurations." . - -:OTDiagnosticsMessage a owl:Class ; - rdfs:label "OT Diagnostics Message" ; - rdfs:subClassOf :OTProtocolMessage ; - :definition "Relay error, exception, alarm, or log information." ; - rdfs:seeAlso , - , - . - -:OTDiagnosticsMessageEvent a owl:Class ; - rdfs:label "OT Diagnostics Message Event" ; - rdfs:subClassOf :OTEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDiagnosticsMessage ] ; - :definition "Relay error, exception, alarm, or log information." . - -:OTDisconnectRemoteConnectionCommand a owl:Class ; - rdfs:label "OT Disconnect Remote Connection Command" ; - rdfs:subClassOf :OTConnectionCommand ; - :definition "The Disconnect Request message is sent to the message receiver to indicate that the transmitter is terminating its TCP socket." ; - rdfs:seeAlso , - , - . - -:OTDisconnectRemoteConnectionCommandEvent a owl:Class ; - rdfs:label "OT Disconnect Remote Connection Command Event" ; - rdfs:subClassOf :OTConnectionCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDisconnectRemoteConnectionCommand ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :OTEstablishRemoteConnectionCommandEvent ] ; - :definition "The Disconnect Request message is sent to the message receiver to indicate that the transmitter is terminating its TCP socket." . - -:OTDownloadControlProgramCommand a owl:Class ; - rdfs:label "OT Download Control Program Command" ; - rdfs:subClassOf :OTModifyControlProgramCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OTControlProgram ] ; - rdfs:comment """GE-SRTP: PROGRAM STORE (UPLOAD FROM PLC) -GE-SRTP: PROGRAM LOAD (DOWNLOAD TO PLC)""" ; - :definition "Commands a remote device to download a control program." ; - rdfs:seeAlso , - , - , - ; - :synonym "OT Program Download" . - -:OTDownloadControlProgramCommandEvent a owl:Class ; - rdfs:label "OT Download Control Program Command Event" ; - rdfs:subClassOf :OTModifyControlProgramCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlProgram ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTDownloadControlProgramCommand ] ; - :definition "Commands a remote device to download a control program." . - -:OTEmbeddedComputer a owl:Class ; - rdfs:label "OT Embedded Computer" ; - rdfs:subClassOf :EmbeddedComputer ; - :definition "A ruggedized computational device, embedded in industrial control systems, designed to handle real-time tasks and environmental stressors common in OT." . - -:OTEngineeringSoftware a owl:Class ; - rdfs:label "OT Engineering Software" ; - rdfs:subClassOf :DeveloperApplication, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :OTControlProgram ] ; - :definition "Software used in an industrial process to help engineers design, test, and maintain OT. This software enables the programming of OT controllers." . - -:OTEngineeringWorkstation a owl:Class ; - rdfs:label "OT Engineering Workstation" ; - rdfs:subClassOf :ClientComputer, - [ a owl:Restriction ; - owl:onProperty :communicates-with ; - owl:someValuesFrom :OTController ], - [ a owl:Restriction ; - owl:onProperty :runs ; - owl:someValuesFrom :OTEngineeringSoftware ] ; - rdfs:isDefinedBy ; - :definition "An Engineering Workstation (EWS) is used to perform various maintenance, configuration, or diagnostics functions for a control system. The EWS will likely require dedicated application software to interface with various devices (e.g., RTUs, PLCs), and may be used to transfer data or files between the control system devices and other networks." ; - :synonym "EWS" . - -:OTErrorMessage a owl:Class ; - rdfs:label "OT Error Message" ; - rdfs:subClassOf :OTDiagnosticsMessage ; - rdfs:comment """BACnet: Error: 1 -BACnet: Error: 2 -BACnet: Error: 3 -BACnet: Error: 4 -BACnet: Error: 5 -BACnet: Error: 6 -BACnet: Error: 7 -BACnet: Error: 8""" ; - :definition "An anticipated, reproducible defect occurred within the system." ; - rdfs:seeAlso , - , - . - -:OTErrorMessageEvent a owl:Class ; - rdfs:label "OT Error Message Event" ; - rdfs:subClassOf :OTDiagnosticsMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTErrorMessage ] ; - :definition "An anticipated, reproducible defect occurred within the system." . - -:OTEstablishRemoteConnectionCommand a owl:Class ; - rdfs:label "OT Establish Remote Connection Command" ; - rdfs:subClassOf :OTConnectionCommand ; - :definition " Used to establish an TCP/IP Connection to the target device." ; - rdfs:seeAlso , - , - . - -:OTEstablishRemoteConnectionCommandEvent a owl:Class ; - rdfs:label "OT Establish Remote Connection Command Event" ; - rdfs:subClassOf :OTConnectionCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTEstablishRemoteConnectionCommand ] ; - :definition " Used to establish an TCP/IP Connection to the target device." . - -:OTEvent a owl:Class ; - rdfs:label "OT Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTProtocolMessage ] ; - :definition "A discrete occurrence within an operational technology environment that denotes a significant change in state, execution of a command, or transmission of information." . - -:OTExceptionMessage a owl:Class ; - rdfs:label "OT Exception Message" ; - rdfs:subClassOf :OTDiagnosticsMessage ; - rdfs:comment """BACnet: Reject: 1 -BACnet: Reject: 2 -BACnet: Reject: 3 -BACnet: Reject: 4 -BACnet: Reject: 5 -BACnet: Reject: 6 -BACnet: Reject: 7 -BACnet: Reject: 8 -BACnet: Reject: 9 -BACnet: Reject: 10 """, - """Modbus: Read Exception Status -Modbus: Exception: Illegal Function -Modbus: Exception: Illegal Data Address -Modbus: Exception: Illegal Data Value -Modbus: Exception: Slave Device Failure -Modbus: Exception: Acknowledge -Modbus: Exception: Slave Device Busy -Modbus: Exception: Memory Parity Error -Modbus: Exception: Gateway Path Unavailable -Modbus: Exception: Gateway Target Device Failed to Respond""" ; - :definition "An unknown or anomalous condition occurred in the system." ; - rdfs:seeAlso , - , - . - -:OTExceptionMessageEvent a owl:Class ; - rdfs:label "OT Exception Message Event" ; - rdfs:subClassOf :OTDiagnosticsMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTExceptionMessage ] ; - :definition "An unknown or anomalous condition occurred in the system." . - -:OTHumanMachineInterface a owl:Class ; - rdfs:label "OT Human Machine Interface" ; - rdfs:subClassOf :OTEmbeddedComputer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :HMIApplication ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :InputDevice ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OutputDevice ], - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OTLogicVariable ], - [ a owl:Restriction ; - owl:onProperty :reads ; - owl:someValuesFrom :OTProcessDataHistorian ] ; - :comment "An HMI can take various forms, including a dedicated screen or control panel integrated with a specific device/controller, or a customizable software GUI application running on a standard operating system (e.g., MS Windows) that interfaces with a control/SCADA server." ; - :definition "Human-Machine Interfaces (HMIs) are systems used by an operator to monitor the real-time status of an operational process and to perform necessary control functions, including the adjustment of device parameters." ; - rdfs:seeAlso ; - :synonym "HMI" . - -:OTIOModule a owl:Class ; - rdfs:label "OT I/O Module" ; - rdfs:subClassOf :IOModule, - [ a owl:Restriction ; - owl:onProperty :communicates-with ; - owl:someValuesFrom :OTActuator ], - [ a owl:Restriction ; - owl:onProperty :communicates-with ; - owl:someValuesFrom :OTSensor ] ; - rdfs:comment "There are many types of I/O modules, including: analog input, analog output, HART input, HART output, digital input, digital output, mV input, pulse input, universal I/O, vibration input, and many other types of input or output modules. The functionality of the I/O Module can be embedded in the controller or as a separate module connected via chassis or I/O link." ; - rdfs:isDefinedBy ; - :definition "An OT I/O Module is an industrial-grade interface designed for harsh Operational Technology (OT) environments. It reliably connects sensors and actuators to industrial control systems, ensuring precise, real-time data exchange in applications such as SCADA or ICS. Engineered for ruggedness and consistent performance, it can manage analog, digital, or other specialized signal types while enduring demanding conditions." ; - rdfs:seeAlso ; - skos:example "Rockwell Compact 5000 IO Module" . - -:OTLogicVariable a owl:Class ; - rdfs:label "OT Logic Variable" ; - rdfs:subClassOf :RuntimeVariable ; - :definition "A variable which directly affects a program running on an OT controller, involving an OT Process." . - -:OTModeSwitch a owl:Class ; - rdfs:label "OT Mode Switch" ; - rdfs:subClassOf :ApplicationConfiguration, - [ a owl:Restriction ; - owl:onProperty :controls ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment "An OT Mode Switch is a dedicated mechanism, implemented as either a physical keyswitch or a software control, that permits authorized users to transition an OT controller between its operating modes." ; - :definition "Keyswitch or mode switch is the mechanism for changing the operating mode of an OT controller or device." ; - rdfs:seeAlso , - ; - :synonym "Mode Switch", - "Programming Key Switch" . - -:OTModifyControlProgramCommand a owl:Class ; - rdfs:label "OT Modify Control Program Command" ; - rdfs:subClassOf :OTModifyDeviceConfigurationCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OTControlProgram ] ; - rdfs:comment """GE-SRTP: WRITE PROGRAM BLOCK MEMORY -GE-SRTP: CHANGE PLC CPU PRIVILEGE LEVEL -GE-SRTP: SET CONTROL ID(CPU ID) -GE-SRTP: PROGRAM STORE (UPLOAD FROM PLC) -GE-SRTP: PROGRAM LOAD (DOWNLOAD TO PLC) -GE-SRTP: TOGGLE FORCE SYSTEM MEMORY""" ; - :definition "OT command that adds, removes, or changes, process data on a remote device." ; - rdfs:seeAlso , - , - . - -:OTModifyControlProgramCommandEvent a owl:Class ; - rdfs:label "OT Modify Control Program Command Event" ; - rdfs:subClassOf :OTModifyDeviceConfigurationCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTControlProgram ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTModifyControlProgramCommand ] ; - :definition "OT command that adds, removes, or changes, process data on a remote device." . - -:OTModifyDeviceConfigurationCommand a owl:Class ; - rdfs:label "OT Modify Device Configuration Command" ; - rdfs:subClassOf :OTDeviceConfigurationCommand ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - """GE-SRTP: WRITE PROGRAM BLOCK MEMORY -GE-SRTP: CHANGE PLC CPU PRIVILEGE LEVEL -GE-SRTP: SET CONTROL ID(CPU ID) -GE-SRTP: SET PLC (RUN VS STOP) -GE-SRTP: PROGRAM STORE (UPLOAD FROM PLC) -GE-SRTP: PROGRAM LOAD (DOWNLOAD TO PLC) -GE-SRTP: TOGGLE FORCE SYSTEM MEMORY""" ; - :definition "Modify device configuration." ; - rdfs:seeAlso , - , - . - -:OTModifyDeviceConfigurationCommandEvent a owl:Class ; - rdfs:label "OT Modify Device Configuration Command Event" ; - rdfs:subClassOf :OTDeviceConfigurationCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTModifyDeviceConfigurationCommand ] ; - :definition "Modify device configuration." . - -:OTModifyDeviceOperatingModeCommand a owl:Class ; - rdfs:label "OT Modify Device Operating Mode Command" ; - rdfs:subClassOf :OTModifyDeviceConfigurationCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Modifies the running state of an application or program on a device." ; - rdfs:seeAlso , - , - . - -:OTModifyDeviceOperatingModeCommandEvent a owl:Class ; - rdfs:label "OT Modify Device Operating Mode Command Event" ; - rdfs:subClassOf :OTModifyDeviceConfigurationCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTModifyDeviceOperatingModeCommand ] ; - :definition "Modifies the running state of an application or program on a device." . - -:OTNetwork a owl:Class ; - rdfs:label "OT Network" ; - rdfs:subClassOf :IntranetNetwork, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OTEmbeddedComputer ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :OTEngineeringWorkstation ] ; - :definition "A computer network which connects OT devices." . - -:OTNetworkManagementCommand a owl:Class ; - rdfs:label "OT Network Management Command" ; - rdfs:subClassOf :OTProtocolMessage ; - :definition "Manage message routing or network connection mechanisms." ; - rdfs:seeAlso , - , - . - -:OTNetworkManagementCommandEvent a owl:Class ; - rdfs:label "OT Network Management Command Event" ; - rdfs:subClassOf :OTEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTNetworkManagementCommand ] ; - :definition "Manage message routing or network connection mechanisms." . - -:OTNetworkTraffic a owl:Class ; - rdfs:label "OT Network Traffic" ; - rdfs:subClassOf :NetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :OTProtocolMessage ] ; - :definition "Network traffic generated by operational technology devices, e.g. programmable logic controllers" . - -:OTPauseCommand a owl:Class ; - rdfs:label "OT Pause Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Commands a device to pause a service/program." ; - rdfs:seeAlso , - , - . - -:OTPauseCommandEvent a owl:Class ; - rdfs:label "OT Pause Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTPauseCommand ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :OTRunCommandEvent ] ; - :definition "Commands a device to pause a service/program." . - -:OTPowerSupply a owl:Class ; - rdfs:label "OT Power Supply" ; - rdfs:subClassOf :PowerSupply ; - :definition "An OT power supply is a power supply whose control amplifier is optimized for signal-processing tasks rather than supplying mere steady-state power to a load. It is a self-contained combination of operational amplifiers, power amplifiers, and integral power circuits designed for higher-level operations in industrial or OT contexts." ; - rdfs:seeAlso ; - skos:example "Phoenix Contact QUINT, Eaton PSG, and many controller-branded power supplies." . - -:OTProcessDataCommand a owl:Class ; - rdfs:label "OT Process Data Command" ; - rdfs:subClassOf :OTProtocolMessage ; - :definition "Manage data associated with a controlled process." ; - rdfs:seeAlso , - , - . - -:OTProcessDataCommandEvent a owl:Class ; - rdfs:label "OT Process Data Command Event" ; - rdfs:subClassOf :OTEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTProcessDataCommand ] ; - :definition "Manage data associated with a controlled process." . - -:OTProcessDataHistorian a owl:Class ; - rdfs:label "OT Process Data Historian" ; - rdfs:subClassOf :Application, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :TimeSeriesDatabase ] ; - rdfs:isDefinedBy ; - :definition "A system used to collect and store data, including telemetry, events, alerts, and alarms about the operational process and supporting devices." . - -:OTProcessVariable a owl:Class ; - rdfs:label "OT Process Variable" ; - rdfs:subClassOf :OTLogicVariable ; - :definition "Process variables are the current actual measurement of the physical characteristics of a system. Common process variables include but are not limited to Temperature, Pressure, Level, and Flow. " ; - rdfs:seeAlso ; - skos:example "If the current temperature in a home is 82 degrees Fahrenheit, the process variable is 82 degrees." . - -:OTProgramModeCommand a owl:Class ; - rdfs:label "OT Program Mode Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Command that places the controller in a mode capable of reprogramming logic. This may or may not stop the program." ; - rdfs:seeAlso , - , - . - -:OTProgramModeCommandEvent a owl:Class ; - rdfs:label "OT Program Mode Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTProgramModeCommand ] ; - :definition "Command that places the controller in a mode capable of reprogramming logic. This may or may not stop the program." . - -:OTProprietaryMessage a owl:Class ; - rdfs:label "OT Proprietary Message" ; - rdfs:subClassOf :OTProtocolMessage ; - :definition "Vendor specific and may not be publicly documented, or values left for device specific configuration." ; - rdfs:seeAlso , - , - . - -:OTProprietaryMessageEvent a owl:Class ; - rdfs:label "OT Proprietary Message Event" ; - rdfs:subClassOf :OTEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTProprietaryMessage ] ; - :definition "Vendor specific and may not be publicly documented, or values left for device specific configuration." . - -:OTProtocolMessage a owl:Class ; - rdfs:label "OT Protocol Message" ; - rdfs:subClassOf :DigitalMessage ; - :definition "Packets generated by an operational technology protocol contain an OT protocol message." . - -:OTReadCommand a owl:Class ; - rdfs:label "OT Read Command" ; - rdfs:subClassOf :OTProcessDataCommand ; - rdfs:comment """BACnet: confirmedCOVNotification -BACnet: subscribeCOV -BACnet: atomicReadFile -BACnet: readProperty -BACnet: readPropertyConditional -BACnet: readPropertyMultiple -BACnet: unconfirmedCOVNotification -BACnet: readRange -BACnet: subscribeCOVProperty -BACnet: getEventInformation -BACnet: subscribe-cov-property-multiple -BACnet: confirmed-cov-notification-multiple -BACnet: unconfirmed-cov-notification-multiple """, - """CIP: Get Attributes All -CIP: Get Attribute List -CIP: Get Attribute Single -CIP: Find Next Object Instance -CIP: Get Member """, - """GE-SRTP: READ SYSTEM MEMORY -GE-SRTP: READ TASK MEMORY """, - """Modbus: Read Coils -Modbus: Read Discrete Inputs -Modbus: Read Holding Registers -Modbus: Read Input Registers -Modbus: Read File Record -Modbus: Read FIFO Queue""" ; - :definition "Read or retrieve data." ; - rdfs:seeAlso , - , - . - -:OTReadCommandEvent a owl:Class ; - rdfs:label "OT Read Command Event" ; - rdfs:subClassOf :OTProcessDataCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTReadCommand ] ; - :definition "Read or retrieve data." . - -:OTReadDeviceConfigurationCommand a owl:Class ; - rdfs:label "OT Read Device Configuration Command" ; - rdfs:subClassOf :OTDeviceConfigurationCommand ; - rdfs:comment "BACnet: deviceCommunicationControl", - "GE-SRTP: READ PROGRAM MEMORY" ; - :definition "Read device configuration." ; - rdfs:seeAlso , - , - . - -:OTReadDeviceConfigurationCommandEvent a owl:Class ; - rdfs:label "OT Read Device Configuration Command Event" ; - rdfs:subClassOf :OTDeviceConfigurationCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTReadDeviceConfigurationCommand ] ; - :definition "Read device configuration." . - -:OTReadFileCommand a owl:Class ; - rdfs:label "OT Read File Command" ; - rdfs:subClassOf :OTReadCommand, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :File ] ; - rdfs:comment "BACnet: atomicReadFile", - "Modbus: Read File Record" ; - :definition "Reads data in specified chuncks or the contents of a specified file stored in the file device connected to the PC." ; - rdfs:seeAlso , - , - . - -:OTReadFileCommandEvent a owl:Class ; - rdfs:label "OT Read File Command Event" ; - rdfs:subClassOf :OTReadCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTReadFileCommand ] ; - :definition "Reads data in specified chuncks or the contents of a specified file stored in the file device connected to the PC." . - -:OTReadTimeCommand a owl:Class ; - rdfs:label "OT Read Time Command" ; - rdfs:subClassOf :OTTimeCommand ; - rdfs:comment "example" ; - :definition "Read timing mechanisms." ; - rdfs:seeAlso , - , - . - -:OTReadTimeCommandEvent a owl:Class ; - rdfs:label "OT Read Time Command Event" ; - rdfs:subClassOf :OTTimeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTReadTimeCommand ] ; - :definition "Read timing mechanisms." . - -:OTReadValueCommand a owl:Class ; - rdfs:label "OT Read Value Command" ; - rdfs:subClassOf :OTReadCommand, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTLogicVariable ] ; - rdfs:comment """BACnet: confirmedCOVNotification -BACnet: subscribeCOV -BACnet: readProperty -BACnet: readPropertyConditional -BACnet: readPropertyMultiple -BACnet: unconfirmedCOVNotification -BACnet: readRange -BACnet: subscribeCOVProperty -BACnet: getEventInformation -BACnet: subscribe-cov-property-multiple -BACnet: confirmed-cov-notification-multiple -BACnet: unconfirmed-cov-notification-multiple """, - """CIP: Get Attributes All -CIP: Get Attribute List -CIP: Get Attribute Single -CIP: Find Next Object Instance -CIP: Get Member """, - """GE-SRTP: READ SYSTEM MEMORY -GE-SRTP: READ TASK MEMORY """, - """Modbus: Read Coils -Modbus: Read Discrete Inputs -Modbus: Read Holding Registers -Modbus: Read Input Registers -Modbus: Read FIFO Queue""" ; - :definition "Reads the contents of the specified number of consecutive parameter areawords starting from the specified word." ; - rdfs:seeAlso , - , - . - -:OTReadValueCommandEvent a owl:Class ; - rdfs:label "OT Read Value Command Event" ; - rdfs:subClassOf :OTReadCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTLogicVariable ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTReadValueCommand ] ; - :definition "Reads the contents of the specified number of consecutive parameter areawords starting from the specified word." . - -:OTRemoteModeCommand a owl:Class ; - rdfs:label "OT Remote Mode Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Command that places the controller in a mode capable of receiving read/write communication from a networked entity." ; - rdfs:seeAlso , - , - . - -:OTRemoteModeCommandEvent a owl:Class ; - rdfs:label "OT Remote Mode Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :NetworkTraffic ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTRemoteModeCommand ] ; - :definition "Command that places the controller in a mode capable of receiving read/write communication from a networked entity." . - -:OTRunCommand a owl:Class ; - rdfs:label "OT Run Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Commands a device to start or resume a service/program." ; - rdfs:seeAlso , - , - . - -:OTRunCommandEvent a owl:Class ; - rdfs:label "OT Run Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTRunCommand ] ; - :definition "Commands a device to start or resume a service/program." . - -:OTScanTime a owl:Class ; - rdfs:label "OT Scan Time" ; - rdfs:subClassOf :ApplicationScanTime ; - :definition "An OT controller system variable that tracks the measured time it takes to read input status, apply logic, and write output values." . - -:OTSecurityCommand a owl:Class ; - rdfs:label "OT Security Command" ; - rdfs:subClassOf :OTNetworkManagementCommand ; - rdfs:comment """BACnet: authenticate -BACnet: requestKey """, - "GE-SRTP: PROGRAMMER LOGON" ; - :definition "Ensure confidentiality, integrity, or availability of system information." ; - rdfs:seeAlso , - , - . - -:OTSecurityCommandEvent a owl:Class ; - rdfs:label "OT Security Command Event" ; - rdfs:subClassOf :OTNetworkManagementCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTSecurityCommand ] ; - :definition "Ensure confidentiality, integrity, or availability of system information." . - -:OTSensor a owl:Class ; - rdfs:label "OT Sensor" ; - rdfs:subClassOf :Sensor, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ClientComputer ], - [ a owl:Restriction ; - owl:onProperty :writes ; - owl:someValuesFrom :OTProcessVariable ] ; - rdfs:comment "Components of the sensor include a sensing element and may include a power source, display, housing, communication interface or signal processor." ; - rdfs:isDefinedBy ; - :definition "An OT Sensor is an industrial-grade sensing device engineered for operational technology (OT) environments (e.g. SCADA, ICS). It measures physical variables—such as pressure, temperature, or flow—under demanding conditions, converting them into reliable signals for real-time monitoring and process control loops." ; - rdfs:seeAlso , - , - , - . - -:OTSetTimeCommand a owl:Class ; - rdfs:label "OT Set Time Command" ; - rdfs:subClassOf :OTTimeCommand ; - :definition "Set timing mechanisms." ; - rdfs:seeAlso , - , - . - -:OTSetTimeCommandEvent a owl:Class ; - rdfs:label "OT Set Time Command Event" ; - rdfs:subClassOf :OTTimeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTSetTimeCommand ] ; - :definition "Set timing mechanisms." . - -:OTStopCommand a owl:Class ; - rdfs:label "OT Stop Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Commands a device to stop a service/program." ; - rdfs:seeAlso , - , - . - -:OTStopCommandEvent a owl:Class ; - rdfs:label "OT Stop Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTStopCommand ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :OTRunCommandEvent ] ; - :definition "Commands a device to stop a service/program." . - -:OTSynchronizeTimeCommand a owl:Class ; - rdfs:label "OT Synchronize Time Command" ; - rdfs:subClassOf :OTTimeCommand ; - rdfs:comment "example" ; - :definition "Used to align timing mechanisms." ; - rdfs:seeAlso , - , - . - -:OTSynchronizeTimeCommandEvent a owl:Class ; - rdfs:label "OT Synchronize Time Command Event" ; - rdfs:subClassOf :OTTimeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTSynchronizeTimeCommand ] ; - :definition "Used to align timing mechanisms." . - -:OTTestCommand a owl:Class ; - rdfs:label "OT Test Command" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommand, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :OperatingMode ] ; - rdfs:comment """BACnet: deviceCommunicationControl -BACnet: reinitializeDevice """, - "GE-SRTP: SET PLC (RUN VS STOP)" ; - :definition "Commands a device to run a program in Test mode." ; - rdfs:seeAlso , - , - . - -:OTTestCommandEvent a owl:Class ; - rdfs:label "OT Test Command Event" ; - rdfs:subClassOf :OTModifyDeviceOperatingModeCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OperatingMode ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTTestCommand ] ; - :definition "Commands a device to run a program in Test mode." . - -:OTTimeCommand a owl:Class ; - rdfs:label "OT Time Command" ; - rdfs:subClassOf :OTDeviceManagementMessage ; - rdfs:comment """BACnet: timeSynchronization -BACnet: utcTimeSynchronization """, - """GE-SRTP: SET PLC TIME/DATE -GE-SRTP: RETURN PLC TIME/DATE""" ; - :definition "Read, set, or calculate timing mechanisms." ; - rdfs:seeAlso , - , - . - -:OTTimeCommandEvent a owl:Class ; - rdfs:label "OT Time Command Event" ; - rdfs:subClassOf :OTDeviceManagementMessageEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTTimeCommand ] ; - :definition "Read, set, or calculate timing mechanisms." . - -:OTTransportConfigurationCommand a owl:Class ; - rdfs:label "OT Transport Configuration Command" ; - rdfs:subClassOf :OTNetworkManagementCommand ; - rdfs:comment "Modbus: Encapsulated Interface Transport" ; - :definition "Configure transport settings for a communication channel." ; - rdfs:seeAlso , - , - . - -:OTTransportConfigurationCommandEvent a owl:Class ; - rdfs:label "OT Transport Configuration Command Event" ; - rdfs:subClassOf :OTNetworkManagementCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTTransportConfigurationCommand ] ; - :definition "Configure transport settings for a communication channel." . - -:OTVariableAccessRestriction a owl:Class, - owl:NamedIndividual ; - rdfs:label "OT Variable Access Restriction" ; - rdfs:subClassOf :AccessPolicyAdministration, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Isolate ], - [ a owl:Restriction ; - owl:onProperty :limits ; - owl:someValuesFrom :OTLogicVariable ], - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :OTWriteCommand ] ; - rdfs:isDefinedBy "Top 20 Secure Coding Practices, #10" ; - :d3fend-id "D3-OVAR" ; - :definition "Assign read/write access controls on designated registers or data tags to prevent unauthorized writes." ; - :kb-article """ ## How it works - -Many OT Controllers and OT Communication Modules enable Read-Only or Read/Write access on a per-tag basis. - -As an example, when configuring OT process tags which can be accessed using the Modbus protocol, configure the tag to a Modbus Input Register to leverage the protocol's registry ranges, restricting the ability of external sources to modify data. - -In Siemens, each data block (DB) tag can be configured as "data block write-protected in the device." -""" ; - :kb-reference :Reference-PLX3x-Series-Multi-Protocol-Gateways, - :Reference-S7-1200-Programmable-controller, - :Reference-SecurePLCCodingPracticesTop20List ; - :synonym "OT Variable Access Policy" . - -:OTWriteCommand a owl:Class ; - rdfs:label "OT Write Command" ; - rdfs:subClassOf :OTProcessDataCommand ; - rdfs:comment """BACnet: atomicWriteFile -BACnet: addListElement -BACnet: removeListElement -BACnet: createObject -BACnet: deleteObject -BACnet: writeProperty -BACnet: writePropertyMultiple -BACnet: write-group """, - """CIP: Set Attributes All -CIP: Set Attribute List -CIP: Set Attribute Single -CIP: Set Member -CIP: Insert Member -CIP: Remove Member """, - """GE-SRTP: WRITE SYSTEM MEMORY -GE-SRTP: WRITE TASK MEMORY """, - """Modbus: Write Single Coil -Modbus: Write Single Register -Modbus: Write Multiple Coils -Modbus: Write Multiple Registers -Modbus: Write File Record -Modbus: Mask Write Register -Modbus: Read Write Register""" ; - :definition "Write or store data." ; - rdfs:seeAlso , - , - . - -:OTWriteCommandEvent a owl:Class ; - rdfs:label "OT Write Command Event" ; - rdfs:subClassOf :OTProcessDataCommandEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OTWriteCommand ] ; - :definition "Write or store data." . - -:OutboundInternetDNSLookupTraffic a owl:Class ; - rdfs:label "Outbound Internet DNS Lookup Traffic" ; - rdfs:subClassOf :DNSNetworkTraffic, - :OutboundInternetNetworkTraffic, - :OutboundNetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :DNSLookup ] ; - :definition "Outbound internet DNS lookup traffic is network traffic using the DNS protocol on an outgoing connection initiated from a host within a network to a host outside the network." ; - rdfs:seeAlso . - -:OutboundInternetEncryptedRemoteTerminalTraffic a owl:Class ; - rdfs:label "Outbound Internet Encrypted Remote Terminal Traffic" ; - skos:altLabel "Outbound Internet Encrypted RDP Traffic", - "Outbound Internet Encrypted SSH Traffic" ; - rdfs:subClassOf :OutboundInternetEncryptedTraffic ; - :definition "Outbound internet encrypted remote terminal traffic is encrypted network traffic for a standard remote terminal protocol on an outgoing connection initiated from a host within a network to a host outside the network." . - -:OutboundInternetEncryptedTraffic a owl:Class ; - rdfs:label "Outbound Internet Encrypted Traffic" ; - rdfs:subClassOf :OutboundInternetNetworkTraffic ; - :definition "Outbound internet encrypted traffic is encrypted network traffic on an outgoing connection initiated from a host within a network to a host outside the network." ; - rdfs:seeAlso . - -:OutboundInternetEncryptedWebTraffic a owl:Class ; - rdfs:label "Outbound Internet Encrypted Web Traffic" ; - rdfs:subClassOf :OutboundInternetEncryptedTraffic, - :OutboundInternetWebTraffic ; - :definition "Outbound internet encrypted web traffic is network traffic using a standard web protocol on an outgoing connection initiated from a host within a network to a host outside the network." ; - rdfs:seeAlso . - -:OutboundInternetFileTransferTraffic a owl:Class ; - rdfs:label "Outbound Internet File Transfer Traffic" ; - rdfs:subClassOf :FileTransferNetworkTraffic, - :OutboundInternetNetworkTraffic, - :OutboundNetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :File ] ; - :definition "Outbound internet file transfer traffic is file transfer traffic that is: (a) on an outgoing connection initiated from a host within a network to a host outside the network, and (b) using a standard file transfer protocol." ; - rdfs:seeAlso , - . - -:OutboundInternetMailTraffic a owl:Class ; - rdfs:label "Outbound Internet Mail Traffic" ; - skos:altLabel "Outbound Internet Email Traffic" ; - rdfs:subClassOf :OutboundInternetNetworkTraffic ; - :definition "Outbound internet DNS lookup traffic is network traffic using a standard email protocol on an outgoing connection initiated from a host within a network to a host outside the network." ; - rdfs:seeAlso . - -:OutboundInternetNetworkTraffic a owl:Class ; - rdfs:label "Outbound Internet Network Traffic" ; - rdfs:subClassOf :InternetNetworkTraffic, - :OutboundNetworkTraffic ; - :definition "Outbound internet network traffic is network traffic on an outgoing connection initiated from a host within a network to a host outside the network." ; - rdfs:seeAlso . - -:OutboundInternetRPCTraffic a owl:Class ; - rdfs:label "Outbound Internet RPC Traffic" ; - rdfs:subClassOf :OutboundInternetNetworkTraffic, - :OutboundNetworkTraffic, - :RPCNetworkTraffic ; - :definition "Outbound internet RPC traffic is RPC traffic that is: (a) on an outgoing connection initiated from a host within a network to a host outside the network, and (b) using a standard RPC protocol." ; - rdfs:seeAlso , - . - -:OutboundInternetWebTraffic a owl:Class ; - rdfs:label "Outbound Internet Web Traffic" ; - rdfs:subClassOf :OutboundInternetNetworkTraffic, - :WebNetworkTraffic, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :URL ] ; - :definition "Outbound internet web traffic is network traffic that is: (a) on an outgoing connection initiated from a host within a network to a host outside the network, and (b) using a standard web protocol." ; - rdfs:seeAlso . - -:OutboundNetworkTraffic a owl:Class ; - rdfs:label "Outbound Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "Outbound traffic is network traffic originating from a host of interest (client), to another host (server)." . - -:OutboundTrafficFiltering a :OutboundTrafficFiltering, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Outbound Traffic Filtering" ; - rdfs:subClassOf :NetworkTrafficFiltering, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :OutboundNetworkTraffic ] ; - :d3fend-id "D3-OTF" ; - :definition "Restricting network traffic originating from a private host or enclave destined towards untrusted networks." ; - :kb-article """## How it works - -Outbound traffic, in this context, is network traffic originating from a private host or enclave destined towards untrusted networks. -For example: - -* An enterprise desktop intranet user connecting to www.example.com -* An internal mail server connecting to an external mail server, mail.example.com - -Filtering is commonly implemented as firewall rulesets to limit outbound traffic permitted to egress a host or network. Firewalls are deployed either directly on hosts through kernel level software implementations or installed in-line directly on network links. There are benefits and disadvantages to each approach. - -There are various strategies for developing filtering rulesets: - -* Block everything by default -* Limit destination hosts -* Limit destination transport or application protocols -* Restrict content outbound (Ex. strings formatted as social security numbers, or proprietary data) - -## Considerations -* Dynamic IP assignment creates challenges for Outbound Traffic Filtering because users are not necessarily associated with the same IP address. This can be addressed by linking IP address management information with the filtering logic. -* Connections using non-standard transport layer ports may circumvent outbound traffic filtering technology which does not detect application protocol based on traffic content. -* Business requirements typically drive the development of filtering rule sets. - -## Implementations -- iptables (Linux) -- Windows Firewall -- pf (BSD)""" ; - :kb-reference :Reference-AutomaticallyGeneratingRulesForConnectionSecurity_Microsoft . - -:OutputDevice a owl:Class ; - rdfs:label "Output Device" ; - rdfs:subClassOf :HardwareDevice ; - rdfs:isDefinedBy ; - :definition "An output device is any piece of computer hardware equipment which converts information into human-readable form. It can be text, graphics, tactile, audio, and video. Some of the output devices are Visual Display Units (VDU) i.e. a Monitor, Printer, Graphic Output devices, Plotters, Speakers etc. A new type of Output device is been developed these days, known as Speech synthesizer, a mechanism attached to the computer which produces verbal output sounding almost like human speeches." . - -:OutputDeviceEvent a owl:Class ; - rdfs:label "Output Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :OutputDevice ] ; - :definition "An event describing the activity or state of output devices, including sound cards, display adapters, or media controllers. These events relate to audio, video, or graphics functionality." . - -:OWL a owl:Class, - owl:NamedIndividual ; - rdfs:label "OWL" ; - rdfs:subClassOf :DescriptionLogic ; - :d3fend-id "D3A-OWL" ; - :definition "The Web Ontology Language (OWL) is a family of knowledge representation languages for authoring ontologies." ; - :kb-article """## How it works -Ontologies are a formal way to describe taxonomies and classification networks, essentially defining the structure of knowledge for various domains: the nouns representing classes of objects and the verbs representing relations between the objects. - -The OWL languages are characterized by formal semantics. They are built upon the World Wide Web Consortium's (W3C) standard for objects called the Resource Description Framework (RDF). OWL classes correspond to description logic (DL) _concepts_. OWL properties to DL _roles_, and individuals are named the same way in OWL and other DLs. - -## References -1. Web Ontology Language. (2023, April 23). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Web_Ontology_Language)""" ; - :synonym "Web Ontology Language" . - -:PackageURL a owl:Class, - owl:NamedIndividual ; - rdfs:label "Package URL" ; - skos:altLabel "purl" ; - rdfs:subClassOf :URL, - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :SoftwarePackage ] ; - rdfs:isDefinedBy ; - :definition "A package URL, or purl, is a URL used to identify a software package in a mostly universal and uniform way across programming languages, package managers, packaging conventions, tools, APIs and databases." ; - rdfs:seeAlso . - -:PacketCaptureFile a owl:Class ; - rdfs:label "Packet Capture File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :NetworkPacket ] ; - :definition "A file which contains raw representations of collected packets." . - -:PacketLog a owl:Class ; - rdfs:label "Packet Log" ; - rdfs:subClassOf :Log, - [ a owl:Restriction ; - owl:onProperty :records ; - owl:someValuesFrom :NetworkSession ], - [ a owl:Restriction ; - owl:onProperty :summarizes ; - owl:someValuesFrom :PacketCaptureFile ] ; - :definition "A log of all the network packet data captured from a network by a network sensor (i.e., packet analyzer)," ; - rdfs:seeAlso . - -:Page a owl:Class ; - rdfs:label "Page" ; - rdfs:subClassOf :MemoryBlock ; - rdfs:isDefinedBy ; - :definition "A page, memory page, logical page, or virtual page is a fixed-length contiguous block of virtual memory, described by a single entry in the page table. It is the smallest unit of data for memory management in a virtual memory operating system." . - -:PageFrame a owl:Class ; - rdfs:label "Page Frame" ; - rdfs:subClassOf :MemoryBlock, - [ a owl:Restriction ; - owl:onProperty :contained-by ; - owl:someValuesFrom :PrimaryStorage ] ; - rdfs:isDefinedBy ; - :definition "A page frame is the smallest fixed-length contiguous block of physical memory into which memory pages are mapped by the operating system." . - -:PageTable a owl:Class ; - rdfs:label "Page Table" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :PhysicalAddress ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :VirtualAddress ] ; - rdfs:isDefinedBy ; - :definition "A page table is the data structure used by the MMU in a virtual memory computer system to store the mapping between virtual addresses (virtual pages) and physical addresses (page frames)." . - -:Parameter-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Parameter-based Transfer Learning" ; - rdfs:subClassOf :HomogenousTransferLearning ; - :d3fend-id "D3A-PBTL" ; - :definition "The idea behind parameter-based methods is that a well-trained model on the source domain has learned a well-defined structure, and if two tasks are related, this structure can be transferred to the target model." ; - :kb-article """## References -Georgian Impact Blog. (n.d.). Transfer Learning Part 1. [Link](https://medium.com/georgian-impact-blog/transfer-learning-part-1-ed0c174ad6e7#:~:text=Homogeneous%20Transfer%20Learning-,1.,the%20target%20domain%20for%20training).""" . - -:ParametricTests a owl:Class, - owl:NamedIndividual ; - rdfs:label "Parametric Tests" ; - rdfs:subClassOf :HypothesisTesting ; - :d3fend-id "D3A-PT" ; - :definition "A parametric test relies upon the assumption that the data you want to test is (or approximately is) normally distributed." ; - :kb-article """## References -Newcastle University. (n.d.). Parametric Hypothesis Tests. [Link](https://www.ncl.ac.uk/webtemplate/ask-assets/external/maths-resources/psychology/parametric-hypothesis-tests.html)""" . - -:ParentProcess a owl:Class ; - rdfs:label "Parent Process" ; - rdfs:subClassOf :Process ; - rdfs:isDefinedBy ; - :definition "In computing, a parent process is a process that has created one or more child processes." ; - rdfs:seeAlso . - -:PartialMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Partial Matching" ; - rdfs:subClassOf :StringPatternMatching ; - :d3fend-id "D3A-PM" ; - :definition "Partial string pattern matching is a special case of string pattern matching where one seeks to find a pattern within a larger string (text). It allows for the detection of patterns that occur as substrings or partial segments within the full string, rather than requiring an exact match across the entire string." ; - :kb-article """## References -1. String-searching algorithm. (2023, April 8). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/String-searching_algorithm)""", - "Numeric pattern matching is a method of matching some defined pattern specification against a numeric value." . - -:Partition a owl:Class ; - rdfs:label "Partition" ; - skos:altLabel "Disk Partition", - "Disk Slice" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A partition is a region on secondary storage device created so that the region can be managed by itself; separate from any other regions (partitions) on that secondary storage device. Creating partitions is typically the first step of preparing a newly installed storage device, before any file system is created. The device stores the information about the partitions' locations and sizes in an area known as the partition table that the operating system reads before any other part of the disk. Each partition then appears to the operating system as a distinct \"logical\" storage device that uses part of the actual device. System administrators use a program called a partition editor to create, resize, delete, and manipulate the partitions. Partitioning allows the use of different filesystems to be installed for different kinds of files. Separating user data from system data can prevent the system partition from becoming full and rendering the system unusable. Partitioning can also make backing up easier. [Definition adapted as generalization from definition of disk partitioning and distinct from in-memory partitions.]" ; - rdfs:seeAlso , - . - -:PartitionTable a owl:Class ; - rdfs:label "Partition Table" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :addresses ; - owl:someValuesFrom :Partition ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :BootRecord ] ; - rdfs:isDefinedBy ; - :definition "A partition is a fixed-size subset of a storage device which is treated as a unit by the operating system. A partition table is a table maintained on the storage device by the operating system describing the partitions on that device. The terms partition table and partition map are most commonly associated with the MBR partition table of a Master Boot Record (MBR) in IBM PC compatibles, but it may be used generically to refer to other \"formats\" that divide a disk drive into partitions, such as: GUID Partition Table (GPT), Apple partition map (APM), or BSD disklabel." . - -:PassiveCertificateAnalysis a owl:Class, - owl:NamedIndividual, - :PassiveCertificateAnalysis ; - rdfs:label "Passive Certificate Analysis" ; - rdfs:subClassOf :CertificateAnalysis ; - :d3fend-id "D3-PCA" ; - :definition "Collecting host certificates from network traffic or other passive sources like a certificate transparency log and analyzing them for unauthorized activity." ; - :kb-article """## How it works -Certificates are analyzed outside of a TLS server connection using third-party secure update logs, domain name analysis and analytics. - -### Secure update certificate logs -* Certificate Logs -The key enabling feature is a secure service that maintains record logs of certificate activities. The logs allow users to only append certificates and never to delete or modify the log entries. The logs use Merkle Tree Hashes to ensure they have not been tampered with. The logging service also allows for public auditing by any user. - -The logging service, upon receipt of a certificate to log, will respond with a signed certificate timestamp (SCT). The SCT guarantees the certificate will be added to the log within the time specified. The SCT must be present with the certificate during a TLS handshake. - -* Certificate Monitoring -Certificate monitoring, of the logs, is typically done by the CA and they watch for suspicious certificate logging and unusual certificates or extensions or permissions. Monitors are also responsible for verifying the logs are accurate and public. - -* Certificate Auditors -Log integrity is verified by log auditors. Auditors make use of log proofs are used to validate the cryptographic hashes (Merkle Trees) that the log employs are consistent. In order to ensure consistency throughout multiple monitors and auditors, sharing a common logging service, gossip protocol is employed. - -### Phishing domain name analysis -* A curated corpus of known benign domains and phishing domain names is used as training text for machine learning. Through the use of feature set extraction, vectors labels are created with scoring to indicated if they are considered benign or phishing domains. - -* A stream of new or updated SSL certificates with fully qualified domain names (FQDN) is analyzed against the feature vectors and a predictive model determines a score for the domains. The scoring considers distance measures such as Levenshtein distance to help in determining the final label score. Supervised learning is also employed using the curated domains of benign and phishing domains. - -* Subdomain phishing analysis, prepending a trusted domain to a phishing domain, and regular expression comparisons are also used in the label scoring model. A tunable measure is used to determine the threshold for alerting. This measure helps to balance between precision and recall measures. - -## Considerations -* Some entity will need to run the logging service and a trusted entity is preferred. -* Certificate Authorities will likely need to monitor the logging service for consistency. -* Certificate revocation is unchanged and remains outside of Certificate Transparency, but certificates needing to be revoked are visible. -* Technique dependent of reliable feed of new and updated certificates -* Some certificate authorities allow for certificates to be registered with wildcards in the FQDN and thus will fail some of the subdomain scoring -* Phishing HTTP domains will not be discovered""" ; - :kb-reference :Reference-CertificateTransparency, - :Reference-StreamingPhish . - -:PassiveLogicalLinkMapping a owl:Class, - owl:NamedIndividual, - :PassiveLogicalLinkMapping ; - rdfs:label "Passive Logical Link Mapping" ; - rdfs:subClassOf :LogicalLinkMapping ; - :d3fend-id "D3-PLLM" ; - :definition "Passive logical link mapping only listens to network traffic as a means to map the the whole data link layer, where the links represent logical data flows rather than physical connections." ; - :kb-reference :Reference-TenablePassiveNetworkMonitoring ; - :synonym "Passive Logical Layer Mapping" . - -:Password a owl:Class ; - rdfs:label "Password" ; - skos:altLabel "Passcode" ; - rdfs:subClassOf :Credential ; - rdfs:isDefinedBy ; - :definition "A password, sometimes called a passcode, is a memorized secret, typically a string of characters, usually used to confirm the identity of a user. Using the terminology of the NIST Digital Identity Guidelines, the secret is memorized by a party called the claimant while the party verifying the identity of the claimant is called the verifier. When the claimant successfully demonstrates knowledge of the password to the verifier through an established authentication protocol, the verifier is able to infer the claimant's identity." . - -:PasswordAuthentication a owl:Class, - owl:NamedIndividual, - :PasswordAuthentication ; - rdfs:label "Password Authentication" ; - rdfs:subClassOf :AgentAuthentication, - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :Password ] ; - :d3fend-id "D3-PWA" ; - :definition "Password authentication is a security mechanism used to verify the identity of a user or entity attempting to access a system or resource by requiring the input of a secret string of characters, known as a password, that is associated with the user or entity." ; - :kb-reference :Reference-NIST-Special-Publication-800-53-Revision-5 . - -:PasswordDatabase a owl:Class ; - rdfs:label "Password Database" ; - rdfs:subClassOf :Database ; - :definition "A password database is a database that holds passwords for user accounts and is usually encrypted (i.e.., the passwords are hashed). Password databases are found supporting system services (such as SAM) or part of user applications such as password managers." . - -:PasswordFile a owl:Class ; - rdfs:label "Password File" ; - rdfs:subClassOf :File, - :PasswordDatabase ; - :definition "Simple form of password database held in a single file (e.g., /etc/password)" . - -:PasswordManager a owl:Class ; - rdfs:label "Password Manager" ; - rdfs:subClassOf :Application, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Credential ] ; - rdfs:isDefinedBy ; - :definition "A password manager is a software application or hardware that helps a user store and organize passwords. Password managers usually store passwords encrypted, requiring the user to create a master password: a single, ideally very strong password which grants the user access to their entire password database. Some password managers store passwords on the user's computer (called offline password managers), whereas others store data in the provider's cloud (often called online password managers). However offline password managers also offer data storage in the user's own cloud accounts rather than the provider's cloud. While the core functionality of a password manager is to securely store large collections of passwords, many provide additional features such as form filling and password generation." . - -:PasswordRotation a owl:Class, - owl:NamedIndividual, - :PasswordRotation ; - rdfs:label "Password Rotation" ; - rdfs:subClassOf :CredentialRotation, - [ a owl:Restriction ; - owl:onProperty :regenerates ; - owl:someValuesFrom :Password ] ; - :d3fend-id "D3-PR" ; - :definition "Password rotation is a security policy that mandates the periodic change of user account passwords to mitigate the risk of unauthorized access due to compromised credentials." ; - :kb-article """## How it works - -Users may be requested to change their passwords on a regular schedule. Management servers with enterprise policies for account management provide the ability to change or reset passwords for accounts. - -## Considerations - -Requiring users to change their passwords frequently can result in insecure password practices by the user. The latest update of NIST SP 800-63B, Digital Identity Guidelines, recommends requiring password reset only when a known compromise has occurred, or every 365 days, rather than every 60 or 90 days.""" ; - :kb-reference :Reference-PasswordandKeyRotation-SSH ; - rdfs:seeAlso , - . - -:PasswordStore a owl:Class ; - rdfs:label "Password Store" ; - rdfs:subClassOf :PasswordDatabase ; - :definition "A user repository of account passwords, often accessed via a password manager." ; - rdfs:seeAlso . - -:PatentReference a owl:Class ; - rdfs:label "Patent Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Patent" . - -:PatternMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Pattern Matching" ; - rdfs:subClassOf :LogicalRules ; - :d3fend-id "D3A-PM" ; - :definition "Pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern." ; - :kb-article """## References -1. Pattern matching. (2023, May 20). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Pattern_matching)""" . - -:PearsonsCorrelationCoefficient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Pearson's Correlation Coefficient" ; - rdfs:subClassOf :Correlation ; - :comment "Pearson correlation coefficient (PCC), Pearson's r, the Perason product-moment correlation coefficient (PPMCC), or the bivariate correlation, is a quantity that gives the quality of a least squares fitting to the original data." ; - :d3fend-id "D3A-PCC" ; - :kb-article """## References -Wolfram MathWorld. (n.d.). Correlation Coefficient. [Link](https://mathworld.wolfram.com/CorrelationCoefficient.html)""" . - -:PerHostDownload-UploadRatioAnalysis a owl:Class, - owl:NamedIndividual, - :PerHostDownload-UploadRatioAnalysis ; - rdfs:label "Per Host Download-Upload Ratio Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id "D3-PHDURA" ; - :definition "Detecting anomalies that indicate malicious activity by comparing the amount of data downloaded versus data uploaded by a host." ; - :kb-article """## How it works -Aggregate pull vs. push ratios from metadata are used to develop a baseline for a given host over a specific time period, e.g., over a three-hour period, one day, one week, etc. Anomalies identified over a threshold produce an alert. - -## Considerations -Collection and analysis of large network packet captures requires large storage and intensive computing power. The time windows used to calculate the ratio may vary in implementations, this consideration should take into account a threat model and likely effects (impacts) delivered by an adversary.""" ; - :kb-reference :Reference-SystemForDetectingThreatsUsingScenario-basedTrackingOfInternalAndExternalNetworkTraffic_VECTRANETWORKSInc . - -:PeripheralDeviceEvent a owl:Class ; - rdfs:label "Peripheral Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :RemovableMediaDevice ] ; - :definition "An event involving external or auxiliary devices, such as USB drives, Thunderbolt peripherals, or Bluetooth devices. Peripheral events provide visibility into resource availability and potential unauthorized access." . - -:PeripheralFirmware a owl:Class ; - rdfs:label "Peripheral Firmware" ; - rdfs:subClassOf :Firmware ; - :definition "Firmware that is installed on computer peripheral devices." ; - rdfs:seeAlso :Firmware, - . - -:PeripheralFirmwareVerification a owl:Class, - owl:NamedIndividual, - :PeripheralFirmwareVerification ; - rdfs:label "Peripheral Firmware Verification" ; - rdfs:subClassOf :FirmwareVerification, - [ a owl:Restriction ; - owl:onProperty :verifies ; - owl:someValuesFrom :PeripheralFirmware ] ; - :d3fend-id "D3-PFV" ; - :definition "Cryptographically verifying peripheral firmware integrity." ; - :kb-article """# How it works -Peripherial firmware is collected and analyzed on a host either periodically or on demand. This information may be collected for future comparisons. - -Changes in firmware hash values may indicate that the firmware has been tampered with or that firmware images are not maintained to current baselined versions, or even known vulnerable versions are deployed. - -## Considerations -* Trust baselines will need to be generated for specific devices -* Changes to trusted configurations will need to be managed across the enterprise""" ; - :kb-reference :Reference-FirmwareVerificationEclypsium, - :Reference-FirmwareVerificationTrapezoid . - -:PeripheralHubFirmware a owl:Class ; - rdfs:label "Peripheral Hub Firmware" ; - skos:altLabel "USB Hub Firmware" ; - rdfs:subClassOf :PeripheralFirmware ; - :definition "Firmware that is installed on peripheral hub device such as a USB or Firewire hub." ; - rdfs:seeAlso . - -:PermissionGrantingEvent a owl:Class ; - rdfs:label "Permission Granting Event" ; - rdfs:subClassOf :AccessControlAdministrationEvent ; - :definition "An administrative event where authorization is given, allowing a subject to perform specific operations on a protected resource, effectuating a policy decision to allow access rights." . - -:PermissionRevokingEvent a owl:Class ; - rdfs:label "Permission Revoking Event" ; - rdfs:subClassOf :AccessControlAdministrationEvent ; - :definition "An administrative event entailing the withdrawal of previously granted access rights, reconfiguring permissions to prevent a subject from performing specific actions on a resource, in accordance with updated access policies." . - -:PersistenceTechnique a owl:Class ; - rdfs:label "Persistence Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0003 ] ; - :definition "The adversary is trying to maintain their foothold." . - -:Person a owl:Class ; - rdfs:label "Person" ; - rdfs:subClassOf :Agent, - [ a owl:Restriction ; - owl:onProperty :name ; - owl:someValuesFrom xsd:string ] ; - :definition "A person is a human being." . - -:PersonalComputer a owl:Class ; - rdfs:label "Personal Computer" ; - rdfs:subClassOf :ClientComputer ; - rdfs:isDefinedBy ; - :definition "A personal computer (PC) is a multi-purpose computer whose size, capabilities, and price make it feasible for individual use. Personal computers are intended to be operated directly by an end user, rather than by a computer expert or technician. Unlike large, costly minicomputers and mainframes, time-sharing by many people at the same time is not used with personal computers. PCs have in practice become powerful enough that they may be shared by multiple users at any given time, though this is not common practice nor the primary purpose of a PC." . - -:Perturbation-basedLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Perturbation-based Learning" ; - rdfs:subClassOf :IntrinsicallySemi-supervisedLearning ; - :d3fend-id "D3A-PBL" ; - :definition "Perturbation based methods are proposed under the smoothness assumption, which indicates that two data points close to each other in feature space are likely to have the same label." ; - :kb-article """## References -Zheng, Y., & Song, Y. (2021). An Effective Perturbation-Based Semi-Supervised Learning Method for Acoustic Event Classification. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 29, 3580-3591. [Link](https://www.semanticscholar.org/paper/An-Effective-Perturbation-Based-Semi-Supervised-for-Zheng-Song/b75ae37d137ac354eb2ed42917e461b4dccdc977). - -Engelen, S., & Hoos, H. (2020). A survey on semi-supervised learning. Machine Learning, 109(2), 299-337. [Link](https://link.springer.com/article/10.1007/s10994-019-05855-6).""" . - -:PhiCoefficient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Phi Coefficient" ; - rdfs:subClassOf :Correlation ; - :d3fend-id "D3A-PC" ; - :definition "The phi coefficient (or mean square contingency coefficient is a measure of association for two binary variables." ; - :kb-article """## References -\\Wikipedia. (n.d.). Phi coefficient. [Link](https://en.wikipedia.org/wiki/Phi_coefficient)""" ; - :synonym "Matthews Correlation Coefficient (in machine learning)", - "MCC" . - -:PhysicalAccessAlarmEvent a owl:Class ; - rdfs:label "Physical Access Alarm Event" ; - rdfs:subClassOf :DigitalEvent ; - rdfs:comment "An event occuring when a physical threshold is crossed." . - -:PhysicalAccessMediation a owl:Class, - owl:NamedIndividual, - :PhysicalAccessMediation ; - rdfs:label "Physical Access Mediation" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :PhysicalArtifact ] ; - :d3fend-id "D3-PAM" ; - :definition "Physical access mediation is the process of granting or denying specific requests to enter specific physical facilities (e.g., Federal buildings, military establishments, border crossing entrances.)" ; - :kb-reference :Reference-CNNSI-4009 ; - :synonym "Physical Access Control" . - -:PhysicalAccessMonitoring a owl:Class, - owl:NamedIndividual, - :PhysicalAccessMonitoring ; - rdfs:label "Physical Access Monitoring" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-PHAM" ; - :definition "Monitoring the physical access of a specified environment through detection, recording, reviewing, and logging of who/what enters and exists areas." ; - :kb-reference :Reference-NIST-SP-800-53-R5 . - -:PhysicalAddress a owl:Class ; - rdfs:label "Physical Address" ; - rdfs:subClassOf :MemoryAddress ; - rdfs:isDefinedBy ; - :definition "In a computer supporting virtual memory, the term physical address is used mostly to differentiate from a virtual address. In particular, in computers utilizing a memory management unit(MMU) to translate memory addresses, the virtual and physical addresses refer to an address before and after translation performed by the MMU, respectively." . - -:PhysicalArtifact a owl:Class ; - rdfs:label "Physical Artifact" ; - skos:altLabel "Physical Object" ; - rdfs:subClassOf :Artifact, - [ a owl:Restriction ; - owl:onProperty :has-location ; - owl:someValuesFrom :PhysicalLocation ] . - -:PhysicalAttacker a owl:Class ; - rdfs:label "Physical Attacker" ; - rdfs:subClassOf :LocalAttacker, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :ComputerPlatform ], - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :HardwareDevice ] ; - :definition "An attacker who is physically close enough to interact with the system directly, such as through physical access to devices." . - -:PhysicalDataDiode a owl:Class ; - rdfs:label "Physical Data Diode" ; - rdfs:subClassOf :HardwareDevice ; - rdfs:isDefinedBy ; - :definition "A device that physically enforces one-way (unidirectional) network communication." ; - skos:example . - -:PhysicalEnclosureHardening a owl:Class, - owl:NamedIndividual, - :PhysicalEnclosureHardening ; - rdfs:label "Physical Enclosure Hardening" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :ComputerEnclosure ] ; - :d3fend-id "D3-PEH" ; - :definition "Physical changes to a computer enclosure which reduce the ability for agents or the environment to affect the contained computer system." ; - :kb-article """## How it works - -System designers or operators make physical changes to a computer enclosure which reduce the ability for agents or the environment to affect the contained computer system. These additions to the enclosure may be of various materials to reduce the effects of heat, gases, vibration, or agent access. - -## Considerations - -* Use asset inventory tools to track physical equipment and monitor both people and devices for access control. -* Consider relevant regulations to ensure enclosures are in compliance. - -* Properly hardened enclosures should be installed and maintained to ensure they are operable and free of tampering. Access to these enclosures is controlled through physical barriers, such as locks and bolts, and may include tamper-evident hardware. - -* Records should be maintained concerning maintenance performed, access, and any possible tampering marks or associated incidents.""" ; - :kb-reference :Reference-GeneralUseOfLocksInTheProtectionAndControlOfFacilitiesRadioActiveMaterialsClassifiedInformationClassifiedMatterAndSafeguardsInformation, - :Reference-GuideToOTSecurity . - -:PhysicalKey a owl:Class ; - rdfs:label "Physical Key" ; - rdfs:subClassOf :PhysicalArtifact, - [ a owl:Restriction ; - owl:onProperty :operates ; - owl:someValuesFrom :PhysicalKeyLock ] ; - :definition "A physical key is used to operate a lock, typically metal, designed with specific markers that match the internal mechanism of a lock, allowing it to rotate the lock when inserted." . - -:PhysicalKeyLock a owl:Class ; - rdfs:label "Physical Key Lock" ; - rdfs:subClassOf :PhysicalLock, - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :PhysicalKey ] ; - rdfs:isDefinedBy "NRC Regulatory Guide 5.12 Rev1" ; - :definition "A mechanical locking device for securing moveable portions of physical barriers (e.g., doors, gates, drawers) in a secured position." ; - :synonym "keyed lock" . - -:PhysicalLink a owl:Class ; - rdfs:label "Physical Link" ; - rdfs:subClassOf :Link, - [ a owl:Restriction ; - owl:onProperty :carries ; - owl:someValuesFrom :Signal ] ; - :definition """A physical link is a dedicated connection for communication that uses some physical media (electrical, electromagnetic, optical, to include clear spaces or vacuums.) A physical link represents only a single hop (link) in any larger communcations path, circuit, or network. - -NOTE: not synonymous with data link as a data link can be over a telecommunications circuit, which may be a virtual circuit composed of multiple phyical links.""" ; - rdfs:seeAlso ; - :synonym "Layer-1 Link" . - -:PhysicalLinkConnectEvent a owl:Class ; - rdfs:label "Physical Link Connect Event" ; - rdfs:subClassOf :PhysicalLinkEvent, - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :PhysicalLinkUpEvent ] ; - :definition "The medium is attached or the port is enabled, establishing electrical or optical continuity so that link negotiation can begin." . - -:PhysicalLinkDisableEvent a owl:Class ; - rdfs:label "Physical Link Disable Event" ; - rdfs:subClassOf :PhysicalLinkEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :PhysicalLinkUpEvent ] ; - :definition "An administrator issues a shutdown or disable command, forcing the link out of service regardless of signal status." . - -:PhysicalLinkDisconnectEvent a owl:Class ; - rdfs:label "Physical Link Disconnect Event" ; - rdfs:subClassOf :PhysicalLinkEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :PhysicalLinkDownEvent ] ; - :definition "The transmission medium is removed or power is cut, physically breaking the path between the two interfaces." . - -:PhysicalLinkDownEvent a owl:Class ; - rdfs:label "Physical Link Down Event" ; - rdfs:subClassOf :PhysicalLinkEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :PhysicalLinkUpEvent ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :PhysicalLinkDisconnectEvent ] ; - :definition "Carrier or negotiation is lost, or the port is shut, rendering the link non-operational while the medium remains connected." . - -:PhysicalLinkErrorDisableEvent a owl:Class ; - rdfs:label "Physical Link Error Disable Event" ; - rdfs:subClassOf :PhysicalLinkEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :PhysicalLinkDownEvent ] ; - :definition "The device automatically disables the link in response to fault conditions such as excessive faults or signal degradation." . - -:PhysicalLinkEvent a owl:Class ; - rdfs:label "Physical Link Event" ; - rdfs:subClassOf :NetworkDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :PhysicalLink ] ; - :definition "A discrete event that changes either the presence of the transmission medium or the operational state of a single-hop layer-1 link between two network nodes." . - -:PhysicalLinkMapping a owl:Class, - owl:NamedIndividual, - :PhysicalLinkMapping ; - rdfs:label "Physical Link Mapping" ; - rdfs:subClassOf :NetworkMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :NetworkNode ], - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :PhysicalLink ] ; - :d3fend-id "D3-PLM" ; - :definition "Physical link mapping identifies and models the link connectivity of the network devices within a physical network." ; - :kb-reference :Reference-LibreNMSDocsNetworkMapExtension ; - rdfs:seeAlso ; - :synonym "Layer 1 Mapping" . - -:PhysicalLinkUpEvent a owl:Class ; - rdfs:label "Physical Link Up Event" ; - rdfs:subClassOf :PhysicalLinkEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :PhysicalLinkConnectEvent ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :PhysicalLinkDownEvent ] ; - :definition "Auto-negotiation and signal detection complete; carrier is present and the link can forward frames." . - -:PhysicalLocation a owl:Class ; - rdfs:label "Physical Location" ; - rdfs:subClassOf :D3FENDCore ; - rdfs:isDefinedBy ; - :definition "The terms location [here, a physical location] and place in geography are used to identify a point or an area on the Earth's surface or elsewhere. The term location generally implies a higher degree of certainty than place, which often indicates an entity with an ambiguous boundary, relying more on human or social attributes of place identity and sense of place than on geometry. The distinction between space and place is considered a central concern of geography, and has been addressed by scholars such as Yi-Fu Tuan and John Agnew." ; - rdfs:seeAlso . - -:PhysicalLock a owl:Class ; - rdfs:label "Physical Lock" ; - rdfs:subClassOf :PhysicalArtifact ; - :definition "A lock is a mechanical latching device for securing moveable portions of physical barriers in a secured position." ; - rdfs:seeAlso . - -:PhysicalLocking a owl:Class, - owl:NamedIndividual, - :PhysicalLocking ; - rdfs:label "Physical Locking" ; - rdfs:subClassOf :PhysicalAccessMediation, - [ a owl:Restriction ; - owl:onProperty :mediates-access-to ; - owl:someValuesFrom :ComputerEnclosure ] ; - :d3fend-id "D3-EPL" ; - :definition "Employ a mechanical locking device for securing moveable portions of physical barriers (e.g., doors, gates, drawers) in a secured position." ; - :kb-article """## How it works - -A physical mechanism which has a associated credential which when entered enables the lock bolt to operate, i.e. open or close. - -## Considerations - -* Consider that locks for specified materials should adhere to relevant regulations. - -* Lock equipment cabinets when not needed for operation or safety; set OT asset keys of devices (e.g., PLCs and safety systems) to the “RUN” position unless otherwise specified. - -* Locks and all associated hardware should be properly installed, operable, and free of substantive indications of tampering. - -* Records should be maintained concerning maintenance performed, access, and any possible tampering marks or associated incidents. - -* For locks operated by a physical key, a key management system should be implemented to manage and secure physical keys. - -* Key locks should provide a high degree of resistance to opening by force and tampering techniques.""" ; - :kb-reference :Reference-GeneralUseOfLocksInTheProtectionAndControlOfFacilitiesRadioActiveMaterialsClassifiedInformationClassifiedMatterAndSafeguardsInformation, - :Reference-GuideToOTSecurity . - -:Pipe a owl:Class ; - rdfs:label "Pipe" ; - skos:altLabel "Pipeline" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In Unix-like computer operating systems, a pipeline is a mechanism for inter-process communication using message passing. In the strictest sense, a pipe is a single segment of a pipeline, allowing one process to pass information forward to another. Network pipes allow processes on different hosts to interact." ; - rdfs:seeAlso . - -:Pix2Pix a owl:Class, - owl:NamedIndividual ; - rdfs:label "Pix2Pix" ; - rdfs:subClassOf :Image-to-ImageTranslationGAN ; - :d3fend-id "D3A-PIX" ; - :definition "Pix2Pix is based on condtional GAN architecture and are trained on paired set of images or scenes from two domains to be used for translation." ; - :kb-article """## References -Esri. (n.d.). How Pix2Pix Works. [Link](https://developers.arcgis.com/python/guide/how-pix2pix-works/)""" . - -:Plan a owl:Class ; - rdfs:label "Plan" ; - rdfs:subClassOf :D3FENDCore . - -:Planning a owl:Class ; - rdfs:label "Planning" ; - rdfs:subClassOf :AnalyticalPurpose . - -:PlatformHardening a owl:Class, - owl:NamedIndividual, - :PlatformHardening ; - rdfs:label "Platform Hardening" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Harden ] ; - :d3fend-id "D3-PH" ; - :definition """Hardening components of a Platform with the intention of making them more difficult to exploit. - -Platforms includes components such as: -* BIOS UEFI Subsystems -* Hardware security devices such as Trusted Platform Modules -* Boot process logic or code -* Kernel software components""" ; - :enables :Harden ; - :synonym "Endpoint Hardening", - "System Hardening" . - -:PlatformMonitoring a owl:Class, - owl:NamedIndividual, - :PlatformMonitoring ; - rdfs:label "Platform Monitoring" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-PM" ; - :definition "Monitoring platform components such as operating systems software, hardware devices, or firmware." ; - :kb-article """Platform monitoring consists of the analysis and monitoring of system level devices and low-level components, including hardware devices, to detect unauthorized modifications or suspicious activity. - -Monitored platform components includes system files and embedded devices such as: - - * Kernel software modules - * Boot process code and load logic - * Operating system components and device files - * System libraries and dynamically loaded files - * Hardware device drivers - * Embedded firmware devices""" . - -:PlatformUptime a owl:Class ; - rdfs:label "Platform Uptime" ; - rdfs:subClassOf :SystemPlatformVariable ; - rdfs:comment "In OT controllers this may not be a default tag rather something that should be defined using other system tags." ; - :definition "A variable that notes the amount of time a platform has been running since its last power cycle or reset." . - -:PlatformUptimeMonitoring a owl:Class, - owl:NamedIndividual, - :PlatformUptimeMonitoring ; - rdfs:label "Platform Uptime Monitoring" ; - rdfs:subClassOf :PlatformMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :PlatformUptime ] ; - :d3fend-id "D3-PUM" ; - :definition "Monitor the amount of time since the last power cycle or restart." ; - :kb-article """## How it works -Monitoring the time since the last power cycle or restart alerts operators to unexpected restarts and their frequency. This can indicate potential issues or malicious activity, and provides valuable information for forensic investigations. - -## Considerations -The source of the variable may be mutable depending on the platform, and the provenance of the value.""" ; - :kb-reference :Reference-SecurePLCCodingPracticesTop20List . - -:Point-biserialCorrelationCoefficient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Point-biserial Correlation Coefficient" ; - rdfs:subClassOf :Correlation ; - :d3fend-id "D3A-PBCC" ; - :definition "The point biserial correlation coefficient (rpb) is a correlation coefficient used when one variable (e.g. Y) is dichotomous; Y can either be \"naturally\" dichotomous, like whether a coin lands heads or tails, or an artificially dichotomized variable." ; - :kb-article """## References -Wikipedia. (n.d.). Point-biserial correlation coefficient. [Link](https://en.wikipedia.org/wiki/Point-biserial_correlation_coefficient)""" . - -:Pointer a owl:Class ; - rdfs:label "Pointer" ; - rdfs:subClassOf :DigitalInformation ; - rdfs:isDefinedBy ; - :definition "In computer science, a pointer is a programming language object, whose value refers to (or \"points to\") another value stored elsewhere in the computer memory using its memory address. A pointer references a location in memory, and obtaining the value stored at that location is known as dereferencing the pointer. As an analogy, a page number in a book's index could be considered a pointer to the corresponding page; dereferencing such a pointer would be done by flipping to the page with the given page number." . - -:PointerAuthentication a owl:Class, - owl:NamedIndividual, - :PointerAuthentication ; - rdfs:label "Pointer Authentication" ; - rdfs:subClassOf :ApplicationHardening, - [ a owl:Restriction ; - owl:onProperty :authenticates ; - owl:someValuesFrom :Pointer ] ; - :d3fend-id "D3-PAN" ; - :definition "Comparing the cryptographic hash or derivative of a pointer's value to an expected value." ; - :kb-article """## How It Works - -Pointer Authentication (frequently referred to as PAC, although the technique is properly Pointer Authentication) is a security feature to provide protection against attackers with memory read/write access. A Pointer Authentication Code (PAC) is a cryptographic hash or derivative computed on the value of a pointer and some additional context information which can then provide a cryptographically strong guarantee about the likelihood that a pointer has been tampered with by an attacker. - -Although pointers are 64 bits, most systems have a substantially smaller virtual address space, leaving unused bits in pointers that can store the value of the PAC, this can be done to reduce memory space requirements. One implementation is in ARMv8.3-A. A PAC is computed over the 64-bit pointer value and a 64-bit context value. Instructions are introduced to deal with pointers: one category to compute and insert the PAC into a pointer, another category to verify the pointer and invalidate the pointer if the PAC does not check, and a third category to remove the pointer and restore the original value without verifying. - -The ARM standard specifies a cryptographic algorithm called QARMA-64 (designed by Qualcomm) to compute the signature, although this algorithm is not required. The architecture provides for five secret 128-bit Pointer Authentication keys: two for instruction pointers, two for data pointers, and a general key for signing larger blocks of data. - -## Considerations - -In the ARM implementation, the mechanisms above for manipulating PACS are provided, but it is up to the code developer to manage the keys for the cryptographic algorithm. - - -A known potential limitation of PACs concerns signing gadgets. Under certain circumstances PACs can be bypassed by forcing the system to run a signing gadget which will allow the signing of arbitrary pointers to occur.""" ; - :kb-reference :Reference-PointerAuthenticationOnARMv8.3, - :Reference-PointerAuthenticationProjectZero . - -:PointerDereferencingFunction a owl:Class ; - rdfs:label "Pointer Dereferencing Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :addresses ; - owl:someValuesFrom :MemoryBlock ], - [ a owl:Restriction ; - owl:onProperty :addresses ; - owl:someValuesFrom :Pointer ] ; - rdfs:comment "Note, this is not the actual code which performs the dereferencing operation internal to an application runtime." ; - :definition "A function which has an operation which dereferences a pointer." . - -:PointerValidation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Pointer Validation" ; - rdfs:subClassOf :SourceCodeHardening ; - :d3fend-id "D3-PV" ; - :definition "Ensuring that a pointer variable has the required properties for use. " ; - :kb-reference :Reference-PointerValidationFunction_SEI . - -:PointEstimation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Point Estimation" ; - rdfs:subClassOf :Estimation ; - :d3fend-id "D3A-PE" ; - :definition "A point estimation is a single value that estimates the parameter. Point estimates are single values calculated from the sample" ; - :kb-article """## References -Pennsylvania State University. (n.d.). Statistical Inference and Estimation. [Link](https://online.stat.psu.edu/stat504/lesson/statistical-inference-and-estimation)""" . - -:PolicyGradient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Policy Gradient" ; - rdfs:subClassOf :Model-freeReinforcementLearning ; - :d3fend-id "D3A-PG" ; - :definition "The objective of a Reinforcement Learning Policy Gradient agent is to maximize the “expected” reward when following a policy" ; - :kb-article """## References -Policy Gradients in a Nutshell. Towards Data Science. [Link](https://towardsdatascience.com/policy-gradients-in-a-nutshell-8b72f9743c5d).""" . - -:PolicyReference a owl:Class ; - rdfs:label "Policy Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Policy" . - -:POSIXSymbolicLink a owl:Class ; - rdfs:label "POSIX Symbolic Link" ; - rdfs:subClassOf :SymbolicLink, - :UnixLink ; - rdfs:isDefinedBy ; - :definition "A POSIX-compliant symbolic link. These are often fast symbolic links, but need not be." . - -:PowerAndThermalDeviceEvent a owl:Class ; - rdfs:label "Power and Thermal Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Sensor ] ; - :definition "An event involving power supplies, batteries, or thermal management devices. These events represent changes in power states, temperature thresholds, or cooling system activity." . - -:PowerShellProfileScript a owl:Class ; - rdfs:label "PowerShell Profile Script" ; - rdfs:subClassOf :UserInitScript ; - :definition "A PowerShell profile script is a script that runs when PowerShell starts and can be used as a logon script to customize user environments." ; - rdfs:seeAlso . - -:PowerSupply a owl:Class ; - rdfs:label "Power Supply" ; - rdfs:subClassOf :HardwareDevice ; - :definition "A power supply is an electrical device or module that converts and regulates energy from a source (e.g., the power grid or batteries) to an appropriate voltage, current, and frequency for one or more loads. It may stand alone or be integrated into its host appliance, often providing overcurrent protection, voltage regulation, or power conditioning for safe, stable operation." ; - rdfs:seeAlso . - -:PreAuthenticationEvent a owl:Class ; - rdfs:label "Pre-Authentication Event" ; - rdfs:subClassOf :AuthenticationEvent, - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :Authentication ] ; - :definition "An event representing preparatory steps or processes conducted prior to the primary authentication operation. Pre-authentication often involves initial protocol exchanges, cryptographic challenges, or the validation of supplemental factors (e.g., pre-shared keys) to ensure the readiness and security of the authentication workflow." . - -:PredicateLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Predicate Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-PL" ; - :definition "Predicate logic is is collection of formal systems used in mathematics, philosophy, linguistics, and computer science. First-order logic and Higher-order logic both incorporate predicate logic." ; - :kb-article """## References -1. First-order logic. (2023, May 26). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/First-order_logic) -2. Higher-order logic. (2023, May 13) -[Link](https://en.wikipedia.org/wiki/Higher-order_logic)""" . - -:PrimaryStorage a owl:Class ; - rdfs:label "Primary Storage" ; - rdfs:subClassOf :HardwareDevice, - :Storage, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :PageFrame ], - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ProcessSegment ] ; - rdfs:isDefinedBy ; - :definition "Primary memory of a computer is memory that is wired directly to the processor, consisting of RAM and possibly ROM. These terms are used in contrast to mass storage devices and cache memory (although we may note that when a program accesses main memory, it is often actually interacting with a cache)." ; - rdfs:seeAlso . - -:PrincipalComponentAnalysis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Principal Component Analysis" ; - rdfs:subClassOf :MultivariateAnalysis ; - :d3fend-id "D3A-PCA" ; - :definition "Principal components analysis (PCA) creates a new set of orthogonal variables that contain the same information as the original set. It rotates the axes of variation to give a new set of orthogonal axes, ordered so that they summarize decreasing proportions of the variation." ; - :kb-article """## References -Wikipedia. (n.d.). Multivariate statistics. [Link](https://en.wikipedia.org/wiki/Multivariate_statistics)""" ; - :synonym "PCA" . - -:PrincipalComponentsAnalysis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Principal Components Analysis" ; - rdfs:subClassOf :DimensionReduction ; - :d3fend-id "D3A-PCA" ; - :definition "Principal Component Analysis (PCA) is a statistic-based method of identifying patterns in a large dataset while increasing interpretability and preserving information." ; - :kb-article """## References -Wikipedia. (n.d.). Principal component analysis. [Link](https://en.wikipedia.org/wiki/Principal_component_analysis)""" . - -:PrintServer a owl:Class ; - rdfs:label "Print Server" ; - rdfs:subClassOf :Server ; - rdfs:isDefinedBy ; - :definition "A print server, or printer server, is a device that connects printers to client computers over a network. It accepts print jobs from the computers and sends the jobs to the appropriate printers, queuing the jobs locally to accommodate the fact that work may arrive more quickly than the printer can actually handle." . - -:PrivateKey a owl:Class ; - rdfs:label "Private Key" ; - rdfs:subClassOf :AsymmetricKey, - [ a owl:Restriction ; - owl:onProperty :has-dependent ; - owl:someValuesFrom :PublicKey ] ; - :definition "A private key can be used to decrypt messages encrypted using the corresponding public key, or used to sign a message that can be authenticated with the corresponding public key." ; - rdfs:seeAlso . - -:PrivilegedUserAccount a owl:Class ; - rdfs:label "Privileged User Account" ; - rdfs:subClassOf :UserAccount ; - rdfs:isDefinedBy ; - :definition "A privileged account is a user account that has more privileges than ordinary users. Privileged accounts might, for example, be able to install or remove software, upgrade the operating system, or modify system or application configurations. They might also have access to files that are not normally accessible to standard users. Typical examples are root and administrator accounts. But there also service accounts, system accounts, etc. Privileged accounts are especially powerful, and should be monitored especially closely." ; - rdfs:seeAlso . - -:PrivilegeEscalationTechnique a owl:Class ; - rdfs:label "Privilege Escalation Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0004 ] ; - :definition "The adversary is trying to gain higher-level permissions." . - -:ProbabilisticLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Probabilistic Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-PL" ; - :definition "Probabilistic logic extends traditional logic truth tables with probabilistic expressions." ; - :kb-article """## References -1. Probabilistic logic. (2023, June 5). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Probabilistic_logic)""" . - -:Procedure a owl:Class ; - rdfs:label "Procedure" ; - rdfs:subClassOf :Plan, - [ a owl:Restriction ; - owl:onProperty :implements ; - owl:someValuesFrom :Technique ], - [ a owl:Restriction ; - owl:onProperty :start ; - owl:allValuesFrom :Step ] . - -:Process a owl:Class, - owl:NamedIndividual ; - rdfs:label "Process" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ProcessImage ], - [ a owl:Restriction ; - owl:onProperty :instructed-by ; - owl:someValuesFrom :Software ], - [ a owl:Restriction ; - owl:onProperty :may-execute ; - owl:someValuesFrom :Thread ], - [ a owl:Restriction ; - owl:onProperty :process-command-line-arguments ; - owl:someValuesFrom xsd:string ], - [ a owl:Restriction ; - owl:onProperty :process-environmental-variables ; - owl:someValuesFrom xsd:string ], - [ a owl:Restriction ; - owl:onProperty :process-identifier ; - owl:someValuesFrom xsd:integer ], - [ a owl:Restriction ; - owl:onProperty :process-image-path ; - owl:someValuesFrom :ExecutableBinary ], - [ a owl:Restriction ; - owl:onProperty :process-security-context ; - owl:someValuesFrom xsd:string ], - [ a owl:Restriction ; - owl:onProperty :process-user ; - owl:someValuesFrom :UserAccount ], - [ a owl:Restriction ; - owl:onProperty :uses ; - owl:someValuesFrom :Resource ] ; - rdfs:isDefinedBy ; - :definition "A process is an instance of a computer program that is being executed. It contains the program code and its current activity. Depending on the operating system (OS), a process may be made up of multiple threads of execution that execute instructions concurrently. A computer program is a passive collection of instructions, while a process is the actual execution of those instructions. Several processes may be associated with the same program; for example, opening up several instances of the same program often means more than one process is being executed." ; - rdfs:seeAlso . - -:ProcessAccessEvent a owl:Class ; - rdfs:label "Process Access Event" ; - rdfs:subClassOf :ProcessEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ProcessCreationEvent ] ; - :definition "An event where one process interacts with another, such as reading memory, inspecting state, or altering behavior." . - -:ProcessAnalysis a owl:Class, - owl:NamedIndividual, - :ProcessAnalysis ; - rdfs:label "Process Analysis" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Detect ] ; - :d3fend-id "D3-PA" ; - :definition "Process Analysis consists of observing a running application process and analyzing it to watch for certain behaviors or conditions which may indicate adversary activity. Analysis can occur inside of the process or through a third-party monitoring application. Examples include monitoring system and privileged calls, monitoring process initiation chains, and memory boundary allocations." ; - :enables :Detect . - -:ProcessCodeSegment a owl:Class ; - rdfs:label "Process Code Segment" ; - skos:altLabel "Process Text Segment" ; - rdfs:subClassOf :ProcessSegment, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Subroutine ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ProcessSegment ] ; - :definition "A process code segment, also known as a text segment or simply as text, is a portion of the program's virtual address space that contains executable instructions and corresponds to the loaded image code segment. Includes additional sections such as an import table." ; - rdfs:seeAlso , - :ImageCodeSegment . - -:ProcessCodeSegmentVerification a owl:Class, - owl:NamedIndividual, - :ProcessCodeSegmentVerification ; - rdfs:label "Process Code Segment Verification" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :verifies ; - owl:someValuesFrom :ProcessCodeSegment ] ; - :d3fend-id "D3-PCSV" ; - :definition "Comparing the \"text\" or \"code\" memory segments to a source of truth." ; - :kb-article """## How it works -A process code segment is an executable portion of computer memory allocated to a particular process. Process Code Segment Verification implements verification to compare a process code segment to some expected value. - -### Verification logic -Verification can occur during application startup, or continuously during execution. The logic which verifies the process code may be separate in a third-party process, embedded in the application itself at compile time, or dynamically linked at runtime. - -### System of record -Examples of systems of record: - - * On-disk application binary files or checksums - * Remotely stored binary data or checksums - * Embedded binary data or checksums - -### Post Verification Actions -If the verification function determines a process code segment may have been altered, a capability may invoke Eviction techniques as **Process Termination** to end the current process, or **Executable Blacklisting** to prevent the executable from launching in the future. - -## Considerations - -### False positives - -False positives commonly occur in the case that the layout of code in the process segment is legitimately modified: - -* Operating system features or third-party security software may modify the layout of process code, for example in the defensive technique **Segment Address Offset Randomization**, or in the case that a module is rebased. In both of these cases, the alteration occurs before the code is fully loaded into memory, and it would be possible to avoid the false positive by securely feeding this constant offset and any relocation data into the verification logic. - -* Process code segments may be written to modify themselves or other process code segments; however, this goes against widely-accepted current practices in software development. - -### False negatives - -False negatives can occur via alteration of the verification logic or source of truth, or insufficient verification logic. - -* Verification techniques which are executed only locally may be defeated by altering the local verification logic. - -* Verification that is run only on a recurring basis could be evaded if the malicious alteration is completed before verification is run. - -* Verification that requests an operation to be performed on a subset of the code segment could be evaded by performing that operation on a copy of the relevant bytes of the code segment. - -* Verification based on a system of record that can be altered may fail if that system of record is modifiable by a malicious user.""" ; - :kb-reference :Reference-Anti-tamperSystemWithSelf-adjustingGuards_ARXANTECHNOLOGIESInc, - :Reference-GuardsForApplicationInSoftwareTamperproofing_PurdueResearchFoundation, - :Reference-SystemAndMethodForDetectingMalwareInjectedIntoMemoryOfAComputingDevice_EndgameInc, - :Reference-SystemAndMethodForValidatingIn-memoryIntegrityOfExecutableFilesToIdentifyMaliciousActivity_EndgameInc, - :Reference-TamperProofMutatingSoftware_ARXANTECHNOLOGIESInc, - :Reference-ThreatDetectionThroughTheAccumulatedDetectionOfThreatCharacteristics_SophosLtd . - -:ProcessCreationEvent a owl:Class ; - rdfs:label "Process Creation Event" ; - rdfs:subClassOf :ProcessEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ProcessStartFunction ] ; - :definition "An event where a new process is spawned, initializing its execution context and resource allocation." . - -:ProcessDataSegment a owl:Class ; - rdfs:label "Process Data Segment" ; - rdfs:subClassOf :ProcessSegment ; - :definition "A process data segment, is a portion of the program's virtual address space that contains executable instructions and corresponds to the loaded image data segment." ; - rdfs:seeAlso , - :ImageDataSegment . - -:ProcessEnvironmentVariable a owl:Class ; - rdfs:label "Process Environment Variable" ; - skos:altLabel "Environment Variable" ; - rdfs:subClassOf :ApplicationConfiguration ; - rdfs:isDefinedBy ; - :definition "An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. They are part of the environment in which a process runs." ; - :todo "Did \"Environment Variable\" have an conflict with prior version of ATT&CK technique names or were there other env var classes that are no longer in d3fend?" . - -:ProcessEvent a owl:Class ; - rdfs:label "Process Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :Process ] ; - :definition "An event capturing lifecycle transitions, interactions, or activities of computer processes, including their creation, termination, and inter-process communication." ; - rdfs:seeAlso . - -:ProcessEviction a owl:Class, - owl:NamedIndividual, - :ProcessEviction ; - rdfs:label "Process Eviction" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Evict ] ; - :d3fend-id "D3-PE" ; - :definition "Process eviction techniques terminate or remove running process." ; - :kb-reference :Reference-MalwareDetectionUsingLocalComputationalModels_CrowdstrikeInc . - -:ProcessImage a owl:Class ; - rdfs:label "Process Image" ; - rdfs:subClassOf :ComputingImage, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ProcessSegment ] ; - rdfs:isDefinedBy ; - :definition "A process image is a copy of a given process's state at a given point in time. It is often used to create persistence within an otherwise volatile system." . - -:ProcessLineageAnalysis a owl:Class, - owl:NamedIndividual, - :ProcessLineageAnalysis ; - rdfs:label "Process Lineage Analysis" ; - rdfs:subClassOf :ProcessSpawnAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Process ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :ProcessTree ] ; - :d3fend-id "D3-PLA" ; - :definition "Identification of suspicious processes executing on an end-point device by examining the ancestry and siblings of a process, and the associated metadata of each node on the tree, such as process execution, duration, and order relative to siblings and ancestors." ; - :kb-article """## How it works -Process tree analysis techniques gather information on how a process was initiated to determine if a process is malicious. For example, if a process was not initiated from boot or not initiated by another process, that process is identified as suspicious. Also, if a new process was started before a process initiated by the device (ex. during boot) and that new process was not initiated by a user (which can be determined by examining process parameters such as type of process, its creator, source, etc.) the process is identified as suspicious. - -For example, Microsoft Word may block execution of any subprocess that is not in an approved path. - -## Considerations -* Attackers may spoof the parent PID (https://attack.mitre.org/techniques/T1502/), rendering such after-the-fact analysis on process lineage ineffective. -* Processes may hide from various means of detection; an example on Linux is where a rootkit might remove key files for the process from its directory in /proc. -* Zombie processes.""" ; - :kb-reference :Reference-CAR-2020-11-002%3ALocalNetworkSniffing_MITRE, - :Reference-CAR-2020-11-004%3AProcessesStartedFromIrregularParent_MITRE, - :Reference-CAR-2021-02-002%3AGetSystemElevation_MITRE, - :Reference-CAR-2021-05-003%3ABCDEditFailureRecoveryModification_MITRE, - :Reference-CommandLaunchedFromWinLogon_MITRE, - :Reference-DebuggersForAccessibilityApplications_MITRE, - :Reference-GenericRegsvr32_MITRE, - :Reference-OutlierParentsOfCmd_MITRE, - :Reference-ProcessesSpawningCmd.exe_MITRE, - :Reference-QuickExecutionOfASeriesOfSuspiciousCommands_MITRE, - :Reference-Reg.exeCalledFromCommandShell_MITRE, - :Reference-RemotelyLaunchedExecutablesViaWMI_MITRE, - :Reference-ServiceOutlierExecutables_MITRE, - :Reference-ServiceSearchPathInterception_MITRE, - :Reference-ServicesLaunchingCmd_MITRE, - :Reference-SystemAndMethodsThereofForCausalityIdentificationAndAttributionsDeterminationOfProcessesInANetwork_PaloAltoNetworksIncCyberSecdoLtd, - :Reference-SystemAndMethodsThereofForIdentificationOfSuspiciousSystemProcesses_PaloAltoNetworksInc, - :Reference-UACBypass_MITRE ; - :synonym "Process Tree Analysis" . - -:Processor a owl:Class ; - rdfs:label "Processor" ; - rdfs:subClassOf :HardwareDevice ; - :definition "A processor is a hardware component or integrated circuit that performs computations, executes instructions, and processes data to carry out tasks within a computing system." ; - :synonym "Computer Processor" . - -:ProcessorComponent a owl:Class ; - rdfs:label "Processor Component" ; - rdfs:subClassOf :HardwareDevice ; - :definition "A Processor Component is a functional subunit or module within a processor that performs specific tasks to support the processor's overall operation." ; - rdfs:seeAlso :Processor . - -:ProcessorRegister a owl:Class ; - rdfs:label "Processor Register" ; - rdfs:subClassOf :PrimaryStorage, - [ a owl:Restriction ; - owl:onProperty :contained-by ; - owl:someValuesFrom :CentralProcessingUnit ] ; - rdfs:isDefinedBy ; - :definition "A processor register is a quickly accessible location available to a computer's processor. Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only." ; - rdfs:seeAlso . - -:ProcessSegment a owl:Class ; - rdfs:label "Process Segment" ; - rdfs:subClassOf :BinarySegment ; - :definition "Process segments are distinct partitions of the memory space of a running process. Heap, data, code, and stack segments are examples of process segments." ; - :synonym "Process Memory" . - -:ProcessSegmentExecutionPrevention a owl:Class, - owl:NamedIndividual, - :ProcessSegmentExecutionPrevention ; - rdfs:label "Process Segment Execution Prevention" ; - rdfs:subClassOf :ApplicationHardening, - [ a owl:Restriction ; - owl:onProperty :neutralizes ; - owl:someValuesFrom :ProcessSegment ] ; - :d3fend-id "D3-PSEP" ; - :definition "Preventing execution of any address in a memory region other than the code segment." ; - :kb-article """## How it works - -During execution of a process, the instruction pointer register should only point to addresses in a code segment (also called the .text segment), as this is the sole segment which should contain program code. - -When this technique detects an attempt to execute something that has been designated as non-executable, other techniques such as those in **Process Eviction** might be invoked, such as **Process Termination** to end the current process, or **Executable Blacklisting** to blacklist the potentially vulnerable or malfunctioning executable. - -### Software-based implementations -The software-based implementation in Windows XP SP2 might not check that every time the instruction pointer is changed, and does not check on each jump or return. Before calling an exception handler, Windows XP SP2 software-enforced DEP checks whether the exception handler is located in a memory region marked as executable. If the program was also built with SafeSEH, this implementation also checks before changing control to the exception handler whether it is a registered exception handler in the program's file on disk. - -### Hardware-based implementations -The NX (No Execute) or XD (Execute Disable) bit on the processor specifies whether a certain part of memory is executable. Early implementations set this bit by the memory segment, while modern implementations which are built on the flat memory model often store this bit in each entry of the page table, to control execution by the page. - - -## Considerations - -Non-hardware process data segment execution prevention is more susceptible to being able to be turned off for a page of memory. - -Different implementations of this defense have been in place since the 1980s, but implementation stalled when larger 16-bit programs began stuffing code in the segments usually reserved for data. Many modern programs follow the best practice of separation of code and data, are able to run under this defense. - -ROP or ret2libc/return-to-function attacks could bypass this defense, as although they may pass attacker-controlled data or stack frames to a function, they abuse functions that are legitimately located in the .text segment (code segment) of the program. For those, more advanced defenses such as a table of valid jump addresses, function call analysis, or return depth analysis could be used.""" ; - :kb-reference :Reference-DataExecutionPrevention_Microsoft, - :Reference-WhatIsNX_XDFeature_RedHat ; - :synonym "Execute Disable", - "No Execute" . - -:ProcessSelf-ModificationDetection a owl:Class, - owl:NamedIndividual, - :ProcessSelf-ModificationDetection ; - rdfs:label "Process Self-Modification Detection" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Process ] ; - :d3fend-id "D3-PSMD" ; - :definition "Detects processes that modify, change, or replace their own code at runtime." ; - :kb-article """## How it Works -A security agent installed on the host machine intercepts API calls between a process and operating system. Intercepted API calls are then compared against attack signatures/patterns to identify API calls that modify executable memory or modify the entry point address of a suspended child process. Attack patterns include: - -* Executable code of a suspended child process removed from memory by one or more API calls. -* New executable code injected and / or loaded into memory of a suspended child process by one or more API calls. -* Executable code modified by one or more API calls. -* Next instruction pointer value in memory modified by one or more API calls. - -## Considerations -Comparing loaded code segments of processes with what is expected to have been loaded from a file can result in false positives, due to legitimate uses of self-modification for decrypting or uncompressing code segments.""" ; - :kb-reference :Reference-SystemAndMethodForProcessHollowingDetection_CarbonBlackInc . - -:ProcessSetUserIDEvent a owl:Class ; - rdfs:label "Process Set User ID Event" ; - rdfs:subClassOf :ProcessEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ProcessCreationEvent ] ; - :definition "An event where a process changes or adopts a specific user identity, modifying its access privileges or operational context." . - -:ProcessSpawnAnalysis a owl:Class, - owl:NamedIndividual, - :ProcessSpawnAnalysis ; - rdfs:label "Process Spawn Analysis" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :CreateProcess ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Process ] ; - :d3fend-id "D3-PSA" ; - :definition "Analyzing spawn arguments or attributes of a process to detect processes that are unauthorized." ; - :kb-article """## How it works -Process attributes are established when an operating system spawns a new process. These attributes are analyzed to look for the presence or absence of specific values or patterns. - -Some attributes of interest are: - - user - - process name - - image path - - security content - -## Considerations - - - Attackers can spoof the parent process identifier (PPID), which could bypass this defense to allow execution of a malicious process from an arbitrary parent process. - - Attackers could have legitimately compromised any of the process properties, such as the user, to make the execution appear legitimate. - - Location: If the full image path is not checked, there could be a conflict with an executable that appears earlier due to resolution involving the system environment path/classpath variable. - - Parsing issues: If the raw command from a shell is analyzed, rather than the actual function call, it is important to identify the actual command being run from its arguments. In Windows, services with unquoted file paths containing spaces will try to use the first token as the executable and the rest as arguments -- and shift tokens to the executable until a valid one is found. - - Some [operating systems](/dao/artifact/d3f:OperatingSystem) can spawn processes without forking.""" ; - :kb-reference :Reference-ActiveDirectoryDumpingViaNTDSUtil_MITRE, - :Reference-CAR-2020-04-001%3AShadowCopyDeletion_MITRE, - :Reference-CAR-2020-05-003%3ARareLolBASCommandLines_MITRE, - :Reference-CAR-2020-08-001%3ANTFSAlternateDataStreamExecution-SystemUtilities_MITRE, - :Reference-CAR-2020-09-003%3AIndicatorBlocking-DriverUnloaded_MITRE, - :Reference-CAR-2020-09-004%3ACredentialsInFiles%26Registry_MITRE, - :Reference-CAR-2020-11-001%3ABootOrLogonInitializationScripts_MITRE, - :Reference-CAR-2020-11-003%3ADLLInjectionWithMavinject_MITRE, - :Reference-CAR-2020-11-005%3AClearPowershellConsoleCommandHistory_MITRE, - :Reference-CAR-2020-11-006%3ALocalPermissionGroupDiscovery_MITRE, - :Reference-CAR-2020-11-007%3ANetworkShareConnectionRemoval_MITRE, - :Reference-CAR-2020-11-008%3AMSBuildAndMsxsl_MITRE, - :Reference-CAR-2020-11-009%3ACompiledHTMLAccess_MITRE, - :Reference-CAR-2021-01-002%3AUnusuallyLongCommandLineStrings_MITRE, - :Reference-CAR-2021-01-003%3AClearingWindowsLogsWithWevtutil_MITRE, - :Reference-CAR-2021-01-004%3AUnusualChildProcessForSpoolsv.ExeOrConnhost.Exe_MITRE, - :Reference-CAR-2021-01-006%3AUnusualChildProcessSpawnedUsingDDEExploit_MITRE, - :Reference-CAR-2021-01-007%3ADetectingTamperingOfWindowsDefenderCommandPrompt_MITRE, - :Reference-CAR-2021-01-008%3ADisableUAC_MITRE, - :Reference-CAR-2021-01-009%3ADetectingShadowCopyDeletionViaVssadmin.exe_MITRE, - :Reference-CAR-2021-02-001%3AWebshell-IndicativeProcessTree_MITRE, - :Reference-CAR-2021-04-001%3ACommonWindowsProcessMasquerading_MITRE, - :Reference-CAR-2021-05-001%3AAttemptToAddCertificateToUntrustedStore_MITRE, - :Reference-CAR-2021-05-002%3ABatchFileWriteToSystem32_MITRE, - :Reference-CAR-2021-05-003%3ABCDEditFailureRecoveryModification_MITRE, - :Reference-CAR-2021-05-004%3ABITSJobPersistence_MITRE, - :Reference-CAR-2021-05-005%3ABITSAdminDownloadFile_MITRE, - :Reference-CAR-2021-05-006%3ACertUtilDownloadWithURLCacheAndSplitArguments_MITRE, - :Reference-CAR-2021-05-007%3ACertUtilDownloadWithVerifyCtlAndSplitArguments_MITRE, - :Reference-CAR-2021-05-008%3ACertutilExeCertificateExtraction_MITRE, - :Reference-CAR-2021-05-009%3ACertUtilWithDecodeArgument_MITRE, - :Reference-CAR-2021-05-010%3ACreateLocalAdminAccountsUsingNetExe_MITRE, - :Reference-CommandLineUsageOfArchivingSoftware_MITRE, - :Reference-CreateRemoteProcessViaWMIC_MITRE_Other, - :Reference-CredentialDumpingViaMimikatz_MITRE, - :Reference-HostDiscoveryCommands_MITRE, - :Reference-LsassProcessDumpViaProcdump_MITRE, - :Reference-PowershellExecution_MITRE, - :Reference-RunDLL32.exeMonitoring_MITRE, - :Reference-Squiblydoo_MITRE, - :Reference-SuspiciousArguments_MITRE, - :Reference-SuspiciousRunLocations_MITRE . - -:ProcessStartFunction a owl:Class ; - rdfs:label "Process Start Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :invokes ; - owl:someValuesFrom :CreateProcess ] ; - :definition "A function creates a new computer process, usually by invoking a create process system call." . - -:ProcessSuspension a owl:Class, - owl:NamedIndividual, - :ProcessSuspension ; - rdfs:label "Process Suspension" ; - rdfs:subClassOf :ProcessEviction, - [ a owl:Restriction ; - owl:onProperty :suspends ; - owl:someValuesFrom :Process ] ; - :d3fend-id "D3-PS" ; - :definition "Suspending a running process on a computer system." ; - :kb-article """## How it works - -A running process might be suspended to mitigate its immediate effects if it is exhibiting anomalous, unauthorized, or malicious behavior. Defenders may choose to suspend rather than terminate to analyze the process first and resume the process if deemed benign. - -### System-provided functions - -#### Windows tools -In Windows, the `PsSuspend` command line utility from the SysInternals Suite provides functionality to suspend processes on a local or remote system.""" ; - :kb-reference :Reference-PsSuspend . - -:ProcessTermination a owl:Class, - owl:NamedIndividual, - :ProcessTermination ; - rdfs:label "Process Termination" ; - rdfs:subClassOf :ProcessEviction, - [ a owl:Restriction ; - owl:onProperty :terminates ; - owl:someValuesFrom :Process ] ; - :d3fend-id "D3-PT" ; - :definition "Terminating a running application process on a computer system." ; - :kb-article """## How it works - -Processes are managed by the operating system kernel. Different operating system kernels manage the creation and termination of processes in a different manner, and expose this functionality via the kernel API. - -A running process might be terminated to mitigate its immediate effects if it is exhibiting anomalous, unauthorized, or malicious behavior; such as after detecting anomalous behavior via Administrative Network Activity Analysis, after a failed check from Stack Frame Canary Validation, or after System Call Analysis finds an attempt to execute an unauthorized system call. - -### Proprietary technology -Security software might use proprietary technology to terminate processes, instead of the system-provided functions. Further research may provide specific detail on such methods used. - -### System-provided functions - -#### Windows tools -In Windows, `ExitProcess()` is used to send a signal to a process to request it to exit, and `TerminateProcess()` is used to force a process to exit. - -The `taskkill` executable available in the cmd shell is used to kill a process, with the `/F` switch forcing termination as with `TerminateProcess()`. In PowerShell, `Stop-Process` is used, which is aliased by default to `spps` and `kill`. Processes started in the Windows Subsystem for Linux (WSL) environment may be terminated there with the `kill` command. - -In some cases, existing drivers can also be leveraged to kill processes. - -#### Unix/Linux tools -In Unix-like systems, all process termination requests are handled using signals. The `kill` function takes the Process ID and signal to send, and is accessible with the `kill` command. Some shells have a `kill` builtin function which is separate than the `kill` binary, which can also kill background jobs in the shell and additionally perform the function faster, and can run from an existing instance of the shell if the process table is full. The signal SIGTERM specifies that the process to terminate may invoke a handler that it has defined instead of terminating, and the signal SIGKILL forces immediate termination. - -The related command `xkill` terminates the connection of a program to the X window server, after which the user process may decide to terminate itself; however, termination is not guaranteed as the process, which could be on the same or different host, could then run in a terminal or reconnect to a different X server on any host. Emacs is such a program that would not terminate itself after its connection to the X server is terminated. - -## Considerations - -### Persistence Mechanisms -Terminating a malicious process is not enough to stop an adversary that has already gained persistence in the host via any initial access mechanism, including through that process or another access mechanism. - -### Terminating Multiple Processes -On most operating systems, process termination operations typically occur independently of each other, without functionality provided to atomically terminate multiple processes. If there are multiple malicious processes which can make system calls to spawn other processes once one of them is closed, user session termination or system restart might be required. - -### Process Access Permissions -Users must have permissions to kill the process. On Unix-like systems, either root or the process user can kill the process. On Windows systems, process permissions are managed separately via process security tokens. - -### Process Resource Handles - -#### Terminating Processes with Open Resource Handles - -Processes may have open resource handles, which could leave those resources in an undesired state if the process is forced to terminate. As such, most operating systems provide a means to send a signal to a process to inform it to gracefully terminate, and on most of these operating systems, it is the typical first step used to terminate a process. - -#### Signal Traps -As the process may have open resource handles, commonly-used methods of process termination involve sending a signal to the process to terminate. -On Windows, the `ExitProcess()` function is used for this purpose. Process instructions, as well as a third-party DLL can also cause the process to exit. -On Linux, the process is sent a signal on the occurrence of various events: when it loses the console, `SIGHUP`; when termination is requested, `SIGTERM`. The processor then redirects execution to the function registered to handle the signal. - -Therefore, sending a signal to the process to ask it to terminate may not always work. - -##### Avoiding Signal Traps - -On Unix-like systems, sending the `SIGKILL` signal for a process does not send a message to the process or invoke an implementation-defined handler; instead, it immediately does not allow the process to execute any further processor instructions. On Windows `TerminateProcess()` instead of `ExitProcess()` performs the equivalent. - -#### Hang on System Call Execution - -Even still, as the operating system kernel manages the processes, kernel code may block process signals, including those which cannot be trapped, and does in certain circumstances. Signals are blocked and queued for the duration of the system call when interrupting the system call would result in a kernel invariant being violated, such as when an action results in a malformed data structure; this blocking is common for filesystem requests. Such system calls can hang when a filesystem has gone offline, leading to a long-term uninterruptible sleep, represented in POSIX command `ps` output as D state. -Any malicious system calls or system call handlers are issues of a much larger problem (a kernel-level rootkit) and the system should be redeployed entirely or restored from a backup known to be prior to compromise, and other systems accessible directly and indirectly from that one should also be examined. - -A process that is truly hung in a system call may prevent the system from shutting down and leave it in an unresponsive state; a hard power off is required. - -To speed up the action of terminating a process in uninterruptible sleep, the process resource accesses (handles) could be analyzed. - -On Linux, [`sync` followed by `echo 3 > /proc/sys/vm/drop_caches`](https://www.kernel.org/doc/Documentation/sysctl/vm.txt) is a safe way to free up some inactive resource handles. - - -#### Kernel Processes and Threads -The kernel may not allow kernel processes, which are created via methods other than user-space processes, to be terminated. - -#### Other Code using the Process - -Terminating a shared library can lead to unexpected errors; such shared libraries have their own mechanisms for termination. - -On Windows, a DLL is unloaded when the reference count of the library reaches 0. - -#### Zombie process - -After a process has been terminated, it may still take up an entry in the operating system process table until another event occurs. - -##### Windows -In Windows, a process object is deleted when the last handle to the process is closed. - -##### Linux -In Linux, a process is removed from the process table when it is reaped by its parent process. If the parent terminates, historically the parent has been changed to pid 1; however, in the Linux kernel 3.4 and above, processes can set a different process as the subreaper using the `prctl()` system call. - -Zombie processes and hung processes could be resolved with a restart of the system. - -#### System restart -Finally a system restart might be required to kill a process. -Systems which are only accessible via a remote in-band connection may become inaccessible if a process termination operation that is necessary for reboot does not complete. - -### Subsystems -Processes that are started in a subsystem might not be fully terminated if they are terminated using the command for that subsystem. For example, in the Windows Subsystem for Linux (WSL), processes started and terminated via WSL calls such as with the `kill` command in Bash may still have an entry in the Windows process table.""" ; - :kb-reference :Reference-InstantProcessTerminationToolToRecoverControlOfAnInformationHandlingSystem_DellProductsLP, - :Reference-MalwareDetectionUsingLocalComputationalModels_CrowdstrikeInc ; - :todo "Research on the proprietary methods. This might include directly overwriting process memory, altering system data structures which relate to processes, changing the operating system task scheduler, or other low-level nonstandard operations that cause a process to cease its own intended operation." . - -:ProcessTerminationEvent a owl:Class ; - rdfs:label "Process Termination Event" ; - rdfs:subClassOf :ProcessEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ProcessCreationEvent ] ; - :definition "An event marking the cessation of a process, including resource deallocation and cleanup, either due to normal completion or abnormal termination." . - -:ProcessTree a owl:Class ; - rdfs:label "Process Tree" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Process ] ; - :definition "A process tree is a tree structure representation of parent-child relationships established via process spawn operations." ; - rdfs:seeAlso , - , - :ProcessSpawnAnalysis . - -:ProductDeveloper a owl:Class ; - rdfs:label "Product Developer" ; - rdfs:subClassOf :Provider ; - :definition "A product developer intentionally designs, creates, or improves products, which may include physical goods, software, or other outputs." . - -:ProgressivelyGrowingGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "Progressively Growing GAN" ; - rdfs:subClassOf :ImageSynthesisGAN ; - :d3fend-id "D3A-PGG" ; - :definition "Progressive Growing GAN (ProGAN) is an extension to the GAN training process that allows for the stable training of generator models that can output large high-quality images." ; - :kb-article """## References - -Machine Learning Mastery. (n.d.). Introduction to Progressive Growing Generative Adversarial Networks. [Link](https://machinelearningmastery.com/introduction-to-progressive-growing-generative-adversarial-networks/)""" ; - :synonym "ProGAN" . - -:ProjectedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Projected Clustering" ; - rdfs:subClassOf :High-dimensionClustering ; - :d3fend-id "D3A-PC" ; - :definition "Projected clustering is a dimension reduction subspace clustering method." ; - :kb-article """## References -GeeksforGeeks. (n.d.). Projected Clustering in Data Analytics. [Link](https://www.geeksforgeeks.org/projected-clustering-in-data-analytics/)""" . - -:Projection-basedClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Projection-based Clustering" ; - rdfs:subClassOf :High-dimensionClustering ; - :d3fend-id "D3A-PBC" ; - :definition "Projection Based Clustering is a clustering framework based on a chosen projection method and projection method a parameter-free high-dimensional data visualization technique." ; - :kb-article """## References -R Core Team. (2021). ProjectionBasedClustering: Projection Based Clustering. [Link](https://cran.r-project.org/web/packages/ProjectionBasedClustering/ProjectionBasedClustering.pdf) - -Lai, J. H., Liu, Y., & Wu, W. (2017). Projection Based Clustering. [Link](https://www.researchgate.net/publication/319006501_Projection_Based_Clustering)""" . - -:Prolog a owl:Class, - owl:NamedIndividual ; - rdfs:label "Prolog" ; - rdfs:subClassOf :LogicProgramming ; - :d3fend-id "D3A-PRO" ; - :definition "Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages." ; - :kb-article """## How it works -Prolog is intended primarily as a declarative programming language: the program logic is expressed in terms of relations, represented as facts and rules. A computation is initiated by running a query over these relations. - -## References -1. Prolog. (2023, April 5). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Prolog)""" . - -:PropertyListFile a owl:Class ; - rdfs:label "Property List File" ; - skos:altLabel "Plist File" ; - rdfs:subClassOf :ConfigurationFile ; - rdfs:isDefinedBy ; - :definition "In the OS X, iOS, NeXTSTEP, and GNUstep programming frameworks, property list files are files that store serialized objects. Property list files use the filename extension .plist, and thus are often referred to as p-list files. Property list files are often used to store a user's settings. They are also used to store information about bundles and applications, a task served by the resource fork in the old Mac OS." . - -:PropositionalLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Propositional Logic" ; - rdfs:subClassOf :SymbolicAI ; - :d3fend-id "D3A-PL" ; - :definition "Propositional logic deals with statements (i.e., propositions, which can be true or false) and relations between propositions, including the construction of arguments based on them." ; - :kb-article """## How it works -Compound propositions are formed by connecting propositions by logical connectives. Propositions that contain no logical connectives are called atomic propositions. - -## References -1. Propositional Calculus. (2022, May 31). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Propositional_calculus)""" ; - :synonym "Propositional Calculus" . - -:ProtocolMetadataAnomalyDetection a owl:Class, - owl:NamedIndividual, - :ProtocolMetadataAnomalyDetection ; - rdfs:label "Protocol Metadata Anomaly Detection" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id "D3-PMAD" ; - :definition "Collecting network communication protocol metadata and identifying statistical outliers." ; - :kb-article """## How it works -Network protocol metadata is first collected and processed in real-time or post-facto. Metadata may include packet header information or information about a session (ex. time between requests/responses). Metadata is then grouped based on shared characteristics and those groups are compared to each other. If particular metadata differs significantly from other data, an alert is generated, identifying the network event as anomalous. Anomalous activity may indicate unauthorized activity. - -## Considerations -Metadata collection on enterprises can yield large data sets. Storage, indexing, querying, and aging should be considered prior to implementation.""" ; - :kb-reference :Reference-MethodAndSystemForDetectingThreatsUsingMetadataVectors_VECTRANETWORKSInc, - :Reference-MethodAndSystemForDetectingThreatsUsingPassiveClusterMapping_VectraNetworksInc, - :Reference-SystemForImplementingThreatDetectionUsingDailyNetworkTrafficCommunityOutliers_VECTRANETWORKSInc . - -:Provider a owl:Class ; - rdfs:label "Provider" ; - rdfs:subClassOf :Organization ; - :definition "Providers are entities that intentionally offer, supply, or facilitate goods, services, or resources through actions of their agents." . - -:ProximitySensor a owl:Class ; - rdfs:label "Proximity Sensor" ; - rdfs:subClassOf :HardwareDevice ; - rdfs:isDefinedBy ; - :definition "A sensor able to detect the presence of nearby objects without any physical contact." . - -:ProximitySensorEvent a owl:Class ; - rdfs:label "Proximity Sensor Event" ; - rdfs:subClassOf :PhysicalAccessAlarmEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ProximitySensor ] . - -:ProximitySensorMonitoring a owl:Class, - owl:NamedIndividual, - :ProximitySensorMonitoring ; - rdfs:label "Proximity Sensor Monitoring" ; - rdfs:subClassOf :PhysicalAccessMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :ProximitySensor ] ; - :d3fend-id "D3-PSM" ; - :definition "Monitoring events from proximity sensors that indicate a credential or tagged asset is within the sensor’s read range or a defined zone. Common enabling technologies include RFID, Bluetooth Low Energy (BLE), and Ultra-Wideband (UWB)." ; - :kb-article """## How it works - -Proximity readers and sensors detect credentials or tagged assets within their read field, then report presence and, when applicable, authenticate to a controller for access decisions. Systems may use RSSI, dwell time, or time-of-flight to enforce zones and policies such as anti-passback. Secure, authenticated communication between readers and controllers helps prevent cloning and replay attacks. - -## Considerations - - * Place readers and align antennas to achieve consistent read ranges; account for materials like metal and liquids that can detune signals. -* Use cryptographic credentials with mutual authentication and encrypted, supervised reader links to mitigate cloning and relay attacks. -* Protect privacy by minimizing collected data, limiting retention, and restricting access to proximity logs. -* Calibrate detection thresholds and zone boundaries; re-test after layout changes or equipment moves. -* Monitor reader and tag health, including battery status for BLE and UWB tags and supervision signals for wired and wireless devices.""" ; - :kb-reference :Reference-FIPS-201-3, - :Reference-NIST-SP800-116r1, - :Reference-Wikipedia-ProximityCard, - :Reference-Wikipedia-RFID ; - :synonym "Proximity Reader Monitoring", - "RFID Reader Monitoring" . - -:Proxy-basedWebServerAccessMediation a owl:Class, - owl:NamedIndividual, - :Proxy-basedWebServerAccessMediation ; - rdfs:label "Proxy-based Web Server Access Mediation" ; - rdfs:subClassOf :WebSessionAccessMediation ; - :d3fend-id "D3-PBWSAM" ; - :definition "Proxy-based web server access mediation focuses on the regulation of web server access through intermediary proxy servers." ; - :kb-article """## How it works - -Proxy-based Web Server Access Mediation involves controlling access to web servers via proxy servers, which act as intermediaries between users and web resources. This approach can enhance security by anonymizing user requests, filtering content, and enforcing access policies. Examples include using corporate proxies to access external websites or services.""" ; - :kb-reference :Reference-NIST-Special-Publication-800-41-Revision-1 . - -:ProxyServer a owl:Class ; - rdfs:label "Proxy Server" ; - rdfs:subClassOf :ComputerNetworkNode, - :Server ; - rdfs:isDefinedBy ; - :definition "In computer networking, a proxy server is a server application or appliance that acts as an intermediary for requests from clients seeking resources from servers that provide those resources. A proxy server thus functions on behalf of the client when requesting service, potentially masking the true origin of the request to the resource server." ; - rdfs:seeAlso . - -:PublicKey a owl:Class ; - rdfs:label "Public Key" ; - rdfs:subClassOf :AsymmetricKey, - [ a owl:Restriction ; - owl:onProperty :depends-on ; - owl:someValuesFrom :PrivateKey ] ; - :definition "A public key can be disseminated widely as part of an asymmetric cryptography framework and be used to encrypt messages to send to the public key's owner or to authenticate signed messages from that sender." ; - rdfs:seeAlso . - -:PythonPackage a owl:Class ; - rdfs:label "Python Package" ; - rdfs:subClassOf :SoftwarePackage ; - :definition "A Python package is an aggregation of many Python files - either in source code or in bytecode - and associated metadata and resources (text, images, etc.). Python packages can be distributed in different file formats." ; - rdfs:seeAlso . - -:PythonScriptFile a owl:Class ; - rdfs:label "Python Script File" ; - rdfs:subClassOf :ExecutableScript ; - :synonym "A script file written in the Python programming language." . - -:Q-Learning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Q-Learning" ; - rdfs:subClassOf :Model-freeReinforcementLearning ; - :d3fend-id "D3A-QL" ; - :definition "Q-learning is a model-free reinforcement learning algorithm to learn the value of an action in a particular state. It does not require a model of the environment (hence \"model-free\"), and it can handle problems with stochastic transitions and rewards without requiring adaptations." ; - :kb-article """## References -Q-learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Q-learning).""" . - -:QueryByCommittee a owl:Class, - owl:NamedIndividual ; - rdfs:label "Query By Committee" ; - rdfs:subClassOf :ActiveLearning ; - :d3fend-id "D3A-QBC" ; - :definition "Query by Committee (QBC) takes inspiration from ensemble methods. Instead of just one classifier, it takes into account the decision of a committee C=ℎ1,…,ℎc of classifiers ℎi. Each classifier has the same target classes, but a different underlying model or a different view on the data." ; - :kb-article """## References -Intro to Active Learning. inovex Blog. [Link](https://www.inovex.de/de/blog/intro-to-active-learning/).""" . - -:RadioModem a owl:Class ; - rdfs:label "Radio Modem" ; - rdfs:subClassOf :Modem ; - rdfs:isDefinedBy ; - :definition "A radio modem provides the means to send digital data wirelessly. Radio modems are used to communicate by direct broadcast satellite, WiFi, WiMax, mobile phones, GPS, Bluetooth and NFC. Modern telecommunications and data networks also make extensive use of radio modems where long distance data links are required. Such systems are an important part of the PSTN, and are also in common use for high-speed computer network links to outlying areas where fiber optic is not economical." . - -:RAM a owl:Class ; - rdfs:label "RAM" ; - rdfs:subClassOf :PrimaryStorage ; - rdfs:isDefinedBy ; - :definition "Random-access memory (RAM) is a form of computer memory that can be read and changed in any order, typically used to store working data and machine code." ; - :synonym "Random-access Memory" . - -:RandomForest a owl:Class, - owl:NamedIndividual ; - rdfs:label "Random Forest" ; - rdfs:subClassOf :BootstrapAggregating ; - :d3fend-id "D3A-RF" ; - :definition "Random Forest is a ML method that combines several other ML methods. At its core, Random Forest is an ensemble method of multiple bootstrapped decision trees filled with training data and random feature selection." ; - :kb-article """## References -Random forest. Wikipedia. [Link](https://en.wikipedia.org/wiki/Random_forest).""" . - -:RandomSplits a owl:Class, - owl:NamedIndividual ; - rdfs:label "Random Splits" ; - rdfs:subClassOf :ResamplingEnsemble ; - :d3fend-id "D3A-RS" ; - :definition "The dataset is repeatedly sampled with a random split of the data into train and test sets." ; - :kb-article """## References -How to Create a Random Split Cross-Validation and Bagging Ensemble for Deep Learning in Keras."*Machine Learning Mastery*. [Link](https://machinelearningmastery.com/how-to-create-a-random-split-cross-validation-and-bagging-ensemble-for-deep-learning-in-keras/).""" . - -:Range a owl:Class, - owl:NamedIndividual ; - rdfs:label "Range" ; - rdfs:subClassOf :Variability ; - :d3fend-id "D3A-RAN" ; - :definition "The range of a set of data is the difference between the largest and smallest value." ; - :kb-article """## References -Wikipedia. (n.d.). Range (statistics). [Link](https://en.wikipedia.org/wiki/Range_(statistics))""" . - -:RangeMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Range Matching" ; - rdfs:subClassOf :NumericPatternMatching ; - :d3fend-id "D3A-RM" ; - :definition "Numeric Range Matching determines if a value lies with an interval of values (i.e., within the range of values.)" . - -:RankCorrelationCoefficient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Rank Correlation" ; - rdfs:subClassOf :Correlation ; - :d3fend-id "D3A-RC" ; - :definition "A rank correlation is any of several statistics that measure an ordinal association-the relationship between rankings of different ordinal variables or different rankings of the same variable, where a \"ranking\" is the assignment of the ordering labels \"first\", \"second\", \"third\", etc. to different observations of a particular variable." ; - :kb-article "Wikipedia. (n.d.). Rank correlation. [Link](https://en.wikipedia.org/wiki/Rank_correlation)" . - -:RawMemoryAccessFunction a owl:Class ; - rdfs:label "Raw Memory Access Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :MemoryBlock ] ; - :definition "A function which accesses raw memory, usually using memory addresses." . - -:RDPConnectRequestEvent a owl:Class ; - rdfs:label "RDP Connect Request Event" ; - rdfs:subClassOf :RDPEvent ; - :definition "An event where an RDP client sends a connection request specifying session parameters, such as display settings, compression preferences, and security requirements, to prepare for an interactive session." . - -:RDPConnectResponseEvent a owl:Class ; - rdfs:label "RDP Connect Response Event" ; - rdfs:subClassOf :RDPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :RDPConnectRequestEvent ] ; - :definition "An event where an RDP server acknowledges a connection request, finalizing session parameters and confirming the transition to an interactive remote session." . - -:RDPEvent a owl:Class ; - rdfs:label "RDP Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - [ a owl:Class ; - owl:unionOf ( - :TCPEvent - :UDPEvent ) ], - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :RDPSession ] ; - :definition "An event involving the Remote Desktop Protocol (RDP), a communication protocol developed by Microsoft that facilitates secure remote access to graphical interfaces on desktops or applications hosted on remote servers. RDP supports multi-channel communication for transferring input, output, and management commands." ; - rdfs:seeAlso . - -:RDPInitialRequestEvent a owl:Class ; - rdfs:label "RDP Initial Request Event" ; - rdfs:subClassOf :RDPEvent ; - :definition "An event where an RDP client initiates communication with a server by sending a request to establish a session and negotiate protocol capabilities for remote interaction." . - -:RDPInitialResponseEvent a owl:Class ; - rdfs:label "RDP Initial Response Event" ; - rdfs:subClassOf :RDPEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :RDPInitialRequestEvent ] ; - :definition "An event where an RDP server responds to an initial request from a client, presenting its supported capabilities and agreeing to proceed with session negotiation." . - -:RDPSession a owl:Class ; - rdfs:label "RDP Session" ; - skos:altLabel "Remote Desktop Session", - "Terminal Services" ; - rdfs:subClassOf :RemoteSession ; - :definition "A Remote Desktop Protocol (RDP) session is a session established using the RDP protocol to access Remove Desktop Services (RDS)." ; - rdfs:seeAlso , - . - -:RDPTLSHandshakeEvent a owl:Class ; - rdfs:label "RDP TLS Handshake Event" ; - rdfs:subClassOf :RDPEvent ; - :definition "An event representing the cryptographic exchange of keys and certificates between an RDP client and server to establish a secure communication channel. The handshake ensures encryption, integrity, and authentication for the session." . - -:ReadFile a owl:Class ; - rdfs:label "Read File" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :reads ; - owl:someValuesFrom :File ] ; - :definition "A program that needs to access data from a file stored in a file system uses the read system call. The file is identified by a file descriptor that is normally obtained from a previous call to open. This system call reads in data in bytes, the number of which is specified by the caller, from the file and stores then into a buffer supplied by the calling process." ; - rdfs:seeAlso . - -:ReadMemory a owl:Class ; - rdfs:label "Read Memory" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :reads ; - owl:someValuesFrom :MemoryBlock ] . - -:Receiver a owl:Class ; - rdfs:label "Receiver" ; - rdfs:subClassOf :HardwareDevice, - [ a owl:Restriction ; - owl:onProperty :receives ; - owl:someValuesFrom :Signal ] ; - :definition "A receiver is a device or system that acquires signals and converts them into usable information. It senses a physical carrier (such as electromagnetic fields, light, electrical currents, or acoustic waves), conditions the input, and extracts the intended content through operations like filtering, amplification, detection, synchronization, demodulation, decoding, and error correction. A receiver may be analog or digital, implemented in hardware, software, or both, and is designed to mitigate impairments such as noise, interference, and distortion while delivering recovered data or media to downstream processes." ; - rdfs:seeAlso . - -:ReconnaissanceTechnique a owl:Class ; - rdfs:label "Reconnaissance Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0043 ] ; - :definition "The adversary is trying to gather information they can use to plan future operations." . - -:Record a owl:Class ; - rdfs:label "Record" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In computer science, a record (also called struct or compound data) is a basic data structure. A record is a collection of fields, possibly of different data types, typically in fixed number and sequence . The fields of a record may also be called members, particularly in object-oriented programming. Fields may also be called elements, though these risk confusion with the elements of a collection. A tuple may or may not be considered a record, and vice versa, depending on conventions and the specific programming language." . - -:RecurrentNeuralNetwork a owl:Class, - owl:NamedIndividual ; - rdfs:label "Recurrent Neural Network" ; - rdfs:subClassOf :DeepNeuralNetClassification ; - :d3fend-id "D3A-RNN" ; - :definition "Recurrent Nerual Networks (RNN) are a class of artificial neural networks where connections between nodes can create a cycle, allowing output from some nodes to affect subsequent input to the same nodes. This allows it to exhibit temporal dynamic behavior." ; - :kb-article """## References -Wikipedia. (2021, September 7). Recurrent Neural Network. [Link](https://en.wikipedia.org/wiki/Recurrent_neural_network)""" ; - :todo "Review: Which Definition" . - -:ReferenceNullification a owl:Class, - owl:NamedIndividual ; - rdfs:label "Reference Nullification" ; - rdfs:subClassOf :SourceCodeHardening, - [ a owl:Restriction ; - owl:onProperty :hardens ; - owl:someValuesFrom :MemoryFreeFunction ] ; - :d3fend-id "D3-RN" ; - :definition """Invalidating all pointers that reference a specific memory block, ensuring that the block cannot be accessed or modified after deallocation. -""" ; - :kb-article """## How it Works -Nullifying references to memory blocks makes those blocks no longer accessible. This is critical to prevent use-after-free errors. - -## Considerations -* If a memory block is freed, all other references to that block should be nullified. -* This is particularly relevant when manually managing memory. -* Note: This resource should not be considered a definitive or exhaustive coding guideline.""" ; - :kb-reference :Reference-ReferenceNullification_SecureSoftwareInc . - -:RegexMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Regex Matching" ; - rdfs:subClassOf :PartialMatching ; - :d3fend-id "D3A-RM" ; - :definition "Regular expression matching is type of partial string matching using a regular expression, which is a sequence of characters that specifies a match pattern in text." ; - :kb-article """## How it works - -A regular expression (shortened as regex or regexp) is a sequence of characters that specifies a match pattern in text. Usually such patterns are used by string-searching algorithms for "find" or "find and replace" operations on strings, or for input validation. - -## Key Test Considerations - -- **External review of regular expressions**: Regular expressions used in rules should be reviewed by a independent developer SME. Regex testing and visualization tools may be used to aid this review. Back-tests for failure modes identified during the review shoud be developed. Regular expressions are easy to get wrong and may appear to work on limited tests; small mistakes can lead to unintended misses and matches.] - -- **Processing Performance Review**: Review of resource-intensive rules may be necessary if system performance degraded. Look for cases of “exponential backtracking” Some regexes are computationally expensive. - -## References -1. Regular expression. (2023, June 1). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Regular_expression). -2. String-searching algorithm. (2023, April 8). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/String-searching_algorithm).""" ; - :synonym "Regex", - "Regexp" . - -:RegistryKeyDeletion a owl:Class, - owl:NamedIndividual, - :RegistryKeyDeletion ; - rdfs:label "Registry Key Deletion" ; - rdfs:subClassOf :ObjectEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :WindowsRegistryKey ] ; - :d3fend-id "D3-RKD" ; - :definition "Delete a registry key." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RegressionAnalysis a owl:Class, - owl:NamedIndividual ; - rdfs:label "Regression Analysis" ; - rdfs:subClassOf :StatisticalMethod ; - :d3fend-id "D3A-RA" ; - :definition "Regression analysis is a set of statistical processes for estimating the relationships between a dependent variable (often called the 'outcome' or 'response' variable, or a 'label' in machine learning parlance) and one or more independent variables (often called 'predictors', 'covariates', 'explanatory variables' or 'features')." ; - :kb-article """## References -Wikipedia. (n.d.). Regression analysis. [Link](https://en.wikipedia.org/wiki/Regression_analysis)""" . - -:RegressionAnalysisLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Regression Analysis Learning" ; - rdfs:subClassOf :SupervisedLearning ; - :d3fend-id "D3A-RAL" ; - :definition "Regression is used to understand the relationship between dependent and independent variables which is then used to make projections, such as for sales revenue for a given business." ; - :kb-article """## References -Supervised Learning. IBM. [Link](https://www.ibm.com/topics/supervised-learning).""" . - -:ReinforcementLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Reinforcement Learning" ; - rdfs:subClassOf :MachineLearning ; - :d3fend-id "D3A-RL" ; - :definition "Reinforcement Learning is a subjugate technique of machine learning that uses feedback to reinforce good or valid rules and lessen the reliance of bad or ineffective rules" ; - :kb-article """## References -Reinforcement learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Reinforcement_learning).""" . - -:ReissueCredential a owl:Class, - owl:NamedIndividual, - :ReissueCredential ; - rdfs:label "Reissue Credential" ; - rdfs:subClassOf :RestoreAccess, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :Credential ] ; - :d3fend-id "D3-RIC" ; - :definition "Issue a new credential to a user which supercedes their old credential." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:Relational-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Relational-based Transfer Learning" ; - rdfs:subClassOf :HomogenousTransferLearning ; - :d3fend-id "D3A-RBTL" ; - :definition "Relational-based Transfer Learning is a subfield of machine learning where knowledge and patterns learned from one domain, characterized by relational and structured data, are transferred to enhance the learning of another related domain. This approach leverages shared concepts, relations, and structures across domains, taking advantage of the rich semantic knowledge within relational data to improve learning performance in the target task." ; - :kb-article """## References -V7 Labs. (n.d.). Transfer Learning Guide. [Link](https://www.v7labs.com/blog/transfer-learning-guide#:~:text=Relational%2Dbased%20transfer%20learning%20approaches,domain%20to%20the%20target%20domain).""" . - -:RelayPatternAnalysis a owl:Class, - owl:NamedIndividual, - :RelayPatternAnalysis ; - rdfs:label "Relay Pattern Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :OutboundInternetNetworkTraffic ] ; - :d3fend-id "D3-RPA" ; - :definition "The detection of an internal host relaying traffic between the internal network and the external network." ; - :kb-article """## How it works -A relay may use a variety of proxying, forwarding, or routing technologies to bridge a protected network with an external network. A defensive analytic to detect a relay network may compare the network sessions among multiple hosts. Hosts which have nearly similar network statistics may be part of a relay network. The statistics may include number of bytes sent to and from, time of session initiation, packet size, or packet arrival time data. - -## Considerations - -Complex intranet VPNs or routing encapsulation may affect the detection analytics. In addition, unwanted packets might not be forwarded, and additional packets may be added at the relay, further complicating detection.""" ; - :kb-reference :Reference-MaliciousRelayDetectionOnNetworks_VECTRANETWORKSInc ; - :synonym "Relay Network Detection" . - -:RemoteAttacker a owl:Class ; - rdfs:label "Remote Attacker" ; - rdfs:subClassOf :Attacker ; - :definition "An attacker who exploits systems without being physically present near the target, often over the internet." . - -:RemoteAuthenticationService a owl:Class ; - rdfs:label "Remote Authentication Service" ; - rdfs:subClassOf :AuthenticationService, - :NetworkService ; - :definition "A remote authentication service provides for the authentication of a user across a network (i.e., remotely)." . - -:RemoteAuthorizationService a owl:Class ; - rdfs:label "Remote Authorization Service" ; - rdfs:subClassOf :AuthorizationService ; - :definition "A remote authorization service provides for the authorization of a user across a network (i.e., remotely)." . - -:RemoteCommand a owl:Class ; - rdfs:label "Remote Command" ; - rdfs:subClassOf :Command ; - :definition "A remote command is an instruction or set of instructions issued from a geographically or logically distant location to control, configure, or elicit a response from a target system, device, or entity. The execution of a remote command does not require direct physical interaction with the target; instead, it relies on a communication link to transmit the instruction and receive any resulting feedback or data." . - -:RemoteControlCommand a owl:Class ; - rdfs:label "Remote Control Command" ; - rdfs:subClassOf :RemoteCommand ; - :definition "A remote command that is intended to control the recipient computer or system." ; - :synonym "Telecommand" . - -:RemoteDatabaseQuery a owl:Class ; - rdfs:label "Remote Database Query" ; - rdfs:subClassOf :DatabaseQuery, - :RemoteCommand ; - :definition "A remote query session enabling a user to make an SQL, SPARQL, or similar query over the network from one host to another." ; - rdfs:seeAlso . - -:RemoteFileAccessMediation a owl:Class, - owl:NamedIndividual, - :RemoteFileAccessMediation ; - rdfs:label "Remote File Access Mediation" ; - rdfs:subClassOf :NetworkResourceAccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-RFAM" ; - :definition "Remote file access mediation is the process of managing and securing access to file systems over a network to ensure that only authorized users or processes can interact with remote files." ; - :kb-article """## How it works - -Remote File Access Mediation focuses on controlling how users or processes access file systems from remote locations. This involves ensuring secure connections, often through protocols like SFTP or SMB, and enforcing permissions to prevent unauthorized access or data breaches. Examples of enforcement areas include accessing shared drives or cloud storage from remote offices or home networks.""" ; - :kb-reference :Reference-NIST-Special-Publication-800-53-Revision-5 ; - :synonym "File Share Access Mediation" . - -:RemoteFirmwareUpdateMonitoring a owl:Class, - owl:NamedIndividual, - :RemoteFirmwareUpdateMonitoring ; - rdfs:label "Remote Firmware Update Monitoring" ; - rdfs:subClassOf :ApplicationProtocolCommandAnalysis, - [ a owl:Restriction ; - owl:onProperty :detects ; - owl:someValuesFrom :OTDeviceFirmwareCommand ], - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :OTNetworkTraffic ] ; - :d3fend-id "D3-RFUM" ; - :definition "Monitoring of remote firmware update commands to identify unauthorized software installations." ; - :kb-article """## How it works -By deploying sensors within the OT environment to passively monitor network traffic, tools can leverage deep packet inspection to identify protocol-specific commands and generate logs of relevant firmware activity. Additionally, these tools may incorporate behavioral and signature-based analysis to enhance detection and alerting capabilities.""" ; - :kb-reference :Reference-MethodForDetectingAnomaliesInTimeSeriesDataProducedByDevicesOfAnInfrastructureInANetwork ; - rdfs:seeAlso . - -:RemoteLoginSession a owl:Class ; - rdfs:label "Remote Login Session" ; - rdfs:subClassOf :NetworkSession ; - :definition "A remote login session is a login session where a client has logged in from their local host machine to a server via a network." . - -:RemoteProcedureCall a owl:Class ; - rdfs:label "Remote Procedure Call" ; - rdfs:subClassOf :RemoteCommand ; - rdfs:isDefinedBy ; - :definition "In distributed computing a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in another address space (commonly on another computer on a shared network), which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client-server interaction (caller is client, executor is server), typically implemented via a request-response message-passing system. The object-oriented programming analog is remote method invocation (RMI). The RPC model implies a level of location transparency." ; - rdfs:seeAlso . - -:RemoteResource a owl:Class ; - rdfs:label "Remote Resource" ; - rdfs:subClassOf :Resource ; - :definition "In computing, a remote resource is a computer resource made available from one host to other hosts on a computer network. It is a device or piece of information on a computer that can be remotely accessed from another computer, typically via a local area network or an enterprise intranet." ; - rdfs:seeAlso :NetworkResource . - -:RemoteSession a owl:Class ; - rdfs:label "Remote Session" ; - rdfs:subClassOf :NetworkSession ; - :definition "A remote login session is a login session where a client has logged in from their local host machine to a server via a network." . - -:RemoteShellCommand a owl:Class ; - rdfs:label "Remote Shell Command" ; - rdfs:subClassOf :RemoteCommand ; - :definition "A remote shell command is a command sent from one computer to another to be executed on the remote computer. One example of this, is through a command-line interface (CLI) like using Invoke-Command from PowerShell or a command sent through an ssh session. This class generalizes to all means of sending a command through an established protocol to control capabilities on a remote computer." ; - rdfs:seeAlso . - -:RemoteTerminalSession a owl:Class ; - rdfs:label "Remote Terminal Session" ; - rdfs:subClassOf :NetworkSession ; - :definition "A remote terminal session is a session that provides a user access from one host to another host via a terminal." . - -:RemoteTerminalSessionDetection a owl:Class, - owl:NamedIndividual, - :RemoteTerminalSessionDetection ; - rdfs:label "Remote Terminal Session Detection" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :NetworkTraffic ] ; - :d3fend-id "D3-RTSD" ; - :definition "Detection of an unauthorized remote live terminal console session by examining network traffic to a network host." ; - :kb-article """## How it works -An external attacker takes remote control of a host inside a company or organization's network and manually directs offensive techniques. Nonstandard terminal sessions and abnormal behaviors are analyzed in this technique. Abnormal behavior detection includes analysis of user input patterns in the real-time session, keyboard output and packet inspection. - -### Network Traffic Inspection -Network traffic from internal hosts is the main concern and focus for the traffic inspection. The network traffic is collected into inspection groups. The groups of traffic are assembled into distinct pair flows (outbound/inbound) and the pair flows are further divided into sessions. Only sessions originated inside of the network are considered for the inspection. Traffic inspection includes analysis to determine if a human is involved in the session exchanges. Time-based statistics are captured for each session being analyzed by the detection engine. - -### Algorithm Analysis Description -Analysis algorithms look for patterns in the network traffic captured from the session data. A detection engine groups the session traffic data, between the hosts, into rapid exchange instances. Analysis of rapid exchange traffic patterns can lead to the discovery of abnormal behavior which is indicative of a compromised internal host. The analysis algorithms look for patterns in the traffic which correlate to known activity (e.g., relay attacks, bot activity, bitcoin mining). Some metrics used during inspection include the following. - -* Number of rapid-exchange instances -* Time interval between packets -* Fixed cadence of traffic -* Rhythm and direction of the initiation of instances -* Volume of data flowing from internal to external controlling host -* Data transfer characteristics -* Variability in length of silent periods - -## Considerations -* Full packet capture is required which can be process intensive to analyze -* Attackers that move low and slow may blend in with existing traffic resulting in false negatives""" ; - :kb-reference :Reference-MethodAndSystemForDetectingExternalControlOfCompromisedHosts_VECTRANETWORKSInc, - :Reference-RDPConnectionDetection_MITRE, - :Reference-RemoteDesktopLogon_MITRE . - -:RemovableMediaDevice a owl:Class ; - rdfs:label "Removable Media Device" ; - rdfs:subClassOf :HardwareDevice ; - :definition "A removable media device is a hardware device used for computer storage and that is designed to be inserted and removed from the system. It is distinct from other removable media in that all the hardware required to read the data are built into the device. So USB flash drives and external hard drives are removable media devices, whereas tapes and disks are not, as they require additional hardware to perform read/write operations." ; - rdfs:seeAlso . - -:RemoveUserFromGroupEvent a owl:Class ; - rdfs:label "Remove User from Group Event" ; - rdfs:subClassOf :GroupManagementEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :UserAccount ], - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :AddUserToGroupEvent ] ; - :definition "An event where a user is removed from a group, revoking the permissions and privileges associated with the group from the user." . - -:Repository a owl:Class ; - rdfs:label "Repository" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "A centralized digital storage location where code, files, and related resources are systematically organized, managed, and maintained." . - -:ResamplingEnsemble a owl:Class, - owl:NamedIndividual ; - rdfs:label "Resampling Ensemble" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-RE" ; - :definition "In the method, the small classes are oversampled and large classes are undersampled. The resampling scale is determined by the ratio of the min class number and max class number. And multiple machine learning methods are selected to construct the ensemble" ; - :kb-article """## References -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning). - -Torgo, L. (2014). A resampling ensemble algorithm for improved accuracy. *Neurocomputing*, 134, 55-66. [Link](https://www.sciencedirect.com/science/article/pii/S0925231214007644#:~:text=A%20resampling%20ensemble%20algorithm%20is,and%20undersampling%20are%20empirically%20analyzed).""" . - -:ResidualNeuralNetwork a owl:Class, - owl:NamedIndividual ; - rdfs:label "Residual Neural Network" ; - rdfs:subClassOf :ConvolutionalNeuralNetwork ; - :d3fend-id "D3A-RNN" ; - :definition "A residual neural network (ResNet) is an artificial neural network (ANN). It is a gateless or open-gated variant of the HighwayNet, the first working very deep feedforward neural network with hundreds of layers, much deeper than previous neural networks." ; - :kb-article """## References -Wikipedia contributors. (2021, August 23). Residual neural network. In Wikipedia, The Free Encyclopedia. [Link](https://en.wikipedia.org/wiki/Residual_neural_network)""" . - -:Resource a owl:Class ; - rdfs:label "Resource" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In computing, a system resource, or simply resource, is any physical or virtual component of limited availability within a computer system. Every device connected to a computer system is a resource. Every internal system component is a resource. Virtual system resources include files (concretely file handles), network connections (concretely network sockets), and memory areas. Managing resources is referred to as resource management, and includes both preventing resource leaks (releasing a resource when a process has finished using it) and dealing with resource contention (when multiple processes wish to access a limited resource)." . - -:ResourceAccess a owl:Class ; - rdfs:label "Resource Access" ; - rdfs:subClassOf :UserAction ; - :definition "Ephemeral digital artifact comprising a request of a resource and any response from that resource." ; - rdfs:seeAlso . - -:ResourceAccessPatternAnalysis a owl:Class, - owl:NamedIndividual, - :ResourceAccessPatternAnalysis ; - rdfs:label "Resource Access Pattern Analysis" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authentication ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authorization ] ; - :d3fend-id "D3-RAPA" ; - :definition "Analyzing the resources accessed by a user to identify unauthorized activity." ; - :kb-article """## How it works -This technique analyzes a user's resource accesses by comparing the user's recent activity against a baseline activity model. Major differences between the current activity and the baseline model might indicate unauthorized activity if they are severe enough. - - -## Considerations -* Potential for false positives from anomalies that are not associated with malicious activity. -* Attackers that move low and slow may not differentiate their resource access activity behavior enough to trigger an alert.""" ; - :kb-reference , - :Reference-HostIntrusionPreventionSystemUsingSoftwareAndUserBehaviorAnalysis_SophosLtd, - :Reference-MethodAndApparatusForNetworkFraudDetectionAndRemediationThroughAnalytics_IdaptiveLLC, - :Reference-ModelingUserAccessToComputerResources_DaedalusGroupLLC, - :Reference-SystemAndMethodThereofForIdentifyingAndRespondingToSecurityIncidentsBasedOnPreemptiveForensics_PaloAltoNetworksInc . - -:ResourceDevelopmentTechnique a owl:Class ; - rdfs:label "Resource Development Technique" ; - rdfs:subClassOf :ATTACKEnterpriseTechnique, - :OffensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :TA0042 ] ; - :definition "The adversary is trying to establish resources they can use to support operations." . - -:ResourceFork a owl:Class ; - rdfs:label "Resource Fork" ; - rdfs:subClassOf :FileSection ; - rdfs:isDefinedBy ; - :definition "The resource fork is a fork or section of a file on Apple's classic Mac OS operating system, which was also carried over to the modern macOS for compatibility, used to store structured data along with the unstructured data stored within the data fork." . - -:RestorationEvent a owl:Class, - owl:NamedIndividual ; - rdfs:label "Restoration Event" ; - rdfs:subClassOf :SecurityEvent ; - :definition "An event representing actions to return a compromised system or resource to a trusted operational state, such as through backup restoration, system reinstallation, or repair." ; - :related :Restore . - -:Restore a :DefensiveTactic, - owl:Class, - owl:NamedIndividual ; - rdfs:label "Restore" ; - rdfs:subClassOf :DefensiveTactic ; - :definition "The restore tactic is used to return the system to a better state." ; - :display-order 5 ; - :display-priority 0 . - -:RestoreAccess a owl:Class, - owl:NamedIndividual, - :RestoreAccess ; - rdfs:label "Restore Access" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Restore ] ; - :d3fend-id "D3-RA" ; - :definition "Restoring an entity's access to resources." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreConfiguration a owl:Class, - owl:NamedIndividual, - :RestoreConfiguration ; - rdfs:label "Restore Configuration" ; - rdfs:subClassOf :RestoreObject, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :ConfigurationResource ] ; - :d3fend-id "D3-RC" ; - :definition "Restoring an software configuration." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreDatabase a owl:Class, - owl:NamedIndividual, - :RestoreDatabase ; - rdfs:label "Restore Database" ; - rdfs:subClassOf :RestoreObject, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :Database ] ; - :d3fend-id "D3-RD" ; - :definition "Restoring the data in a database." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreDiskImage a owl:Class, - owl:NamedIndividual, - :RestoreDiskImage ; - rdfs:label "Restore Disk Image" ; - rdfs:subClassOf :RestoreObject ; - :d3fend-id "D3-RDI" ; - :definition "Restoring a previously captured disk image a hard drive." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreEmail a owl:Class, - owl:NamedIndividual, - :RestoreEmail ; - rdfs:label "Restore Email" ; - rdfs:subClassOf :RestoreFile, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :Email ] ; - :d3fend-id "D3-RE" ; - :definition "Restoring an email for an entity to access." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreFile a owl:Class, - owl:NamedIndividual, - :RestoreFile ; - rdfs:label "Restore File" ; - rdfs:subClassOf :RestoreObject, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :File ] ; - :d3fend-id "D3-RF" ; - :definition "Restoring a file for an entity to access." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreNetworkAccess a owl:Class, - owl:NamedIndividual, - :RestoreNetworkAccess ; - rdfs:label "Restore Network Access" ; - rdfs:subClassOf :RestoreAccess, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :Host ] ; - :d3fend-id "D3-RNA" ; - :definition "Restoring a entity's access to a computer network." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreObject a owl:Class, - owl:NamedIndividual, - :RestoreObject ; - rdfs:label "Restore Object" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Restore ] ; - :d3fend-id "D3-RO" ; - :definition "Restoring an object for an entity to access. This is the broadest class for object restoral." . - -:RestoreSoftware a owl:Class, - owl:NamedIndividual, - :RestoreSoftware ; - rdfs:label "Restore Software" ; - rdfs:subClassOf :RestoreObject, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :Software ] ; - :d3fend-id "D3-RS" ; - :definition "Restoring software to a host." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:RestoreUserAccountAccess a owl:Class, - owl:NamedIndividual, - :RestoreUserAccountAccess ; - rdfs:label "Restore User Account Access" ; - rdfs:subClassOf :RestoreAccess, - [ a owl:Restriction ; - owl:onProperty :restores ; - owl:someValuesFrom :UserAccount ] ; - :d3fend-id "D3-RUAA" ; - :definition "Restoring a user account's access to resources." ; - :kb-reference :Reference-CybersecurityIncidentandVulnerabilityResponsePlaybooks . - -:ResumeProcess a owl:Class ; - rdfs:label "Resume Process" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :resumes ; - owl:someValuesFrom :Process ] . - -:ResumeThread a owl:Class ; - rdfs:label "Resume Thread" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :resumes ; - owl:someValuesFrom :Thread ] ; - rdfs:seeAlso . - -:ReverseProxyServer a owl:Class ; - rdfs:label "Reverse Proxy Server" ; - rdfs:subClassOf :ProxyServer ; - rdfs:isDefinedBy ; - :definition "In computer networks, a reverse proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client, appearing as if they originated from the proxy server itself. Unlike a forward proxy, which is an intermediary for its associated clients to contact any server, a reverse proxy is an intermediary for its associated servers to be contacted by any client. In other words, a proxy acts on behalf of the client(s), while a reverse proxy acts on behalf of the server(s); a reverse proxy is usually an internal-facing proxy used as a 'front-end' to control and protect access to a server on a private network." . - -:ReverseResolutionIPDenylisting a owl:Class, - owl:NamedIndividual, - :ReverseResolutionIPDenylisting ; - rdfs:label "Reverse Resolution IP Denylisting" ; - rdfs:subClassOf :DNSDenylisting, - [ a owl:Restriction ; - owl:onProperty :blocks ; - owl:someValuesFrom :OutboundInternetDNSLookupTraffic ] ; - :d3fend-id "D3-RRID" ; - :definition "Blocking a reverse lookup based on the query's IP address value." ; - :kb-article """## How it works -This technique prevents a client from learning domains deemed to be potentially malicious, which would have been delivered via reverse resolution responses over the DNS protocol. - -Queries for reverse resolution requests (that is, requests where IP(s) are sent and a domain is returned) are collected, and the IP address(es) included in the query are examined. If the IP address(es) are in a range included in the blacklist, then the query is dropped. - -## Considerations -- The blacklist will have to be maintained and will need to be kept up to date with identified maintenance cycles to ensure lists are not stale. -- DNS query traffic can be transmitted over many different protocols, which presents a challenge to implementing methods to extract all DNS query IP address value(s). - - DNS has historically used UDP port 53, with TCP port 53 instead used for responses over 512 bytes or after a lack of response over UDP. - - Usage of new protocols to provide confidentiality for DNS traffic, such as DoH (DNS over HTTPS) and DoT (DNS over TLS), complicates collection of the IP address(es) in DNS queries. These protocols have often been enabled in browser settings transparently after a browser update, with DNS queries proxied over one of these cryptographic protocols through a specified host.""" ; - :kb-reference :Reference-UseDNSPolicyForApplyingFiltersOnDNSQueries ; - :synonym "Reverse Resolution IP Blacklisting" . - -:RevokePrivilegesFromGroupEvent a owl:Class ; - rdfs:label "Revoke Privileges from Group Event" ; - rdfs:subClassOf :GroupManagementEvent, - :PermissionRevokingEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :AssignPrivilegesToGroupEvent ] ; - :definition "An event where specific privileges or rights are removed from a group, restricting its members from performing actions or accessing resources previously allowed by those privileges." . - -:RFShielding a owl:Class, - owl:NamedIndividual, - :RFShielding ; - rdfs:label "RF Shielding" ; - rdfs:subClassOf :PlatformHardening ; - :d3fend-id "D3-RFS" ; - :definition "Adding physical barriers to a platform to prevent undesired radio interference." ; - :kb-reference :Reference-PrivacyAndSecuritySystemsAndMethodsOfUse, - :Reference-Technical_Specifications_for_Construction_and_Management_of_Sensitive_Compartmented_Information_Facilities . - -:ROM a owl:Class ; - rdfs:label "ROM" ; - rdfs:subClassOf :PrimaryStorage ; - rdfs:isDefinedBy ; - :definition "Read-only memory (ROM) is a type of non-volatile memory used in computers and other electronic devices. Data stored in ROM cannot be electronically modified after the manufacture of the memory device. Read-only memory is useful for storing software that is rarely changed during the life of the system, also known as firmware." ; - :synonym "Read-only Memory" . - -:Router a owl:Class ; - rdfs:label "Router" ; - rdfs:subClassOf :ComputerNetworkNode ; - rdfs:isDefinedBy ; - :definition "A router is a networking device that forwards data packets between computer networks. Routers perform the traffic directing functions on the Internet. Data sent through the internet, such as a web page or email, is in the form of data packets. A packet is typically forwarded from one router to another router through the networks that constitute an internetwork (e.g. the Internet) until it reaches its destination node." . - -:RoutingAccessMediation a owl:Class, - owl:NamedIndividual, - :RoutingAccessMediation ; - rdfs:label "Routing Access Mediation" ; - rdfs:subClassOf :NetworkAccessMediation, - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Network ] ; - :d3fend-id "D3-RAM" ; - :definition "Routing access mediation is a network security approach that manages and controls access at the network layer using VPNs, tunneling protocols, firewall rules, and traffic inspection to ensure secure and efficient data routing." ; - :kb-article """## How it works - -Routing Access Mediation is a network security strategy focused on managing and controlling access at the network layer. It includes the use of VPNs for secure remote access, tunneling protocols for encapsulating data, firewall rules for filtering traffic, and advanced inspection techniques like Cisco's Context-Based Access Control (CBAC) to monitor and regulate data flow. This approach ensures secure and efficient routing of data across networks, protecting against unauthorized access and enhancing overall network security.""" ; - :kb-reference :Reference-WhatIsNetworkAccessControl ; - rdfs:seeAlso . - -:RPCNetworkTraffic a owl:Class ; - rdfs:label "RPC Network Traffic" ; - rdfs:subClassOf :NetworkTraffic ; - :definition "RPC network traffic is network traffic related to remote procedure calls between network nodes..This includes only network traffic conforming to a standard RPC protocol; not custom protocols." . - -:RPCTrafficAnalysis a owl:Class, - owl:NamedIndividual, - :RPCTrafficAnalysis ; - rdfs:label "RPC Traffic Analysis" ; - rdfs:subClassOf :NetworkTrafficAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :RPCNetworkTraffic ] ; - :d3fend-id "D3-RTA" ; - :definition "Monitoring the activity of remote procedure calls in communication traffic to establish standard protocol operations and potential attacker activities." ; - :kb-article """## How it works -A remote procedure call (RPC) enables one computer to execute a specific function on another computer, as if it were a local application process. There are numerous RPC specifications and implementations. RPC capabilities can be abused by attackers in order to achieve a variety of tactical objectives including execution, persistence, initial access, and more. RPC proxies may be used to collect and store RPC traffic. RPCs can occur over network sockets or named pipes. - -Analytics look for unauthorized behavior such as: - -* Processes being launched or scheduled remotely -* System configurations being changed remotely -* Unauthorized file read activity - -Example RPC Protocols: - -* DCE/RPC -* CORBA -* Open Network Computing Remote Procedure Call -* D-Bus -* XML-RPC -* JSON-RPC -* SOAP -* Apache Thrift - -## Considerations -* RPC is widely used in enterprise environments, and significant data filtering may be required in large environments to enable analytic processing. -* RPC traffic may occur over a pipe, or within a host over loopback interface, thus making network collection difficult.""" ; - :kb-reference :Reference-CAR-2014-05-001%3ARPCActivity_MITRE, - :Reference-CAR-2014-11-007-RemoteWindowsManagementInstrumentation_WMI_OverRPC_MITRE, - :Reference-CreateRemoteProcessViaWMIC_MITRE_Other, - :Reference-RemotelyLaunchedExecutablesViaServices_MITRE, - :Reference-RemotelyLaunchedExecutablesViaWMI_MITRE, - :Reference-RemotelyScheduledTasksViaSchtasks_MITRE, - :Reference-RPCCallInterception_CrowdstrikeInc, - :Reference-SMBWriteRequest-NamedPipes_MITRE ; - :synonym "RPC Protocol Analysis" . - -:RTSPServer a owl:Class ; - rdfs:label "RTSP Server" ; - rdfs:subClassOf :NetworkAudioVisualStreamingResource ; - :definition "A streaming server that utilizes the real-time streaming protocol." . - -:RuntimeVariable a owl:Class ; - rdfs:label "Runtime Variable" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A runtime variable is an abstract storage location paired with an associated symbolic name, which contains some known or unknown quantity of data or object referred to as a value, which can change during the execution of a computer program." ; - rdfs:seeAlso . - -:SARSA a owl:Class, - owl:NamedIndividual ; - rdfs:label "SARSA" ; - rdfs:subClassOf :Model-freeReinforcementLearning ; - rdfs:isDefinedBy ; - :d3fend-id "D3A-SAR" ; - :definition "State-action-reward-state-action (SARSA) is an algorithm for learning a Markov decision process policy, used in the reinforcement learning area of machine learning." ; - :kb-article """## References -State-action-reward-state-action. Wikipedia. [Link](https://en.wikipedia.org/wiki/State%E2%80%93action%E2%80%93reward%E2%80%93state%E2%80%93action).""" . - -:SavedInstructionPointer a owl:Class ; - rdfs:label "Saved Instruction Pointer" ; - rdfs:subClassOf :Pointer, - :StackComponent ; - :definition "A saved instruction pointer points to the instruction that generated an exception (trap or fault)." ; - rdfs:seeAlso . - -:SaveRegister a owl:Class ; - rdfs:label "Save Registers" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :copies ; - owl:someValuesFrom :ProcessorRegister ] . - -:ScheduledJob a owl:Class, - owl:NamedIndividual ; - rdfs:label "Scheduled Job" ; - rdfs:subClassOf :OperatingSystemProcess, - [ a owl:Restriction ; - owl:onProperty :contained-by ; - owl:someValuesFrom :JobSchedule ], - [ a owl:Restriction ; - owl:onProperty :created-by ; - owl:someValuesFrom :JobSchedulerSoftware ], - [ a owl:Restriction ; - owl:onProperty :modified-by ; - owl:someValuesFrom :JobSchedulerSoftware ] ; - :definition "A task scheduler process is an operating system process that executes scheduled tasks (time-scheduling in the sense of wall clock time; not operating system scheduling of processes for multitasking)." ; - rdfs:seeAlso , - , - , - ; - :synonym "Scheduled Task", - "Task Scheduler Process" . - -:ScheduledJobAnalysis a owl:Class, - owl:NamedIndividual, - :ScheduledJobAnalysis ; - rdfs:label "Scheduled Job Analysis" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :JobSchedule ] ; - :d3fend-id "D3-SJA" ; - :definition "Analysis of source files, processes, destination files, or destination servers associated with a scheduled job to detect unauthorized use of job scheduling." ; - :kb-article """## How it works -Scheduled job execution can be utilized by adversaries for the purpose of persistence, conducting remote execution, or gaining privileges. Details of a scheduled job such as associated source files, processes, destination files, or destination servers are first identified and analyzed and then compared against an anti-malware signature database, whitelist, or reputation server. For example, a file associated with a scheduled job to be executed at a specified time or a remote server that is accessed as part of a scheduled task is compared against an anti-malware signature database, whitelist, or reputation server, and if a match is found, execution is denied and an alert is generated. - -In addition to traditional scheduled jobs, triggers can be set to execute a specific command after detecting a specific event in the system, such as with WMI Event Subscriptions in Windows. - -## Considerations -Jobs can be scheduled in many different and sometimes creative ways through operating system capabilities.""" ; - :kb-reference :Reference-ExecutionWithAT_MITRE, - :Reference-ExecutionWithSchtasks_MITRE, - :Reference-PreventingExecutionOfTaskScheduledMalware_McAfeeLLC ; - :synonym "Scheduled Job Execution" . - -:ScheduledJobCreationEvent a owl:Class ; - rdfs:label "Scheduled Job Creation Event" ; - rdfs:subClassOf :ScheduledJobEvent ; - :definition "An event representing the addition of a new task to the system's scheduler, defining its execution criteria and associated actions." . - -:ScheduledJobDeletionEvent a owl:Class ; - rdfs:label "Scheduled Job Deletion Event" ; - rdfs:subClassOf :ScheduledJobEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ScheduledJobCreationEvent ] ; - :definition "An event marking the removal of a scheduled task from the system, terminating its execution schedule." . - -:ScheduledJobDisableEvent a owl:Class ; - rdfs:label "Scheduled Job Disable Event" ; - rdfs:subClassOf :ScheduledJobEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ScheduledJobEnableEvent ] ; - :definition "An event where a scheduled task is deactivated, preventing further execution until re-enabled." . - -:ScheduledJobEnableEvent a owl:Class ; - rdfs:label "Scheduled Job Enable Event" ; - rdfs:subClassOf :ScheduledJobEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ScheduledJobCreationEvent ] ; - :definition "An event where a scheduled task is activated, allowing it to execute according to its defined parameters." . - -:ScheduledJobEvent a owl:Class ; - rdfs:label "Scheduled Job Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ScheduledJob ] ; - :definition "An event capturing the lifecycle or management of scheduled tasks within a system, including creation, modification, execution, or removal." ; - rdfs:seeAlso . - -:ScheduledJobStartEvent a owl:Class ; - rdfs:label "Scheduled Job Start Event" ; - rdfs:subClassOf :ScheduledJobEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ScheduledJobCreationEvent ] ; - :definition "An event indicating the execution of a scheduled task, triggered either automatically by the scheduler or manually by a user." . - -:ScheduledJobUpdateEvent a owl:Class ; - rdfs:label "Scheduled Job Update Event" ; - rdfs:subClassOf :ScheduledJobEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ScheduledJobCreationEvent ] ; - :definition "An event where an existing scheduled task is updated, altering parameters such as timing, conditions, or actions." . - -:Scheduling a owl:Class ; - rdfs:label "Scheduling" ; - rdfs:subClassOf :Planning . - -:ScriptApplicationProcess a owl:Class ; - rdfs:label "Script Application Process" ; - skos:altLabel "Script Process" ; - rdfs:subClassOf :ApplicationProcess, - [ a owl:Restriction ; - owl:onProperty :interprets ; - owl:someValuesFrom :ExecutableScript ] ; - :definition "A script application process is an application process interpreting an executable script." ; - :todo "Consider renaming simply \"Script Process\", as it might not be an \"application\" per se that is intended. Check against motivating offensive techniques and other relationships with Protege." . - -:ScriptExecutionAnalysis a owl:Class, - owl:NamedIndividual, - :ScriptExecutionAnalysis ; - rdfs:label "Script Execution Analysis" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :ScriptApplicationProcess ] ; - :d3fend-id "D3-SEA" ; - :definition "Analyzing the execution of a script to detect unauthorized user activity." ; - :kb-article """## How it works -Software installed on the host system hooks into a scripting engine to intercept commands before they are executed and block commands if they are determined to be harmful. Pattern matching is used to identify unauthorized commands or in the case of script files, a hash of the file is compared against hashes of known unauthorized script files. - -## Considerations -List of known unauthorized script files or regular expression patterns must be kept up to date to ensure detection of new threats.""" ; - :kb-reference :Reference-DetectingScript-basedMalware_CrowdstrikeInc . - -:Second-stageBootLoader a owl:Class ; - rdfs:label "Second-stage Boot Loader" ; - rdfs:subClassOf :BootLoader ; - :definition "An optional, often feature rich, second stage set of routines run in order to load the operating system." . - -:SecondaryStorage a owl:Class ; - rdfs:label "Secondary Storage" ; - rdfs:subClassOf :HardwareDevice, - :Storage ; - rdfs:isDefinedBy ; - :definition "Secondary memory (storage, hard disk) is the computer component holding information that does not need to be accessed quickly and that needs to be retained long-term." ; - rdfs:seeAlso . - -:SecurityEvent a owl:Class ; - rdfs:label "Security Event" ; - rdfs:subClassOf :DigitalEvent, - [ a owl:Restriction ; - owl:onProperty :caused-by ; - owl:someValuesFrom :DefensiveAction ] ; - :definition "An event describing occurrences related to cybersecurity, including detection, remediation, or enforcement actions. Security events provide critical insights into the state, behavior, and resilience of digital systems." . - -:SecurityToken a owl:Class ; - rdfs:label "Security Token" ; - rdfs:subClassOf :HardwareDevice, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :AccessToken ] ; - rdfs:isDefinedBy ; - :definition "Security tokens are peripheral devices used to prove one's identity electronically (as in the case of a customer trying to access their bank account). The token is used in addition to or in place of a password to prove that the customer is who they claim to be. The token acts like an electronic key to access something." . - -:SegmentAddressOffsetRandomization a owl:Class, - owl:NamedIndividual, - :SegmentAddressOffsetRandomization ; - rdfs:label "Segment Address Offset Randomization" ; - rdfs:subClassOf :ApplicationHardening, - [ a owl:Restriction ; - owl:onProperty :obfuscates ; - owl:someValuesFrom :ProcessSegment ] ; - :d3fend-id "D3-SAOR" ; - :definition "Randomizing the base (start) address of one or more segments of memory during the initialization of a process." ; - :kb-article """## How it works - -Many application exploits rely on an attacker specifying a location in memory, which points to data or code used by the attacker. If the addresses are changed each time the program is run, then it becomes more difficult for the attacker to determine the location that will contain the code they wish to run. - -Imported modules may be similarly realigned if their default memory addresses conflict with other modules, in a process known as "rebasing." Just as not all code is built for participation in ASLR, not all modules can be rebased; instead, modules must indicate whether they implement support for rebasing. Such information to relocate the executable is typically stored in the ".reloc" segment -- each of the addresses pointed to in this segment has its address increased by the amount of the offset. -(An alternative method for relocation would be to add an amount to a global variable each time -- leading to less overhead in the module load, but more for each access. Still another implementation could instead contain code to deference each changeable memory location on the fly, so that each of the references do not need to be updated. - - -## Considerations - -As the offset for each segment is constant, it is possible to guess at the value of the address given the address of another variable. Alternatively, memory pointers may be kept around, which contain the address of another variable. -Another bypass technique is known as an "egg hunt," whereby the attacker searches for a rather unique piece of the data or code in memory to determine its likely address. - -The program needs to store these addresses for the functions somewhere. In Linux, the PLT contains a "trampoline" to these addresses. If an attacker desires to jump to the start of an existing function, they can jump directly to the trampoline anyway, and may have the opportunity to provide their own stack frame to the function with a write to the stack. If they overwrite a saved stack pointer which is loaded back into memory, or execute a function, that changes the address of a stack pointer. - -If an attacker wants to inject some data into the program, for example as a parameter to a known function that is not under ASLR or a pointer to a trampoline function in the PLT, then they can repeat the data until they exceed the range of ASLR coverage, which on 32-bit systems is accomplishable in a few seconds with a heap spray. Microsoft's EMET and Windows 10 Exploit Guard can pre-allocate particular addresses that are commonly used in heap sprays. However, in many products, there does not seem to be nearly a complete coverage of such addresses, which only need to be executable and in the range of the heap; 0x0c0c0c0c is such an address that is commonly used for the x86 processor architecture, as when executed it only performs a numeric operation to a register four times.""" ; - :kb-reference :Reference-DYNAMICBASE_UseAddressSpaceLayoutRandomization_MicrosoftDocs, - :Reference-HowASLRProtectsLinuxSystemsFromBufferOverflowAttacks_NetworkWorld ; - :synonym "Address Space Layout Randomization", - "ASLR" . - -:Self-organizingMap a owl:Class, - owl:NamedIndividual ; - rdfs:label "Self-organizing Map" ; - rdfs:subClassOf :ANN-basedClustering ; - :d3fend-id "D3A-SOM" ; - :definition "A Self-Organizing Map (SOM) is a unsupervised learning model in Artificial Neural Network where the feature maps are the generated two-dimensional discretized form of an input space during the model training (based on competitive learning)" ; - :kb-article """## References -GeeksforGeeks. (n.d.). ANN - Self Organizing Neural Network (SONN). [Link](https://www.geeksforgeeks.org/ann-self-organizing-neural-network-sonn/)""" ; - :todo "May be called SONN based on citation" . - -:Semi-supervisedBoosting a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Boosting" ; - rdfs:subClassOf :Semi-supervisedWrapperMethod ; - :d3fend-id "D3A-SSB" ; - :definition "Boosting methods can be readily extended to the semi-supervised setting, by introducing pseudo-labeled data after each learning step; which gives rise to the idea of semi-supervised boosting methods. The pseudo-labeling approach of self- training and co-training can be easily extended to boosting methods. Several boosting methods such as SSMBoost, ASSEMBLE, SemiBoost, RegBoost, etc can be found which can be applied for utilizing unlabeled datasets for supervised classifiers." ; - :kb-article """## References -Jashish Shrestha. (n.d.). Beginner's Guide to Semi-Supervised Learning. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/)""" . - -:Semi-supervisedCluster-then-label a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Cluster-then-label" ; - rdfs:subClassOf :UnsupervisedPreprocessing ; - :d3fend-id "D3A-SSCTL" ; - :definition "Pre-training methods are aimed to guide the parameters of a network towards interesting regions in model space using unlabeled data, before fine-tuning the parameters with the labeled data." ; - :kb-article """## References -Jashish Shrestha. (n.d.). Beginner's Guide to Semi-Supervised Learning. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/)""" . - -:Semi-supervisedCo-training a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Co-training" ; - rdfs:subClassOf :Semi-supervisedWrapperMethod ; - :d3fend-id "D3A-SSCT" ; - :definition "Multi-view co-training involves training the classifiers in completely different views of training data. On the other hand, single-view co-training methods are generally applied as ensemble methods." ; - :kb-article """## References -Jashish Shrestha. (n.d.). Beginner's Guide to Semi-Supervised Learning. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/)""" . - -:Semi-supervisedFeatureExtraction a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Feature Extraction" ; - rdfs:subClassOf :UnsupervisedPreprocessing ; - :d3fend-id "D3A-SSFE" ; - :definition "Feature extraction refers to reducing the number of dimensions in a data point so that it is computationally feasible and effective to learn a model." ; - :kb-article """## References -Jashish Shrestha. (n.d.). Beginner's Guide to Semi-Supervised Learning. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/)""" . - -:Semi-supervisedGenerativeModelLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Generative Model Learning" ; - rdfs:subClassOf :IntrinsicallySemi-supervisedLearning ; - :d3fend-id "D3A-SSGML" ; - :definition "A Semi Supervised Machine Learning model which assume that the distributions take some particular form p(x|y,theta) parameterized by the vector. If these assumptions are incorrect, the unlabeled data may actually decrease the accuracy of the solution relative to what would have been obtained from labeled data alone. However, if the assumptions are correct, then the unlabeled data necessarily improves performance." ; - :kb-article """## References -Weak supervision. Wikipedia. [Link](https://en.wikipedia.org/wiki/Weak_supervision#Generative_models).""" . - -:Semi-supervisedInductiveLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Inductive Learning" ; - rdfs:subClassOf :Semi-SupervisedLearning ; - :d3fend-id "D3A-SSIL" ; - :definition "The goal of inductive learning is to infer the correct mapping from X to Y." ; - :kb-article """## References -Semi-Supervised Learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Semi-Supervised_Learning#Semi-supervised_learning). - -Zhou, D., & Li, M. (2005). Semi-supervised learning by higher order regularization. In Proceedings of the 43rd Annual Meeting of the Association for Computational Linguistics (ACL) (pp. 1-9). [Link](https://www.cs.sfu.ca/~anoop/papers/pdf/semisup_naacl.pdf).""" . - -:Semi-SupervisedLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-Supervised Learning" ; - rdfs:subClassOf :MachineLearning ; - :d3fend-id "D3A-SSL" ; - :definition "Semi-supervised learning is a branch of machine learning that combines a small amount of labeled data with a large amount of unlabeled data during training." ; - :kb-article """## References -Semi-Supervised Learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Semi-Supervised_Learning).""" ; - rdfs:seeAlso . - -:Semi-supervisedManifoldLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Manifold Learning" ; - rdfs:subClassOf :IntrinsicallySemi-supervisedLearning ; - :d3fend-id "D3A-SSML" ; - :definition "A version of Semi-Supervised Learning that applies the Manifold assumption that the data like approximately on a manifold of much lower dimension than the input space." ; - :kb-article """## References -Weak supervision. Wikipedia. [Link](https://en.wikipedia.org/wiki/Weak_supervision#Generative_models).""" . - -:Semi-supervisedPre-training a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Pre-training" ; - rdfs:subClassOf :UnsupervisedPreprocessing ; - :d3fend-id "D3A-SSPT" ; - :definition "Pre-training methods are aimed to guide the parameters of a network towards interesting regions in model space using unlabeled data, before fine-tuning the parameters with the labeled data" ; - :kb-article """## References -Jashish Shrestha. (n.d.). Beginner's Guide to Semi-Supervised Learning. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/)""" . - -:Semi-supervisedSelf-training a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Self-training" ; - rdfs:subClassOf :Semi-supervisedWrapperMethod ; - :d3fend-id "D3A-SSST" ; - :definition "Self-training is the procedure in which a supervised method for classification or regression is modified it to work in a semi-supervised manner, taking advantage of labeled and unlabeled data" ; - :kb-article """## References -AltexSoft. (n.d.). Semi-Supervised Learning: A Technical Guide with Python Examples. [Link](https://www.altexsoft.com/blog/semi-supervised-learning/#:~:text=One%20of%20the%20simplest%20examples,of%20labeled%20and%20unlabeled%20data.)""" . - -:Semi-supervisedTransductiveLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Transductive Learning" ; - rdfs:subClassOf :Semi-SupervisedLearning ; - :d3fend-id "D3A-SSTL" ; - :definition """The goal of transductive learning is to infer the correct labels for the given unlabeled data -x_{l+1},... ,x_{l+u} only""" ; - :kb-article """## References -Semi-Supervised Learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Semi-Supervised_Learning#Semi-supervised_learning). - -Zhou, D., & Li, M. (2005). Semi-supervised learning by higher order regularization. In Proceedings of the 43rd Annual Meeting of the Association for Computational Linguistics (ACL) (pp. 1-9). [Link](https://www.cs.sfu.ca/~anoop/papers/pdf/semisup_naacl.pdf).""" . - -:Semi-supervisedWrapperMethod a owl:Class, - owl:NamedIndividual ; - rdfs:label "Semi-supervised Wrapper Method" ; - rdfs:subClassOf :Semi-SupervisedLearning ; - :d3fend-id "D3A-SSWM" ; - :definition "The principle behind wrapper methods is that we train a model with labeled data and then generate pseudo-labels for the unlabeled data using the trained model iteratively." ; - :kb-article """## References -Jashish, M. (n.d.). Beginner's Guide to Semi-Supervised Learning. Jashish Blog. [Link](http://jashish.com.np/blog/posts/beginners-guide-to-semi-supervised-learning/).""" . - -:SenderMTAReputationAnalysis a owl:Class, - owl:NamedIndividual, - :SenderMTAReputationAnalysis ; - rdfs:label "Sender MTA Reputation Analysis" ; - rdfs:subClassOf :MessageAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Email ] ; - :d3fend-id "D3-SMRA" ; - :definition "Characterizing the reputation of mail transfer agents (MTA) to determine the security risk in emails." ; - :kb-article """## How it works -The sender message transfer agent (MTA) trust rating can be considered an indicator of the level of security risk and/or a trust level associated with sender MTAs in an email header. - -The features considered in determining the trust rating may include: - -* Length of time MTA has interacted with the enterprise -* Number of sender domains sending emails from the MTA -* Number of recipients in the enterprise the MTA sends emails to -* Number of emails received from this MTA -* Number of email replies received from this MTA - -For example, higher values for the length of time an MTA has interacted with the enterprise, or number of emails received from an MTA can result in a higher trust rating. The trust rating categorizes the sender MTA as unrated, neutral, trusted, suspicious, or malicious. - -## Considerations -Legitimate emails from a sender MTA may receive a lower trust rating over time if the sender's domain gets spoofed and is used to send unauthorized emails.""" ; - :kb-reference :Reference-SystemsAndMethodsForDetectingAnd_orHandlingTargetedAttacksInTheEmailChannel_GraphusInc . - -:SenderReputationAnalysis a owl:Class, - owl:NamedIndividual, - :SenderReputationAnalysis ; - rdfs:label "Sender Reputation Analysis" ; - rdfs:subClassOf :MessageAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Email ] ; - :d3fend-id "D3-SRA" ; - :definition "Ascertaining sender reputation based on information associated with a message (e.g. email/instant messaging)." ; - :kb-article """## How it works - -Sender trust rating can be considered an indicator of the level of security risk and/or a trust level associated with a sender. The features considered in determining the trust rating include: - -* Length of time sender has sent emails to the enterprise -* Number of recipients in the enterprise the sender interacts with -* Sender vs. enterprise originated message ratio -* Sender messages opened vs. not-opened ratio -* Number of emails received from this sender -* Number of emails replied to this sender -* Number of emails from this sender not opened -* Number of emails from this sender not opened that contain an attachment -* Number of emails from this sender not opened that contain a URL -* Number of emails sent to this sender -* Number of email replies received from this sender. - -Higher values for the number of recipients the sender has interacted with or the number of emails received from the sender, for example, results in a higher trust rating. The trust rating can categorize the sender as unrated, neutral, trusted, suspicious, or malicious. - -## Considerations -Legitimate emails from a sender may receive a lower trust rating over time if the sender's domain gets spoofed and is used to send unauthorized emails.""" ; - :kb-reference :Reference-SystemsAndMethodsForDetectingAnd_orHandlingTargetedAttacksInTheEmailChannel_GraphusInc . - -:Sensor a owl:Class ; - rdfs:label "Sensor" ; - rdfs:subClassOf :D3FENDCore, - :DigitalInformationBearer ; - :definition "In the broadest definition, a sensor is a device, module, machine, or subsystem that detects events or changes in its environment and sends the information to other electronics, frequently a computer." ; - rdfs:seeAlso . - -:SeqGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "SeqGAN" ; - rdfs:subClassOf :GenerativeAdversarialNetwork ; - :d3fend-id "D3A-SEQ" ; - :definition "Sequence Generation Framework (SeqGAN) models the data generator as a stochastic policy in reinforcement learning (RL), SeqGAN bypasses the generator differentiation problem by directly performing gradient policy update." ; - :kb-article """## References -Yu, L., Zhang, W., Wang, J., & Yu, Y. (2017). SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient. ArXiv preprint ArXiv:1609.05473. [Link](https://arxiv.org/abs/1609.05473)""" ; - :synonym "Sequence GAN" . - -:SerializationFunction a owl:Class ; - rdfs:label "Serialization Function" ; - rdfs:subClassOf :Subroutine ; - :definition "A function which has an operation that serializes data." . - -:Server a owl:Class ; - rdfs:label "Server" ; - rdfs:subClassOf :Host, - [ a owl:Restriction ; - owl:onProperty :manages ; - owl:someValuesFrom :ServiceApplicationProcess ], - [ a owl:Restriction ; - owl:onProperty :runs ; - owl:someValuesFrom :ServiceApplication ] ; - rdfs:isDefinedBy ; - :definition "In computing, a server is a piece of computer hardware or software (computer program) that provides functionality for other programs or devices, called \"clients\". This architecture is called the client-server model. Servers can provide various functionalities, often called \"services\", such as sharing data or resources among multiple clients, or performing computation for a client. A single server can serve multiple clients, and a single client can use multiple servers. A client process may run on the same device or may connect over a network to a server on a different device. Typical servers are database servers, file servers, mail servers, print servers, web servers, game servers, and application servers." . - -:ServiceAccount a owl:Class ; - rdfs:label "Service Account" ; - rdfs:subClassOf :UserAccount ; - :definition "A service account is a type of account used by an application or service to interact with the operating system." ; - :synonym "System Account" . - -:ServiceApplication a owl:Class ; - rdfs:label "Service Application" ; - rdfs:subClassOf :Application ; - :definition "An application that provides a set of software functionalities so that multiple clients who can reuse the functionality, provided they are authorized for use of the service." ; - rdfs:seeAlso , - . - -:ServiceApplicationProcess a owl:Class, - owl:NamedIndividual ; - rdfs:label "Service Application Process" ; - rdfs:subClassOf :ApplicationProcess ; - :definition "A Service Application Process performs specific tasks or provides functionality to support other processes, applications, or users." . - -:ServiceBinaryVerification a owl:Class, - owl:NamedIndividual, - :ServiceBinaryVerification ; - rdfs:label "Service Binary Verification" ; - rdfs:subClassOf :SystemFileAnalysis, - [ a owl:Restriction ; - owl:onProperty :verifies ; - owl:someValuesFrom :ServiceApplication ] ; - :d3fend-id "D3-SBV" ; - :definition "Analyzing changes in service binary files by comparing to a source of truth." ; - :kb-article """## How it works -System service applications may originate from the operating system installation or third-party applications installed with administrative privileges. These services have an entry point of some executable file-- a binary or a script. Attackers sometimes modify these executables to launch their own code. Analyzing changes in these files may uncover unauthorized activity. - -## Considerations -* These files change for legitimate reasons when the system or software updates. -* The source of truth must not be corrupted in order for this method to work.""" ; - :kb-reference :Reference-ServiceBinaryModifications_MITRE . - -:ServiceDeletionEvent a owl:Class ; - rdfs:label "Service Deletion Event" ; - rdfs:subClassOf :ApplicationDeletionEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceInstallationEvent ] ; - :definition "An event capturing the uninstallation or deregistration of a service application, ensuring it is no longer operational or available to clients." . - -:ServiceDependency a owl:Class ; - rdfs:label "Service Dependency" ; - rdfs:subClassOf :Dependency ; - :definition "A service dependency indicates a service has an activity, agent, or another service which relies on it in order to be functional." . - -:ServiceDependencyMapping a owl:Class, - owl:NamedIndividual, - :ServiceDependencyMapping ; - rdfs:label "Service Dependency Mapping" ; - rdfs:subClassOf :SystemMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :ServiceDependency ] ; - :d3fend-id "D3-SVCDM" ; - :definition "Service dependency mapping determines the services on which each given service relies." ; - :kb-article """## How it works -The organization collects and models architectural information about the services and consumers of services and maps the dependencies between the services. - -## Considerations -* Architectural design artifacts and SMEs may need to be consulted to determine if dependencies are intended or otherwise essential. -* Service dependencies for critical systems--those supporting critical organizational activities--should be prioritized for supply chain risk analysis. -* Service dependencies in cloud or microservice architectures may be discovered using distributed tracing capabilities""" ; - :kb-reference :Reference-CatiaUAFPlugin, - :Reference-TivoliApplicationDependencyDiscoverManager7_3_0DependenciesBetweenResources, - :Reference-UnifiedArchitectureFrameworkUAF ; - :synonym "Distributed Tracing" . - -:ServiceDisableEvent a owl:Class ; - rdfs:label "Service Disable Event" ; - rdfs:subClassOf :ApplicationDisableEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceEnableEvent ] ; - :definition "An event capturing the deactivation of a service application, preventing it from being started or accessed until re-enabled." . - -:ServiceEnableEvent a owl:Class ; - rdfs:label "Service Enable Event" ; - rdfs:subClassOf :ApplicationEnableEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceInstallationEvent ] ; - :definition "An event representing the activation of a service application, allowing it to start and provide its background or networked functionality." . - -:ServiceEvent a owl:Class ; - rdfs:label "Service Event" ; - rdfs:subClassOf :ApplicationEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :ServiceApplication ] ; - :definition "An event capturing the operation, configuration, or lifecycle of a service application. Services are specialized applications designed to provide reusable functionality to clients, systems, or other applications, often operating in the background or across networks." . - -:ServiceInstallationEvent a owl:Class ; - rdfs:label "Service Installation Event" ; - rdfs:subClassOf :ApplicationInstallationEvent, - :ServiceEvent ; - :definition "An event representing the installation or registration of a service application within the system, enabling it to provide background or reusable functionality." . - -:ServiceProvider a owl:Class ; - rdfs:label "Service Provider" ; - rdfs:subClassOf :Provider ; - :definition "A service provider offers delivery of intangible outputs such as expertise, support, or access to resources to individuals, organizations, or other entities." . - -:ServiceRestartEvent a owl:Class ; - rdfs:label "Service Restart Event" ; - rdfs:subClassOf :ApplicationRestartEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceStopEvent ], - [ a owl:Restriction ; - owl:onProperty :precedes ; - owl:someValuesFrom :ServiceStartEvent ] ; - :definition "An event describing the sequential stopping and starting of a service application to refresh its state, apply updates, or resolve operational issues." . - -:ServiceStartEvent a owl:Class ; - rdfs:label "Service Start Event" ; - rdfs:subClassOf :ApplicationStartEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceInstallationEvent ] ; - :definition "An event representing the initiation of a service application, transitioning it from an inactive state to an active state, enabling its background or networked operations." . - -:ServiceStopEvent a owl:Class ; - rdfs:label "Service Stop Event" ; - rdfs:subClassOf :ApplicationStopEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceStartEvent ] ; - :definition "An event capturing the cessation of a service application’s operations, transitioning it to an inactive state while ceasing its functionality to clients or dependent systems." . - -:ServiceUpdateEvent a owl:Class ; - rdfs:label "Service Update Event" ; - rdfs:subClassOf :ApplicationUpdateEvent, - :ServiceEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :ServiceInstallationEvent ] ; - :definition "An event describing changes made to a service application, such as updates, reconfigurations, or patch installations, ensuring its continued availability and functionality." . - -:Session a owl:Class ; - rdfs:label "Session" ; - rdfs:subClassOf :DigitalInformationBearer ; - rdfs:isDefinedBy ; - :definition "In computer science, in particular networking, a session is a semi-permanent interactive information interchange, also known as a dialogue, a conversation or a meeting, between two or more communicating devices, or between a computer and user (see Login session). A session is set up or established at a certain point in time, and then torn down at some later point. An established communication session may involve more than one message in each direction. A session is typically, but not always, stateful, meaning that at least one of the communicating parts needs to save information about the session history in order to be able to communicate, as opposed to stateless communication, where the communication consists of independent requests with responses." ; - rdfs:seeAlso . - -:SessionCookie a owl:Class ; - rdfs:label "Session Cookie" ; - skos:altLabel "In-memory Cookie", - "Non-persistent Cookie", - "Transient Cookie", - "Web Session Cookie" ; - rdfs:subClassOf :Credential ; - rdfs:isDefinedBy ; - :definition "A session cookie, also known as an in-memory cookie, transient cookie or non-persistent cookie, exists only in temporary memory while the user navigates the website. Web browsers normally delete session cookies when the user closes the browser. Unlike other cookies, session cookies do not have an expiration date assigned to them, which is how the browser knows to treat them as session cookies." ; - rdfs:seeAlso , - . - -:SessionDurationAnalysis a owl:Class, - owl:NamedIndividual, - :SessionDurationAnalysis ; - rdfs:label "Session Duration Analysis" ; - rdfs:subClassOf :UserBehaviorAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authentication ], - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :Authorization ] ; - :d3fend-id "D3-SDA" ; - :definition "Analyzing the duration of user sessions in order to detect unauthorized activity." ; - :kb-article """## How it works -Detecting unauthorized user sessions by comparing the duration of a user logon session with a baseline behavior model. The behavior model comprises historical user session duration times. Abnormalities between session duration and the behavior model may indicate suspicious activity. - -## Considerations -* Potential for false positives from anomalies that are not associated with malicious activity. -* Attackers may not differentiate their session duration enough to trigger an alert.""" ; - :kb-reference , - :Reference-MethodAndApparatusForNetworkFraudDetectionAndRemediationThroughAnalytics_IdaptiveLLC . - -:SessionTermination a owl:Class, - owl:NamedIndividual, - :SessionTermination ; - rdfs:label "Session Termination" ; - rdfs:subClassOf :ProcessEviction, - [ a owl:Restriction ; - owl:onProperty :deletes ; - owl:someValuesFrom :Session ] ; - :d3fend-id "D3-ST" ; - :definition "Forcefully end all active sessions associated with compromised accounts or devices." ; - :kb-article "Defined in NIST 800-53 as AC-12." ; - :kb-reference :Reference-NIST-Special-Publication-800-53A-Revision-5 . - -:SessionToken a owl:Class ; - rdfs:label "Session Token" ; - rdfs:subClassOf :AccessToken ; - rdfs:isDefinedBy ; - :definition "In computer science, a session identifier, session ID or session token is a piece of data that is used in network communications (often over HTTPS) to identify a session, a series of related message exchanges." ; - :kb-article """## How it works - -Session identifiers become necessary in cases where the communications infrastructure uses a stateless protocol such as HTTP. For example, a buyer who visits a seller's website wants to collect a number of articles in a virtual shopping cart and then finalize the shopping by going to the site's checkout page. This typically involves an ongoing communication where several webpages are requested by the client and sent back to them by the server. In such a situation, it is vital to keep track of the current state of the shopper's cart, and a session ID is one way to achieve that goal.""" ; - :synonym "Session ID", - "Session Identifier", - "Session Token" . - -:SetRegisters a owl:Class ; - rdfs:label "Set Registers" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :ProcessorRegister ] . - -:SetSystemConfigValue a owl:Class ; - rdfs:label "Set System Config Value" ; - rdfs:subClassOf :SystemConfigSystemCall, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :SystemConfigurationDatabaseRecord ] ; - rdfs:seeAlso . - -:SetThreadContext a owl:Class ; - rdfs:label "Set Thread Context" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :Thread ] ; - rdfs:seeAlso . - -:ShadowStack a owl:Class ; - rdfs:label "Shadow Stack" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :copy-of ; - owl:someValuesFrom :CallStack ] ; - rdfs:isDefinedBy ; - :definition "A shadow stack is a mechanism for protecting a procedure's stored return address, such as from a stack buffer overflow. The shadow stack itself is a second, separate stack that \"shadows\" the program call stack. In the function prologue, a function stores its return address to both the call stack and the shadow stack. In the function epilogue, a function loads the return address from both the call stack and the shadow stack, and then compares them. If the two records of the return address differ, then an attack is detected." ; - :todo "Model more completely: what manages the shadowstack, where does it reside specifically in memory." . - -:ShadowStackComparisons a owl:Class, - owl:NamedIndividual, - :ShadowStackComparisons ; - rdfs:label "Shadow Stack Comparisons" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :StackFrame ] ; - :d3fend-id "D3-SSC" ; - :definition "Comparing a call stack in system memory with a shadow call stack maintained by the processor to determine unauthorized shellcode activity." ; - :kb-article """## How it works -This technique compares the call stack stored in system memory with the shadow call stack maintained in the cache memory of the processor. Mismatches between the two are compared since a return oriented programming attack may only be able to control or spoof the call stack and not the shadow call stack. Mismatches are counted and if the number of mismatches exceeds a certain threshold it is an indication of unauthorized activity and a security response action is performed. - -## Considerations -If the threshold for detecting a stack anomaly is low, it may not detect a return-oriented attack with just one gadget, such as a return-to-libc or return-to-plt attack. Additionally, this technique may not detect JOP (Jump-oriented programming), as the return instruction is not executed.""" ; - :kb-reference :Reference-ThreatDetectionForReturnOrientedProgramming_CrowdstrikeInc . - -:SharedComputer a owl:Class ; - rdfs:label "Shared Computer" ; - rdfs:subClassOf :ClientComputer ; - :definition "A computer whose resources are intended to be shared widely." ; - rdfs:seeAlso . - -:SharedLibraryFile a owl:Class ; - rdfs:label "Shared Library File" ; - skos:altLabel "Shared Library", - "Shared Object" ; - rdfs:subClassOf :ObjectFile ; - rdfs:isDefinedBy ; - :definition "A shared library file is a file that is intended to be shared by executable files and further shared library (object) files. Modules used by a program are loaded from individual shared objects into memory at load time or runtime, rather than being copied by a linker when it creates a single monolithic executable file for the program" . - -:SharedResourceAccessFunction a owl:Class ; - rdfs:label "Shared Resource Access Function" ; - rdfs:subClassOf :Subroutine, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Resource ] ; - :definition "A function which access a shared resource." . - -:ShellCommand a owl:Class ; - rdfs:label "Shell Command" ; - rdfs:subClassOf :Command, - [ a owl:Restriction ; - owl:onProperty :may-create ; - owl:someValuesFrom :Process ], - [ a owl:Restriction ; - owl:onProperty :may-execute ; - owl:someValuesFrom :ExecutableFile ], - [ a owl:Restriction ; - owl:onProperty :recorded-in ; - owl:someValuesFrom :CommandHistoryLog ] ; - rdfs:isDefinedBy ; - :definition "A shell command is a directive to some kind of command-line interface, such as a shell." . - -:Shim a owl:Class ; - rdfs:label "Shim" ; - rdfs:subClassOf :Software ; - rdfs:isDefinedBy ; - :definition "In computer programming, a shim is a small library that transparently intercepts API calls and changes the arguments passed, handles the operation itself, or redirects the operation elsewhere. Shims can be used to support an old API in a newer environment, or a new API in an older environment. Shims can also be used for running programs on different software platforms than those for which they were developed." . - -:ShimDatabase a owl:Class ; - rdfs:label "Shim Database" ; - rdfs:subClassOf :ApplicationConfigurationDatabase ; - :definition "A application configuration database that contains or points to software shims (e.g., for backward compatibility, patches, etc.)" ; - :synonym "Microsoft Shim Database File" . - -:ShortcutFile a owl:Class ; - rdfs:label "Shortcut File" ; - rdfs:subClassOf :File ; - :definition """A shortcut file, or shortcut, is a handle that allows the user to find a file or resource located in a different directory or folder from the place where the shortcut is located. - -Shortcuts, which are supported by the graphical file browsers of some operating systems, may resemble symbolic links but differ in a number of important ways. One difference is what type of software is able to follow them: - - - Symbolic links are automatically resolved by the file system. Any software program, upon accessing a symbolic link, will see the target instead, whether the program is aware of symbolic links or not. - - - Shortcuts are treated like ordinary files by the file system and by software programs that are not aware of them. Only software programs that understand shortcuts (such as the Windows shell and file browsers) treat them as references to other files. - -Another difference are the capabilities of the mechanism: - - - Microsoft Windows shortcuts normally refer to a destination by an absolute path (starting from the root directory), whereas POSIX symbolic links can refer to destinations via either an absolute or a relative path. The latter is useful if both the location and destination of the symbolic link share a common path prefix[clarification needed], but that prefix is not yet known when the symbolic link is created (e.g., in an archive file that can be unpacked anywhere). - -- Microsoft Windows application shortcuts contain additional metadata that can be associated with the destination, whereas POSIX symbolic links are just strings that will be interpreted as absolute or relative pathnames. - -- Unlike symbolic links, Windows shortcuts maintain their references to their targets even when the target is moved or renamed. Windows domain clients may subscribe to a Windows service called Distributed Link Tracking to track the changes in files and folders to which they are interested. The service maintains the integrity of shortcuts, even when files and folders are moved across the network.[14] Additionally, in Windows 9x and later, Windows shell tries to find the target of a broken shortcut before proposing to delete it.""" ; - rdfs:seeAlso , - . - -:Signal a owl:Class ; - rdfs:label "Signal" ; - rdfs:subClassOf :PhysicalArtifact, - [ a owl:Restriction ; - owl:onProperty :carries ; - owl:someValuesFrom :DigitalInformation ] ; - rdfs:isDefinedBy ; - :definition "In electronics and telecommunications, signal refers to any time-varying voltage, current, or electromagnetic wave that carries information." . - -:Simulation a owl:Class ; - rdfs:label "Simulation" ; - rdfs:subClassOf :Generation . - -:SingularValueDecomposition a owl:Class, - owl:NamedIndividual ; - rdfs:label "Singular Value Decomposition" ; - rdfs:subClassOf :DimensionReduction ; - :d3fend-id "D3A-SVD" ; - :definition "Singular Value Decomposition (SVD) is an algorithm that represents a matrix as a linear series of data and to find the set of factors that will best predict an outcome" ; - :kb-article """## References -Wikipedia. (n.d.). Singular value decomposition. [Link](https://en.wikipedia.org/wiki/Singular_value_decomposition)""" . - -:Skewness a owl:Class, - owl:NamedIndividual ; - rdfs:label "Skewness" ; - rdfs:subClassOf :DistributionProperties ; - :d3fend-id "D3A-SKE" ; - :definition "Skewness is a measure of the asymmetry of the probability distribution of a real-valued random variable about its mean. The standardized moment of a probability distribution function." ; - :kb-article """## References -Wikipedia. (n.d.). Skewness. [Link](https://en.wikipedia.org/wiki/Skewness)""" . - -:SlowSymbolicLink a owl:Class ; - rdfs:label "Slow Symbolic Link" ; - skos:altLabel "Slow Symlink" ; - rdfs:subClassOf :SymbolicLink, - :UnixLink ; - :definition "A slow symbolic link is any symbolic link on a Unix filesystem that is not a fast symbolic link; slow symlink is thus retroactively termed from fast symlink. Slow symbolic links stored the symbolic link information as data in regular files." ; - rdfs:seeAlso . - -:SMBEvent a owl:Class ; - rdfs:label "SMB Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :TCPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :FileTransferNetworkTraffic ] ; - :definition "An event involving the Server Message Block (SMB) protocol, a network file sharing protocol that allows client-server communication for accessing files, printers, and other shared network resources. SMB supports both transactional file operations and communication over reliable transport layers." ; - rdfs:seeAlso . - -:SMBFileCreateEvent a owl:Class ; - rdfs:label "SMB File Create Event" ; - rdfs:subClassOf :SMBEvent ; - :definition "An event where a file is created if it does not already exist, failing if the file is already present. This operation strictly enforces new file creation." . - -:SMBFileOpenEvent a owl:Class ; - rdfs:label "SMB File Open Event" ; - rdfs:subClassOf :SMBEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :SMBFileCreateEvent ] ; - :definition "An event where a file is opened if it exists, failing otherwise. This operation is used to access or query the existing file." . - -:SMBFileOpenIfEvent a owl:Class ; - rdfs:label "SMB File Open If Event" ; - rdfs:subClassOf :SMBEvent ; - :definition "An event where a file is opened if it exists, or created if it does not. This operation merges file creation and access behavior." . - -:SMBFileOverwriteEvent a owl:Class ; - rdfs:label "SMB File Overwrite Event" ; - rdfs:subClassOf :SMBEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :SMBFileCreateEvent ] ; - :definition "An event where a file is opened and truncated if it exists, failing if the file does not already exist. This operation is destructive and focuses on replacing the file's contents." . - -:SMBFileOverwriteIfEvent a owl:Class ; - rdfs:label "SMB File Overwrite If Event" ; - rdfs:subClassOf :SMBEvent ; - :definition "An event where a file is opened and truncated if it exists, or created otherwise. This operation combines destructive overwrite and creation behaviors." . - -:SMBFileSupersedeEvent a owl:Class ; - rdfs:label "SMB File Supersede Event" ; - rdfs:subClassOf :SMBEvent ; - :definition "An event where a file is overwritten if it exists or created if it does not. This operation combines file creation and modification semantics." . - -:Software a owl:Class ; - rdfs:label "Software" ; - rdfs:subClassOf :DigitalInformation, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :ExecutableFile ], - [ a owl:Restriction ; - owl:onProperty :implements ; - owl:someValuesFrom :Subroutine ], - [ a owl:Restriction ; - owl:onProperty :instructs ; - owl:someValuesFrom :Process ] ; - rdfs:isDefinedBy ; - :definition "Computer software, or simply software, is that part of a computer system that consists of encoded information or computer instructions, in contrast to the physical hardware from which the system is built." . - -:SoftwareArtifactServer a owl:Class ; - rdfs:label "Software Artifact Server" ; - rdfs:subClassOf :ArtifactServer ; - :definition "A software artifact server provides access to the software artifacts in a software repository. A software repository, or \"repo\" for short, is a storage location for software packages. Often a table of contents is stored, as well as metadata. Repositories group packages. Sometimes the grouping is for a programming language, such as CPAN for the Perl programming language, sometimes for an entire operating system, sometimes the license of the contents is the criteria. At client side, a package manager helps installing from and updating the repositories." ; - rdfs:seeAlso , - . - -:SoftwareDeploymentTool a owl:Class ; - rdfs:label "Software Deployment Tool" ; - rdfs:subClassOf :ServiceApplication ; - :definition "Software that coordinates the deployment process of software to systems, typically remotely." . - -:SoftwareInventory a owl:Class, - owl:NamedIndividual, - :SoftwareInventory ; - rdfs:label "Software Inventory" ; - rdfs:subClassOf :AssetInventory, - [ a owl:Restriction ; - owl:onProperty :inventories ; - owl:someValuesFrom :Software ] ; - :d3fend-id "D3-SWI" ; - :definition "Software inventorying identifies and records the software items in the organization's architecture." ; - :kb-article """## How it works -Administrators collect information on software items in their architecture using a variety of administrative and management tools that query network nodes for information. In limited cases, where such queries are not supported or provide specific information of interest, an administrator may also collect this information through network enumeration methods to determine services responding on network nodes. - -## Considerations -* Scanning and probing techniques using mapping tools can result in side effects to information technology (IT) and operational technology (OT) systems. -* An adversary conducting network enumeration may engage in activities that parallel normal software inventorying activities, but would require escalating to admin privileges for most of the operations requiting administrative tools. - -## Examples - -Application-layer discovery: - -* Simple Network Management Protocol (SNMP) collects MIB information -* Web-based Enterprise Management (WBEM) collects CIM information - * Windows Management Instrumentation (WMI) - * Windows Management Infrastructure (MI)""" ; - :kb-reference :Reference-Web-BasedEnterpriseManagement, - :Reference-Windows-Management-Infrastructure, - :Reference-Windows-Management-Instrumentation ; - :synonym "Software Discovery", - "Software Inventorying" . - -:SoftwareLibrary a owl:Class ; - rdfs:label "Software Library" ; - rdfs:subClassOf :Software, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :SoftwareLibraryFile ] ; - :definition "A software library is a collection of software components that are used to build a software product." ; - rdfs:seeAlso . - -:SoftwareLibraryFile a owl:Class ; - rdfs:label "Software Library File" ; - rdfs:subClassOf :File, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :Subroutine ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ExecutableBinary ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :ExecutableScript ] ; - :definition "A software library is a collection of software components that are used to build a software product." ; - rdfs:seeAlso . - -:SoftwarePackage a owl:Class ; - rdfs:label "Software Package" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A Software Package is a bundled collection of files, code, and metadata that provides functionality, libraries, or applications." ; - rdfs:seeAlso . - -:SoftwarePackagingTool a owl:Class ; - rdfs:label "Software Packaging Tool" ; - rdfs:subClassOf :BuildTool ; - :definition "A tool that automates the process of packaging either or both binary code and source code for use on one or more target platforms." ; - rdfs:seeAlso , - . - -:SoftwarePatch a owl:Class ; - rdfs:label "Software Patch" ; - skos:altLabel "Patch" ; - rdfs:subClassOf :Software ; - rdfs:isDefinedBy ; - :definition "A patch is a piece of software designed to update a computer program or its supporting data, to fix or improve it. This includes fixing security vulnerabilities and other bugs, with such patches usually called bugfixes or bug fixes, and improving the usability or performance. Although meant to fix problems, poorly designed patches can sometimes introduce new problems (see software regressions). In some special cases updates may knowingly break the functionality, for instance, by removing components for which the update provider is no longer licensed or disabling a device." . - -:SoftwareRepository a owl:Class ; - rdfs:label "Software Repository" ; - skos:altLabel "Package Repository" ; - rdfs:subClassOf :Repository, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :SoftwarePackage ] ; - rdfs:isDefinedBy ; - :definition "A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source or version control, or repository managers. Package managers allow automatically installing and updating repositories, sometimes called 'packages'." . - -:SoftwareUpdate a owl:Class, - owl:NamedIndividual, - :SoftwareUpdate ; - rdfs:label "Software Update" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :updates ; - owl:someValuesFrom :Software ] ; - :d3fend-id "D3-SU" ; - :definition "Replacing old software on a computer system component." ; - :kb-reference :Reference-MethodAndSystemForProvidingSoftwareUpdatesToLocalMachines . - -:SomersD a owl:Class, - owl:NamedIndividual ; - rdfs:label "Somers' D" ; - rdfs:subClassOf :RankCorrelationCoefficient ; - :d3fend-id "D3A-SD" . - -:SoundexMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Soundex Matching" ; - rdfs:subClassOf :PartialMatching ; - :d3fend-id "D3A-SM" ; - :definition "Soundex is a phonetic algorithm for indexing names by sound, as pronounced in English." ; - :kb-article """## How it works -The goal is for homophones to be encoded to the same representation so that they can be matched despite minor differences in spelling. The algorithm mainly encodes consonants; a vowel will not be encoded unless it is the first letter. Soundex is the most widely known of all phonetic algorithms (in part because it is a standard feature of popular database software. Improvements to Soundex are the basis for many modern phonetic algorithms. - -## References -1. Soundex. (2023, April 19). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Soundex)""" . - -:SourceCodeAnalyzerTool a owl:Class ; - rdfs:label "Source Code Analyzer Tool" ; - rdfs:subClassOf :StaticAnalysisTool ; - :definition "A source code analyzer tool is a static analysis tool that operates specifically on source code, but not object code." ; - rdfs:seeAlso . - -:SourceCodeHardening a owl:Class, - owl:NamedIndividual ; - rdfs:label "Source Code Hardening" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Harden ] ; - :d3fend-id "D3-SCH" ; - :definition "Hardening source code with the intention of making it more difficult to exploit and less error prone." ; - :enables :Harden . - -:SourceCodeReference a owl:Class ; - rdfs:label "Source Code Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Source Code" . - -:SPARTAThing a owl:Class ; - rdfs:label "SPARTA Thing" ; - rdfs:subClassOf :ExternalThreatModelThing . - -:SpearmansRankCorrelationCoefficient a owl:Class, - owl:NamedIndividual ; - rdfs:label "Spearman's Rank Correlation Coefficient" ; - rdfs:subClassOf :RankCorrelationCoefficient ; - :d3fend-id "D3A-SRCC" ; - :synonym "Spearman's Rho" . - -:SpecificationReference a owl:Class ; - rdfs:label "Specification Reference" ; - rdfs:subClassOf :TechniqueReference ; - :pref-label "Specification" . - -:SpectralClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Spectral Clustering" ; - rdfs:subClassOf :Graph-basedClustering ; - :d3fend-id "D3A-SC" ; - :definition "Spectral clustering is a technique that identifies communities of nodes in a graph based on the edges connecting them." ; - :kb-article """## References -Towards Data Science. (n.d.). Spectral Clustering. [Link](https://towardsdatascience.com/spectral-clustering-aba2640c0d5b)""" . - -:SSHConnectionCloseEvent a owl:Class ; - rdfs:label "SSH Connection Close Event" ; - rdfs:subClassOf :NetworkConnectionCloseEvent, - :SSHEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :SSHConnectionOpenEvent ] ; - :definition "An event indicating the termination of an SSH connection, signaling the end of a secure session." . - -:SSHConnectionFailEvent a owl:Class ; - rdfs:label "SSH Connection Fail Event" ; - rdfs:subClassOf :NetworkConnectionFailEvent, - :SSHEvent ; - :definition "An event indicating a failure to establish an SSH connection, often due to issues such as authentication errors, network timeouts, or server unavailability." . - -:SSHConnectionOpenEvent a owl:Class ; - rdfs:label "SSH Connection Open Event" ; - rdfs:subClassOf :NetworkConnectionOpenEvent, - :SSHEvent ; - :definition "An event indicating the successful establishment of an SSH connection between a client and a server, marking the initiation of a secure session." . - -:SSHConnectionRefuseEvent a owl:Class ; - rdfs:label "SSH Connection Refuse Event" ; - rdfs:subClassOf :NetworkConnectionRefuseEvent, - :SSHEvent ; - :definition "An event indicating that an SSH connection attempt was refused, typically due to server-side restrictions or closed ports." . - -:SSHConnectionResetEvent a owl:Class ; - rdfs:label "SSH Connection Reset Event" ; - rdfs:subClassOf :NetworkConnectionResetEvent, - :SSHEvent, - [ a owl:Restriction ; - owl:onProperty :preceded-by ; - owl:someValuesFrom :SSHConnectionOpenEvent ] ; - :definition "An event indicating the abrupt termination of an SSH connection due to protocol errors, network disruptions, or administrative actions." . - -:SSHEvent a owl:Class ; - rdfs:label "SSH Event" ; - rdfs:subClassOf :ApplicationLayerEvent, - :TCPEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :SSHSession ] ; - :definition "An event involving the Secure Shell (SSH) protocol, a cryptographic network protocol designed to provide secure remote login, command execution, and data transfer. SSH facilitates encrypted communication between clients and servers, ensuring confidentiality, integrity, and authenticity." ; - rdfs:seeAlso . - -:SSHListenEvent a owl:Class ; - rdfs:label "SSH Listen Event" ; - rdfs:subClassOf :NetworkConnectionListenEvent, - :SSHEvent ; - :definition "An event indicating that an SSH server has started listening for incoming connection requests, enabling potential clients to initiate secure sessions." . - -:SSHSession a owl:Class ; - rdfs:label "SSH Session" ; - rdfs:subClassOf :RemoteSession ; - :definition "A Secure Shell Protocol (SSH) session is a session over a secure channel established using SSH to connect a client to a server and establish the remote session." ; - rdfs:seeAlso . - -:StackComponent a owl:Class ; - rdfs:label "Stack Component" ; - rdfs:subClassOf :DigitalInformationBearer ; - :definition "A stack component is any component of a call stack used for stack-based memory allocation in a running process. Examples include saved instruction pointers, stack frames, and stack frame canaries." ; - rdfs:seeAlso . - -:StackFrame a owl:Class ; - rdfs:label "Stack Frame" ; - skos:altLabel "Activation Frame", - "Activation Record" ; - rdfs:subClassOf :StackComponent, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :Pointer ], - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :StackFrameCanary ] ; - rdfs:isDefinedBy ; - :definition "A machine-dependent and application-binary-dependent (ABI-dependent) data structure containing subroutine state information including the arguments passed into the routine, the return address back to the routine's caller, and space for local variables of the routine." ; - rdfs:seeAlso . - -:StackFrameCanary a owl:Class ; - rdfs:label "Stack Frame Canary" ; - skos:altLabel "Stack Canary" ; - rdfs:subClassOf :StackComponent ; - rdfs:isDefinedBy ; - :definition "Stack canaries, named for their analogy to a canary in a coal mine, are used to detect a stack buffer overflow before execution of malicious code can occur. This method works by placing a small integer, the value of which is randomly chosen at program start, in memory just before the stack return pointer. Most buffer overflows overwrite memory from lower to higher memory addresses, so in order to overwrite the return pointer (and thus take control of the process) the canary value must also be overwritten. This value is checked to make sure it has not changed before a routine uses the return pointer on the stack. This technique can greatly increase the difficulty of exploiting a stack buffer overflow because it forces the attacker to gain control of the instruction pointer by some non-traditional means such as corrupting other important variables on the stack." . - -:StackFrameCanaryValidation a owl:Class, - owl:NamedIndividual, - :StackFrameCanaryValidation ; - rdfs:label "Stack Frame Canary Validation" ; - rdfs:subClassOf :ApplicationHardening, - [ a owl:Restriction ; - owl:onProperty :validates ; - owl:someValuesFrom :StackFrame ] ; - :d3fend-id "D3-SFCV" ; - :definition "Comparing a value stored in a stack frame with a known good value in order to prevent or detect a memory segment overwrite." ; - :kb-article """## How it works - -This defense must be applied at compile-time, or via a patch to the program binary. Stack Frame Canary Verification inserts instructions at the prologue and epilogue of desired functions. In the prologue, a canary value, typically with the same size as the register size, is stored in the system of record and on the stack. Typically, the canary is loaded to where it has a memory address just below that of the saved instruction pointer and base pointer. In the epilogue, the canary value stored on the stack and, is compared to the canary value in the system of record. If the values are different, other techniques such as those in Process Eviction might be invoked, such as Process Termination to end the current process, or Executable Blacklisting to blacklist the potentially vulnerable or malfunctioning executable. - -Stack Frame Canary Verification is commonly used to detect potential tampering of a saved register value on the stack before it has been restored. Examples of registers with values commonly saved to the stack include the instruction pointer and the base pointer. - -The canary should be stored between where the start of a buffer overrun is likely, and the data to protect, in cases where the buffer size increases it will overwrite the data to be protected. - -On most processor architectures, including x86, x64, and ARM, a "push" operation to store data to the stack grows the stack towards a lower memory address. As in these architectures, saved register values are stored to the stack at a point in time just before space is made for the local function variables, the saved register values have a higher address than that of the local function variables. Values at increasing indexes of a buffer are written to increasing memory addresses; therefore, an overwrite in the local variable buffer could overwrite saved register values, and a stack canary between these two would be useful in detecting an overwrite. - -On some other processor architectures such as the B5000, the stack grows towards increasing memory addresses, and some architectures, such as System Z and RCA1802A, stack direction can be chosen. If the stack grows towards increasing memory addresses, while this architecture inherently provides more protection against a saved register being overwritten, other data including local function variables might be overwritten. - - -## Considerations - -There are several ways that the protection provided by a canary could be rendered ineffective. - -### Performing a malicious action before the canary is checked - -If the attacker alters the memory in such a way that it performs a malicious action before the epilogue is called, then this protection will not be effective. This includes altering the logic of the program by altering the values of local variables stored on the function stack, or by causing an exception and exploiting the exception mechanism such as the SEH (Structured Exception Handling) mechanism on Windows. - -### Determining the canary value - -Determining the canary value is possible through reading memory either for the code used to check the canary, or from the stored canary value itself in a stack frame. - -### Changing the canary value - -A vulnerability such as a write-what-where condition that allows one to write data after the canary in the stack, would allow control of the value of the saved instruction pointer without needing to know the canary value.""" ; - :kb-reference :Reference-GS_BufferSecurityCheck_MicrosoftDocs, - :Reference-StackSmashingProtection_StackGuard_RedHat . - -:Stacking a owl:Class, - owl:NamedIndividual ; - rdfs:label "Stacking" ; - rdfs:subClassOf :EnsembleLearning ; - :d3fend-id "D3A-STA" ; - :definition "Stacking is a method of using the results and predictions from one layer of ML models as inputs to another layer of ML models. Stacking (sometimes called stacked generalization) involves training a model to combine the predictions of several other learning algorithms." ; - :kb-article """## References -Ensemble learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Ensemble_learning).""" . - -:StackSegment a owl:Class ; - rdfs:label "Stack Segment" ; - rdfs:subClassOf :ProcessSegment, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :StackFrame ] ; - :definition "The stack segment contains the program stack, a last-in-first-out structure, typically allocated in the higher parts of memory for the process." ; - rdfs:seeAlso , - . - -:StandaloneHoneynet a owl:Class, - owl:NamedIndividual, - :StandaloneHoneynet ; - rdfs:label "Standalone Honeynet" ; - rdfs:subClassOf :DecoyEnvironment, - [ a owl:Restriction ; - owl:onProperty :spoofs ; - owl:someValuesFrom :IntranetNetwork ] ; - :d3fend-id "D3-SHN" ; - :definition "An environment created for the purpose of attracting attackers and eliciting their behaviors that is not connected to any production enterprise systems." ; - :kb-article """## How it works -A standalone honeynet does not directly interact with the real enterprise environment. It may be located near or in some portion of the enterprise address space, but it does not interact with enterprise resources. - -## Considerations -A standalone honeynet is a lower risk to deploy compared to connected or integrated honeynets due to its isolation from the enterprise network. However, this comes at cost in loss of fidelity and realism. Significant extra effort must be made in order to make the environment look realistic.""" ; - :kb-reference :Reference-DynamicSelectionAndGenerationOfAVirtualCloneForDetonationOfSuspiciousContentWithinAHoneyNetwork_PaloAltoNetworksInc . - -:StandardDeviation a owl:Class, - owl:NamedIndividual ; - rdfs:label "Standard Deviation" ; - rdfs:subClassOf :Variability ; - :d3fend-id "D3A-SD" ; - :definition "The standard deviation is a measure of the amount of variation or dispersion of a set of values." ; - :kb-article """## References -Wikipedia. (n.d.). Standard deviation. [Link](https://en.wikipedia.org/wiki/Standard_deviation)""" ; - :synonym "SD" . - -:StartupDirectory a owl:Class ; - rdfs:label "Startup Directory" ; - rdfs:subClassOf :Directory, - :LocalResource ; - :definition "A startup directory is a directory containing executable files or links to executable files which are run when a user logs in or when a system component or service is started." . - -:StaticAnalysisTool a owl:Class ; - rdfs:label "Static Analysis Tool" ; - skos:altLabel "Static Program Analysis Tool" ; - rdfs:subClassOf :CodeAnalyzer ; - rdfs:isDefinedBy ; - :definition "A static [program] analysis tool performs an automated analysis of computer software without actually executing programs, in contrast with dynamic analysis, which is analysis performed on programs while they are executing. In most cases the analysis is performed on some version of the source code, and in the other cases, some form of the object code." ; - rdfs:seeAlso , - ; - :todo "Not sure what intended diff of Source Code Analyzer Tool and Static Analysis Tool is. At high level these are grouped. There are subtypes of analysis, but much finer grained operations/capes. Also, there ought to be a Dynamic Analysis Tool (http://dbpedia.org/resource/Dynamic_program_analysis) as part of Program Analysis as parent. Not sure what Code Analyzer parent is other than another name for Static Code Analyzer/Static Analysis Tool... or Program Analysis Tool see" . - -:StatisticalMethod a owl:Class, - owl:NamedIndividual ; - rdfs:label "Statistical Method" ; - rdfs:subClassOf :AnalyticTechnique ; - :d3fend-id "D3A-SM" ; - :definition "Building methods using the mathematical study of the likelihood and probability of events occurring based on known information and inferred by taking a limited number of samples." ; - :kb-article """## References -Wolfram MathWorld. (n.d.). Statistics. [Link](https://mathworld.wolfram.com/Statistics.html)""" . - -:Step a owl:Class ; - rdfs:label "Step" ; - rdfs:subClassOf :Plan, - [ a owl:Restriction ; - owl:onProperty :end ; - owl:someValuesFrom :Step ], - [ a owl:Restriction ; - owl:onProperty :fork ; - owl:someValuesFrom :Step ], - [ a owl:Restriction ; - owl:onProperty :may-be-associated-with ; - owl:someValuesFrom :Artifact ], - [ a owl:Restriction ; - owl:onProperty :next ; - owl:someValuesFrom :Step ] . - -:Storage a owl:Class ; - rdfs:label "Storage" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :may-contain ; - owl:someValuesFrom :FileSystem ] ; - rdfs:isDefinedBy ; - :definition "Computer data storage, often called storage or memory, is a technology consisting of computer components and recording media used to retain digital data. It is a core function and fundamental component of computers. In the Von Neumann architecture, the CPU consists of two main parts: The control unit and the arithmetic / logic unit (ALU). The former controls the flow of data between the CPU and memory, while the latter performs arithmetic and logical operations on data." ; - :synonym "Computer data storage", - "Memory" . - -:StorageDeviceEvent a owl:Class ; - rdfs:label "Storage Device Event" ; - rdfs:subClassOf :HardwareDeviceEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :SecondaryStorage ] ; - :definition "An event describing the activity, configuration, or errors of storage devices, including physical disks, SSDs, or logical partitions. These events often pertain to data availability, integrity, and storage health." . - -:StorageImage a owl:Class ; - rdfs:label "Storage Image" ; - rdfs:subClassOf :ComputingImage, - :File ; - :definition "A storage image is a complete, encapsulated representation of a storage medium or system environment. It contains all the data, files, and configurations necessary to replicate or deploy a specific system state or software setup." . - -:StorageSnapshot a owl:Class ; - rdfs:label "Storage Snapshot" ; - rdfs:subClassOf :ComputingSnapshot ; - :definition "A storage snapshot is a copy of a storage medium or system environment at a point in time." . - -:StoredProcedure a owl:Class ; - rdfs:label "Stored Procedure" ; - rdfs:subClassOf :Subroutine ; - rdfs:isDefinedBy ; - :definition "A stored procedure (also termed proc, storp, sproc, StoPro, StoredProc, StoreProc, sp, or SP) is a subroutine available to applications that access a relational database management system (RDBMS). Such procedures are stored in the database data dictionary." . - -:StringEquivalenceMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "String Equivalence Matching" ; - rdfs:subClassOf :EquivalenceMatching, - :StringPatternMatching ; - :d3fend-id "D3A-SEM" ; - :definition "String equivalence matching is a type of string pattern matching which is exact; that is, the strings being compared must have the same value for each character in their sequence and be of the same length." ; - :kb-article """## References -1. String-searching algorithm. (2023, April 8). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/String-searching_algorithm) -2. Types of Equality. (2007, March 2). In _WikiWikiWeb_. [Link](https://wiki.c2.com/?TypesOfEquality)""" . - -:StringFormatFunction a owl:Class ; - rdfs:label "String Format Function" ; - rdfs:subClassOf :Subroutine ; - :definition "A function which creates a new string based on a format specification and correspondingi specified values." . - -:StringPatternMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "String Pattern Matching" ; - rdfs:subClassOf :PatternMatching ; - :d3fend-id "D3A-SPM" ; - :definition "String pattern-matching algorithms, also known as string-matching algorithms, are an important class of string algorithms that try to find a place where one or several strings (also called patterns) are found within a larger string or text" ; - :kb-article """## How it works -A basic example of string searching is when the pattern and the searched text are arrays of elements of an alphabet (finite set) Σ. Σ may be a human language alphabet, for example, the letters A through Z and other applications may use a binary alphabet (Σ = {0,1}) or a DNA alphabet (Σ = {A,C,G,T}) in bioinformatics. - -In practice, the method of feasible string-search algorithm may be affected by the string encoding. In particular, if a variable-width encoding is in use, then it may be slower to find the Nth character, perhaps requiring time proportional to N. This may significantly slow some search algorithms. One of many possible solutions is to search for the sequence of code units instead, but doing so may produce false matches unless the encoding is specifically designed to avoid it. - -## References -1. String-searching algorithm. (2023, April 8). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/String-searching_algorithm)""" . - -:StrongPasswordPolicy a owl:Class, - owl:NamedIndividual, - :StrongPasswordPolicy ; - rdfs:label "Strong Password Policy" ; - rdfs:subClassOf :CredentialHardening, - [ a owl:Restriction ; - owl:onProperty :strengthens ; - owl:someValuesFrom :Password ] ; - :d3fend-id "D3-SPP" ; - :definition "Modifying system configuration to increase password strength." ; - :kb-article """## How it works -Password strength guidelines include increasing password length, permitting passwords that contain ASCII or Unicode characters, and requiring systems to screen new passwords against lists of commonly used or compromised passwords. -## Considerations -Extremely complex password requirements may lead users to saving passwords in text files or picking obvious passwords that meet the policy.""" ; - :kb-reference :Reference-DigitalIdentityGuidelines800-63-3, - :Reference-Testing_Metrics_for_Password_Creation_Policies_by_Attacking_Large_Sets_of_Revealed_Passwords . - -:StyleGAN a owl:Class, - owl:NamedIndividual ; - rdfs:label "StyleGAN" ; - rdfs:subClassOf :ImageSynthesisGAN ; - :d3fend-id "D3A-STY" ; - :definition "Successor to the ProGAN." ; - :kb-article """## References -Wikipedia. (n.d.). StyleGAN. [Link](https://en.wikipedia.org/wiki/StyleGAN)""" ; - :synonym "Style GAN" . - -:Subroutine a owl:Class ; - rdfs:label "Subroutine" ; - rdfs:subClassOf :Software ; - :comment "This class is intented to capture \"semantic subroutines\", thus, every subclass should imply a very specific function such as \"copy file\", \"eval\", or \"format string\"." ; - :definition "In different programming languages, a subroutine may be called a procedure, a function, a routine, a method, or a subprogram. The generic term callable unit is sometimes used." ; - rdfs:seeAlso ; - :synonym "Method", - "Semantic Subroutine", - "Software Function" . - -:SubspaceClustering a owl:Class, - owl:NamedIndividual ; - rdfs:label "Subspace Clustering" ; - rdfs:subClassOf :CorrelationClustering ; - :d3fend-id "D3A-SC" ; - :definition "Subspace clustering is an extension of traditional clustering that seeks to find clusters in different subspaces within a dataset." ; - :kb-article """## References -Parsons, L., Haque, E., & Liu, H. (2004). Subspace Clustering for High Dimensional Data: A Review. [Link](https://www.kdd.org/exploration_files/parsons.pdf)""" . - -:SubstringMatching a owl:Class, - owl:NamedIndividual ; - rdfs:label "Substring Matching" ; - rdfs:subClassOf :PartialMatching ; - :d3fend-id "D3A-SM" ; - :definition "String-searching algorithms, sometimes called string-matching algorithms, are an important class of string algorithms that try to find a place where one or several strings (also called patterns) are found within a larger string or text." ; - :kb-article """## References -1. String-searching algorithm. (2023, April 8). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/String-searching_algorithm)""" . - -:Summarizing a owl:Class ; - rdfs:label "Summarizing" ; - rdfs:subClassOf :AnalyticalPurpose . - -:SupervisedLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Supervised Learning" ; - rdfs:subClassOf :MachineLearning ; - :d3fend-id "D3A-SL" ; - :definition "Supervised learning establishes a relationship between the known input and output variables to conduct a predictive analysis." ; - :kb-article """## References -Supervised learning. Wikipedia. [Link](https://en.wikipedia.org/wiki/Supervised_learning).""" . - -:SupplyChainAttacker a owl:Class ; - rdfs:label "Supply Chain Attacker" ; - rdfs:subClassOf :Attacker, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Software ] ; - :definition "An attacker who exploits vulnerabilities in the supply chain to compromise systems or data." . - -:SupportVectorMachineClassification a owl:Class, - owl:NamedIndividual ; - rdfs:label "Support Vector Machine Classification" ; - rdfs:subClassOf :Classification ; - :d3fend-id "D3A-SVMC" ; - :definition "Support Vector Machine (SVM) is a robust classification and regression technique that maximizes the predictive accuracy of a model without overfitting the training data. SVM is particularly suited to analyzing data with very large numbers (for example, thousands) of predictor fields." ; - :kb-article """## References -About Support Vector Machine (SVM). IBM SPSS Modeler SaaS Documentation. [Link](https://www.ibm.com/docs/en/spss-modeler/saas?topic=models-about-svm&mhsrc=ibmsearch_a&mhq=support%20vector%20machine).""" . - -:SuspendProcess a owl:Class ; - rdfs:label "Suspend Process" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :suspends ; - owl:someValuesFrom :Process ] . - -:SuspendThread a owl:Class ; - rdfs:label "Suspend Thread" ; - rdfs:subClassOf :SystemCall, - [ a owl:Restriction ; - owl:onProperty :suspends ; - owl:someValuesFrom :Thread ] ; - :definition "Suspending a thread causes the thread to stop executing user-mode code." ; - rdfs:seeAlso . - -:Switch a owl:Class ; - rdfs:label "Switch" ; - skos:altLabel "Bridging Hub", - "MAC Bridge", - "Network Switch", - "Switching Hub" ; - rdfs:subClassOf :ComputerNetworkNode ; - rdfs:isDefinedBy ; - :definition "A network switch (also called switching hub, bridging hub, and by the IEEE MAC bridge) is networking hardware that connects devices on a computer network by using packet switching to receive and forward data to the destination device. A network switch is a multiport network bridge that uses MAC addresses to forward data at the data link layer (layer 2) of the OSI model. Some switches can also forward data at the network layer (layer 3) by additionally incorporating routing functionality. Such switches are commonly known as layer-3 switches or multilayer switches." . - -:SymbolicAI a owl:Class, - owl:NamedIndividual ; - rdfs:label "Symbolic AI" ; - rdfs:subClassOf :SymbolicLogic ; - :d3fend-id "D3A-SR" ; - :definition "Symbolic artificial intelligence is the term for the collection of all methods in artificial intelligence that are based on high-level symbolic (human-readable) representations of problems, logic, and search." ; - :kb-article """## How it works -Symbolic artificial intelligence is used in tools such as logic programming, production rules, semantic nets and frames, and it developed applications such as knowledge-based systems (in particular, expert systems), symbolic mathematics, automated theorem provers, ontologies, the semantic web, and automated planning and scheduling systems. The Symbolic AI paradigm led to seminal ideas in search, symbolic programming languages, agents, multi-agent systems, the semantic web, and the strengths and limitations of formal knowledge and reasoning systems. - -## References -1. Symbolic artifical intelligence. (2023, May 23). In _Wikipedia_. [Link](https://en.wikipedia.org/wiki/Symbolic_artificial_intelligence)""" ; - :synonym "Symbolic Artificial Intelligence" . - -:SymbolicLink a owl:Class ; - rdfs:label "Symbolic Link" ; - skos:altLabel "Soft Link", - "Softlink", - "Symlink" ; - rdfs:subClassOf :File, - :FileSystemLink, - [ a owl:Restriction ; - owl:onProperty :addresses ; - owl:someValuesFrom :File ] ; - rdfs:isDefinedBy ; - :definition "A symbolic link (also symlink or soft link) is a term for any file that contains a reference to another file or directory in the form of an absolute or relative path and that affects pathname resolution." . - -:SymbolicLogic a owl:Class, - owl:NamedIndividual ; - rdfs:label "Symbolic Logic" ; - rdfs:subClassOf :AnalyticTechnique ; - :d3fend-id "D3A-SL" ; - :definition "Symbolic Logic, also known as formal logic, is a branch of mathematics that uses symbolic representations for logical expressions and relationships. It provides a systematic method for examining the structure of arguments and reasoning, focusing on the relationships between propositions rather than the content of those propositions." ; - :kb-article """## How it Works - -## References -1. Symbolic Logic. (2023, June 6). In _Wolfram Mathworld_. [Link](https://mathworld.wolfram.com/SymbolicLogic.html) -2. Hughes, G. and Schagrin, M. (2023, Apr 19). Formal Logic. _Encyclopedia Brittanica_. [Link](https://www.britannica.com/topic/formal-logic) -3. Carnap, R. (1953). Introduction to Symbolic Logic and Its Applications. Dover Publications. [Link](https://archive.org/details/rudolf-carnap-introduction-to-symbolic-logic-and-its-applications/page/3/mode/2up)""" . - -:SymmetricFeature-basedTransferLearning a owl:Class, - owl:NamedIndividual ; - rdfs:label "Symmetric Feature-based Transfer Learning" ; - rdfs:subClassOf :HomogenousTransferLearning ; - :d3fend-id "D3A-SFTL" ; - :definition "Homogeneous symmetric transformation takes both the source feature space Xs and target feature space Xt and learns feature transformations as to project each onto a common subspace Xc for adaptation purposes. This derived subspace becomes a domain-invariant feature subspace to associate cross-domain data, and in effect, reduces marginal distribution differences." ; - :kb-article """## References -Day, O., & Khoshgoftaar, T.M. (2017). A survey on heterogeneous transfer learning. *Journal of Big Data, 4*(1), 29. [Link](https://doi.org/10.1186/s40537-017-0089-0).""" . - -:SymmetricKey a owl:Class ; - rdfs:label "Symmetric Key" ; - rdfs:subClassOf :CryptographicKey ; - :definition "A symmetric key is a single key used for both encryption and decryption and used with a symmetric-key algorithm. Symmetric-key algorithms are algorithms for cryptography that use the same cryptographic keys for both encryption of plaintext and decryption of ciphertext. The keys may be identical or there may be a simple transformation to go between the two keys. The keys, in practice, represent a shared secret between two or more parties that can be used to maintain a private information link. This requirement that both parties have access to the secret key is one of the main drawbacks of symmetric key encryption, in comparison to public-key encrytption (also known as asymmetric key encryption)." ; - rdfs:seeAlso . - -:System a owl:Class ; - rdfs:label "System" ; - rdfs:subClassOf :Artifact ; - rdfs:isDefinedBy ; - :definition "An artifact (instrumentality) that combines interrelated interacting artifacts designed to work as a coherent entity. [Note that not all digital artifacts are systems nor are all systems digital artifacts.]" . - -:SystemApplicationCycleCount a owl:Class ; - rdfs:label "System Application Cycle Count" ; - rdfs:subClassOf :SystemPlatformVariable ; - rdfs:comment "In most controllers this is not a default tag rather something that should be programmed." ; - :definition "A system variable that tracks the number of times the controller has completed its main program loop (scan cycle) since startup or last reset." ; - :synonym "Controller Cycle Count" . - -:SystemCall a owl:Class ; - rdfs:label "System Call" ; - rdfs:subClassOf :DigitalInformationBearer, - [ a owl:Restriction ; - owl:onProperty :executes ; - owl:someValuesFrom :Subroutine ] ; - rdfs:isDefinedBy ; - :definition "A system call is the programmatic way in which a computer program requests a service from the kernel of the operating system it is executed on. This may include hardware-related services (for example, accessing a hard disk drive), creation and execution of new processes, and communication with integral kernel services such as process scheduling. System calls provide an essential interface between a process and the operating system." ; - :synonym "syscall" . - -:SystemCallAnalysis a owl:Class, - owl:NamedIndividual, - :SystemCallAnalysis ; - rdfs:label "System Call Analysis" ; - rdfs:subClassOf :ProcessAnalysis, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :SystemCall ] ; - :d3fend-id "D3-SCA" ; - :definition "Analyzing system calls to determine whether a process is exhibiting unauthorized behavior." ; - :kb-article """## How it works - -System calls are APIs between a user application and the operating system [1]. - -By analyzing a process's use of these APIs, it is, in some cases, possible to ascertain whether a program is exhibiting unauthorized behavior, including trying to escalate its privileges. - -### Gathering System Calls -A common method to capture system calls is to use kernel APIs to hook [2] a process's system call invocations. - -The Linux system call `ptrace` tracks other system calls in a process and allows their alteration; this is made use of by GDB. `strace` utilizes `ptrace` and will print to stdout each system call invoked. Other applications record this data in local or remote databases. - -The log entry for each system call, which may reference additional information such as the date and time, and the process tree for the process which made the system call, is relayed, in real time or post-facto, to an analysis module which consults a catalog or model to determine whether the distribution matches a known-good or known-bad pattern. - - -### Analysis - -System calls are analyzed with a variety of methods. Some analytics look for specific sequences of instructions, others may apply statistical methods to identify abnormal behavior. Sequences of instructions can be abstracted into conceptually higher order user activities, for example: - -* An attacker executes many system calls in a short period of time, with several sequences which could be used to escalate privileges. -* Getting the contents from a URL, writing to a new file, and then executing the same file. -* A ransomware program which either uses a loop or creates many threads to: read a specified file, encrypt its contents, create an output file with a similar name to the original file, and delete the unencrypted original. - -## Considerations - -* Duplicative or extraneous system calls may be added to malware to defeat analytics. -* Malware could replace API hooking instructions to allow system calls to be made without being monitored. -* A model built from a training set of system calls and related data may not be updated fast enough to detect new threats. - - -[1] [Syscalls](http://man7.org/linux/man-pages/man2/syscalls.2.html) - -[2] [Hooking](http://dbpedia.org/resource/Hooking)""" ; - :kb-reference :Reference-CAR-2020-05-001%3AMiniDumpOfLSASS_MITRE, - :Reference-CAR-2021-05-011%3ACreateRemoteThreadIntoLSASS_MITRE, - :Reference-CredentialDumpingViaWindowsTaskManager_MITRE, - :Reference-DeterministicMethodForDetectingAndBlockingOfExploitsOnInterpretedCode_K2CyberSecurityInc, - :Reference-DLLInjectionViaLoadLibrary_MITRE, - :Reference-Hardware-assistedSystemAndMethodForDetectingAndAnalyzingSystemCallsMadeToAnOpertingSystemKernel_EndgameInc, - :Reference-MalwareDetectionInEventLoops_CrowdstrikeInc, - :Reference-PostSandboxMethodsAndSystemsForDetectingAndBlockingZero-dayExploitsViaApiCallValidation_K2CyberSecurityInc . - -:SystemCallEvent a owl:Class ; - rdfs:label "System Call Event" ; - rdfs:subClassOf :KernelEvent, - [ a owl:Restriction ; - owl:onProperty :has-participant ; - owl:someValuesFrom :SystemCall ] ; - :definition "An event where a user-space process requests a service or resource from the operating system kernel through a system call interface, enabling controlled interactions with hardware or kernel-level operations." . - -:SystemCallFiltering a owl:Class, - owl:NamedIndividual, - :SystemCallFiltering ; - rdfs:label "System Call Filtering" ; - skos:altLabel "Mandatory Access Control", - "System Call Mediation" ; - rdfs:subClassOf :AccessMediation, - [ a owl:Restriction ; - owl:onProperty :filters ; - owl:someValuesFrom :SystemCall ], - [ a owl:Restriction ; - owl:onProperty :isolates ; - owl:someValuesFrom :Process ] ; - :comment "previously known as D3-MAC" ; - :d3fend-id "D3-SCF" ; - :definition "Controlling access to local computer system resources with kernel-level capabilities." ; - :kb-article """## How it works -System call filtering uses a mandatory access control paradigm (that is, a non-discretionary access control) system because the rules and polices that determine access is determined by a security control authority and not distributed to local users. Access determinations are based on designed access control polices and are not based on local resource owner determinations. - -Access is typically granted by defining sets of subjects and sets of objects. Subjects are the entities requesting access and objects are the resources that subjects are trying to access. Rules and policies are defined that associate subjects and object permissions and access controls. - -### Common implementations -#### Security label access control -A fine-grained form control is to apply security labels to individual resources, including processes, and the access control decisions are against a particular resource and a given user attempting to gain access. This type of control requires that the file system has built-in support for security labels. - -Access controls are typically implemented through the use of label identifiers for every file system object. Identifier labels are applied to resources and users are assigned a similar access identifier. Users attempting to access a resource will result in the operating system performing an access control check. The access control check will compare the assigned user's credentials to that of the resource or object they are attempting to access. - -A security context is associated with resources and is used to determine assess. Typical basic access control elements include users, roles and types and together they form a security context which is the basis for the security labels. - -This type of access control is what is employed in SELinux [2]. This form of security kernel access control is considered the most flexible implementation, but it also is the most complex to deploy across the enterprise. Where multiple virtual machines (VM) are run together this type of access control is typically employed to ensure true isolation of processes and VMs. - -#### File path level controls -A less fine-grained form of mandatory access control is to apply security labels that allow for access control at the file path level. Access control is filesystem agnostic and no relabeling of resources is required. Pathname access control usually seems more natural for implementation and corresponding access audits. - -This type of system call filtering is what is employed in AppArmor [3]. AppArmor was developed to provide a simpler alternative method with much less management overhead. A simple access policy is maintained that defines path resource access rules. Access control attributes are typically associated with programs instead of users. - - -## Considerations -Some implementations of security label-based control contain complex rules set that are hard to verify and complex to maintain over time. - -Initial planning of access model and continuous monitoring of the available users, resources and object is necessary. - -## Implementations - - * Linux C-Groups, and policy engines like SELinux and AppArmor - * Windows Mandatory Integrity Control introduced in Windows Vista - - -### Citations -1. [SELinux](https://selinuxproject.org/) -2. [AppArmor](https://www.apparmor.net/)""" ; - :kb-reference :Reference-AnalysisOfTheWindowsVistaSecurityModel_SymantecCorporation, - :Reference-ArchitectureOfTransparentNetworkSecurityForApplicationContainers_NeuvectorInc, - :Reference-OverviewOfTheSeccompSandbox ; - :synonym "System Call Control" . - -:SystemConfigSystemCall a owl:Class ; - rdfs:label "System Config System Call" ; - rdfs:subClassOf :SystemCall . - -:SystemConfigurationDatabase a owl:Class ; - rdfs:label "System Configuration Database" ; - rdfs:subClassOf :Database ; - :definition "A database used to hold system configuration data." . - -:SystemConfigurationDatabaseRecord a owl:Class ; - rdfs:label "System Configuration Database Record" ; - rdfs:subClassOf :ConfigurationDatabaseRecord, - :OperatingSystemConfigurationComponent ; - :definition "A database record holding information used to configure the services, parameters, and initial settings for an operating system." . - -:SystemConfigurationInitDatabaseRecord a owl:Class ; - rdfs:label "System Configuration Init Database Record" ; - skos:altLabel "System Configuration Startup Database Record" ; - rdfs:subClassOf :SystemConfigurationDatabaseRecord, - :SystemConfigurationInitResource, - :SystemInitConfiguration ; - :definition "A database record holding information used to configure the services, parameters, and initial settings for an operating system at startup." . - -:SystemConfigurationInitResource a owl:Class ; - rdfs:label "System Configuration Init Resource" ; - skos:altLabel "System Init Resource" ; - rdfs:subClassOf :LocalResource ; - :definition "A system configuration initialization resource has information for initializing (booting) a system." . - -:SystemConfigurationPermissions a owl:Class, - owl:NamedIndividual, - :SystemConfigurationPermissions ; - rdfs:label "System Configuration Permissions" ; - rdfs:subClassOf :PlatformHardening, - [ a owl:Restriction ; - owl:onProperty :restricts ; - owl:someValuesFrom :SystemConfigurationDatabase ] ; - :d3fend-id "D3-SCP" ; - :definition "Restricting system configuration modifications to a specific user or group of users." ; - :kb-reference :Reference-HowToChangeRegistryValuesOrPermissionsFromACommandLineOrAScript ; - :todo "write kb-article" . - -:SystemDaemonMonitoring a owl:Class, - owl:NamedIndividual, - :SystemDaemonMonitoring ; - rdfs:label "System Daemon Monitoring" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :monitors ; - owl:someValuesFrom :OperatingSystemProcess ] ; - :d3fend-id "D3-SDM" ; - :definition "Tracking changes to the state or configuration of critical system level processes." ; - :kb-article """## How it works -Attackers may manipulate system settings or services to disable system logging or monitoring of security tools and events. Firewall and antivirus services are popular targets for attackers. Disabling system logs will also allow an attacker's actions to go unnoticed. Analysis of logs, registries, and process monitoring help defenders locate signs of tampering. Two possible approaches are to monitor hardened system services or to monitor registry updates for modifications to security settings.""" ; - :kb-reference :Reference-HostIntrusionPreventionSystemUsingSoftwareAndUserBehaviorAnalysis_SophosLtd, - :Reference-MethodUsingKernelModeAssistanceForTheDetectionAndRemovalOfThreatsWhichAreActivelyPreventingDetectionAndRemovalFromARunningSystem_SymantecCorporation, - :Reference-UserActivityFromStoppingWindowsDefensiveServices_MITRE . - -:SystemDependency a owl:Class ; - rdfs:label "System Dependency" ; - rdfs:subClassOf :Dependency ; - :definition "A system dependency indicates a system has an activity, agent, or another system which relies on it in order to be functional." ; - rdfs:seeAlso , - , - . - -:SystemDependencyMapping a owl:Class, - owl:NamedIndividual, - :SystemDependencyMapping ; - rdfs:label "System Dependency Mapping" ; - rdfs:subClassOf :SystemMapping, - [ a owl:Restriction ; - owl:onProperty :maps ; - owl:someValuesFrom :SystemDependency ] ; - :d3fend-id "D3-SYSDM" ; - :definition "System dependency mapping identifies and models the dependencies of system components on each other to carry out their function." ; - :kb-article """## How it works -The organization collects and models architectural information about the software, hardware, and products and maps the dependencies between systems, including each system's internal components and dependencies. - -## Considerations -* Data exchanges identified in the network mapping efforts usually indicate such dependencies, but may not be part of the intended design. -* Architectural design artifacts and SMEs may need to be consulted to determine if dependencies are intended or otherwise essential. -* System depedency mapping can identify internal dependencies of standard and pre-built systems that should be incorporated into a complete system dependency model. -* System dependencies for critical systems--those supporting critical organizational activities--should be prioritized for supply chain risk analysis. -* System dependencies should identify the integral components of a given named system and their structure to form a system. -* System dependencies with a given system may be fixed by a particular product's configuration, and leveraging external knowledge bases about dependencies available (e.g., from package managers) is essential.""" ; - :kb-reference :Reference-CatiaUAFPlugin, - :Reference-SoftwareVulnerabilityGraphDatabase, - :Reference-TivoliApplicationDependencyDiscoverManager7_3_0DependenciesBetweenResources, - :Reference-UnifiedArchitectureFrameworkUAF . - -:SystemFileAnalysis a owl:Class, - owl:NamedIndividual, - :SystemFileAnalysis ; - rdfs:label "System File Analysis" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :OperatingSystemFile ] ; - :d3fend-id "D3-SFA" ; - :definition "Monitoring system files such as authentication databases, configuration files, system logs, and system executables for modification or tampering." ; - :kb-article """## How it works -This technique ensures the integrity of system owned file resources. System files can impact the behavior below the user level. - - -## Considerations -* Need to manage the size of log file analysis. -* False positives are a concern with this technique and filtering will need to be given additional thought. -* A baseline or snapshot of file checksums should be established for future comparison.""" ; - :kb-reference :Reference-AccessPermissionModification_MITRE, - :Reference-AutorunDifferences_MITRE, - :Reference-UserActivityFromClearingEventLogs_MITRE . - -:SystemFirewallConfiguration a owl:Class ; - rdfs:label "System Firewall Configuration" ; - rdfs:subClassOf :OperatingSystemConfigurationComponent, - [ a owl:Restriction ; - owl:onProperty :configures ; - owl:someValuesFrom :Host-basedFirewall ] ; - :definition "The configuration for a individual host operating system's firewall." ; - rdfs:seeAlso ; - :todo "No SystemFirewall class specified in ontology to relate the configuration concept to... ahem." . - -:SystemFirmware a owl:Class ; - rdfs:label "System Firmware" ; - skos:altLabel "BIOS Firmware", - "UEFI Firmware" ; - rdfs:subClassOf :Firmware ; - :definition "Firmware that is installed on a computer's main board which manages the initial boot process. It can also continue to run or function after the operating system boots." . - -:SystemFirmwareVerification a owl:Class, - owl:NamedIndividual, - :SystemFirmwareVerification ; - rdfs:label "System Firmware Verification" ; - rdfs:subClassOf :FirmwareVerification, - [ a owl:Restriction ; - owl:onProperty :verifies ; - owl:someValuesFrom :SystemFirmware ] ; - :d3fend-id "D3-SFV" ; - :definition "Cryptographically verifying installed system firmware integrity." ; - :kb-article """## How it works -Cryptographic hash values are computed for system firmware. The hash values are compared against precomputed firmware hash values to determine if the firmware has been tampered with. - -When system firmware verification fails a set of predefined responses is typically invoked. The responses may direct the system to disable some devices or operations. - -## Considerations -* Requires the use of system provided security modules -* Secure hash values will need to be computed for firmware""" ; - :kb-reference :Reference-FirmwareVerificationEclypsium, - :Reference-PlatformFirmwareResiliencyGuidelines_NIST . - -:SystemInitConfigAnalysis a owl:Class, - owl:NamedIndividual, - :SystemInitConfigAnalysis ; - rdfs:label "System Init Config Analysis" ; - skos:altLabel "System Initialization Configuration Analysis" ; - rdfs:subClassOf :OperatingSystemMonitoring, - [ a owl:Restriction ; - owl:onProperty :analyzes ; - owl:someValuesFrom :SystemInitConfiguration ] ; - :d3fend-id "D3-SICA" ; - :definition "Analysis of any system process startup configuration." ; - :kb-reference :Reference-AutorunDifferences_MITRE, - :Reference-CAR-2020-09-005%3AAppInitDLLs_MITRE, - :Reference-CAR-2020-11-001%3ABootOrLogonInitializationScripts_MITRE ; - :synonym "Autorun Analysis", - "Startup Analysis" . - -:SystemInitConfiguration a owl:Class ; - rdfs:label "System Init Configuration" ; - skos:altLabel "Autoruns" ; - rdfs:subClassOf :OperatingSystemConfigurationComponent ; - :definition "System initialization configuration information is configuration information used to configure the services, parameters, and initial settings for an operating system at startup." . - -:SystemInitProcess a owl:Class ; - rdfs:label "System Init Process" ; - skos:altLabel "System Initialization Process", - "System Startup Process" ; - rdfs:subClassOf :OperatingSystemProcess ; - :definition "A system initialization process is a process that executes to initialize (boot) an operating system." ; - rdfs:seeAlso , - , - . - -:SystemInitScript a owl:Class ; - rdfs:label "System Init Script" ; - rdfs:subClassOf :ExecutableScript, - :SystemConfigurationInitResource, - :SystemInitConfiguration ; - :definition "A script used to initialize and configure elements of the system's environment, applications, services, or its operating system." . - -:SystemMapping a owl:Class, - owl:NamedIndividual, - :SystemMapping ; - rdfs:label "System Mapping" ; - rdfs:subClassOf :DefensiveTechnique, - [ a owl:Restriction ; - owl:onProperty :enables ; - owl:someValuesFrom :Model ] ; - :d3fend-id "D3-SYSM" ; - :definition "System mapping encompasses the techniques to identify the organization's systems, how they are configured and decomposed into subsystems and components, how they are dependent on one another, and where they are physically located." ; - :display-order 2 . - -:SystemPasswordDatabase a owl:Class ; - rdfs:label "System Password Database" ; - rdfs:subClassOf :PasswordDatabase ; - :definition "A password database used by a system service or process to authenticate users (e.g., Security Account Manager)" . - -:SystemPlatformVariable a owl:Class ; - rdfs:label "System Platform Variable" ; - rdfs:subClassOf :RuntimeVariable ; - :definition "Runtime variables which may consist of memory usage, internal temperature, operating mode, clock time, scan time, hardware status, etc." ; - rdfs:seeAlso , - ; - :synonym "Configuration Resource", - "System Data", - "System Properties", - "System Variable" . - -:SystemServiceSoftware a owl:Class ; - rdfs:label "System Service Software" ; - rdfs:subClassOf :Software, - [ a owl:Restriction ; - owl:onProperty :contains ; - owl:someValuesFrom :OperatingSystemFile ] ; - :definition "Software services provided as part of the operating system, typically accessed through system calls." ; - rdfs:seeAlso . - -:SystemSoftware a owl:Class ; - rdfs:label "System Software" ; - rdfs:subClassOf :Software ; - :definition "Computer software which enables operating system or platform functionality." . - -:SystemStartupDirectory a owl:Class ; - rdfs:label "System Startup Directory" ; - rdfs:subClassOf :Directory, - :SystemConfigurationInitResource, - :SystemInitConfiguration ; - :definition "A system startup directory is a directory containing executable files or links to executable files which are run when the system starts." . - -:SystemStateImage a owl:Class ; - rdfs:label "System State Image" ; - skos:altLabel "System Image" ; - rdfs:subClassOf :StorageImage ; - rdfs:isDefinedBy ; - :definition "In computing, a system image is a serialized copy of the entire state of a computer system stored in some non-volatile form, such as a binary executable file." ; - rdfs:seeAlso . - -:SystemTimeApplication a owl:Class ; - rdfs:label "System Time Application" ; - rdfs:subClassOf :UtilitySoftware ; - :definition "A system time utility is utility software that can get the system time, such as the Unix date command or Windows' Net utility." . - -:SystemUtilizationRecord a owl:Class ; - rdfs:label "System Utilization Record" ; - rdfs:subClassOf :Record ; - :definition "A system utilization record is a record for the tracking of resource utilization e.g. CPU, Disk, Network, Memory Bandwidth, GPU, or other resources for a given time period." . - -:SystemVulnerabilityAssessment a owl:Class, - owl:NamedIndividual, - :SystemVulnerabilityAssessment ; - rdfs:label "System Vulnerability Assessment" ; - rdfs:subClassOf :SystemMapping, - [ a owl:Restriction ; - owl:onProperty :evaluates ; - owl:someValuesFrom :DigitalSystem ], - [ a owl:Restriction ; - owl:onProperty :identifies ; - owl:someValuesFrom :Vulnerability ] ; - :d3fend-id "D3-SYSVA" ; - :definition "System vulnerability assessment relates all the vulnerabilities of a system's components in the context of their configuration and internal dependencies and can also include assessing risk emerging from the system's design as a whole, not just the sum of individual component vulnerabilities." ; - :kb-reference :Reference-SoftwareVulnerabilityGraphDatabase . - -:T0800 a owl:Class ; - rdfs:label "Activate Firmware Update Mode - ATTACK ICS" ; - skos:prefLabel "Activate Firmware Update Mode" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0800" ; - :definition "Adversaries may activate firmware update mode on devices to prevent expected response functions from engaging in reaction to an emergency or process malfunction. For example, devices such as protection relays may have an operation mode designed for firmware installation. This mode may halt process monitoring and related functions to allow new firmware to be loaded. A device left in update mode may be placed in an inactive holding state if no firmware is provided to it. By entering and leaving a device in this mode, the adversary may deny its usual functionalities." . - -:T0801 a owl:Class ; - rdfs:label "Monitor Process State - ATTACK ICS" ; - skos:prefLabel "Monitor Process State" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0801" ; - :definition "Adversaries may gather information about the physical process state. This information may be used to gain more information about the process itself or used as a trigger for malicious actions. The sources of process state information may vary such as, OPC tags, historian data, specific PLC block information, or network traffic." . - -:T0802 a owl:Class ; - rdfs:label "Automated Collection - ATTACK ICS" ; - skos:prefLabel "Automated Collection" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0802" ; - :definition "Adversaries may automate collection of industrial environment information using tools or scripts. This automated collection may leverage native control protocols and tools available in the control systems environment. For example, the OPC protocol may be used to enumerate and gather information. Access to a system or interface with these native protocols may allow collection and enumeration of other attached, communicating servers and devices." . - -:T0803 a owl:Class ; - rdfs:label "Block Command Message - ATTACK ICS" ; - skos:prefLabel "Block Command Message" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0803" ; - :definition "Adversaries may block a command message from reaching its intended target to prevent command execution. In OT networks, command messages are sent to provide instructions to control system devices. A blocked command message can inhibit response functions from correcting a disruption or unsafe condition. (Citation: Bonnie Zhu, Anthony Joseph, Shankar Sastry 2011) (Citation: Electricity Information Sharing and Analysis Center; SANS Industrial Control Systems March 2016)" . - -:T0804 a owl:Class ; - rdfs:label "Block Reporting Message - ATTACK ICS" ; - skos:prefLabel "Block Reporting Message" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0804" ; - :definition "Adversaries may block or prevent a reporting message from reaching its intended target. In control systems, reporting messages contain telemetry data (e.g., I/O values) pertaining to the current state of equipment and the industrial process. By blocking these reporting messages, an adversary can potentially hide their actions from an operator." . - -:T0805 a owl:Class ; - rdfs:label "Block Serial COM - ATTACK ICS" ; - skos:prefLabel "Block Serial COM" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0805" ; - :definition "Adversaries may block access to serial COM to prevent instructions or configurations from reaching target devices. Serial Communication ports (COM) allow communication with control system devices. Devices can receive command and configuration messages over such serial COM. Devices also use serial COM to send command and reporting messages. Blocking device serial COM may also block command messages and block reporting messages." . - -:T0806 a owl:Class ; - rdfs:label "Brute Force I/O - ATTACK ICS" ; - skos:prefLabel "Brute Force I/O" ; - rdfs:subClassOf :ATTACKICSImpairProcessControlTechnique ; - :attack-id "T0806" ; - :definition "Adversaries may repetitively or successively change I/O point values to perform an action. Brute Force I/O may be achieved by changing either a range of I/O point values or a single point value repeatedly to manipulate a process function. The adversary's goal and the information they have about the target environment will influence which of the options they choose. In the case of brute forcing a range of point values, the adversary may be able to achieve an impact without targeting a specific point. In the case where a single point is targeted, the adversary may be able to generate instability on the process function associated with that particular point." . - -:T0807 a owl:Class ; - rdfs:label "Command-Line Interface - ATTACK ICS" ; - skos:prefLabel "Command-Line Interface" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0807" ; - :definition "Adversaries may utilize command-line interfaces (CLIs) to interact with systems and execute commands. CLIs provide a means of interacting with computer systems and are a common feature across many types of platforms and devices within control systems environments. (Citation: Enterprise ATT&CK January 2018) Adversaries may also use CLIs to install and run new software, including malicious tools that may be installed over the course of an operation." . - -:T0808 a owl:Class ; - owl:deprecated true ; - rdfs:label "Control Device Identification - ATTACK ICS" ; - skos:prefLabel "Control Device Identification" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0808" ; - :definition "Adversaries may perform control device identification to determine the make and model of a target device. Management software and device APIs may be utilized by the adversary to gain this information. By identifying and obtaining device specifics, the adversary may be able to determine device vulnerabilities. This device information can also be used to understand device functionality and inform the decision to target the environment." . - -:T0809 a owl:Class ; - rdfs:label "Data Destruction - ATTACK ICS" ; - skos:prefLabel "Data Destruction" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0809" ; - :definition "Adversaries may perform data destruction over the course of an operation. The adversary may drop or create malware, tools, or other non-native files on a target system to accomplish this, potentially leaving behind traces of malicious activities. Such non-native files and other data may be removed over the course of an intrusion to maintain a small footprint or as a standard part of the post-intrusion cleanup process. (Citation: Enterprise ATT&CK January 2018)" . - -:T0810 a owl:Class ; - owl:deprecated true ; - rdfs:label "Data Historian Compromise - ATTACK ICS" ; - skos:prefLabel "Data Historian Compromise" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0810" ; - :definition "Adversaries may compromise and gain control of a data historian to gain a foothold into the control system environment. Access to a data historian may be used to learn stored database archival and analysis information on the control system. A dual-homed data historian may provide adversaries an interface from the IT environment to the OT environment." . - -:T0811 a owl:Class ; - rdfs:label "Data from Information Repositories - ATTACK ICS" ; - skos:prefLabel "Data from Information Repositories" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0811" ; - :definition "Adversaries may target and collect data from information repositories. This can include sensitive data such as specifications, schematics, or diagrams of control system layouts, devices, and processes. Examples of information repositories include reference databases in the process environment, as well as databases in the corporate network that might contain information about the ICS.(Citation: Cybersecurity & Infrastructure Security Agency March 2018)" . - -:T0812 a owl:Class ; - rdfs:label "Default Credentials - ATTACK ICS" ; - skos:prefLabel "Default Credentials" ; - rdfs:subClassOf :ATTACKICSLateralMovementTechnique ; - :attack-id "T0812" ; - :definition "Adversaries may leverage manufacturer or supplier set default credentials on control system devices. These default credentials may have administrative permissions and may be necessary for initial configuration of the device. It is general best practice to change the passwords for these accounts as soon as possible, but some manufacturers may have devices that have passwords or usernames that cannot be changed. (Citation: Keith Stouffer May 2015)" . - -:T0813 a owl:Class ; - rdfs:label "Denial of Control - ATTACK ICS" ; - skos:prefLabel "Denial of Control" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0813" ; - :definition "Adversaries may cause a denial of control to temporarily prevent operators and engineers from interacting with process controls. An adversary may attempt to deny process control access to cause a temporary loss of communication with the control device or to prevent operator adjustment of process controls. An affected process may still be operating during the period of control loss, but not necessarily in a desired state. (Citation: Corero) (Citation: Michael J. Assante and Robert M. Lee) (Citation: Tyson Macaulay)" . - -:T0814 a owl:Class ; - rdfs:label "Denial of Service - ATTACK ICS" ; - skos:prefLabel "Denial of Service" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0814" ; - :definition "Adversaries may perform Denial-of-Service (DoS) attacks to disrupt expected device functionality. Examples of DoS attacks include overwhelming the target device with a high volume of requests in a short time period and sending the target device a request it does not know how to handle. Disrupting device state may temporarily render it unresponsive, possibly lasting until a reboot can occur. When placed in this state, devices may be unable to send and receive requests, and may not perform expected response functions in reaction to other events in the environment." . - -:T0815 a owl:Class ; - rdfs:label "Denial of View - ATTACK ICS" ; - skos:prefLabel "Denial of View" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0815" ; - :definition "Adversaries may cause a denial of view in attempt to disrupt and prevent operator oversight on the status of an ICS environment. This may manifest itself as a temporary communication failure between a device and its control source, where the interface recovers and becomes available once the interference ceases. (Citation: Corero) (Citation: Michael J. Assante and Robert M. Lee) (Citation: Tyson Macaulay)" . - -:T0816 a owl:Class ; - rdfs:label "Device Restart/Shutdown - ATTACK ICS" ; - skos:prefLabel "Device Restart/Shutdown" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0816" ; - :definition "Adversaries may forcibly restart or shutdown a device in an ICS environment to disrupt and potentially negatively impact physical processes. Methods of device restart and shutdown exist in some devices as built-in, standard functionalities. These functionalities can be executed using interactive device web interfaces, CLIs, and network protocol commands." . - -:T0817 a owl:Class ; - rdfs:label "Drive-by Compromise - ATTACK ICS" ; - skos:prefLabel "Drive-by Compromise" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0817" ; - :definition "Adversaries may gain access to a system during a drive-by compromise, when a user visits a website as part of a regular browsing session. With this technique, the user's web browser is targeted and exploited simply by visiting the compromised website." . - -:T0818 a owl:Class ; - owl:deprecated true ; - rdfs:label "Engineering Workstation Compromise - ATTACK ICS" ; - skos:prefLabel "Engineering Workstation Compromise" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0818" ; - :definition "Adversaries will compromise and gain control of an engineering workstation for Initial Access into the control system environment. Access to an engineering workstation may occur through or physical means, such as a Valid Accounts with privileged access or infection by removable media. A dual-homed engineering workstation may allow the adversary access into multiple networks. For example, unsegregated process control, safety system, or information system networks. An Engineering Workstation is designed as a reliable computing platform that configures, maintains, and diagnoses control system equipment and applications. Compromise of an engineering workstation may provide access to, and control of, other control system applications and equipment. In the Maroochy attack, the adversary utilized a computer, possibly stolen, with proprietary engineering software to communicate with a wastewater system." . - -:T0819 a owl:Class ; - rdfs:label "Exploit Public-Facing Application - ATTACK ICS" ; - skos:prefLabel "Exploit Public-Facing Application" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0819" ; - :definition "Adversaries may leverage weaknesses to exploit internet-facing software for initial access into an industrial network. Internet-facing software may be user applications, underlying networking implementations, an assets operating system, weak defenses, etc. Targets of this technique may be intentionally exposed for the purpose of remote management and visibility." . - -:T0820 a owl:Class ; - rdfs:label "Exploitation for Evasion - ATTACK ICS" ; - skos:prefLabel "Exploitation for Evasion" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique ; - :attack-id "T0820" ; - :definition "Adversaries may exploit a software vulnerability to take advantage of a programming error in a program, service, or within the operating system software or kernel itself to evade detection. Vulnerabilities may exist in software that can be used to disable or circumvent security features." . - -:T0821 a owl:Class ; - rdfs:label "Modify Controller Tasking - ATTACK ICS" ; - skos:prefLabel "Modify Controller Tasking" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0821" ; - :definition "Adversaries may modify the tasking of a controller to allow for the execution of their own programs. This can allow an adversary to manipulate the execution flow and behavior of a controller." . - -:T0822 a owl:Class ; - rdfs:label "External Remote Services - ATTACK ICS" ; - skos:prefLabel "External Remote Services" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0822" ; - :definition "Adversaries may leverage external remote services as a point of initial access into your network. These services allow users to connect to internal network resources from external locations. Examples are VPNs, Citrix, and other access mechanisms. Remote service gateways often manage connections and credential authentication for these services. (Citation: Daniel Oakley, Travis Smith, Tripwire)" . - -:T0823 a owl:Class ; - rdfs:label "Graphical User Interface - ATTACK ICS" ; - skos:prefLabel "Graphical User Interface" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0823" ; - :definition "Adversaries may attempt to gain access to a machine via a Graphical User Interface (GUI) to enhance execution capabilities. Access to a GUI allows a user to interact with a computer in a more visual manner than a CLI. A GUI allows users to move a cursor and click on interface objects, with a mouse and keyboard as the main input devices, as opposed to just using the keyboard." . - -:T0824 a owl:Class ; - owl:deprecated true ; - rdfs:label "I/O Module Discovery - ATTACK ICS" ; - skos:prefLabel "I/O Module Discovery" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0824" ; - :definition "Adversaries may use input/output (I/O) module discovery to gather key information about a control system device. An I/O module is a device that allows the control system device to either receive or send signals to other devices. These signals can be analog or digital, and may support a number of different protocols. Devices are often able to use attachable I/O modules to increase the number of inputs and outputs that it can utilize. An adversary with access to a device can use native device functions to enumerate I/O modules that are connected to the device. Information regarding the I/O modules can aid the adversary in understanding related control processes." . - -:T0825 a owl:Class ; - owl:deprecated true ; - rdfs:label "Location Identification - ATTACK ICS" ; - skos:prefLabel "Location Identification" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0825" ; - :definition "Adversaries may perform location identification using device data to inform operations and targeted impact for attacks. Location identification data can come in a number of forms, including geographic location, location relative to other control system devices, time zone, and current time. An adversary may use an embedded global positioning system (GPS) module in a device to figure out the physical coordinates of a device. NIST SP800-82 recommends that devices utilize GPS or another location determining mechanism to attach appropriate timestamps to log entries (Citation: Guidance - NIST SP800-82). While this assists in logging and event tracking, an adversary could use the underlying positioning mechanism to determine the general location of a device. An adversary can also infer the physical location of serially connected devices by using serial connection enumeration." . - -:T0826 a owl:Class ; - rdfs:label "Loss of Availability - ATTACK ICS" ; - skos:prefLabel "Loss of Availability" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0826" ; - :definition "Adversaries may attempt to disrupt essential components or systems to prevent owner and operator from delivering products or services. (Citation: Corero) (Citation: Michael J. Assante and Robert M. Lee) (Citation: Tyson Macaulay)" . - -:T0827 a owl:Class ; - rdfs:label "Loss of Control - ATTACK ICS" ; - skos:prefLabel "Loss of Control" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0827" ; - :definition "Adversaries may seek to achieve a sustained loss of control or a runaway condition in which operators cannot issue any commands even if the malicious interference has subsided. (Citation: Corero) (Citation: Michael J. Assante and Robert M. Lee) (Citation: Tyson Macaulay)" . - -:T0828 a owl:Class ; - rdfs:label "Loss of Productivity and Revenue - ATTACK ICS" ; - skos:prefLabel "Loss of Productivity and Revenue" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0828" ; - :definition "Adversaries may cause loss of productivity and revenue through disruption and even damage to the availability and integrity of control system operations, devices, and related processes. This technique may manifest as a direct effect of an ICS-targeting attack or tangentially, due to an IT-targeting attack against non-segregated environments." . - -:T0829 a owl:Class ; - rdfs:label "Loss of View - ATTACK ICS" ; - skos:prefLabel "Loss of View" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0829" ; - :definition "Adversaries may cause a sustained or permanent loss of view where the ICS equipment will require local, hands-on operator intervention; for instance, a restart or manual operation. By causing a sustained reporting or visibility loss, the adversary can effectively hide the present state of operations. This loss of view can occur without affecting the physical processes themselves. (Citation: Corero) (Citation: Michael J. Assante and Robert M. Lee) (Citation: Tyson Macaulay)" . - -:T0830 a owl:Class ; - rdfs:label "Adversary-in-the-Middle - ATTACK ICS" ; - skos:prefLabel "Adversary-in-the-Middle" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0830" ; - :definition "Adversaries with privileged network access may seek to modify network traffic in real time using adversary-in-the-middle (AiTM) attacks. (Citation: Gabriel Sanchez October 2017) This type of attack allows the adversary to intercept traffic to and/or from a particular device on the network. If a AiTM attack is established, then the adversary has the ability to block, log, modify, or inject traffic into the communication stream. There are several ways to accomplish this attack, but some of the most-common are Address Resolution Protocol (ARP) poisoning and the use of a proxy. (Citation: Bonnie Zhu, Anthony Joseph, Shankar Sastry 2011)" . - -:T0831 a owl:Class ; - rdfs:label "Manipulation of Control - ATTACK ICS" ; - skos:prefLabel "Manipulation of Control" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0831" ; - :definition "Adversaries may manipulate physical process control within the industrial environment. Methods of manipulating control can include changes to set point values, tags, or other parameters. Adversaries may manipulate control systems devices or possibly leverage their own, to communicate with and command physical control processes. The duration of manipulation may be temporary or longer sustained, depending on operator detection." . - -:T0832 a owl:Class ; - rdfs:label "Manipulation of View - ATTACK ICS" ; - skos:prefLabel "Manipulation of View" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0832" ; - :definition "Adversaries may attempt to manipulate the information reported back to operators or controllers. This manipulation may be short term or sustained. During this time the process itself could be in a much different state than what is reported. (Citation: Corero) (Citation: Michael J. Assante and Robert M. Lee) (Citation: Tyson Macaulay)" . - -:T0833 a owl:Class ; - owl:deprecated true ; - rdfs:label "Modify Control Logic - ATTACK ICS" ; - skos:prefLabel "Modify Control Logic" ; - rdfs:subClassOf :ATTACKICSImpairProcessControlTechnique, - :ATTACKICSInhibitResponseFunctionTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0833" ; - :definition "Adversaries may place malicious code in a system, which can cause the system to malfunction by modifying its control logic. Control system devices use programming languages (e.g. relay ladder logic) to control physical processes by affecting actuators, which cause machines to operate, based on environment sensor readings. These devices often include the ability to perform remote control logic updates." . - -:T0834 a owl:Class ; - rdfs:label "Native API - ATTACK ICS" ; - skos:prefLabel "Native API" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0834" ; - :definition "Adversaries may directly interact with the native OS application programming interface (API) to access system functions. Native APIs provide a controlled means of calling low-level OS services within the kernel, such as those involving hardware/devices, memory, and processes. (Citation: The MITRE Corporation May 2017) These native APIs are leveraged by the OS during system boot (when other system components are not yet initialized) as well as carrying out tasks and requests during routine operations." . - -:T0835 a owl:Class ; - rdfs:label "Manipulate I/O Image - ATTACK ICS" ; - skos:prefLabel "Manipulate I/O Image" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0835" ; - :definition "Adversaries may manipulate the I/O image of PLCs through various means to prevent them from functioning as expected. Methods of I/O image manipulation may include overriding the I/O table via direct memory manipulation or using the override function used for testing PLC programs. (Citation: Dr. Kelvin T. Erickson December 2010) During the scan cycle, a PLC reads the status of all inputs and stores them in an image table. (Citation: Nanjundaiah, Vaidyanath) The image table is the PLCs internal storage location where values of inputs/outputs for one scan are stored while it executes the user program. After the PLC has solved the entire logic program, it updates the output image table. The contents of this output image table are written to the corresponding output points in I/O Modules." . - -:T0836 a owl:Class ; - rdfs:label "Modify Parameter - ATTACK ICS" ; - skos:prefLabel "Modify Parameter" ; - rdfs:subClassOf :ATTACKICSImpairProcessControlTechnique ; - :attack-id "T0836" ; - :definition "Adversaries may modify parameters used to instruct industrial control system devices. These devices operate via programs that dictate how and when to perform actions based on such parameters. Such parameters can determine the extent to which an action is performed and may specify additional options. For example, a program on a control system device dictating motor processes may take a parameter defining the total number of seconds to run that motor." . - -:T0837 a owl:Class ; - rdfs:label "Loss of Protection - ATTACK ICS" ; - skos:prefLabel "Loss of Protection" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0837" ; - :definition "Adversaries may compromise protective system functions designed to prevent the effects of faults and abnormal conditions. This can result in equipment damage, prolonged process disruptions and hazards to personnel." . - -:T0838 a owl:Class ; - rdfs:label "Modify Alarm Settings - ATTACK ICS" ; - skos:prefLabel "Modify Alarm Settings" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0838" ; - :definition "Adversaries may modify alarm settings to prevent alerts that may inform operators of their presence or to prevent responses to dangerous and unintended scenarios. Reporting messages are a standard part of data acquisition in control systems. Reporting messages are used as a way to transmit system state information and acknowledgements that specific actions have occurred. These messages provide vital information for the management of a physical process, and keep operators, engineers, and administrators aware of the state of system devices and physical processes." . - -:T0839 a owl:Class ; - rdfs:label "Module Firmware - ATTACK ICS" ; - skos:prefLabel "Module Firmware" ; - rdfs:subClassOf :ATTACKICSImpairProcessControlTechnique, - :ATTACKICSPersistenceTechnique ; - :attack-id "T0839" ; - :definition "Adversaries may install malicious or vulnerable firmware onto modular hardware devices. Control system devices often contain modular hardware devices. These devices may have their own set of firmware that is separate from the firmware of the main control system equipment." . - -:T0840 a owl:Class ; - rdfs:label "Network Connection Enumeration - ATTACK ICS" ; - skos:prefLabel "Network Connection Enumeration" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - :attack-id "T0840" ; - :definition "Adversaries may perform network connection enumeration to discover information about device communication patterns. If an adversary can inspect the state of a network connection with tools, such as Netstat(Citation: Netstat), in conjunction with [System Firmware](https://attack.mitre.org/techniques/T0857), then they can determine the role of certain devices on the network (Citation: MITRE). The adversary can also use [Network Sniffing](https://attack.mitre.org/techniques/T0842) to watch network traffic for details about the source, destination, protocol, and content." . - -:T0841 a owl:Class ; - owl:deprecated true ; - rdfs:label "Network Service Scanning - ATTACK ICS" ; - skos:prefLabel "Network Service Scanning" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0841" ; - :definition "Network Service Scanning is the process of discovering services on networked systems. This can be achieved through a technique called port scanning or probing. Port scanning interacts with the TCP/IP ports on a target system to determine whether ports are open, closed, or filtered by a firewall. This does not reveal the service that is running behind the port, but since many common services are run on [https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml specific port numbers], the type of service can be assumed. More in-depth testing includes interaction with the actual service to determine the service type and specific version. One of the most-popular tools to use for Network Service Scanning is [https://nmap.org/ Nmap]." . - -:T0842 a owl:Class ; - rdfs:label "Network Sniffing - ATTACK ICS" ; - skos:prefLabel "Network Sniffing" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - :attack-id "T0842" ; - :definition "Network sniffing is the practice of using a network interface on a computer system to monitor or capture information (Citation: Enterprise ATT&CK January 2018) regardless of whether it is the specified destination for the information." . - -:T0843 a owl:Class ; - rdfs:label "Program Download - ATTACK ICS" ; - skos:prefLabel "Program Download" ; - rdfs:subClassOf :ATTACKICSLateralMovementTechnique ; - :attack-id "T0843" ; - :definition "Adversaries may perform a program download to transfer a user program to a controller." . - -:T0844 a owl:Class ; - owl:deprecated true ; - rdfs:label "Program Organization Units - ATTACK ICS" ; - skos:prefLabel "Program Organization Units" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique, - :ATTACKICSLateralMovementTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0844" ; - :definition "Program Organizational Units (POUs) are block structures used within PLC programming to create programs and projects. (Citation: Guidance - IEC61131) POUs can be used to hold user programs written in IEC 61131-3 languages: Structured text, Instruction list, Function block, and Ladder logic. (Citation: Guidance - IEC61131) Application - 201203 They can also provide additional functionality, such as establishing connections between the PLC and other devices using TCON. (Citation: PLCBlaster - Spenneberg)" . - -:T0845 a owl:Class ; - rdfs:label "Program Upload - ATTACK ICS" ; - skos:prefLabel "Program Upload" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0845" ; - :definition "Adversaries may attempt to upload a program from a PLC to gather information about an industrial process. Uploading a program may allow them to acquire and study the underlying logic. Methods of program upload include vendor software, which enables the user to upload and read a program running on a PLC. This software can be used to upload the target program to a workstation, jump box, or an interfacing device." . - -:T0846 a owl:Class ; - rdfs:label "Remote System Discovery - ATTACK ICS" ; - skos:prefLabel "Remote System Discovery" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - :attack-id "T0846" ; - :definition "Adversaries may attempt to get a listing of other systems by IP address, hostname, or other logical identifier on a network that may be used for subsequent Lateral Movement or Discovery techniques. Functionality could exist within adversary tools to enable this, but utilities available on the operating system or vendor software could also be used. (Citation: Enterprise ATT&CK January 2018)" . - -:T0847 a owl:Class ; - rdfs:label "Replication Through Removable Media - ATTACK ICS" ; - skos:prefLabel "Replication Through Removable Media" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0847" ; - :definition "Adversaries may move onto systems, such as those separated from the enterprise network, by copying malware to removable media which is inserted into the control systems environment. The adversary may rely on unknowing trusted third parties, such as suppliers or contractors with access privileges, to introduce the removable media. This technique enables initial access to target devices that never connect to untrusted networks, but are physically accessible." . - -:T0848 a owl:Class ; - rdfs:label "Rogue Master - ATTACK ICS" ; - skos:prefLabel "Rogue Master" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0848" ; - :definition "Adversaries may setup a rogue master to leverage control server functions to communicate with outstations. A rogue master can be used to send legitimate control messages to other control system devices, affecting processes in unintended ways. It may also be used to disrupt network communications by capturing and receiving the network traffic meant for the actual master. Impersonating a master may also allow an adversary to avoid detection." . - -:T0849 a owl:Class ; - rdfs:label "Masquerading - ATTACK ICS" ; - skos:prefLabel "Masquerading" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique ; - :attack-id "T0849" ; - :definition "Adversaries may use masquerading to disguise a malicious application or executable as another file, to avoid operator and engineer suspicion. Possible disguises of these masquerading files can include commonly found programs, expected vendor executables and configuration files, and other commonplace application and naming conventions. By impersonating expected and vendor-relevant files and applications, operators and engineers may not notice the presence of the underlying malicious content and possibly end up running those masquerading as legitimate functions." . - -:T0850 a owl:Class ; - owl:deprecated true ; - rdfs:label "Role Identification - ATTACK ICS" ; - skos:prefLabel "Role Identification" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0850" ; - :definition "Adversaries may perform role identification of devices involved with physical processes of interest in a target control system. Control systems devices often work in concert to control a physical process. Each device can have one or more roles that it performs within that control process. By collecting this role-based data, an adversary can construct a more targeted attack." . - -:T0851 a owl:Class ; - rdfs:label "Rootkit - ATTACK ICS" ; - skos:prefLabel "Rootkit" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique, - :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0851" ; - :definition "Adversaries may deploy rootkits to hide the presence of programs, files, network connections, services, drivers, and other system components. Rootkits are programs that hide the existence of malware by intercepting and modifying operating-system API calls that supply system information. Rootkits or rootkit-enabling functionality may reside at the user or kernel level in the operating system, or lower. (Citation: Enterprise ATT&CK January 2018)" . - -:T0852 a owl:Class ; - rdfs:label "Screen Capture - ATTACK ICS" ; - skos:prefLabel "Screen Capture" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0852" ; - :definition "Adversaries may attempt to perform screen capture of devices in the control system environment. Screenshots may be taken of workstations, HMIs, or other devices that display environment-relevant process, device, reporting, alarm, or related data. These device displays may reveal information regarding the ICS process, layout, control, and related schematics. In particular, an HMI can provide a lot of important industrial process information. (Citation: ICS-CERT October 2017) Analysis of screen captures may provide the adversary with an understanding of intended operations and interactions between critical devices." . - -:T0853 a owl:Class ; - rdfs:label "Scripting - ATTACK ICS" ; - skos:prefLabel "Scripting" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0853" ; - :definition "Adversaries may use scripting languages to execute arbitrary code in the form of a pre-written script or in the form of user-supplied code to an interpreter. Scripting languages are programming languages that differ from compiled languages, in that scripting languages use an interpreter, instead of a compiler. These interpreters read and compile part of the source code just before it is executed, as opposed to compilers, which compile each and every line of code to an executable file. Scripting allows software developers to run their code on any system where the interpreter exists. This way, they can distribute one package, instead of precompiling executables for many different systems. Scripting languages, such as Python, have their interpreters shipped as a default with many Linux distributions." . - -:T0854 a owl:Class ; - owl:deprecated true ; - rdfs:label "Serial Connection Enumeration - ATTACK ICS" ; - skos:prefLabel "Serial Connection Enumeration" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0854" ; - :definition "Adversaries may perform serial connection enumeration to gather situational awareness after gaining access to devices in the OT network. Control systems devices often communicate to each other via various types of serial communication mediums. These serial communications are used to facilitate informational communication, as well as commands. Serial Connection Enumeration differs from I/O Module Discovery, as I/O modules are auxiliary systems to the main system, and devices that are connected via serial connection are normally discrete systems." . - -:T0855 a owl:Class ; - rdfs:label "Unauthorized Command Message - ATTACK ICS" ; - skos:prefLabel "Unauthorized Command Message" ; - rdfs:subClassOf :ATTACKICSImpairProcessControlTechnique ; - :attack-id "T0855" ; - :definition "Adversaries may send unauthorized command messages to instruct control system assets to perform actions outside of their intended functionality, or without the logical preconditions to trigger their expected function. Command messages are used in ICS networks to give direct instructions to control systems devices. If an adversary can send an unauthorized command message to a control system, then it can instruct the control systems device to perform an action outside the normal bounds of the device's actions. An adversary could potentially instruct a control systems device to perform an action that will cause an [Impact](https://attack.mitre.org/tactics/TA0105). (Citation: Bonnie Zhu, Anthony Joseph, Shankar Sastry 2011)" . - -:T0856 a owl:Class ; - rdfs:label "Spoof Reporting Message - ATTACK ICS" ; - skos:prefLabel "Spoof Reporting Message" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique, - :ATTACKICSImpairProcessControlTechnique ; - :attack-id "T0856" ; - :definition "Adversaries may spoof reporting messages in control system environments for evasion and to impair process control. In control systems, reporting messages contain telemetry data (e.g., I/O values) pertaining to the current state of equipment and the industrial process. Reporting messages are important for monitoring the normal operation of a system or identifying important events such as deviations from expected values." . - -:T0857 a owl:Class ; - rdfs:label "System Firmware - ATTACK ICS" ; - skos:prefLabel "System Firmware" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique, - :ATTACKICSPersistenceTechnique ; - :attack-id "T0857" ; - :definition "System firmware on modern assets is often designed with an update feature. Older device firmware may be factory installed and require special reprograming equipment. When available, the firmware update feature enables vendors to remotely patch bugs and perform upgrades. Device firmware updates are often delegated to the user and may be done using a software update package. It may also be possible to perform this task over the network." . - -:T0858 a owl:Class ; - rdfs:label "Change Operating Mode - ATTACK ICS" ; - skos:prefLabel "Change Operating Mode" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique, - :ATTACKICSExecutionTechnique ; - :attack-id "T0858" ; - :definition "Adversaries may change the operating mode of a controller to gain additional access to engineering functions such as Program Download. Programmable controllers typically have several modes of operation that control the state of the user program and control access to the controllers API. Operating modes can be physically selected using a key switch on the face of the controller but may also be selected with calls to the controllers API. Operating modes and the mechanisms by which they are selected often vary by vendor and product line. Some commonly implemented operating modes are described below:" . - -:T0859 a owl:Class ; - rdfs:label "Valid Accounts - ATTACK ICS" ; - skos:prefLabel "Valid Accounts" ; - rdfs:subClassOf :ATTACKICSLateralMovementTechnique, - :ATTACKICSPersistenceTechnique ; - :attack-id "T0859" ; - :definition "Adversaries may steal the credentials of a specific user or service account using credential access techniques. In some cases, default credentials for control system devices may be publicly available. Compromised credentials may be used to bypass access controls placed on various resources on hosts and within the network, and may even be used for persistent access to remote systems. Compromised and default credentials may also grant an adversary increased privilege to specific systems and devices or access to restricted areas of the network. Adversaries may choose not to use malware or tools, in conjunction with the legitimate access those credentials provide, to make it harder to detect their presence or to control devices and send legitimate commands in an unintended way." . - -:T0860 a owl:Class ; - rdfs:label "Wireless Compromise - ATTACK ICS" ; - skos:prefLabel "Wireless Compromise" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0860" ; - :definition "Adversaries may perform wireless compromise as a method of gaining communications and unauthorized access to a wireless network. Access to a wireless network may be gained through the compromise of a wireless device. (Citation: Alexander Bolshev, Gleb Cherbov July 2014) (Citation: Alexander Bolshev March 2014) Adversaries may also utilize radios and other wireless communication devices on the same frequency as the wireless network. Wireless compromise can be done as an initial access vector from a remote distance." . - -:T0861 a owl:Class ; - rdfs:label "Point & Tag Identification - ATTACK ICS" ; - skos:prefLabel "Point & Tag Identification" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0861" ; - :definition "Adversaries may collect point and tag values to gain a more comprehensive understanding of the process environment. Points may be values such as inputs, memory locations, outputs or other process specific variables. (Citation: Dennis L. Sloatman September 2016) Tags are the identifiers given to points for operator convenience." . - -:T0862 a owl:Class ; - rdfs:label "Supply Chain Compromise - ATTACK ICS" ; - skos:prefLabel "Supply Chain Compromise" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0862" ; - :definition "Adversaries may perform supply chain compromise to gain control systems environment access by means of infected products, software, and workflows. Supply chain compromise is the manipulation of products, such as devices or software, or their delivery mechanisms before receipt by the end consumer. Adversary compromise of these products and mechanisms is done for the goal of data or system compromise, once infected products are introduced to the target environment." . - -:T0863 a owl:Class ; - rdfs:label "User Execution - ATTACK ICS" ; - skos:prefLabel "User Execution" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0863" ; - :definition "Adversaries may rely on a targeted organizations user interaction for the execution of malicious code. User interaction may consist of installing applications, opening email attachments, or granting higher permissions to documents." . - -:T0864 a owl:Class ; - rdfs:label "Transient Cyber Asset - ATTACK ICS" ; - skos:prefLabel "Transient Cyber Asset" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0864" ; - :definition "Adversaries may target devices that are transient across ICS networks and external networks. Normally, transient assets are brought into an environment by authorized personnel and do not remain in that environment on a permanent basis. (Citation: North American Electric Reliability Corporation June 2021) Transient assets are commonly needed to support management functions and may be more common in systems where a remotely managed asset is not feasible, external connections for remote access do not exist, or 3rd party contractor/vendor access is required." . - -:T0865 a owl:Class ; - rdfs:label "Spearphishing Attachment - ATTACK ICS" ; - skos:prefLabel "Spearphishing Attachment" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0865" ; - :definition "Adversaries may use a spearphishing attachment, a variant of spearphishing, as a form of a social engineering attack against specific targets. Spearphishing attachments are different from other forms of spearphishing in that they employ malware attached to an email. All forms of spearphishing are electronically delivered and target a specific individual, company, or industry. In this scenario, adversaries attach a file to the spearphishing email and usually rely upon [User Execution](https://attack.mitre.org/techniques/T0863) to gain execution and access. (Citation: Enterprise ATT&CK October 2019)" . - -:T0866 a owl:Class ; - rdfs:label "Exploitation of Remote Services - ATTACK ICS" ; - skos:prefLabel "Exploitation of Remote Services" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique, - :ATTACKICSLateralMovementTechnique ; - :attack-id "T0866" ; - :definition "Adversaries may exploit a software vulnerability to take advantage of a programming error in a program, service, or within the operating system software or kernel itself to enable remote service abuse. A common goal for post-compromise exploitation of remote services is for initial access into and lateral movement throughout the ICS environment to enable access to targeted systems. (Citation: Enterprise ATT&CK)" . - -:T0867 a owl:Class ; - rdfs:label "Lateral Tool Transfer - ATTACK ICS" ; - skos:prefLabel "Lateral Tool Transfer" ; - rdfs:subClassOf :ATTACKICSLateralMovementTechnique ; - :attack-id "T0867" ; - :definition "Adversaries may transfer tools or other files from one system to another to stage adversary tools or other files over the course of an operation. (Citation: Enterprise ATT&CK) Copying of files may also be performed laterally between internal victim systems to support Lateral Movement with remote Execution using inherent file sharing protocols such as file sharing over SMB to connected network shares. (Citation: Enterprise ATT&CK)" . - -:T0868 a owl:Class ; - rdfs:label "Detect Operating Mode - ATTACK ICS" ; - skos:prefLabel "Detect Operating Mode" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0868" ; - :definition "Adversaries may gather information about a PLCs or controllers current operating mode. Operating modes dictate what change or maintenance functions can be manipulated and are often controlled by a key switch on the PLC (e.g., run, prog [program], and remote). Knowledge of these states may be valuable to an adversary to determine if they are able to reprogram the PLC. Operating modes and the mechanisms by which they are selected often vary by vendor and product line. Some commonly implemented operating modes are described below:" . - -:T0869 a owl:Class ; - rdfs:label "Standard Application Layer Protocol - ATTACK ICS" ; - skos:prefLabel "Standard Application Layer Protocol" ; - rdfs:subClassOf :ATTACKICSCommandAndControlTechnique ; - :attack-id "T0869" ; - :definition "Adversaries may establish command and control capabilities over commonly used application layer protocols such as HTTP(S), OPC, RDP, telnet, DNP3, and modbus. These protocols may be used to disguise adversary actions as benign network traffic. Standard protocols may be seen on their associated port or in some cases over a non-standard port. Adversaries may use these protocols to reach out of the network for command and control, or in some cases to other infected devices within the network." . - -:T0870 a owl:Class ; - owl:deprecated true ; - rdfs:label "Detect Program State - ATTACK ICS" ; - skos:prefLabel "Detect Program State" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0870" ; - :definition "Adversaries may seek to gather information about the current state of a program on a PLC. State information reveals information about the program, including whether it's running, halted, stopped, or has generated an exception. This information may be leveraged as a verification of malicious program execution or to determine if a PLC is ready to download a new program." . - -:T0871 a owl:Class ; - rdfs:label "Execution through API - ATTACK ICS" ; - skos:prefLabel "Execution through API" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0871" ; - :definition "Adversaries may attempt to leverage Application Program Interfaces (APIs) used for communication between control software and the hardware. Specific functionality is often coded into APIs which can be called by software to engage specific functions on a device or other software." . - -:T0872 a owl:Class ; - rdfs:label "Indicator Removal on Host - ATTACK ICS" ; - skos:prefLabel "Indicator Removal on Host" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique ; - :attack-id "T0872" ; - :definition "Adversaries may attempt to remove indicators of their presence on a system in an effort to cover their tracks. In cases where an adversary may feel detection is imminent, they may try to overwrite, delete, or cover up changes they have made to the device." . - -:T0873 a owl:Class ; - rdfs:label "Project File Infection - ATTACK ICS" ; - skos:prefLabel "Project File Infection" ; - rdfs:subClassOf :ATTACKICSPersistenceTechnique ; - :attack-id "T0873" ; - :definition "Adversaries may attempt to infect project files with malicious code. These project files may consist of objects, program organization units, variables such as tags, documentation, and other configurations needed for PLC programs to function. (Citation: Beckhoff) Using built in functions of the engineering software, adversaries may be able to download an infected program to a PLC in the operating environment enabling further [Execution](https://attack.mitre.org/tactics/TA0104) and [Persistence](https://attack.mitre.org/tactics/TA0110) techniques. (Citation: PLCdev)" . - -:T0874 a owl:Class ; - rdfs:label "Hooking - ATTACK ICS" ; - skos:prefLabel "Hooking" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique, - :ATTACKICSPrivilegeEscalationTechnique ; - :attack-id "T0874" ; - :definition "Adversaries may hook into application programming interface (API) functions used by processes to redirect calls for execution and privilege escalation means. Windows processes often leverage these API functions to perform tasks that require reusable system resources. Windows API functions are typically stored in dynamic-link libraries (DLLs) as exported functions. (Citation: Enterprise ATT&CK)" . - -:T0875 a owl:Class ; - owl:deprecated true ; - rdfs:label "Change Program State - ATTACK ICS" ; - skos:prefLabel "Change Program State" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique, - :ATTACKICSImpairProcessControlTechnique ; - rdfs:comment "This technique has been deprecated." ; - :attack-id "T0875" ; - :definition "Adversaries may attempt to change the state of the current program on a control device. Program state changes may be used to allow for another program to take over control or be loaded onto the device." . - -:T0877 a owl:Class ; - rdfs:label "I/O Image - ATTACK ICS" ; - skos:prefLabel "I/O Image" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0877" ; - :definition "Adversaries may seek to capture process values related to the inputs and outputs of a PLC. During the scan cycle, a PLC reads the status of all inputs and stores them in an image table. (Citation: Nanjundaiah, Vaidyanath) The image table is the PLCs internal storage location where values of inputs/outputs for one scan are stored while it executes the user program. After the PLC has solved the entire logic program, it updates the output image table. The contents of this output image table are written to the corresponding output points in I/O Modules." . - -:T0878 a owl:Class ; - rdfs:label "Alarm Suppression - ATTACK ICS" ; - skos:prefLabel "Alarm Suppression" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0878" ; - :definition "Adversaries may target protection function alarms to prevent them from notifying operators of critical conditions. Alarm messages may be a part of an overall reporting system and of particular interest for adversaries. Disruption of the alarm system does not imply the disruption of the reporting system as a whole." . - -:T0879 a owl:Class ; - rdfs:label "Damage to Property - ATTACK ICS" ; - skos:prefLabel "Damage to Property" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0879" ; - :definition "Adversaries may cause damage and destruction of property to infrastructure, equipment, and the surrounding environment when attacking control systems. This technique may result in device and operational equipment breakdown, or represent tangential damage from other techniques used in an attack. Depending on the severity of physical damage and disruption caused to control processes and systems, this technique may result in [Loss of Safety](https://attack.mitre.org/techniques/T0880). Operations that result in [Loss of Control](https://attack.mitre.org/techniques/T0827) may also cause damage to property, which may be directly or indirectly motivated by an adversary seeking to cause impact in the form of [Loss of Productivity and Revenue](https://attack.mitre.org/techniques/T0828)." . - -:T0880 a owl:Class ; - rdfs:label "Loss of Safety - ATTACK ICS" ; - skos:prefLabel "Loss of Safety" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0880" ; - :definition "Adversaries may compromise safety system functions designed to maintain safe operation of a process when unacceptable or dangerous conditions occur. Safety systems are often composed of the same elements as control systems but have the sole purpose of ensuring the process fails in a predetermined safe manner." . - -:T0881 a owl:Class ; - rdfs:label "Service Stop - ATTACK ICS" ; - skos:prefLabel "Service Stop" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0881" ; - :definition "Adversaries may stop or disable services on a system to render those services unavailable to legitimate users. Stopping critical services can inhibit or stop response to an incident or aid in the adversary's overall objectives to cause damage to the environment. (Citation: Enterprise ATT&CK) Services may not allow for modification of their data stores while running. Adversaries may stop services in order to conduct Data Destruction. (Citation: Enterprise ATT&CK)" . - -:T0882 a owl:Class ; - rdfs:label "Theft of Operational Information - ATTACK ICS" ; - skos:prefLabel "Theft of Operational Information" ; - rdfs:subClassOf :ATTACKICSImpactTechnique ; - :attack-id "T0882" ; - :definition "Adversaries may steal operational information on a production environment as a direct mission outcome for personal gain or to inform future operations. This information may include design documents, schedules, rotational data, or similar artifacts that provide insight on operations. In the Bowman Dam incident, adversaries probed systems for operational data. (Citation: Mark Thompson March 2016) (Citation: Danny Yadron December 2015)" . - -:T0883 a owl:Class ; - rdfs:label "Internet Accessible Device - ATTACK ICS" ; - skos:prefLabel "Internet Accessible Device" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique ; - :attack-id "T0883" ; - :definition "Adversaries may gain access into industrial environments through systems exposed directly to the internet for remote access rather than through [External Remote Services](https://attack.mitre.org/techniques/T0822). Internet Accessible Devices are exposed to the internet unintentionally or intentionally without adequate protections. This may allow for adversaries to move directly into the control system network. Access onto these devices is accomplished without the use of exploits, these would be represented within the [Exploit Public-Facing Application](https://attack.mitre.org/techniques/T0819) technique." . - -:T0884 a owl:Class ; - rdfs:label "Connection Proxy - ATTACK ICS" ; - skos:prefLabel "Connection Proxy" ; - rdfs:subClassOf :ATTACKICSCommandAndControlTechnique ; - :attack-id "T0884" ; - :definition "Adversaries may use a connection proxy to direct network traffic between systems or act as an intermediary for network communications." . - -:T0885 a owl:Class ; - rdfs:label "Commonly Used Port - ATTACK ICS" ; - skos:prefLabel "Commonly Used Port" ; - rdfs:subClassOf :ATTACKICSCommandAndControlTechnique ; - :attack-id "T0885" ; - :definition "Adversaries may communicate over a commonly used port to bypass firewalls or network detection systems and to blend in with normal network activity, to avoid more detailed inspection. They may use the protocol associated with the port, or a completely different protocol. They may use commonly open ports, such as the examples provided below." . - -:T0886 a owl:Class ; - rdfs:label "Remote Services - ATTACK ICS" ; - skos:prefLabel "Remote Services" ; - rdfs:subClassOf :ATTACKICSInitialAccessTechnique, - :ATTACKICSLateralMovementTechnique ; - :attack-id "T0886" ; - :definition "Adversaries may leverage remote services to move between assets and network segments. These services are often used to allow operators to interact with systems remotely within the network, some examples are RDP, SMB, SSH, and other similar mechanisms. (Citation: Blake Johnson, Dan Caban, Marina Krotofil, Dan Scali, Nathan Brubaker, Christopher Glyer December 2017) (Citation: Dragos December 2017) (Citation: Joe Slowik April 2019)" . - -:T0887 a owl:Class ; - rdfs:label "Wireless Sniffing - ATTACK ICS" ; - skos:prefLabel "Wireless Sniffing" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique, - :ATTACKICSDiscoveryTechnique ; - :attack-id "T0887" ; - :definition "Adversaries may seek to capture radio frequency (RF) communication used for remote control and reporting in distributed environments. RF communication frequencies vary between 3 kHz to 300 GHz, although are commonly between 300 MHz to 6 GHz. (Citation: Candell, R., Hany, M., Lee, K. B., Liu,Y., Quimby, J., Remley, K. April 2018) The wavelength and frequency of the signal affect how the signal propagates through open air, obstacles (e.g. walls and trees) and the type of radio required to capture them. These characteristics are often standardized in the protocol and hardware and may have an effect on how the signal is captured. Some examples of wireless protocols that may be found in cyber-physical environments are: WirelessHART, Zigbee, WIA-FA, and 700 MHz Public Safety Spectrum." . - -:T0888 a owl:Class ; - rdfs:label "Remote System Information Discovery - ATTACK ICS" ; - skos:prefLabel "Remote System Information Discovery" ; - rdfs:subClassOf :ATTACKICSDiscoveryTechnique ; - :attack-id "T0888" ; - :definition "An adversary may attempt to get detailed information about remote systems and their peripherals, such as make/model, role, and configuration. Adversaries may use information from Remote System Information Discovery to aid in targeting and shaping follow-on behaviors. For example, the system's operational role and model information can dictate whether it is a relevant target for the adversary's operational objectives. In addition, the system's configuration may be used to scope subsequent technique usage." . - -:T0889 a owl:Class ; - rdfs:label "Modify Program - ATTACK ICS" ; - skos:prefLabel "Modify Program" ; - rdfs:subClassOf :ATTACKICSPersistenceTechnique ; - :attack-id "T0889" ; - :definition "Adversaries may modify or add a program on a controller to affect how it interacts with the physical process, peripheral devices and other hosts on the network. Modification to controller programs can be accomplished using a Program Download in addition to other types of program modification such as online edit and program append." . - -:T0890 a owl:Class ; - rdfs:label "Exploitation for Privilege Escalation - ATTACK ICS" ; - skos:prefLabel "Exploitation for Privilege Escalation" ; - rdfs:subClassOf :ATTACKICSPrivilegeEscalationTechnique ; - :attack-id "T0890" ; - :definition "Adversaries may exploit software vulnerabilities in an attempt to elevate privileges. Exploitation of a software vulnerability occurs when an adversary takes advantage of a programming error in a program, service, or within the operating system software or kernel itself to execute adversary-controlled code. Security constructs such as permission levels will often hinder access to information and use of certain techniques, so adversaries will likely need to perform privilege escalation to include use of software exploitation to circumvent those restrictions. (Citation: The MITRE Corporation)" . - -:T0891 a owl:Class ; - rdfs:label "Hardcoded Credentials - ATTACK ICS" ; - skos:prefLabel "Hardcoded Credentials" ; - rdfs:subClassOf :ATTACKICSLateralMovementTechnique, - :ATTACKICSPersistenceTechnique ; - :attack-id "T0891" ; - :definition "Adversaries may leverage credentials that are hardcoded in software or firmware to gain an unauthorized interactive user session to an asset. Examples credentials that may be hardcoded in an asset include:" . - -:T0892 a owl:Class ; - rdfs:label "Change Credential - ATTACK ICS" ; - skos:prefLabel "Change Credential" ; - rdfs:subClassOf :ATTACKICSInhibitResponseFunctionTechnique ; - :attack-id "T0892" ; - :definition "Adversaries may modify software and device credentials to prevent operator and responder access. Depending on the device, the modification or addition of this password could prevent any device configuration actions from being accomplished and may require a factory reset or replacement of hardware. These credentials are often built-in features provided by the device vendors as a means to restrict access to management interfaces." . - -:T0893 a owl:Class ; - rdfs:label "Data from Local System - ATTACK ICS" ; - skos:prefLabel "Data from Local System" ; - rdfs:subClassOf :ATTACKICSCollectionTechnique ; - :attack-id "T0893" ; - :definition "Adversaries may target and collect data from local system sources, such as file systems, configuration files, or local databases. This can include sensitive data such as specifications, schematics, or diagrams of control system layouts, devices, and processes." . - -:T0894 a owl:Class ; - rdfs:label "System Binary Proxy Execution - ATTACK ICS" ; - skos:prefLabel "System Binary Proxy Execution" ; - rdfs:subClassOf :ATTACKICSEvasionTechnique ; - :attack-id "T0894" ; - :definition "Adversaries may bypass process and/or signature-based defenses by proxying execution of malicious content with signed, or otherwise trusted, binaries. Binaries used in this technique are often Microsoft-signed files, indicating that they have been either downloaded from Microsoft or are already native in the operating system. (Citation: LOLBAS Project) Binaries signed with trusted digital certificates can typically execute on Windows systems protected by digital signature validation. Several Microsoft signed binaries that are default on Windows installations can be used to proxy execution of other files or commands. Similarly, on Linux systems adversaries may abuse trusted binaries such as split to proxy execution of malicious commands. (Citation: split man page)(Citation: GTFO split)" . - -:T0895 a owl:Class ; - rdfs:label "Autorun Image - ATTACK ICS" ; - skos:prefLabel "Autorun Image" ; - rdfs:subClassOf :ATTACKICSExecutionTechnique ; - :attack-id "T0895" ; - :definition "Adversaries may leverage AutoRun functionality or scripts to execute malicious code. Devices configured to enable AutoRun functionality or legacy operating systems may be susceptible to abuse of these features to run malicious code stored on various forms of removeable media (i.e., USB, Disk Images [.ISO]). Commonly, AutoRun or AutoPlay are disabled in many operating systems configurations to mitigate against this technique. If a device is configured to enable AutoRun or AutoPlay, adversaries may execute code on the device by mounting the removable media to the device, either through physical or virtual means. This may be especially relevant for virtual machine environments where disk images may be dynamically mapped to a guest system on a hypervisor." . - -:T1001 a owl:Class ; - rdfs:label "Data Obfuscation" ; - rdfs:subClassOf :CommandAndControlTechnique, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :OutboundInternetNetworkTraffic ] ; - :attack-id "T1001" ; - :definition "Adversaries may obfuscate command and control traffic to make it more difficult to detect.(Citation: Bitdefender FunnyDream Campaign November 2020) Command and control (C2) communications are hidden (but not necessarily encrypted) in an attempt to make the content more difficult to discover or decipher and to make the communication less conspicuous and hide commands from being seen. This encompasses many methods, such as adding junk data to protocol traffic, using steganography, or impersonating legitimate protocols." . - -:T1001.001 a owl:Class ; - rdfs:label "Junk Data" ; - rdfs:subClassOf :T1001 ; - :attack-id "T1001.001" ; - :definition "Adversaries may add junk data to protocols used for command and control to make detection more difficult.(Citation: FireEye SUNBURST Backdoor December 2020) By adding random or meaningless data to the protocols used for command and control, adversaries can prevent trivial methods for decoding, deciphering, or otherwise analyzing the traffic. Examples may include appending/prepending data with junk characters or writing junk characters between significant characters." . - -:T1001.002 a owl:Class ; - rdfs:label "Steganography" ; - rdfs:subClassOf :T1001 ; - :attack-id "T1001.002" ; - :definition "Adversaries may use steganographic techniques to hide command and control traffic to make detection efforts more difficult. Steganographic techniques can be used to hide data in digital messages that are transferred between systems. This hidden information can be used for command and control of compromised systems. In some cases, the passing of files embedded using steganography, such as image or document files, can be used for command and control." . - -:T1001.003 a owl:Class ; - rdfs:label "Protocol or Service Impersonation" ; - rdfs:subClassOf :T1001 ; - :attack-id "T1001.003" ; - :definition "Adversaries may impersonate legitimate protocols or web service traffic to disguise command and control activity and thwart analysis efforts. By impersonating legitimate protocols or web services, adversaries can make their command and control traffic blend in with legitimate network traffic. " . - -:T1002 a owl:Class ; - owl:deprecated true ; - rdfs:label "Data Compressed" ; - rdfs:subClassOf :ExfiltrationTechnique ; - rdfs:comment "This technique has been revoked by T1560" ; - :attack-id "T1002" ; - :definition "An adversary may compress data (e.g., sensitive documents) that is collected prior to exfiltration in order to make it portable and minimize the amount of data sent over the network. The compression is done separately from the exfiltration channel and is performed using a custom program or algorithm, or a more common compression library or utility such as 7zip, RAR, ZIP, or zlib." ; - rdfs:seeAlso :T1560 . - -:T1003 a owl:Class ; - rdfs:label "OS Credential Dumping" ; - rdfs:subClassOf :CredentialAccessTechnique ; - :attack-id "T1003" ; - :definition "Adversaries may attempt to dump credentials to obtain account login and credential material, normally in the form of a hash or a clear text password. Credentials can be obtained from OS caches, memory, or structures.(Citation: Brining MimiKatz to Unix) Credentials can then be used to perform [Lateral Movement](https://attack.mitre.org/tactics/TA0008) and access restricted information." . - -:T1003.001 a owl:Class ; - rdfs:label "LSASS Memory" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :AuthenticationService ], - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Process ] ; - :attack-id "T1003.001" ; - :definition "Adversaries may attempt to access credential material stored in the process memory of the Local Security Authority Subsystem Service (LSASS). After a user logs on, the system generates and stores a variety of credential materials in LSASS process memory. These credential materials can be harvested by an administrative user or SYSTEM and used to conduct [Lateral Movement](https://attack.mitre.org/tactics/TA0008) using [Use Alternate Authentication Material](https://attack.mitre.org/techniques/T1550)." . - -:T1003.002 a owl:Class ; - rdfs:label "Security Account Manager" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :AuthenticationService ], - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :Process ], - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :SystemPasswordDatabase ] ; - :attack-id "T1003.002" ; - :definition "Adversaries may attempt to extract credential material from the Security Account Manager (SAM) database either through in-memory techniques or through the Windows Registry where the SAM database is stored. The SAM is a database file that contains local accounts for the host, typically those found with the net user command. Enumerating the SAM database requires SYSTEM level access." . - -:T1003.003 a owl:Class ; - rdfs:label "NTDS" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :EncryptedCredential ] ; - :attack-id "T1003.003" ; - :definition "Adversaries may attempt to access or create a copy of the Active Directory domain database in order to steal credential information, as well as obtain other information about domain members such as devices, users, and access rights. By default, the NTDS file (NTDS.dit) is located in %SystemRoot%\\NTDS\\Ntds.dit of a domain controller.(Citation: Wikipedia Active Directory)" . - -:T1003.004 a owl:Class ; - rdfs:label "LSA Secrets" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :Process ], - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :SystemPasswordDatabase ] ; - :attack-id "T1003.004" ; - :definition "Adversaries with SYSTEM access to a host may attempt to access Local Security Authority (LSA) secrets, which can contain a variety of different credential materials, such as credentials for service accounts.(Citation: Passcape LSA Secrets)(Citation: Microsoft AD Admin Tier Model)(Citation: Tilbury Windows Credentials) LSA secrets are stored in the registry at HKEY_LOCAL_MACHINE\\SECURITY\\Policy\\Secrets. LSA secrets can also be dumped from memory.(Citation: ired Dumping LSA Secrets)" . - -:T1003.005 a owl:Class ; - rdfs:label "Cached Domain Credentials" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :EncryptedCredential ], - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :Log ] ; - :attack-id "T1003.005" ; - :definition "Adversaries may attempt to access cached domain credentials used to allow authentication to occur in the event a domain controller is unavailable.(Citation: Microsoft - Cached Creds)" . - -:T1003.006 a owl:Class ; - rdfs:label "DCSync" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :EventLog ], - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :IntranetAdministrativeNetworkTraffic ] ; - :attack-id "T1003.006" ; - :definition "Adversaries may attempt to access credentials and other sensitive information by abusing a Windows Domain Controller's application programming interface (API)(Citation: Microsoft DRSR Dec 2017) (Citation: Microsoft GetNCCChanges) (Citation: Samba DRSUAPI) (Citation: Wine API samlib.dll) to simulate the replication process from a remote domain controller using a technique called DCSync." . - -:T1003.007 a owl:Class ; - rdfs:label "Proc Filesystem" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :OperatingSystemFile ], - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :ProcessImage ] ; - :attack-id "T1003.007" ; - :definition "Adversaries may gather credentials from the proc filesystem or `/proc`. The proc filesystem is a pseudo-filesystem used as an interface to kernel data structures for Linux based systems managing virtual memory. For each process, the `/proc//maps` file shows how memory is mapped within the process’s virtual address space. And `/proc//mem`, exposed for debugging purposes, provides access to the process’s virtual address space.(Citation: Picus Labs Proc cump 2022)(Citation: baeldung Linux proc map 2022)" . - -:T1003.008 a owl:Class ; - rdfs:label "/etc/passwd and /etc/shadow" ; - rdfs:subClassOf :T1003, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :EncryptedCredential ], - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :PasswordFile ] ; - :attack-id "T1003.008" ; - :definition "Adversaries may attempt to dump the contents of /etc/passwd and /etc/shadow to enable offline password cracking. Most modern Linux operating systems use a combination of /etc/passwd and /etc/shadow to store user account information including password hashes in /etc/shadow. By default, /etc/shadow is only readable by the root user.(Citation: Linux Password and Shadow File Formats)" . - -:T1004 a owl:Class ; - owl:deprecated true ; - rdfs:label "Winlogon Helper DLL" ; - rdfs:subClassOf :PersistenceTechnique ; - rdfs:comment "This technique has been revoked by T1547.004" ; - :attack-id "T1004" ; - :definition "Winlogon.exe is a Windows component responsible for actions at logon/logoff as well as the secure attention sequence (SAS) triggered by Ctrl-Alt-Delete. Registry entries in HKLM\\Software\\[Wow6432Node\\]Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\ and HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\ are used to manage additional helper programs and functionalities that support Winlogon. (Citation: Cylance Reg Persistence Sept 2013) " ; - rdfs:seeAlso :T1547.004 . - -:T1005 a owl:Class ; - rdfs:label "Data from Local System" ; - rdfs:subClassOf :CollectionTechnique, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :File ], - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :LocalResource ] ; - :attack-id "T1005" ; - :definition "Adversaries may search local system sources, such as file systems and configuration files or local databases, to find files of interest and sensitive data prior to Exfiltration." . - -:T1006 a owl:Class ; - rdfs:label "Direct Volume Access" ; - rdfs:subClassOf :DefenseEvasionTechnique, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :Volume ] ; - :attack-id "T1006" ; - :definition "Adversaries may directly access a volume to bypass file access controls and file system monitoring. Windows allows programs to have direct access to logical volumes. Programs with direct access may read and write files directly from the drive by analyzing file system data structures. This technique may bypass Windows file access controls as well as file system monitoring tools. (Citation: Hakobyan 2009)" . - -:T1007 a owl:Class ; - rdfs:label "System Service Discovery" ; - rdfs:subClassOf :DiscoveryTechnique, - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :CreateProcess ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :GetRunningProcesses ] ; - :attack-id "T1007" ; - :definition "Adversaries may try to gather information about registered local system services. Adversaries may obtain information about services using tools as well as OS utility commands such as sc query, tasklist /svc, systemctl --type=service, and net start." . - -:T1008 a owl:Class ; - rdfs:label "Fallback Channels" ; - rdfs:subClassOf :CommandAndControlTechnique, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :OutboundInternetNetworkTraffic ] ; - :attack-id "T1008" ; - :definition "Adversaries may use fallback or alternate communication channels if the primary channel is compromised or inaccessible in order to maintain reliable command and control and to avoid data transfer thresholds." . - -:T1009 a owl:Class ; - owl:deprecated true ; - rdfs:label "Binary Padding" ; - rdfs:subClassOf :DefenseEvasionTechnique ; - rdfs:comment "This technique has been revoked by T1027.001" ; - :attack-id "T1009" ; - :definition "Adversaries can use binary padding to add junk data and change the on-disk representation of malware without affecting the functionality or behavior of the binary. This will often increase the size of the binary beyond what some security tools are capable of handling due to file size limitations." ; - rdfs:seeAlso :T1027.001 . - -:T1010 a owl:Class ; - rdfs:label "Application Window Discovery" ; - rdfs:subClassOf :DiscoveryTechnique, - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :CreateProcess ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :GetOpenWindows ] ; - :attack-id "T1010" ; - :definition "Adversaries may attempt to get a listing of open application windows. Window listings could convey information about how the system is used.(Citation: Prevailion DarkWatchman 2021) For example, information about application windows could be used identify potential data to collect as well as identifying security tooling ([Security Software Discovery](https://attack.mitre.org/techniques/T1518/001)) to evade.(Citation: ESET Grandoreiro April 2020)" . - -:T1011 a owl:Class ; - rdfs:label "Exfiltration Over Other Network Medium" ; - rdfs:subClassOf :ExfiltrationTechnique, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :InternetNetworkTraffic ] ; - :attack-id "T1011" ; - :definition "Adversaries may attempt to exfiltrate data over a different network medium than the command and control channel. If the command and control network is a wired Internet connection, the exfiltration may occur, for example, over a WiFi connection, modem, cellular data connection, Bluetooth, or another radio frequency (RF) channel." . - -:T1011.001 a owl:Class ; - rdfs:label "Exfiltration Over Bluetooth" ; - rdfs:subClassOf :T1011 ; - :attack-id "T1011.001" ; - :definition "Adversaries may attempt to exfiltrate data over Bluetooth rather than the command and control channel. If the command and control network is a wired Internet connection, an adversary may opt to exfiltrate data using a Bluetooth communication channel." . - -:T1012 a owl:Class ; - rdfs:label "Query Registry" ; - rdfs:subClassOf :DiscoveryTechnique, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :SystemConfigurationDatabase ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :GetSystemConfigValue ] ; - :attack-id "T1012" ; - :definition "Adversaries may interact with the Windows Registry to gather information about the system, configuration, and installed software." . - -:T1013 a owl:Class ; - owl:deprecated true ; - rdfs:label "Port Monitors" ; - rdfs:subClassOf :PersistenceTechnique, - :PrivilegeEscalationTechnique ; - rdfs:comment "This technique has been revoked by T1547.010" ; - :attack-id "T1013" ; - :definition "A port monitor can be set through the (Citation: AddMonitor) API call to set a DLL to be loaded at startup. (Citation: AddMonitor) This DLL can be located in C:\\Windows\\System32 and will be loaded by the print spooler service, spoolsv.exe, on boot. The spoolsv.exe process also runs under SYSTEM level permissions. (Citation: Bloxham) Alternatively, an arbitrary DLL can be loaded if permissions allow writing a fully-qualified pathname for that DLL to HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print\\Monitors. " ; - rdfs:seeAlso :T1547.010 . - -:T1014 a owl:Class ; - rdfs:label "Rootkit" ; - rdfs:subClassOf :DefenseEvasionTechnique, - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :BootSector ], - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :Firmware ], - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :Kernel ], - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :KernelModule ], - [ a owl:Restriction ; - owl:onProperty :may-modify ; - owl:someValuesFrom :SharedLibraryFile ] ; - :attack-id "T1014" ; - :definition "Adversaries may use rootkits to hide the presence of programs, files, network connections, services, drivers, and other system components. Rootkits are programs that hide the existence of malware by intercepting/hooking and modifying operating system API calls that supply system information. (Citation: Symantec Windows Rootkits) " . - -:T1015 a owl:Class ; - owl:deprecated true ; - rdfs:label "Accessibility Features" ; - rdfs:subClassOf :PersistenceTechnique, - :PrivilegeEscalationTechnique ; - rdfs:comment "This technique has been revoked by T1546.008" ; - :attack-id "T1015" ; - :definition "Windows contains accessibility features that may be launched with a key combination before a user has logged in (for example, when the user is on the Windows logon screen). An adversary can modify the way these programs are launched to get a command prompt or backdoor without logging in to the system." ; - rdfs:seeAlso :T1546.008 . - -:T1016 a owl:Class ; - rdfs:label "System Network Configuration Discovery" ; - rdfs:subClassOf :DiscoveryTechnique, - [ a owl:Restriction ; - owl:onProperty :may-execute ; - owl:someValuesFrom :ExecutableScript ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :CreateProcess ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :GetSystemNetworkConfigValue ] ; - :attack-id "T1016" ; - :definition "Adversaries may look for details about the network configuration and settings, such as IP and/or MAC addresses, of systems they access or through information discovery of remote systems. Several operating system administration utilities exist that can be used to gather this information. Examples include [Arp](https://attack.mitre.org/software/S0099), [ipconfig](https://attack.mitre.org/software/S0100)/[ifconfig](https://attack.mitre.org/software/S0101), [nbtstat](https://attack.mitre.org/software/S0102), and [route](https://attack.mitre.org/software/S0103)." . - -:T1016.001 a owl:Class ; - rdfs:label "Internet Connection Discovery" ; - rdfs:subClassOf :T1016 ; - :attack-id "T1016.001" ; - :definition "Adversaries may check for Internet connectivity on compromised systems. This may be performed during automated discovery and can be accomplished in numerous ways such as using [Ping](https://attack.mitre.org/software/S0097), tracert, and GET requests to websites." . - -:T1016.002 a owl:Class ; - rdfs:label "Wi-Fi Discovery" ; - rdfs:subClassOf :T1016 ; - :attack-id "T1016.002" ; - :definition "Adversaries may search for information about Wi-Fi networks, such as network names and passwords, on compromised systems. Adversaries may use Wi-Fi information as part of [Account Discovery](https://attack.mitre.org/techniques/T1087), [Remote System Discovery](https://attack.mitre.org/techniques/T1018), and other discovery or [Credential Access](https://attack.mitre.org/tactics/TA0006) activity to support both ongoing and future campaigns." . - -:T1017 a owl:Class ; - owl:deprecated true ; - rdfs:label "Application Deployment Software" ; - rdfs:subClassOf :LateralMovementTechnique ; - rdfs:comment "This technique has been revoked by T1072" ; - :attack-id "T1017" ; - :definition "Adversaries may deploy malicious software to systems within a network using application deployment systems employed by enterprise administrators. The permissions required for this action vary by system configuration; local credentials may be sufficient with direct access to the deployment server, or specific domain credentials may be required. However, the system may require an administrative account to log in or to perform software deployment." ; - rdfs:seeAlso :T1072 . - -:T1018 a owl:Class ; - rdfs:label "Remote System Discovery" ; - rdfs:subClassOf :DiscoveryTechnique, - [ a owl:Restriction ; - owl:onProperty :may-access ; - owl:someValuesFrom :OperatingSystemConfigurationFile ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :CreateProcess ], - [ a owl:Restriction ; - owl:onProperty :may-invoke ; - owl:someValuesFrom :CreateSocket ], - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :NetworkTraffic ] ; - :attack-id "T1018" ; - :definition "Adversaries may attempt to get a listing of other systems by IP address, hostname, or other logical identifier on a network that may be used for Lateral Movement from the current system. Functionality could exist within remote access tools to enable this, but utilities available on the operating system could also be used such as [Ping](https://attack.mitre.org/software/S0097) or net view using [Net](https://attack.mitre.org/software/S0039)." . - -:T1019 a owl:Class ; - owl:deprecated true ; - rdfs:label "System Firmware" ; - rdfs:subClassOf :PersistenceTechnique ; - rdfs:comment "This technique has been revoked by T1542.001" ; - :attack-id "T1019" ; - :definition "The BIOS (Basic Input/Output System) and The Unified Extensible Firmware Interface (UEFI) or Extensible Firmware Interface (EFI) are examples of system firmware that operate as the software interface between the operating system and hardware of a computer. (Citation: Wikipedia BIOS) (Citation: Wikipedia UEFI) (Citation: About UEFI)" ; - rdfs:seeAlso :T1542.001 . - -:T1020 a owl:Class ; - rdfs:label "Automated Exfiltration" ; - rdfs:subClassOf :ExfiltrationTechnique, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :InternetNetworkTraffic ] ; - :attack-id "T1020" ; - :definition "Adversaries may exfiltrate data, such as sensitive documents, through the use of automated processing after being gathered during Collection.(Citation: ESET Gamaredon June 2020) " . - -:T1020.001 a owl:Class ; - rdfs:label "Traffic Duplication" ; - rdfs:subClassOf :T1020 ; - :attack-id "T1020.001" ; - :definition "Adversaries may leverage traffic mirroring in order to automate data exfiltration over compromised infrastructure. Traffic mirroring is a native feature for some devices, often used for network analysis. For example, devices may be configured to forward network traffic to one or more destinations for analysis by a network analyzer or other monitoring device. (Citation: Cisco Traffic Mirroring)(Citation: Juniper Traffic Mirroring)" . - -:T1021 a owl:Class ; - rdfs:label "Remote Services" ; - rdfs:subClassOf :LateralMovementTechnique, - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :IntranetNetworkTraffic ] ; - :attack-id "T1021" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to log into a service that accepts remote connections, such as telnet, SSH, and VNC. The adversary may then perform actions as the logged-on user." . - -:T1021.001 a owl:Class ; - rdfs:label "Remote Desktop Protocol" ; - rdfs:subClassOf :T1021, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :RDPSession ], - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :AdministrativeNetworkTraffic ] ; - :attack-id "T1021.001" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to log into a computer using the Remote Desktop Protocol (RDP). The adversary may then perform actions as the logged-on user." . - -:T1021.002 a owl:Class ; - rdfs:label "SMB/Windows Admin Shares" ; - rdfs:subClassOf :T1021 ; - :attack-id "T1021.002" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to interact with a remote network share using Server Message Block (SMB). The adversary may then perform actions as the logged-on user." . - -:T1021.003 a owl:Class ; - rdfs:label "Distributed Component Object Model" ; - rdfs:subClassOf :T1021 ; - :attack-id "T1021.003" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to interact with remote machines by taking advantage of Distributed Component Object Model (DCOM). The adversary may then perform actions as the logged-on user." . - -:T1021.004 a owl:Class ; - rdfs:label "SSH" ; - rdfs:subClassOf :T1021, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :SSHSession ], - [ a owl:Restriction ; - owl:onProperty :produces ; - owl:someValuesFrom :AdministrativeNetworkTraffic ] ; - :attack-id "T1021.004" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to log into remote machines using Secure Shell (SSH). The adversary may then perform actions as the logged-on user." . - -:T1021.005 a owl:Class ; - rdfs:label "VNC" ; - rdfs:subClassOf :T1021 ; - :attack-id "T1021.005" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to remotely control machines using Virtual Network Computing (VNC). VNC is a platform-independent desktop sharing system that uses the RFB (“remote framebuffer”) protocol to enable users to remotely control another computer’s display by relaying the screen, mouse, and keyboard inputs over the network.(Citation: The Remote Framebuffer Protocol)" . - -:T1021.006 a owl:Class ; - rdfs:label "Windows Remote Management" ; - rdfs:subClassOf :T1021 ; - :attack-id "T1021.006" ; - :definition "Adversaries may use [Valid Accounts](https://attack.mitre.org/techniques/T1078) to interact with remote systems using Windows Remote Management (WinRM). The adversary may then perform actions as the logged-on user." . - -:T1021.007 a owl:Class ; - rdfs:label "Cloud Services" ; - rdfs:subClassOf :T1021 ; - :attack-id "T1021.007" ; - :definition "Adversaries may log into accessible cloud services within a compromised environment using [Valid Accounts](https://attack.mitre.org/techniques/T1078) that are synchronized with or federated to on-premises user identities. The adversary may then perform management actions or access cloud-hosted resources as the logged-on user." . - -:T1021.008 a owl:Class ; - rdfs:label "Direct Cloud VM Connections" ; - rdfs:subClassOf :T1021 ; - :attack-id "T1021.008" ; - :definition "Adversaries may leverage [Valid Accounts](https://attack.mitre.org/techniques/T1078) to log directly into accessible cloud hosted compute infrastructure through cloud native methods. Many cloud providers offer interactive connections to virtual infrastructure that can be accessed through the [Cloud API](https://attack.mitre.org/techniques/T1059/009), such as Azure Serial Console(Citation: Azure Serial Console), AWS EC2 Instance Connect(Citation: EC2 Instance Connect)(Citation: lucr-3: Getting SaaS-y in the cloud), and AWS System Manager.(Citation: AWS System Manager)." . - -:T1022 a owl:Class ; - owl:deprecated true ; - rdfs:label "Data Encrypted" ; - rdfs:subClassOf :ExfiltrationTechnique ; - rdfs:comment "This technique has been revoked by T1560" ; - :attack-id "T1022" ; - :definition "Data is encrypted before being exfiltrated in order to hide the information that is being exfiltrated from detection or to make the exfiltration less conspicuous upon inspection by a defender. The encryption is performed by a utility, programming library, or custom algorithm on the data itself and is considered separate from any encryption performed by the command and control or file transfer protocol. Common file archive formats that can encrypt files are RAR and zip." ; - rdfs:seeAlso :T1560 . - -:T1023 a owl:Class ; - owl:deprecated true ; - rdfs:label "Shortcut Modification" ; - rdfs:subClassOf :PersistenceTechnique ; - rdfs:comment "This technique has been revoked by T1547.009" ; - :attack-id "T1023" ; - :definition "Shortcuts or symbolic links are ways of referencing other files or programs that will be opened or executed when the shortcut is clicked or executed by a system startup process. Adversaries could use shortcuts to execute their tools for persistence. They may create a new shortcut as a means of indirection that may use [Masquerading](https://attack.mitre.org/techniques/T1036) to look like a legitimate program. Adversaries could also edit the target path or entirely replace an existing shortcut so their tools will be executed instead of the intended legitimate program." ; - rdfs:seeAlso :T1547.009 . - -:T1024 a owl:Class ; - owl:deprecated true ; - rdfs:label "Custom Cryptographic Protocol" ; - rdfs:subClassOf :CommandAndControlTechnique ; - rdfs:comment "This technique has been revoked by T1573" ; - :attack-id "T1024" ; - :definition "Adversaries may use a custom cryptographic protocol or algorithm to hide command and control traffic. A simple scheme, such as XOR-ing the plaintext with a fixed key, will produce a very weak ciphertext." ; - rdfs:seeAlso :T1573 . - -:T1025 a owl:Class ; - rdfs:label "Data from Removable Media" ; - rdfs:subClassOf :CollectionTechnique, - [ a owl:Restriction ; - owl:onProperty :accesses ; - owl:someValuesFrom :RemovableMediaDevice ] ; - :attack-id "T1025" ; - :definition "Adversaries may search connected removable media on computers they have compromised to find files of interest. Sensitive data can be collected from any removable media (optical disk drive, USB memory, etc.) connected to the compromised system prior to Exfiltration. Interactive command shells may be in use, and common functionality within [cmd](https://attack.mitre.org/software/S0106) may be used to gather information." . - -:T1026 a owl:Class ; - owl:deprecated true ; - rdfs:label "Multiband Communication" ; - rdfs:subClassOf :CommandAndControlTechnique ; - rdfs:comment "**This technique has been deprecated and should no longer be used.**" ; - :attack-id "T1026" ; - :definition "**This technique has been deprecated and should no longer be used.**" . - -:T1027 a owl:Class ; - rdfs:label "Obfuscated Files or Information" ; - rdfs:subClassOf :DefenseEvasionTechnique ; - :attack-id "T1027" ; - :definition "Adversaries may attempt to make an executable or file difficult to discover or analyze by encrypting, encoding, or otherwise obfuscating its contents on the system or in transit. This is common behavior that can be used across different platforms and the network to evade defenses." . - -:T1027.001 a owl:Class ; - rdfs:label "Binary Padding" ; - rdfs:subClassOf :T1027, - [ a owl:Restriction ; - owl:onProperty :modifies ; - owl:someValuesFrom :ExecutableBinary ] ; - :attack-id "T1027.001" ; - :definition "Adversaries may use binary padding to add junk data and change the on-disk representation of malware. This can be done without affecting the functionality or behavior of a binary, but can increase the size of the binary beyond what some security tools are capable of handling due to file size limitations." . - -:T1027.002 a owl:Class ; - rdfs:label "Software Packing" ; - rdfs:subClassOf :T1027, - [ a owl:Restriction ; - owl:onProperty :obfuscates ; - owl:someValuesFrom :ExecutableFile ] ; - :attack-id "T1027.002" ; - :definition "Adversaries may perform software packing or virtual machine software protection to conceal their code. Software packing is a method of compressing or encrypting an executable. Packing an executable changes the file signature in an attempt to avoid signature-based detection. Most decompression techniques decompress the executable code in memory. Virtual machine software protection translates an executable's original code into a special format that only a special virtual machine can run. A virtual machine is then called to run this code.(Citation: ESET FinFisher Jan 2018) " . - -:T1027.003 a owl:Class ; - rdfs:label "Steganography" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.003" ; - :definition "Adversaries may use steganography techniques in order to prevent the detection of hidden information. Steganographic techniques can be used to hide data in digital media such as images, audio tracks, video clips, or text files." . - -:T1027.004 a owl:Class ; - rdfs:label "Compile After Delivery" ; - rdfs:subClassOf :T1027, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :ExecutableFile ] ; - :attack-id "T1027.004" ; - :definition "Adversaries may attempt to make payloads difficult to discover and analyze by delivering files to victims as uncompiled code. Text-based source code files may subvert analysis and scrutiny from protections targeting executables/binaries. These payloads will need to be compiled before execution; typically via native utilities such as csc.exe or GCC/MinGW.(Citation: ClearSky MuddyWater Nov 2018)" . - -:T1027.005 a owl:Class ; - rdfs:label "Indicator Removal from Tools" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.005" ; - :definition "Adversaries may remove indicators from tools if they believe their malicious tool was detected, quarantined, or otherwise curtailed. They can modify the tool by removing the indicator and using the updated version that is no longer detected by the target's defensive systems or subsequent targets that may use similar systems." . - -:T1027.006 a owl:Class ; - rdfs:label "HTML Smuggling" ; - rdfs:subClassOf :T1027, - [ a owl:Restriction ; - owl:onProperty :creates ; - owl:someValuesFrom :JavaScriptBlob ], - [ a owl:Restriction ; - owl:onProperty :hides ; - owl:someValuesFrom :DigitalArtifact ] ; - :attack-id "T1027.006" ; - :definition "Adversaries may smuggle data and files past content filters by hiding malicious payloads inside of seemingly benign HTML files. HTML documents can store large binary objects known as JavaScript Blobs (immutable data that represents raw bytes) that can later be constructed into file-like objects. Data may also be stored in Data URLs, which enable embedding media type or MIME files inline of HTML documents. HTML5 also introduced a download attribute that may be used to initiate file downloads.(Citation: HTML Smuggling Menlo Security 2020)(Citation: Outlflank HTML Smuggling 2018)" ; - :todo "Digital artifact is not quite specific enough here. Although hides must for HTML hide an IBO, t is a file .. or information (so isn't always characterizable as a file.) Transmittable digitable artifacts (or digitally encodable (as opposed to physical hardware. But not \"software\", not executable. Ephemeral? What captures the essence of this? Binary data seems right (close enough, though binary data can be at rest and fixed in HW or SW... if accessible by digital system. That's close enough unless Mutable Binary Data is a necessary thing. But you could HTML smuggling in immutable-hardware memory (ROM) say, and it would be Binary Data (if we coin that na dfit it in could work.)" . - -:T1027.007 a owl:Class ; - rdfs:label "Dynamic API Resolution" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.007" ; - :definition "Adversaries may obfuscate then dynamically resolve API functions called by their malware in order to conceal malicious functionalities and impair defensive analysis. Malware commonly uses various [Native API](https://attack.mitre.org/techniques/T1106) functions provided by the OS to perform various tasks such as those involving processes, files, and other system artifacts." . - -:T1027.008 a owl:Class ; - rdfs:label "Stripped Payloads" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.008" ; - :definition "Adversaries may attempt to make a payload difficult to analyze by removing symbols, strings, and other human readable information. Scripts and executables may contain variables names and other strings that help developers document code functionality. Symbols are often created by an operating system’s `linker` when executable payloads are compiled. Reverse engineers use these symbols and strings to analyze code and to identify functionality in payloads.(Citation: Mandiant golang stripped binaries explanation)(Citation: intezer stripped binaries elf files 2018)" . - -:T1027.009 a owl:Class ; - rdfs:label "Embedded Payloads" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.009" ; - :definition "Adversaries may embed payloads within other files to conceal malicious content from defenses. Otherwise seemingly benign files (such as scripts and executables) may be abused to carry and obfuscate malicious payloads and content. In some cases, embedded payloads may also enable adversaries to [Subvert Trust Controls](https://attack.mitre.org/techniques/T1553) by not impacting execution controls such as digital signatures and notarization tickets.(Citation: Sentinel Labs) " . - -:T1027.010 a owl:Class ; - rdfs:label "Command Obfuscation" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.010" ; - :definition "Adversaries may obfuscate content during command execution to impede detection. Command-line obfuscation is a method of making strings and patterns within commands and scripts more difficult to signature and analyze. This type of obfuscation can be included within commands executed by delivered payloads (e.g., [Phishing](https://attack.mitre.org/techniques/T1566) and [Drive-by Compromise](https://attack.mitre.org/techniques/T1189)) or interactively via [Command and Scripting Interpreter](https://attack.mitre.org/techniques/T1059).(Citation: Akamai JS)(Citation: Malware Monday VBE)" . - -:T1027.011 a owl:Class ; - rdfs:label "Fileless Storage" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.011" ; - :definition "Adversaries may store data in \"fileless\" formats to conceal malicious activity from defenses. Fileless storage can be broadly defined as any format other than a file. Common examples of non-volatile fileless storage include the Windows Registry, event logs, or WMI repository.(Citation: Microsoft Fileless)(Citation: SecureList Fileless)" . - -:T1027.012 a owl:Class ; - rdfs:label "LNK Icon Smuggling" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.012" ; - :definition "Adversaries may smuggle commands to download malicious payloads past content filters by hiding them within otherwise seemingly benign windows shortcut files. Windows shortcut files (.LNK) include many metadata fields, including an icon location field (also known as the `IconEnvironmentDataBlock`) designed to specify the path to an icon file that is to be displayed for the LNK file within a host directory." . - -:T1027.013 a owl:Class ; - rdfs:label "Encrypted/Encoded File" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.013" ; - :definition "Adversaries may encrypt or encode files to obfuscate strings, bytes, and other specific patterns to impede detection. Encrypting and/or encoding file content aims to conceal malicious artifacts within a file used in an intrusion. Many other techniques, such as [Software Packing](https://attack.mitre.org/techniques/T1027/002), [Steganography](https://attack.mitre.org/techniques/T1027/003), and [Embedded Payloads](https://attack.mitre.org/techniques/T1027/009), share this same broad objective. Encrypting and/or encoding files could lead to a lapse in detection of static signatures, only for this malicious content to be revealed (i.e., [Deobfuscate/Decode Files or Information](https://attack.mitre.org/techniques/T1140)) at the time of execution/use." . - -:T1027.014 a owl:Class ; - rdfs:label "Polymorphic Code" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.014" ; - :definition "Adversaries may utilize polymorphic code (also known as metamorphic or mutating code) to evade detection. Polymorphic code is a type of software capable of changing its runtime footprint during code execution.(Citation: polymorphic-blackberry) With each execution of the software, the code is mutated into a different version of itself that achieves the same purpose or objective as the original. This functionality enables the malware to evade traditional signature-based defenses, such as antivirus and antimalware tools.(Citation: polymorphic-sentinelone)" . - -:T1027.015 a owl:Class ; - rdfs:label "Compression" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.015" ; - :definition "Adversaries may use compression to obfuscate their payloads or files. Compressed file formats such as ZIP, gzip, 7z, and RAR can compress and archive multiple files together to make it easier and faster to transfer files. In addition to compressing files, adversaries may also compress shellcode directly - for example, in order to store it in a Windows Registry key (i.e., [Fileless Storage](https://attack.mitre.org/techniques/T1027/011)).(Citation: Trustwave Pillowmint June 2020)" . - -:T1027.016 a owl:Class ; - rdfs:label "Junk Code Insertion" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.016" ; - :definition "Adversaries may use junk code / dead code to obfuscate a malware’s functionality. Junk code is code that either does not execute, or if it does execute, does not change the functionality of the code. Junk code makes analysis more difficult and time-consuming, as the analyst steps through non-functional code instead of analyzing the main code. It also may hinder detections that rely on static code analysis due to the use of benign functionality, especially when combined with [Compression](https://attack.mitre.org/techniques/T1027/015) or [Software Packing](https://attack.mitre.org/techniques/T1027/002).(Citation: ReasonLabs)(Citation: ReasonLabs Cyberpedia Junk Code)" . - -:T1027.017 a owl:Class ; - rdfs:label "SVG Smuggling" ; - rdfs:subClassOf :T1027 ; - :attack-id "T1027.017" ; - :definition "Adversaries may smuggle data and files past content filters by hiding malicious payloads inside of seemingly benign SVG files.(Citation: Trustwave SVG Smuggling 2025) SVGs, or Scalable Vector Graphics, are vector-based image files constructed using XML. As such, they can legitimately include ` diff --git a/gui/views/cti.vue b/gui/views/cti.vue index 3998c22..96bd4b7 100644 --- a/gui/views/cti.vue +++ b/gui/views/cti.vue @@ -3,13 +3,15 @@ ============================================================ --> @@ -231,6 +336,9 @@ import McpModelConfigPanel from '../components/modelSelector.vue' const backendConfig = ref(null) const ctiFile = ref(null) const ctiFileInput = ref(null) +const isDragging = ref(false) +const dragDepth = ref(0) +const ctiDropError = ref('') const ctiStatus = ref('') const expandedDirs = ref({}) const rawFiles = ref([]) @@ -241,6 +349,11 @@ const stixData = ref(null) const stixFilename = ref('') const stixFiles = ref([]) +const showRawModal = ref(false) +const rawViewer = reactive({ + filename: '', kind: '', size: 0, text: '', loading: false, error: '', +}) + /* ============================================================ * Computed * ============================================================ */ @@ -291,6 +404,17 @@ function toggleRawSelection(row) { : selectedRaw.add(key) } +// A directory row has no selectable file of its own, so clicking it expands. +// Every other row selects, which makes the row the hit target instead of the +// checkbox alone. +function onRawRowClick(row) { + if (row._kind === 'parent' && row.type === 'dir') { + toggleDir(row.name) + return + } + toggleRawSelection(row) +} + function toggleStixSelection(name) { selectedStix.has(name) ? selectedStix.delete(name) @@ -307,21 +431,28 @@ async function loadBackendConfig() { const data = await res.json() const cfg = data?.config ?? data ?? {} const cti = cfg?.cti ?? {} + // The server resolves this now: it layers the profiles and applies the env + // indirection with the same code extraction runs. Doing it here meant a + // second copy of the allowlist and no env resolution at all, so the panel + // printed "not set" for an endpoint that came from MCP_LLM_API_BASE. + const resolved = data?.resolved?.cti ?? {} - // api_key is deliberately absent: get_config never returns one. The - // *_env names are surfaced so the panel can say where the key and the - // endpoint actually come from. + // api_key is deliberately absent: the server strips it from both payloads. backendConfig.value = { - provider: cti.provider ?? null, - model: cti.model ?? null, - api_base: cti.api_base ?? '', - api_base_env: cti.api_base_env ?? null, - api_key_env: cti.api_key_env ?? null, - temperature: cti.temperature ?? 0.0, - max_tokens: cti.max_tokens ?? 4000, - timeout: cti.timeout ?? 120, - offline: cti.offline ?? false, - use_mock: cti.use_mock ?? false + api_base_env: resolved.api_base_env ?? null, + api_key_env: resolved.api_key_env ?? null, + // The editable generation settings, resolved so the inputs show what is + // actually in force rather than only what local.yml happens to restate. + // Shared with the global profile, so whatever the server resolved is the + // number both panels must show. + temperature: resolved.temperature, + max_tokens: resolved.max_tokens, + timeout: resolved.timeout ?? 120, + offline: resolved.offline ?? false, + // Read-only. A workload profile cannot override the connection, so this + // is always what will run. + resolved_model: resolved.model ?? null, + resolved_api_base: resolved.api_base || null, } } /* ============================================================ @@ -348,8 +479,54 @@ async function deleteSelectedRaw() { loadRawFiles() } +// Mirrors the extension check in mcp_api.upload_cti_raw. Rejecting here keeps +// an unsupported file from becoming a 400 the operator has to interpret. +const CTI_EXTENSIONS = ['.txt', '.md', '.html', '.pdf'] + +function acceptCtiFile(file) { + ctiDropError.value = '' + if (!file) return + const name = (file.name || '').toLowerCase() + if (!CTI_EXTENSIONS.some(ext => name.endsWith(ext))) { + ctiDropError.value = `${file.name} is not a supported type. Use TXT, MD, HTML or PDF.` + ctiFile.value = null + return + } + ctiFile.value = file +} + function onCtiFileSelected(e) { - ctiFile.value = e.target.files[0] + acceptCtiFile(e.target.files[0]) +} + +function onDragEnter() { + dragDepth.value += 1 + isDragging.value = true +} + +function onDragLeave() { + // dragleave also fires when the cursor crosses a child element, so track + // depth rather than clearing on the first one. + dragDepth.value -= 1 + if (dragDepth.value <= 0) { + dragDepth.value = 0 + isDragging.value = false + } +} + +function onDrop(e) { + dragDepth.value = 0 + isDragging.value = false + const files = e.dataTransfer?.files + if (!files || !files.length) return + if (files.length > 1) { + ctiDropError.value = 'Drop one file at a time.' + return + } + acceptCtiFile(files[0]) + // The hidden input still holds any earlier pick, so clear it to keep the + // two entry points from disagreeing about what is staged. + if (ctiFileInput.value) ctiFileInput.value.value = '' } async function uploadCti() { @@ -363,11 +540,16 @@ async function uploadCti() { body: form }) - if (!res.ok) throw new Error('CTI upload failed') + if (!res.ok) { + ctiStatus.value = `Upload failed (${res.status}).` + return + } - ctiStatus.value = 'Raw CTI ingestion successful.' + // Staged only. Nothing is extracted until Run Pipeline. + ctiStatus.value = 'File staged. Select it and press Run Pipeline to extract.' ctiFile.value = null - ctiFileInput.value.value = '' + ctiDropError.value = '' + if (ctiFileInput.value) ctiFileInput.value.value = '' loadRawFiles() } @@ -385,7 +567,8 @@ async function loadStixFiles() { name: f.filename, size: f.size, model: f.model, - provider: f.provider + provider: f.provider, + extractor: f.extractor })) } @@ -420,6 +603,31 @@ async function downloadStix(files) { } } +// A nested row is addressed by "/", the same key selection uses. +async function viewRaw(row) { + const name = row._kind === 'parent' ? row.name : itemPath(row._parent, row.name) + + Object.assign(rawViewer, { + filename: name, kind: '', size: 0, text: '', loading: true, error: '', + }) + showRawModal.value = true + + try { + const res = await fetch('/plugin/mcp/cti/raw/view', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ filename: name }) + }) + const data = await res.json() + if (!res.ok) throw new Error(data.error || `HTTP ${res.status}`) + Object.assign(rawViewer, { + kind: data.kind, size: data.size, text: data.text, loading: false, + }) + } catch (e) { + Object.assign(rawViewer, { loading: false, error: e.message }) + } +} + async function viewStix(filename) { const res = await fetch('/plugin/mcp/stix/get_stix', { method: 'POST', @@ -437,14 +645,78 @@ async function viewStix(filename) { * Pipeline Execution * ============================================================ */ async function runPipelineForSelected() { - await fetch('/plugin/mcp/cti/run', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ files: Array.from(selectedRaw), step: 'all' }) - }) + const count = selectedRaw.size + if (!count) { + ctiStatus.value = 'Select a file first.' + return + } + + ctiStatus.value = 'Starting pipeline…' + + let res + try { + res = await fetch('/plugin/mcp/cti/run', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ files: Array.from(selectedRaw), step: 'all' }) + }) + } catch (e) { + ctiStatus.value = `Could not reach the server: ${e.message}` + return + } - ctiStatus.value = 'CTI pipeline started.' + // The handler rejects an empty or malformed file list with a 400, which + // this used to report as success. + if (!res.ok) { + let detail = '' + try { detail = (await res.json()).error || '' } catch { /* non-JSON body */ } + ctiStatus.value = `Pipeline did not start (${res.status})${detail ? ': ' + detail : ''}.` + return + } + + // Accepted, not finished. The run happens in a background executor, so the + // outcome is polled rather than awaited; without this a failure only ever + // reached the server log and the row sat on "pending" forever. + ctiStatus.value = `Pipeline running on ${count} file${count === 1 ? '' : 's'}…` selectedRaw.clear() + pollCtiStatus() +} + +// Bounded so a wedged run stops the poll rather than hitting the endpoint +// until the tab closes. +const CTI_POLL_INTERVAL_MS = 2000 +const CTI_POLL_LIMIT = 150 + +async function pollCtiStatus(attempt = 0) { + if (attempt >= CTI_POLL_LIMIT) { + ctiStatus.value = + 'Still running after 5 minutes. Check the server log; the page will not ' + + 'update further.' + return + } + + await new Promise(r => setTimeout(r, CTI_POLL_INTERVAL_MS)) + + let data + try { + const res = await fetch('/plugin/mcp/cti/status') + if (!res.ok) throw new Error(`HTTP ${res.status}`) + data = await res.json() + } catch (e) { + ctiStatus.value = `Lost contact with the server: ${e.message}` + return + } + + if (data.state === 'running') { + loadRawFiles() + return pollCtiStatus(attempt + 1) + } + + if (data.state === 'failed') { + ctiStatus.value = `Pipeline failed: ${data.error || 'no detail reported'}` + } else { + ctiStatus.value = 'Pipeline complete.' + } loadRawFiles() loadStixFiles() @@ -473,4 +745,144 @@ onMounted(() => { .cti-page { padding: 0 1rem; } + +/* The whole row toggles its checkbox, so it has to read as clickable. */ +.is-clickable-row { + cursor: pointer; +} +.is-clickable-row:hover { + background-color: rgba(158, 98, 255, 0.08); +} +/* The checkbox keeps its own cursor: clicking it does the same thing, but a + text cursor over the label would suggest it does not. */ +.is-clickable-row input[type="checkbox"] { + cursor: pointer; +} +.dir-caret { + display: inline-block; + width: 1em; + color: #9e62ff; +} + +/* Both tables share these so the File column starts at the same x on each. */ +.select-col { + width: 2.5rem; +} +.view-col { + width: 5rem; +} +.file-cell { + word-break: break-all; +} + +/* ============================================================ + * RAW REPORT PREVIEW + * ============================================================ */ +.raw-viewer { + width: min(900px, 92vw); +} +.raw-viewer__heading { + flex-grow: 1; + min-width: 0; +} +.raw-viewer__meta { + font-size: 0.75rem; + color: #a0a0a0; + margin-top: 0.15rem; +} +.raw-viewer__close { + flex-shrink: 0; + background: none; + border: none; + cursor: pointer; + color: #9e62ff; + font-size: 2rem; + line-height: 1; + padding: 0 0.25rem; + transition: color 0.15s ease; +} +.raw-viewer__close:hover, +.raw-viewer__close:focus-visible { + color: #c9a3ff; +} +/* pre would otherwise force the modal wider than the viewport on a report + with long unbroken lines, which a PDF extraction often has. */ +.raw-viewer__text { + background: transparent; + padding: 0; + font-size: 0.8rem; + line-height: 1.55; + white-space: pre-wrap; + word-break: break-word; + color: #f5f5f5; +} + +/* The box stretches to match the config panel beside it, so the dropzone + takes the slack rather than leaving it under a fixed-height target. */ +.cti-ingest { + display: flex; + flex-direction: column; +} + +.cti-dropzone { + border: 1px dashed rgba(158, 98, 255, 0.45); + border-radius: 8px; + background-color: #242424; + padding: 1.75rem 1rem; + text-align: center; + cursor: pointer; + transition: border-color 0.15s ease, background-color 0.15s ease; + /* Grow into the leftover height, but keep a sane target when the column + is short (narrow viewport, or the panel collapses under it). */ + flex-grow: 1; + min-height: 7rem; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.35rem; +} +.cti-dropzone:hover, +.cti-dropzone:focus-visible { + border-color: rgba(158, 98, 255, 0.8); + background-color: #2a2730; +} +/* The browser paints no drag feedback of its own, so the lift has to be + obvious enough to read as a valid target mid-drag. */ +.cti-dropzone.is-dragging { + border-color: #9e62ff; + border-style: solid; + background-color: #2f2838; +} +.cti-dropzone.has-file { + border-style: solid; + border-color: rgba(72, 199, 142, 0.6); +} +.cti-dropzone__copy, +.cti-dropzone__file { + margin: 0; + color: #f5f5f5; + word-break: break-all; +} +.cti-dropzone__link { + color: #9e62ff; + text-decoration: underline; +} +.cti-dropzone__size { + color: #a0a0a0; + margin-left: 0.4rem; + white-space: nowrap; +} +.cti-dropzone__hint { + /* Spacing comes from the zone's gap now. */ + margin: 0; + font-size: 0.75rem; + color: #a0a0a0; +} + +/* Pointer-events off so a drag over the filename does not fire dragleave on + the zone, which would flicker the highlight. */ +.cti-dropzone * { + pointer-events: none; +} diff --git a/gui/views/mcp.vue b/gui/views/mcp.vue index cc3745b..7486cb0 100644 --- a/gui/views/mcp.vue +++ b/gui/views/mcp.vue @@ -142,20 +142,6 @@ -
- -
- -
-
-
@@ -187,6 +173,20 @@
+
+ +
+ +
+
+
@@ -213,6 +213,16 @@
+

+ {{ serverSyncState.message }} +

+ +

+ Model, endpoint and limits are saved on the server and used by + every workflow, including CTI extraction. The API key stays in + this browser and is never written to disk. +

+

Server toggles and capability settings (e.g. RAG file picker) live inside each workflow's session page, scoped to what that @@ -286,7 +296,7 @@

Threat Hunter

- Analyzes adversary profile data to identify potential threats and suggests detection rules. + Turns a threat report into an adversary profile and reports which techniques have no matching ability.

@@ -500,7 +510,7 @@ async function handleCustomSubmit() {