From d44ef9600069d5d9acde111e73260e957e7922b3 Mon Sep 17 00:00:00 2001 From: V <45754825+vxsh4d0w@users.noreply.github.com> Date: Sat, 22 Jul 2023 21:49:39 +0000 Subject: [PATCH 01/22] Update machinetag.json --- cryptocurrency-threat/machinetag.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cryptocurrency-threat/machinetag.json b/cryptocurrency-threat/machinetag.json index 8bba8fa..5a50d62 100644 --- a/cryptocurrency-threat/machinetag.json +++ b/cryptocurrency-threat/machinetag.json @@ -42,8 +42,12 @@ { "value": "Crypto Robbing Ransomware", "expanded": "Cyber-extortionists began distributing new malware that empties cryptocurrency wallets and steals private keys while holding user data hostage." - } - ], + }, + { + "value": "Rag Pull", + "expanded": "Crypto scam that occurs when a team pumps their project’s token before disappearing with the funds, leaving their investors with a valueless asset." + } + ], "refs": [ "https://ciphertrace.com/wp-content/uploads/2019/01/crypto_aml_report_2018q4.pdf" ] From 135f62cacecffa3450345871b900598f5ee32021 Mon Sep 17 00:00:00 2001 From: V <45754825+vxsh4d0w@users.noreply.github.com> Date: Sat, 22 Jul 2023 21:50:11 +0000 Subject: [PATCH 02/22] Update machinetag.json --- cryptocurrency-threat/machinetag.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cryptocurrency-threat/machinetag.json b/cryptocurrency-threat/machinetag.json index 5a50d62..f82ae2b 100644 --- a/cryptocurrency-threat/machinetag.json +++ b/cryptocurrency-threat/machinetag.json @@ -47,7 +47,7 @@ "value": "Rag Pull", "expanded": "Crypto scam that occurs when a team pumps their project’s token before disappearing with the funds, leaving their investors with a valueless asset." } - ], + ], "refs": [ "https://ciphertrace.com/wp-content/uploads/2019/01/crypto_aml_report_2018q4.pdf" ] From 32b2afd795faf42fd1c7e2cd70c9c3f731715032 Mon Sep 17 00:00:00 2001 From: Christian Studer Date: Thu, 7 Dec 2023 15:57:46 +0100 Subject: [PATCH 03/22] fix: [doping-substances] Deduplicated some entries --- doping-substances/machinetag.json | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/doping-substances/machinetag.json b/doping-substances/machinetag.json index f700b9e..cbafb6f 100644 --- a/doping-substances/machinetag.json +++ b/doping-substances/machinetag.json @@ -451,9 +451,6 @@ { "value": "fenoterol" }, - { - "value": "formoterol" - }, { "value": "higenamine" }, @@ -472,12 +469,6 @@ { "value": "reproterol" }, - { - "value": "salbutamol" - }, - { - "value": "salmeterol" - }, { "value": "terbutaline" }, @@ -488,9 +479,6 @@ { "value": "tulobuterol" }, - { - "value": "vilanterol" - }, { "value": "salbutamol", "expanded": "inhaled salbutamol: maximum 1600 micrograms over 24 hours in divided doses not to exceed 600 micrograms over 8 hours starting from any dose" From 92948d2cba6e3e4f5fa2975be3da15bf72a3f080 Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Sun, 31 Dec 2023 08:38:49 +0100 Subject: [PATCH 04/22] chg: [doc] doc and manifest updated --- MANIFEST.json | 2 +- summary.md | 368 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 351 insertions(+), 19 deletions(-) diff --git a/MANIFEST.json b/MANIFEST.json index 754ef76..74fa77f 100644 --- a/MANIFEST.json +++ b/MANIFEST.json @@ -755,5 +755,5 @@ } ], "url": "https://raw.githubusercontent.com/MISP/misp-taxonomies/main/", - "version": "20231122" + "version": "20231231" } diff --git a/summary.md b/summary.md index 6db86fb..998bad3 100644 --- a/summary.md +++ b/summary.md @@ -1,5 +1,5 @@ # Taxonomies -- Generation date: 2022-01-22 +- Generation date: 2023-12-31 - license: CC-0 - description: Manifest file of MISP taxonomies available. @@ -55,13 +55,29 @@ - 2 - 1 - 0 +### GrayZone +- description: Gray Zone of Active defense includes all elements which lay between reactive defense elements and offensive operations. It does fill the gray spot between them. Taxo may be used for active defense planning or modeling. +- version: 3 +- Predicates + - Adversary Emulation + - Beacons + - Deterrence + - Deception + - Tarpits, Sandboxes and Honeypots + - Threat Intelligence + - Threat Hunting + - Adversary Takedowns + - Ransomware + - Rescue Missions + - Sanctions, Indictments & Trade Remedies ### PAP - description: The Permissible Actions Protocol - or short: PAP - was designed to indicate how the received information can be used. -- version: 2 +- version: 3 - Predicates - RED - AMBER - GREEN + - CLEAR - WHITE ### access-method - description: The access method used to remotely access a system. @@ -154,6 +170,33 @@ - cat4 - cat5 - cat6 +### artificial-satellites +- description: This taxonomy was designed to describe artificial satellites +- version: 1 +- Predicates + - Meteorological and Earth observation + - Indian Space Research + - GEO + - Tracking + - Search & Rescue + - Earth Ressources + - Disaster Monitoring + - GNSS + - Space & Earth Science + - Geodetic + - Engineering + - Education +### aviation +- description: A taxonomy describing security threats or incidents against the aviation sector. +- version: 1 +- Predicates + - target + - target-systems + - target-sub-systems + - impact + - likelihood + - criticality + - certainty ### binary-class - description: Custom taxonomy for types of binary file. - version: 2 @@ -179,11 +222,25 @@ - severity - threat-vector ### circl -- description: CIRCL Taxonomy - Schemes of Classification in Incident Response and Detection -- version: 5 +- description: CIRCL Taxonomy - Schemes of Classification in Incident Response and Detection. +- version: 6 - Predicates - incident-classification - topic + - significant +### cnsd +- description: La presente taxonomia es la primera versión disponible para el Centro Nacional de Seguridad Digital del Perú. +- version: 20220513 +- Predicates + - Contenido abusivo + - Disponibilidad + - Fraude + - Fuga de información + - Intentos de intrusión + - Intrusión + - Malware + - Recopilación de información + - Otros ### coa - description: Course of action taken within organization to discover, detect, deny, disrupt, degrade, deceive and/or destroy an attack. - version: 2 @@ -234,9 +291,9 @@ - passive - active ### crowdsec -- description: The Crowdsec behaviors and classifications taxonomy is the list of taxonomies used in Crowdsec to describe the behaviors and classifications of an IP address. The behaviors are a list of attack categories for which a given IP address was reported, where the classifications describe a list of categories associated to an IP address and, when applicable, a list of false positive categories. +- description: Crowdsec IP address classifications and behaviors taxonomy. - version: 1 -- predicates +- Predicates - behavior - false-positive - classification @@ -254,6 +311,7 @@ - Decentralized Stable Coins - Email Extortion and Bomb Threats - Crypto Robbing Ransomware + - Pig Butchering Scam ### csirt-americas - description: Taxonomía CSIRT Américas. - version: 1 @@ -323,12 +381,14 @@ - Predicates - action ### dark-web -- description: Criminal motivation on the dark web: A categorisation model for law enforcement. ref: Janis Dalins, Campbell Wilson, Mark Carman. Taxonomy updated by MISP Project -- version: 4 +- description: Criminal motivation and content detection the dark web: A categorisation model for law enforcement. ref: Janis Dalins, Campbell Wilson, Mark Carman. Taxonomy updated by MISP Project and extended by the JRC (Joint Research Centre) of the European Commission. +- version: 5 - Predicates - topic - motivation - structure + - service + - content ### data-classification - description: Data classification for data potentially at risk of exfiltration based on table 2.1 of Solving Cyber Risk book. - version: 1 @@ -354,6 +414,143 @@ - Predicates - Einstufung - Schutzwort +### death-possibilities +- description: Taxonomy of Death Possibilities +- version: 1 +- Predicates + - (001-009) Intestinal infectious diseases + - (010-018) Tuberculosis + - (020-027) Zoonotic bacterial diseases + - (030-041) Other bacterial diseases + - (042-042) Human immunodeficiency virus [HIV] infection + - (045-049) Poliomyelitis and other non-arthropod-borne viral diseases of central nervous system + - (050-057) Viral diseases accompanied by exanthem + - (060-066) Arthropod-borne viral diseases + - (070-079) Other diseases due to viruses and Chlamydiae + - (080-088) Rickettsioses and other arthropod-borne diseases + - (090-099) Syphilis and other venereal diseases + - (100-104) Other spirochaetal diseases + - (110-118) Mycoses + - (120-129) Helminthiases + - (130-136) Other infectious and parasitic diseases + - (137-139) Late effects of infectious and parasitic diseases + - (140-149) Malignant neoplasm of lip, oral cavity and pharynx + - (150-159) Malignant neoplasm of digestive organs and peritoneum + - (160-165) Malignant neoplasm of respiratory and intrathoracic organs + - (170-176) Malignant neoplasm of bone, connective tissue, skin and breast + - (179-189) Malignant neoplasm of genito-urinary organs + - (190-199) Malignant neoplasm of other and unspecified sites + - (200-208) Malignant neoplasm of lymphatic and haematopoietic tissue + - (210-229) Benign neoplasms + - (230-234) Carcinoma in situ + - (235-238) Neoplasms of uncertain behaviour + - (239-239) Neoplasms of unspecified nature + - (240-246) Disorders of thyroid gland + - (250-259) Diseases of other endocrine glands + - (260-269) Nutritional deficiencies + - (270-279) Other metabolic disorders and immunity disorders + - (280-289) Diseases of blood and blood-forming organs + - (290-294) Organic psychotic conditions + - (295-299) Other psychoses + - (300-316) Neurotic disorders, personality disorders and other nonpsychotic mental disorders + - (317-319) Mental retardation + - (320-326) Inflammatory diseases of the central nervous system + - (330-337) Hereditary and degenerative diseases of the central nervous system + - (340-349) Other disorders of the central nervous system + - (350-359) Disorders of the peripheral nervous system + - (360-379) Disorders of the eye and adnexa + - (380-389) Diseases of the ear and mastoid process + - (390-392) Acute rheumatic fever + - (393-398) Chronic rheumatic heart disease + - (401-405) Hypertensive disease + - (410-414) Ischaemic heart disease + - (415-417) Diseases of pulmonary circulation + - (420-429) Other forms of heart disease + - (430-438) Cerebrovascular disease + - (440-448) Diseases of arteries, arterioles and capillaries + - (451-459) Diseases of veins and lymphatics, and other diseases of circulatory system + - (460-466) Acute respiratory infections + - (470-478) Other diseases of upper respiratory tract + - (480-487) Pneumonia and influenza + - (490-496) Chronic obstructive pulmonary disease and allied conditions + - (500-508) Pneumoconioses and other lung diseases due to external agents + - (510-519) Other diseases of respiratory system + - (520-529) Diseases of oral cavity, salivary glands and jaws + - (530-537) Diseases of oesophagus, stomach and duodenum + - (540-543) Appendicitis + - (550-553) Hernia of abdominal cavity + - (555-558) Non-infective enteritis and colitis + - (560-569) Other diseases of intestines and peritoneum + - (570-579) Other diseases of digestive system + - (580-589) Nephritis, nephrotic syndrome and nephrosis + - (590-599) Other diseases of urinary system + - (600-608) Diseases of male genital organs + - (610-611) Disorders of breast + - (614-616) Inflammatory disease of female pelvic organs + - (617-629) Other disorders of female genital tract + - (630-633) Ectopic and molar pregnancy + - (634-639) Other pregnancy with abortive outcome + - (640-648) Complications mainly related to pregnancy + - (650-659) Normal delivery and other indications for care in pregnancy, labour and delivery + - (660-669) Complications occurring mainly in the course of labour and delivery + - (670-677) Complications of the puerperium + - (680-686) Infections of skin and subcutaneous tissue + - (690-698) Other inflammatory conditions of skin and subcutaneous tissue + - (700-709) Other diseases of skin and subcutaneous tissue + - (710-719) Arthropathies and related disorders + - (720-724) Dorsopathies + - (725-729) Rheumatism, excluding the back + - (730-739) Osteopathies, chondropathies and acquired musculoskeletal deformities + - (740-759) Congenital anomalies + - (760-763) Maternal causes of perinatal morbidity and mortality + - (764-779) Other conditions originating in the perinatal period + - (780-789) Symptoms + - (790-796) Nonspecific abnormal findings + - (797-799) Ill-defined and unknown causes of morbidity and mortality + - (800-804) Fracture of skull + - (805-809) Fracture of neck and trunk + - (810-819) Fracture of upper limb + - (820-829) Fracture of lower limb + - (830-839) Dislocation + - (840-848) Sprains and strains of joints and adjacent muscles + - (850-854) Intracranial injury, excluding those with skull fracture + - (860-869) Internal injury of chest, abdomen and pelvis + - (870-879) Open wound of head, neck and trunk + - (880-887) Open wound of upper limb + - (890-897) Open wound of lower limb + - (900-904) Injury to blood vessels + - (905-909) Late effects of injuries, poisonings, toxic effects and other external causes + - (910-919) Superficial injury + - (920-924) Contusion with intact skin surface + - (925-929) Crushing injury + - (930-939) Effects of foreign body entering through orifice + - (940-949) Burns + - (950-957) Injury to nerves and spinal cord + - (958-959) Certain traumatic complications and unspecified injuries + - (960-979) Poisoning by drugs, medicaments and biological substances + - (980-989) Toxic effects of substances chiefly nonmedicinal as to source + - (990-995) Other and unspecified effects of external causes + - (996-999) Complications of surgical and medical care, not elsewhere classified + - (E800-E807) Railway accidents + - (E810-E819) Motor vehicle traffic accidents + - (E820-E825) Motor vehicle nontraffic accidents + - (E826-E829) Other road vehicle accidents + - (E830-E838) Water transport accidents + - (E840-E845) Air and space transport accidents + - (E846-E848) Vehicle accidents not elsewhere classifiable + - (E849-E858) Accidental poisoning by drugs, medicaments and biologicals + - (E860-E869) Accidental poisoning by other solid and liquid substances, gases and vapours + - (E870-E876) Misadventures to patients during surgical and medical care + - (E878-E879) Surgical and medical procedures as the cause of abnormal reaction of patient or later complication, without mention of misadventure at the time of procedure + - (E880-E888) Accidental falls + - (E890-E899) Accidents caused by fire and flames + - (E900-E909) Accidents due to natural and environmental factors + - (E910-E915) Accidents caused by submersion, suffocation and foreign bodies + - (E916-E928) Other accidents + - (E929-E929) Late effects of accidental injury + - (E930-E949) Drugs, medicaments and biological substances causing adverse effects in therapeutic use + - (E950-E959) Suicide and self-inflicted injury + - (E960-E969) Homicide and injury purposely inflicted by other persons ### deception - description: Deception is an important component of information operations, valuable for both offense and defense. - version: 1 @@ -365,6 +562,12 @@ - quality - essence - speech-act-theory +### dga +- description: A taxonomy to describe domain-generation algorithms often called DGA. Ref: A Comprehensive Measurement Study of Domain Generating Malware Daniel Plohmann and others. +- version: 2 +- Predicates + - generation-scheme + - seeding ### dhs-ciip-sectors - description: DHS critical sectors as in https://www.dhs.gov/critical-infrastructure-sectors - version: 2 @@ -379,6 +582,15 @@ - Capability - Infrastructure - Victim +### diamond-model-for-influence-operations +- description: The diamond model for influence operations analysis is a framework that leads analysts and researchers toward a comprehensive understanding of a malign influence campaign by addressing the socio-political, technical, and psychological aspects of the campaign. The diamond model for influence operations analysis consists of 5 components: 4 corners and a core element. The 4 corners are divided into 2 axes: influencer and audience on the socio-political axis, capabilities and infrastructure on the technical axis. Narrative makes up the core of the diamond. +- version: 1 +- Predicates + - Influencer + - Capabilities + - Infrastructure + - Audience + - Narrative ### dni-ism - description: A subset of Information Security Marking Metadata ISM as required by Executive Order (EO) 13526. As described by DNI.gov as Data Encoding Specifications for Information Security Marking Metadata in Controlled Vocabulary Enumeration Values for ISM - version: 3 @@ -398,6 +610,23 @@ - Predicates - domain-status - domain-access-method +### doping-substances +- description: This taxonomy aims to list doping substances +- version: 2 +- Predicates + - anabolic agents + - peptide hormones, growth factors, related substances and mimetics + - beta-2 agonists + - hormone and metabolic modulators + - diuretics and masking agents + - manipulation of blood and blood components + - chemical and physical manipulation + - gene and cell doping + - stimulants + - narcotics + - cannabinoids + - glucocorticoids + - beta-blockers ### drugs - description: A taxonomy based on the superclass and class of drugs. Based on https://www.drugbank.ca/releases/latest - version: 2 @@ -578,14 +807,15 @@ - cyber-sopex - generic ### extended-event -- description: Reasons why an event has been extended. -- version: 1 +- description: Reasons why an event has been extended. This taxonomy must be used on the extended event. The competitive analysis aspect is from Psychology of Intelligence Analysis by Richard J. Heuer, Jr. ref:http://www.foo.be/docs/intelligence/PsychofIntelNew.pdf +- version: 2 - Predicates - competitive-analysis - extended-analysis - human-readable - chunked-event - update + - counter-analysis ### failure-mode-in-machine-learning - description: The purpose of this taxonomy is to jointly tabulate both the of these failure modes in a single place. Intentional failures wherein the failure is caused by an active adversary attempting to subvert the system to attain her goals – either to misclassify the result, infer private training data, or to steal the underlying algorithm. Unintentional failures wherein the failure is because an ML system produces a formally correct but completely unsafe outcome. - version: 1 @@ -594,7 +824,7 @@ - unintended-failures-summary ### false-positive - description: This taxonomy aims to ballpark the expected amount of false positives. -- version: 5 +- version: 7 - Predicates - risk - confirmed @@ -603,6 +833,15 @@ - version: 1 - Predicates - type +### financial +- description: Financial taxonomy to describe financial services, infrastructure and financial scope. +- version: 7 +- Predicates + - categories-and-types-of-services + - geographical-footprint + - online-exposition + - physical-presence + - services ### flesch-reading-ease - description: Flesch Reading Ease is a revised system for determining the comprehension difficulty of written material. The scoring of the flesh score can have a maximum of 121.22 and there is no limit on how low a score can be (negative score are valid). - version: 2 @@ -827,6 +1066,13 @@ - submission - output-format - certainty +### information-origin +- description: Taxonomy for tagging information by its origin: human-generated or AI-generated. +- version: 2 +- Predicates + - human-generated + - AI-generated + - uncertain-origin ### information-security-data-source - description: Taxonomy to classify the information security data sources. - version: 1 @@ -978,6 +1224,14 @@ - misp2yara - event-type - ids +### misp-workflow +- description: MISP workflow taxonomy to support result of workflow execution. +- version: 3 +- Predicates + - action-taken + - analysis + - mutability + - run ### monarc-threat - description: MONARC Threats Taxonomy - version: 1 @@ -1022,6 +1276,19 @@ - nature-root-cause - nature-severity - test +### nis2 +- description: The taxonomy is meant for large scale cybersecurity incidents, as mentioned in the Commission Recommendation of 13 May 2022, also known as the provisional agreement. It has two core parts: The nature of the incident, i.e. the underlying cause, that triggered the incident, and the impact of the incident, i.e. the impact on services, in which sector(s) of economy and society. +- version: 3 +- Predicates + - impact-sectors-impacted + - impact-subsectors-impacted + - important-entities + - impact-subsectors-important-entities + - impact-severity + - impact-outlook + - nature-root-cause + - nature-severity + - test ### open_threat - description: Open Threat Taxonomy v1.1 base on James Tarala of SANS http://www.auditscripts.com/resources/open_threat_taxonomy_v1.1a.pdf, https://files.sans.org/summit/Threat_Hunting_Incident_Response_Summit_2016/PDFs/Using-Open-Tools-to-Convert-Threat-Intelligence-into-Practical-Defenses-James-Tarala-SANS-Institute.pdf, https://www.youtube.com/watch?v=5rdGOOFC_yE, and https://www.rsaconference.com/writable/presentations/file_upload/str-r04_using-an-open-source-threat-model-for-prioritized-defense-final.pdf - version: 1 @@ -1072,6 +1339,12 @@ - state - psychological-acceptability - principle-of-persuasion +### poison-taxonomy +- description: Non-exhaustive taxonomy of natural poison +- version: 1 +- Predicates + - Poisonous plant + - Poisonous fungus ### political-spectrum - description: A political spectrum is a system to characterize and classify different political positions in relation to one another. - version: 1 @@ -1089,6 +1362,20 @@ - low - baseline-minor - baseline-negligible +### pyoti +- description: PyOTI automated enrichment schemes for point in time classification of indicators. +- version: 3 +- Predicates + - checkdmarc + - disposable-email + - emailrepio + - iris-investigate + - virustotal + - circl-hashlookup + - reputation-block-list + - abuseipdb + - greynoise-riot + - googlesafebrowsing ### ransomware - description: Ransomware is used to define ransomware types and the elements that compose them. - version: 6 @@ -1101,6 +1388,17 @@ - infection - communication - malicious-action +### ransomware-roles +- description: The seven roles seen in most ransomware incidents. +- version: 1 +- Predicates + - 1 - Initial Access Broker + - 2 - Ransomware Affiliate + - 3 - Data Manager + - 4 - Ransomware Operator + - 5 - Negotiator + - 6 - Chaser + - 7 - Accountant ### retention - description: Add a retenion time to events to automatically remove the IDS-flag on ip-dst or ip-src attributes. We calculate the time elapsed based on the date of the event. Supported time units are: d(ays), w(eeks), m(onths), y(ears). The numerical_value is just for sorting in the web-interface and is not used for calculations. - version: 3 @@ -1137,11 +1435,13 @@ - Predicates - event-status ### runtime-packer -- description: Runtime or software packer used to combine compressed data with the decompression code. The decompression code can add additional obfuscations mechanisms including polymorphic-packer or other obfuscation techniques. This taxonomy lists all the known or official packer used for legitimate use or for packing malicious binaries. -- version: 1 +- description: Runtime or software packer used to combine compressed or encrypted data with the decompression or decryption code. This code can add additional obfuscations mechanisms including polymorphic-packer or other obfuscation techniques. This taxonomy lists all the known or official packer used for legitimate use or for packing malicious binaries. +- version: 2 - Predicates - - portable-executable + - dex - elf + - macho + - pe - cli-assembly ### scrippsco2-fgc - description: Flags describing the sample @@ -1187,6 +1487,21 @@ - NZD - PSA - SPO +### sentinel-threattype +- description: Sentinel indicator threat types. +- version: 1 +- Predicates + - Botnet + - C2 + - CryptoMining + - Darknet + - DDoS + - MaliciousUrl + - Malware + - Phishing + - Proxy + - PUA + - WatchList ### smart-airports-threats - description: Threat taxonomy in the scope of securing smart airports by ENISA. https://www.enisa.europa.eu/publications/securing-smart-airports - version: 1 @@ -1196,6 +1511,18 @@ - natural-and-social-phenomena - third-party-failures - malicious-actions +### social-engineering-attack-vectors +- description: Attack vectors used in social engineering as described in 'A Taxonomy of Social Engineering Defense Mechanisms' by Dalal Alharthi and others. +- version: 1 +- Predicates + - technical + - non-technical +### srbcert +- description: SRB-CERT Taxonomy - Schemes of Classification in Incident Response and Detection +- version: 3 +- Predicates + - incident-type + - incident-criticality-level ### state-responsibility - description: A spectrum of state responsibility to more directly tie the goals of attribution to the needs of policymakers. - version: 1 @@ -1228,13 +1555,15 @@ - technical-sophistication-multiplier ### thales_group - description: Thales Group Taxonomy - was designed with the aim of enabling desired sharing and preventing unwanted sharing between Thales Group security communities. -- version: 2 +- version: 4 - Predicates - distribution - to_block - minarm - acn - sigpart + - a_isac + - intercert_france - ioc_confidence - tlp:black - Watcher @@ -1254,14 +1583,17 @@ - dns-server-attacks - dns-abuse-or-misuse ### tlp -- description: The Traffic Light Protocol - or short: TLP - was designed with the objective to create a favorable classification scheme for sharing sensitive information while keeping the control over its distribution at the same time. -- version: 5 +- description: The Traffic Light Protocol (TLP) (v2.0) was created to facilitate greater sharing of potentially sensitive information and more effective collaboration. Information sharing happens from an information source, towards one or more recipients. TLP is a set of four standard labels (a fifth label is included in amber to limit the diffusion) used to indicate the sharing boundaries to be applied by the recipients. Only labels listed in this standard are considered valid by FIRST. This taxonomy includes additional labels for backward compatibility which are no more validated by FIRST SIG. +- version: 10 - Predicates - red - amber + - amber+strict - green - white + - clear - ex:chr + - unclear ### tor - description: Taxonomy to describe Tor network infrastructure - version: 1 @@ -1385,7 +1717,7 @@ - degré-de-probabilité ### workflow - description: Workflow support language is a common language to support intelligence analysts to perform their analysis on data and information. -- version: 11 +- version: 12 - Predicates - todo - state \ No newline at end of file From 3d61b20e7ee8bca21f9bffe53c0952c54a6b72b0 Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Sun, 31 Dec 2023 08:42:44 +0100 Subject: [PATCH 05/22] chg: [doc] list updated --- README.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index acca427..6e362cf 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Internal taxonomy for CCCS. [Overview](https://www.misp-project.org/taxonomies.h ### circl [circl](https://github.com/MISP/misp-taxonomies/tree/main/circl) : -CIRCL Taxonomy - Schemes of Classification in Incident Response and Detection [Overview](https://www.misp-project.org/taxonomies.html#_circl) +CIRCL Taxonomy - Schemes of Classification in Incident Response and Detection. [Overview](https://www.misp-project.org/taxonomies.html#_circl) ### cnsd @@ -135,7 +135,7 @@ A Course Of Action analysis considers six potential courses of action for the de ### crowdsec [crowdsec](https://github.com/MISP/misp-taxonomies/tree/main/crowdsec) : -The Crowdsec behaviors and classifications taxonomy is the [list of taxonomies used in Crowdsec](https://doc.crowdsec.net/docs/next/cti_api/taxonomy) to describe the behaviors and classifications of an IP address. The behaviors are a list of attack categories for which a given IP address was reported, where the classifications describe a list of categories associated to an IP address and, when applicable, a list of false positive categories. [Overview](https://www.misp-project.org/taxonomies.html#_crowdsec) +Crowdsec IP address classifications and behaviors taxonomy. [Overview](https://www.misp-project.org/taxonomies.html#_crowdsec) ### cryptocurrency-threat @@ -185,7 +185,7 @@ Taxonomy to describe desired actions for Cytomic Orion [Overview](https://www.mi ### dark-web [dark-web](https://github.com/MISP/misp-taxonomies/tree/main/dark-web) : -Criminal motivation on the dark web: A categorisation model for law enforcement. ref: Janis Dalins, Campbell Wilson, Mark Carman. Taxonomy updated by MISP Project [Overview](https://www.misp-project.org/taxonomies.html#_dark_web) +Criminal motivation and content detection the dark web: A categorisation model for law enforcement. ref: Janis Dalins, Campbell Wilson, Mark Carman. Taxonomy updated by MISP Project and extended by the JRC (Joint Research Centre) of the European Commission. [Overview](https://www.misp-project.org/taxonomies.html#_dark_web) ### data-classification @@ -247,6 +247,11 @@ A subset of Information Security Marking Metadata ISM as required by Executive O [domain-abuse](https://github.com/MISP/misp-taxonomies/tree/main/domain-abuse) : Domain Name Abuse - taxonomy to tag domain names used for cybercrime. [Overview](https://www.misp-project.org/taxonomies.html#_domain_abuse) +### doping-substances + +[doping-substances](https://github.com/MISP/misp-taxonomies/tree/main/doping-substances) : +This taxonomy aims to list doping substances [Overview](https://www.misp-project.org/taxonomies.html#_doping_substances) + ### drugs [drugs](https://github.com/MISP/misp-taxonomies/tree/main/drugs) : @@ -427,6 +432,11 @@ How an incident is classified in its process to be resolved. The taxonomy is ins [infoleak](https://github.com/MISP/misp-taxonomies/tree/main/infoleak) : A taxonomy describing information leaks and especially information classified as being potentially leaked. The taxonomy is based on the work by CIRCL on the AIL framework. The taxonomy aim is to be used at large to improve classification of leaked information. [Overview](https://www.misp-project.org/taxonomies.html#_infoleak) +### information-origin + +[information-origin](https://github.com/MISP/misp-taxonomies/tree/main/information-origin) : +Taxonomy for tagging information by its origin: human-generated or AI-generated. [Overview](https://www.misp-project.org/taxonomies.html#_information_origin) + ### information-security-data-source [information-security-data-source](https://github.com/MISP/misp-taxonomies/tree/main/information-security-data-source) : @@ -662,6 +672,11 @@ Threat taxonomy in the scope of securing smart airports by ENISA. https://www.en [social-engineering-attack-vectors](https://github.com/MISP/misp-taxonomies/tree/main/social-engineering-attack-vectors) : Attack vectors used in social engineering as described in 'A Taxonomy of Social Engineering Defense Mechanisms' by Dalal Alharthi and others. [Overview](https://www.misp-project.org/taxonomies.html#_social_engineering_attack_vectors) +### srbcert + +[srbcert](https://github.com/MISP/misp-taxonomies/tree/main/srbcert) : +SRB-CERT Taxonomy - Schemes of Classification in Incident Response and Detection [Overview](https://www.misp-project.org/taxonomies.html#_srbcert) + ### state-responsibility [state-responsibility](https://github.com/MISP/misp-taxonomies/tree/main/state-responsibility) : From 41e8bdc4f3e5a4793c163ba4d49b3edb5516a834 Mon Sep 17 00:00:00 2001 From: Hendrik Baecker Date: Tue, 6 Feb 2024 14:28:16 +0100 Subject: [PATCH 06/22] Added 'course-of-action:passive=nodiscover' --- course-of-action/machinetag.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/course-of-action/machinetag.json b/course-of-action/machinetag.json index f302bae..5750e42 100644 --- a/course-of-action/machinetag.json +++ b/course-of-action/machinetag.json @@ -2,7 +2,7 @@ "namespace": "course-of-action", "expanded": "Courses of Action", "description": "A Course Of Action analysis considers six potential courses of action for the development of a cyber security capability.", - "version": 2, + "version": 3, "predicates": [ { "value": "passive", @@ -21,6 +21,10 @@ "value": "discover", "expanded": "The discover action is a 'historical look at the data'. This action heavily relies on your capability to store logs for a reasonable amount of time and have them accessible for searching. Typically, this type of action is applied against security information and event management (SIEM) or stored network data. The goal is to determine whether you have seen a specific indicator in the past." }, + { + "value": "nodiscover", + "expanded": "The no-discover action is a negation of discover in case you want to explicit prohibit 'historical look at the data'. The goal is to exclude a specific indicator from searches of historical data." + }, { "value": "detect", "expanded": "The passive action is setting up detection rules of an indicator for future traffic. These actions are most often executed via an intrusion detection system (IDS) or a specific logging rule on your firewall or application. It can also be configured as an alert in a SIEM when a specific condition is triggered." From 8cd705ba6200bdd42c0b9565e108b7aaf88db6ac Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Fri, 16 Feb 2024 16:18:09 +0100 Subject: [PATCH 07/22] chg: [exercise] updated --- exercise/machinetag.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/exercise/machinetag.json b/exercise/machinetag.json index ac88e77..e296bc7 100644 --- a/exercise/machinetag.json +++ b/exercise/machinetag.json @@ -45,6 +45,11 @@ { "predicate": "cyber-europe", "entry": [ + { + "value": "2024", + "expanded": "2024", + "description": "7th pan European cyber crisis exercise: Cyber Europe 2024 (CE2024)" + }, { "value": "2022", "expanded": "2022", @@ -104,6 +109,16 @@ "value": "2022", "expanded": "2022", "description": "Locked Shields 2022" + }, + { + "value": "2023", + "expanded": "2023", + "description": "Locked Shields 2023" + }, + { + "value": "2024", + "expanded": "2024", + "description": "Locked Shields 2024" } ] }, @@ -193,7 +208,7 @@ ] } ], - "version": 10, + "version": 11, "description": "Exercise is a taxonomy to describe if the information is part of one or more cyber or crisis exercise.", "expanded": "Exercise", "namespace": "exercise" From 08cab31a896accc8e4785913c92a39b35a3268d5 Mon Sep 17 00:00:00 2001 From: JRC-T2 <129943580+JRC-T2@users.noreply.github.com> Date: Mon, 4 Mar 2024 09:46:03 +0100 Subject: [PATCH 08/22] Update machinetag.json Added darknet ransomware activity support --- dark-web/machinetag.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/dark-web/machinetag.json b/dark-web/machinetag.json index a67ab08..7abb13a 100644 --- a/dark-web/machinetag.json +++ b/dark-web/machinetag.json @@ -2,7 +2,7 @@ "namespace": "dark-web", "expanded": "Dark Web", "description": "Criminal motivation and content detection the dark web: A categorisation model for law enforcement. ref: Janis Dalins, Campbell Wilson, Mark Carman. Taxonomy updated by MISP Project and extended by the JRC (Joint Research Centre) of the European Commission.", - "version": 5, + "version": 6, "predicates": [ { "value": "topic", @@ -359,6 +359,11 @@ "expanded": "videos", "description": "Videos and streaming" }, + { + "value": "ransomware-post", + "expanded": "ransomwarePost", + "description": "Ransomware post published by a ransomware group" + }, { "value": "unclear", "expanded": "unclear", @@ -473,6 +478,31 @@ "value": "pgp-public-key-block", "expanded": "pgpPublicKeyBlock", "description": "PGP public key block identified in the dark-web site" + }, + { + "value": "country", + "expanded": "country", + "description": "Associated country detected on the code of the dark-web site, following ISO 3166-1 alpha-2" + }, + { + "value": "company-name", + "expanded": "companyName", + "description": "Company name identified in a dark-web site" + }, + { + "value": "company-link", + "expanded": "companyLink", + "description": "Company link identified in a dark-web site" + }, + { + "value": "victim-address", + "expanded": "victimAddress", + "description": "Business address identified in a dark-web site" + }, + { + "value": "victim-TLD", + "expanded": "victimTLD", + "description": "Business Top Level Domain (TLD) of a company identified in a dark-web site" } ] } From 5e93071832fe504a51eb8d658ce05bd76958d927 Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Mon, 4 Mar 2024 09:57:26 +0100 Subject: [PATCH 09/22] fix: [tools] Fix #273 in markdown generator --- tools/machinetag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/machinetag.py b/tools/machinetag.py index 66ed96c..bb253ea 100755 --- a/tools/machinetag.py +++ b/tools/machinetag.py @@ -165,7 +165,7 @@ for taxonomy in taxonomies: if predicate.get('numerical_value'): doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['numerical_value']), adoc=doc, t='description') if predicate.get('exclusive'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['exclusive']), adoc=adoc, t='exclusive') + doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['exclusive']), adoc=doc, t='exclusive') else: print(machineTag(namespace=namespace, predicate=predicate['value'])) if args.e: From 5fc23d47955d9f8fae251332badfa92c9fcf7969 Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Mon, 4 Mar 2024 10:06:48 +0100 Subject: [PATCH 10/22] chg: [tools] clean-up python script to generate the asciidoctor files --- tools/machinetag.py | 290 +++++++++++++++++++++++++++++++------------- 1 file changed, 207 insertions(+), 83 deletions(-) diff --git a/tools/machinetag.py b/tools/machinetag.py index bb253ea..4cd42b8 100755 --- a/tools/machinetag.py +++ b/tools/machinetag.py @@ -32,25 +32,35 @@ import argparse import os import sys -skip_list = ['death-possibilities', 'poison-taxonomy', 'doping-substances'] +skip_list = ["death-possibilities", "poison-taxonomy", "doping-substances"] taxonomies = [] # Get our current directory from file location thisDir = os.path.dirname(__file__) -argParser = argparse.ArgumentParser(description='Dump Machine Tags (Triple Tags) from MISP taxonomies', epilog='Available taxonomies are {0}'.format(taxonomies)) -argParser.add_argument('-e', action='store_true', help='Include expanded tags') -argParser.add_argument('-a', action='store_true', help='Generate asciidoctor document from MISP taxonomies') -argParser.add_argument('-v', action='store_true', help='Include descriptions') -argParser.add_argument('-n', default=False, help='Show only the specified namespace') -argParser.add_argument('--disable-skip-list', default=False, action='store_true', help='disable default skip list') +argParser = argparse.ArgumentParser( + description="Dump Machine Tags (Triple Tags) from MISP taxonomies", + epilog="Available taxonomies are {0}".format(taxonomies), +) +argParser.add_argument("-e", action="store_true", help="Include expanded tags") +argParser.add_argument( + "-a", action="store_true", help="Generate asciidoctor document from MISP taxonomies" +) +argParser.add_argument("-v", action="store_true", help="Include descriptions") +argParser.add_argument("-n", default=False, help="Show only the specified namespace") +argParser.add_argument( + "--disable-skip-list", + default=False, + action="store_true", + help="disable default skip list", +) args = argParser.parse_args() if args.disable_skip_list: - skip_list = '' + skip_list = "" -for folder in os.listdir(os.path.join(thisDir, '../')): - if os.path.isfile(os.path.join(thisDir, '../', folder, 'machinetag.json')): +for folder in os.listdir(os.path.join(thisDir, "../")): + if os.path.isfile(os.path.join(thisDir, "../", folder, "machinetag.json")): if folder in skip_list: continue taxonomies.append(folder) @@ -58,23 +68,35 @@ for folder in os.listdir(os.path.join(thisDir, '../')): taxonomies.sort() -doc = '' +doc = "" if args.a: dedication = "\n[dedication]\n== Funding and Support\nThe MISP project is financially and resource supported by https://www.circl.lu/[CIRCL Computer Incident Response Center Luxembourg ].\n\nimage:{images-misp}logo.png[CIRCL logo]\n\nA CEF (Connecting Europe Facility) funding under CEF-TC-2016-3 - Cyber Security has been granted from 1st September 2017 until 31th August 2019 as ***Improving MISP as building blocks for next-generation information sharing***.\n\nimage:{images-misp}en_cef.png[CEF funding]\n\nIf you are interested to co-fund projects around MISP, feel free to get in touch with us.\n\n" doc = doc + ":toc: right\n" doc = doc + ":toclevels: 1\n" doc = doc + ":icons: font\n" - doc = doc + ":images-cdn: https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/logos/\n" + doc = ( + doc + + ":images-cdn: https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/logos/\n" + ) doc = doc + ":images-misp: https://www.misp-project.org/assets/images/\n" doc = doc + "= MISP taxonomies and classification as machine tags\n\n" doc = doc + "= Introduction\n" doc = doc + "\nimage::{images-cdn}misp-logo.png[MISP logo]\n" - doc = doc + "The MISP threat sharing platform is a free and open source software helping information sharing of threat intelligence including cyber security indicators, financial fraud or counter-terrorism information. The MISP project includes multiple sub-projects to support the operational requirements of analysts and improve the overall quality of information shared.\n\n" + doc = ( + doc + + "The MISP threat sharing platform is a free and open source software helping information sharing of threat intelligence including cyber security indicators, financial fraud or counter-terrorism information. The MISP project includes multiple sub-projects to support the operational requirements of analysts and improve the overall quality of information shared.\n\n" + ) doc = doc + "" - doc = "{} {} {} {}".format(doc, "\nTaxonomies that can be used in MISP (2.4) and other information sharing tool and expressed in Machine Tags (Triple Tags).", - "A machine tag is composed of a namespace (MUST), a predicate (MUST) and an (OPTIONAL) value.", - "Machine tags are often called triple tag due to their format.\n") - doc = doc + "The following document is generated from the machine-readable JSON describing the https://github.com/MISP/misp-taxonomies[MISP taxonomies]." + doc = "{} {} {} {}".format( + doc, + "\nTaxonomies that can be used in MISP (2.4) and other information sharing tool and expressed in Machine Tags (Triple Tags).", + "A machine tag is composed of a namespace (MUST), a predicate (MUST) and an (OPTIONAL) value.", + "Machine tags are often called triple tag due to their format.\n", + ) + doc = ( + doc + + "The following document is generated from the machine-readable JSON describing the https://github.com/MISP/misp-taxonomies[MISP taxonomies]." + ) doc = doc + "\n\n" doc = doc + "<<<\n" doc = doc + dedication @@ -87,31 +109,37 @@ if args.n: taxonomies.append(args.n) -def asciidoc(content=False, adoc=doc, t='title', toplevel=False): +def asciidoc(content=False, adoc=doc, t="title", toplevel=False): if not args.a: return False adoc = adoc + "\n" - if t == 'title': - content = '==== ' + content - elif t == 'predicate': - content = '=== ' + content - elif t == 'namespace': - content = '== ' + content + '\n' - content = "{}\n{}{} {}{}{} {}".format(content, 'NOTE: ', namespace, 'namespace available in JSON format at https://github.com/MISP/misp-taxonomies/blob/main/', - namespace, '/machinetag.json[*this location*]. The JSON format can be freely reused in your application', - 'or automatically enabled in https://www.github.com/MISP/MISP[MISP] taxonomy.') - elif t == 'description' and toplevel is True: + if t == "title": + content = "==== " + content + elif t == "predicate": + content = "=== " + content + elif t == "namespace": + content = "== " + content + "\n" + content = "{}\n{}{} {}{}{} {}".format( + content, + "NOTE: ", + namespace, + "namespace available in JSON format at https://github.com/MISP/misp-taxonomies/blob/main/", + namespace, + "/machinetag.json[*this location*]. The JSON format can be freely reused in your application", + "or automatically enabled in https://www.github.com/MISP/MISP[MISP] taxonomy.", + ) + elif t == "description" and toplevel is True: content = "\n{} \n".format(content) - elif t == 'description' and toplevel is False: + elif t == "description" and toplevel is False: try: (n, value) = content.split(":", 1) content = "\n{} \n".format(value) except: content = "\n{} \n".format(content) - elif t == 'numerical_value': + elif t == "numerical_value": (n, value) = content.split(":", 1) - content = "\nAssociated numerical value=\"{}\" \n".format(value) - elif t == 'exclusive': + content = '\nAssociated numerical value="{}" \n'.format(value) + elif t == "exclusive": (n, value) = content.split(":", 1) if n: content = "\nIMPORTANT: Exclusive flag set which means the values or predicate below must be set exclusively.\n" @@ -124,9 +152,9 @@ def machineTag(namespace=False, predicate=False, value=None): if namespace is False or predicate is False: return None if value is None: - return (u'{0}:{1}'.format(namespace, predicate)) + return "{0}:{1}".format(namespace, predicate) else: - return (u'{0}:{1}=\"{2}\"'.format(namespace, predicate, value)) + return '{0}:{1}="{2}"'.format(namespace, predicate, value) for taxonomy in taxonomies: @@ -136,70 +164,166 @@ for taxonomy in taxonomies: filename = os.path.join(thisDir, "../", taxonomy, "machinetag.json") with open(filename) as fp: t = json.load(fp) - namespace = t['namespace'] - if t.get('expanded'): - expanded_namespace = t['expanded'] + namespace = t["namespace"] + if t.get("expanded"): + expanded_namespace = t["expanded"] else: expanded_namespace = namespace if args.a: - doc = asciidoc(content=t['namespace'], adoc=doc, t='namespace') - doc = asciidoc(content=t['description'], adoc=doc, t='description', toplevel = True) - if t.get('exclusive'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=t['exclusive']), adoc=doc, t='exclusive') + doc = asciidoc(content=t["namespace"], adoc=doc, t="namespace") + doc = asciidoc( + content=t["description"], adoc=doc, t="description", toplevel=True + ) + if t.get("exclusive"): + doc = asciidoc( + content=machineTag(namespace=namespace, predicate=t["exclusive"]), + adoc=doc, + t="exclusive", + ) if args.v: - print('{0}'.format(t['description'])) - for predicate in t['predicates']: + print("{0}".format(t["description"])) + for predicate in t["predicates"]: if args.a: - doc = asciidoc(content=predicate['value'], adoc=doc, t='predicate') - if predicate.get('description'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['description']), adoc=doc, t='description') - if predicate.get('exclusive'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['exclusive']), adoc=doc, t='exclusive') + doc = asciidoc(content=predicate["value"], adoc=doc, t="predicate") + if predicate.get("description"): + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["description"] + ), + adoc=doc, + t="description", + ) + if predicate.get("exclusive"): + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["exclusive"] + ), + adoc=doc, + t="exclusive", + ) - if t.get('values') is None: + if t.get("values") is None: if args.a: - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['value']), adoc=doc) - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['expanded']), adoc=doc, t='description') - if predicate.get('description'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['description']), adoc=doc, t='description') - if predicate.get('numerical_value'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['numerical_value']), adoc=doc, t='description') - if predicate.get('exclusive'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=predicate['exclusive']), adoc=doc, t='exclusive') + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["value"] + ), + adoc=doc, + ) + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["expanded"] + ), + adoc=doc, + t="description", + ) + if predicate.get("description"): + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["description"] + ), + adoc=doc, + t="description", + ) + if predicate.get("numerical_value"): + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["numerical_value"] + ), + adoc=doc, + t="description", + ) + if predicate.get("exclusive"): + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=predicate["exclusive"] + ), + adoc=doc, + t="exclusive", + ) else: - print(machineTag(namespace=namespace, predicate=predicate['value'])) + print(machineTag(namespace=namespace, predicate=predicate["value"])) if args.e: - print("--> " + machineTag(namespace=expanded_namespace, predicate=predicate['expanded'])) - if predicate.get('description'): - print("--> " + predicate['description']) + print( + "--> " + + machineTag( + namespace=expanded_namespace, predicate=predicate["expanded"] + ) + ) + if predicate.get("description"): + print("--> " + predicate["description"]) else: - for e in t['values']: - if e['predicate'] == predicate['value']: - if 'expanded' in predicate: - expanded = predicate['expanded'] - for v in e['entry']: - if args.a and 'expanded' in v: - doc = asciidoc(content=machineTag(namespace=namespace, predicate=e['predicate'], value=v['value']), adoc=doc) - doc = asciidoc(content=machineTag(namespace=namespace, predicate=v['expanded']), adoc=doc, t='description') - if 'description' in v: - doc = asciidoc(content=machineTag(namespace=namespace, predicate=v['description']), adoc=doc, t='description') - if v.get('numerical_value'): - doc = asciidoc(content=machineTag(namespace=namespace, predicate=v['numerical_value']), adoc=doc, t='numerical_value') + for e in t["values"]: + if e["predicate"] == predicate["value"]: + if "expanded" in predicate: + expanded = predicate["expanded"] + for v in e["entry"]: + if args.a and "expanded" in v: + doc = asciidoc( + content=machineTag( + namespace=namespace, + predicate=e["predicate"], + value=v["value"], + ), + adoc=doc, + ) + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=v["expanded"] + ), + adoc=doc, + t="description", + ) + if "description" in v: + doc = asciidoc( + content=machineTag( + namespace=namespace, predicate=v["description"] + ), + adoc=doc, + t="description", + ) + if v.get("numerical_value"): + doc = asciidoc( + content=machineTag( + namespace=namespace, + predicate=v["numerical_value"], + ), + adoc=doc, + t="numerical_value", + ) else: - print(machineTag(namespace=namespace, predicate=e['predicate'], value=v['value'])) + print( + machineTag( + namespace=namespace, + predicate=e["predicate"], + value=v["value"], + ) + ) if args.e: - if'expanded' in v: - print("--> " + machineTag(namespace=namespace, predicate=expanded, value=v['expanded'])) + if "expanded" in v: + print( + "--> " + + machineTag( + namespace=namespace, + predicate=expanded, + value=v["expanded"], + ) + ) -with open('../mapping/mapping.json') as mapping: +with open("../mapping/mapping.json") as mapping: m = json.load(mapping) - output = '\n= Mapping of taxonomies\n' - output = '{}{}'.format(output, 'Analysts relying on taxonomies don\'t always know the appropriate namespace to use but know which value to use for classification. The MISP mapping taxonomy allows to map a single classification into a series of machine-tag synonyms.\n') + output = "\n= Mapping of taxonomies\n" + output = "{}{}".format( + output, + "Analysts relying on taxonomies don't always know the appropriate namespace to use but know which value to use for classification. The MISP mapping taxonomy allows to map a single classification into a series of machine-tag synonyms.\n", + ) for value in sorted(m.keys()): - output = '{}{} **{}**{}{}\n'.format(output,'\n.Mapping table - ',value,'\n|===\n|',value) - for mapped in m[value]['values']: - output = '{}|{}\n'.format(output,mapped) - output = '{}|===\n'.format(output) + output = "{}{} **{}**{}{}\n".format( + output, "\n.Mapping table - ", value, "\n|===\n|", value + ) + for mapped in m[value]["values"]: + output = "{}|{}\n".format(output, mapped) + output = "{}|===\n".format(output) doc = doc + output if args.a: From 5f580a3bb5aec4341787719b4ded294c1bd9321a Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Mon, 4 Mar 2024 10:10:41 +0100 Subject: [PATCH 11/22] chg: [MANIFEST] updated --- MANIFEST.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MANIFEST.json b/MANIFEST.json index 74fa77f..129688d 100644 --- a/MANIFEST.json +++ b/MANIFEST.json @@ -121,7 +121,7 @@ { "description": "A Course Of Action analysis considers six potential courses of action for the development of a cyber security capability.", "name": "course-of-action", - "version": 2 + "version": 3 }, { "description": "Crowdsec IP address classifications and behaviors taxonomy.", @@ -176,7 +176,7 @@ { "description": "Criminal motivation and content detection the dark web: A categorisation model for law enforcement. ref: Janis Dalins, Campbell Wilson, Mark Carman. Taxonomy updated by MISP Project and extended by the JRC (Joint Research Centre) of the European Commission.", "name": "dark-web", - "version": 5 + "version": 6 }, { "description": "Data classification for data potentially at risk of exfiltration based on table 2.1 of Solving Cyber Risk book.", @@ -306,7 +306,7 @@ { "description": "Exercise is a taxonomy to describe if the information is part of one or more cyber or crisis exercise.", "name": "exercise", - "version": 10 + "version": 11 }, { "description": "Reasons why an event has been extended. This taxonomy must be used on the extended event. The competitive analysis aspect is from Psychology of Intelligence Analysis by Richard J. Heuer, Jr. ref:http://www.foo.be/docs/intelligence/PsychofIntelNew.pdf", @@ -755,5 +755,5 @@ } ], "url": "https://raw.githubusercontent.com/MISP/misp-taxonomies/main/", - "version": "20231231" + "version": "20240304" } From c5566e0d036b9344f0c07a60a7e09ede8531f3fe Mon Sep 17 00:00:00 2001 From: V <45754825+vxsh4d0w@users.noreply.github.com> Date: Wed, 13 Mar 2024 13:56:28 +0000 Subject: [PATCH 12/22] Update machinetag.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added Stalkerware, ad defined by Kaspersky "commercially available software that can be discreetly installed on smartphone devices, enabling a perpetrator to monitor an individual’s private life without their knowledge" --- malware_classification/machinetag.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/malware_classification/machinetag.json b/malware_classification/machinetag.json index 64919d1..3699ad8 100644 --- a/malware_classification/machinetag.json +++ b/malware_classification/machinetag.json @@ -52,6 +52,10 @@ "value": "Adware", "expanded": "Adware" }, + { + "value": "Stalkerware", + "expanded": "Stalkerware" + }, { "value": "Spyware", "expanded": "Spyware" From 6f141c736c919b1c4d50b6b1775943f2dbe5c32f Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Wed, 13 Mar 2024 16:39:04 +0100 Subject: [PATCH 13/22] chg: [malware_classification] add `Stalkerware` from #275 --- malware_classification/machinetag.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/malware_classification/machinetag.json b/malware_classification/machinetag.json index 64919d1..5853130 100644 --- a/malware_classification/machinetag.json +++ b/malware_classification/machinetag.json @@ -1,7 +1,7 @@ { "namespace": "malware_classification", "description": "Classification based on different categories. Based on https://www.sans.org/reading-room/whitepapers/incident/malware-101-viruses-32848", - "version": 2, + "version": 3, "predicates": [ { "value": "malware-category", @@ -52,6 +52,10 @@ "value": "Adware", "expanded": "Adware" }, + { + "value": "Stalkerware", + "expanded": "Stalkerware" + }, { "value": "Spyware", "expanded": "Spyware" From a98790933a8843ed85ad5833c333332596bdaa4c Mon Sep 17 00:00:00 2001 From: Koen Van Impe Date: Fri, 15 Mar 2024 08:06:27 +0100 Subject: [PATCH 14/22] Add review-relevance and review-completeness to workflow taxonomy --- workflow/machinetag.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/workflow/machinetag.json b/workflow/machinetag.json index 17872cc..9f6336d 100644 --- a/workflow/machinetag.json +++ b/workflow/machinetag.json @@ -2,7 +2,7 @@ "namespace": "workflow", "expanded": "workflow to support analysis", "description": "Workflow support language is a common language to support intelligence analysts to perform their analysis on data and information.", - "version": 12, + "version": 13, "predicates": [ { "value": "todo", @@ -106,7 +106,15 @@ }, { "value": "preserve-evidence", - "expanded": "Preseve evidence mentioned in the information tagged" + "expanded": "Preserve evidence mentioned in the information tagged" + }, + { + "value": "review-relevance", + "expanded": "Review if the event is relevant" + }, + { + "value": "review-completeness", + "expanded": "Review if the event is complete" } ] }, From 01108b21bab1ba0798c54c060aa6bc7b93ed626b Mon Sep 17 00:00:00 2001 From: Jeroen Pinoy Date: Sat, 30 Mar 2024 13:14:25 +0100 Subject: [PATCH 15/22] chg: [priority-taxonomy] update reference url --- MANIFEST.json | 2 +- README.md | 2 +- priority-level/machinetag.json | 2 +- summary.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MANIFEST.json b/MANIFEST.json index 129688d..2c7df46 100644 --- a/MANIFEST.json +++ b/MANIFEST.json @@ -594,7 +594,7 @@ "version": 1 }, { - "description": "After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.us-cert.gov/NCCIC-Cyber-Incident-Scoring-System.", + "description": "After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.cisa.gov/news-events/news/cisa-national-cyber-incident-scoring-system-nciss.", "name": "priority-level", "version": 2 }, diff --git a/README.md b/README.md index 6e362cf..ee2bf52 100644 --- a/README.md +++ b/README.md @@ -605,7 +605,7 @@ A political spectrum is a system to characterize and classify different politica ### priority-level [priority-level](https://github.com/MISP/misp-taxonomies/tree/main/priority-level) : -After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.us-cert.gov/NCCIC-Cyber-Incident-Scoring-System. [Overview](https://www.misp-project.org/taxonomies.html#_priority_level) +After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.cisa.gov/news-events/news/cisa-national-cyber-incident-scoring-system-nciss. [Overview](https://www.misp-project.org/taxonomies.html#_priority_level) ### pyoti diff --git a/priority-level/machinetag.json b/priority-level/machinetag.json index 852a675..d0ff217 100644 --- a/priority-level/machinetag.json +++ b/priority-level/machinetag.json @@ -51,7 +51,7 @@ } ], "version": 2, - "description": "After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.us-cert.gov/NCCIC-Cyber-Incident-Scoring-System.", + "description": "After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.cisa.gov/news-events/news/cisa-national-cyber-incident-scoring-system-nciss.", "namespace": "priority-level", "exclusive": true } diff --git a/summary.md b/summary.md index 998bad3..ccb26d8 100644 --- a/summary.md +++ b/summary.md @@ -1352,7 +1352,7 @@ - ideology - left-right-spectrum ### priority-level -- description: After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.us-cert.gov/NCCIC-Cyber-Incident-Scoring-System. +- description: After an incident is scored, it is assigned a priority level. The six levels listed below are aligned with NCCIC, DHS, and the CISS to help provide a common lexicon when discussing incidents. This priority assignment drives NCCIC urgency, pre-approved incident response offerings, reporting requirements, and recommendations for leadership escalation. Generally, incident priority distribution should follow a similar pattern to the graph below. Based on https://www.cisa.gov/news-events/news/cisa-national-cyber-incident-scoring-system-nciss. - version: 2 - Predicates - emergency From 31eef7ab9e90e0c81ce79f7369d5871b69ea303f Mon Sep 17 00:00:00 2001 From: Koen Van Impe Date: Tue, 9 Apr 2024 14:36:01 +0200 Subject: [PATCH 16/22] Update machinetag.json Add review accuracy and review-quality --- workflow/machinetag.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workflow/machinetag.json b/workflow/machinetag.json index 9f6336d..5202339 100644 --- a/workflow/machinetag.json +++ b/workflow/machinetag.json @@ -2,7 +2,7 @@ "namespace": "workflow", "expanded": "workflow to support analysis", "description": "Workflow support language is a common language to support intelligence analysts to perform their analysis on data and information.", - "version": 13, + "version": 14, "predicates": [ { "value": "todo", @@ -115,6 +115,14 @@ { "value": "review-completeness", "expanded": "Review if the event is complete" + }, + { + "value": "review-accuracy", + "expanded": "Review the accuracy of an event or attribute" + }, + { + "value": "review-quality", + "expanded": "Review the quality of an event or attribute" } ] }, From 9b02532de9ddc1d3a92b7e61c36391a88c3f710a Mon Sep 17 00:00:00 2001 From: Jeroen Pinoy Date: Thu, 11 Apr 2024 17:15:58 +0200 Subject: [PATCH 17/22] chg: [misp:event-type] Add description of the tags --- misp/machinetag.json | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/misp/machinetag.json b/misp/machinetag.json index b067ad6..a973bc7 100644 --- a/misp/machinetag.json +++ b/misp/machinetag.json @@ -158,27 +158,32 @@ "predicate": "event-type", "entry": [ { - "expanded": "observation", + "description": "This event describes traits and indicators closely related to a single entity, like an email campaign or sighting of a reference sample on VirusTotal. Events of this type are typically created by SOC staff and may be verified by analysts. Observed and verified indicators would be consumed by automated filtering systems in order to support near-time threat prevention. In retrospect, observations could be correlated with reports and analysis events in order to help understand the motivation for an attack and to reassess the associated risk.", + "expanded": "observation related to single entity, like an email", "value": "observation" }, { - "expanded": "incident", + "description": "This event describes traits and indicators related to a security incident. As such, the event may refer to multiple entities like organizations, bank account numbers, files, and URLs. Events of this type contain first-hand information, that is, the reporting organization took part in the analysis of the incident. Use event type \"Report\" for second-hand information. Events of this type are typically created and consumed by analysts.", + "expanded": "incident, based on first-hand information", "value": "incident" }, { - "expanded": "report", + "description": "Traceability of indicators can be essential to document compliance of processes with legal obligations or company regulations. This event preserves a report to document the origin and context of indicators. Events of this type need to be checked by a human to ensure correct reproduction of indicators and context. Intended consumers are automated processes. Events may also serve as a basis for analysis reports or to justify preventive measures. If your organization is or was directly involved in an incident and you want to provide a first-hand account, then please use event type \"Incident\" instead.", + "expanded": "report, based on second-hand information", "value": "report" }, { - "expanded": "collection", + "description": "This event collects unrelated IoCs. For example, an event could combine all network IoCs that were learned of during a day or a week from events of other types.", + "expanded": "collection of unrelated IoCs", "value": "collection" }, { - "expanded": "analysis", + "description": "This event builds on \"observation\", \"incident\", and \"report\" events; adds enrichments; and provides context. Events of this type will be created by analysts with support by automated tools. Analysts are also the main consumers.", + "expanded": "analysis, contains context and enrichments", "value": "analysis" }, { - "expanded": "automatic-analysis", + "expanded": "the result of automated analysis.", "value": "automatic-analysis" } ] @@ -261,7 +266,7 @@ "value": "ids" } ], - "version": 12, + "version": 14, "description": "MISP taxonomy to infer with MISP behavior or operation.", "expanded": "MISP", "namespace": "misp" From d0f01210c8194b99260afab50581329fe9358e69 Mon Sep 17 00:00:00 2001 From: V <45754825+vxsh4d0w@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:50:35 +0000 Subject: [PATCH 18/22] Update machinetag.json Added Zombieware category, malware that has been abandoned by its operators, and despite being abandoned, new replications of the malware continue to appear in the wild. --- malware_classification/machinetag.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/malware_classification/machinetag.json b/malware_classification/machinetag.json index 5853130..f4bd19e 100644 --- a/malware_classification/machinetag.json +++ b/malware_classification/machinetag.json @@ -60,6 +60,10 @@ "value": "Spyware", "expanded": "Spyware" }, + { + "value": "Zombieware", + "expanded": "Zombieware" + }, { "value": "Botnet", "expanded": "Botnet" From e1a1d055a9edd9a149134382242f1add995b30bb Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Fri, 30 Aug 2024 09:27:41 +0200 Subject: [PATCH 19/22] new: [vulnerability] first version of a taxonomy for vulnerabilities This taxonomy is originally maintained by MISP project and done for the vulnerability-lookup project https://github.com/cve-search/vulnerability-lookup The taxonomy will be extended and improved. Contributions are also very welcome. Thanks to @cedricbonhomme for the original discussions. --- vulnerability/machinetag.json | 66 +++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 vulnerability/machinetag.json diff --git a/vulnerability/machinetag.json b/vulnerability/machinetag.json new file mode 100644 index 0000000..8aa398d --- /dev/null +++ b/vulnerability/machinetag.json @@ -0,0 +1,66 @@ +{ + "namespace": "vulnerability", + "expanded": "vulnerability", + "description": "A taxonomy for describing vulnerabilities (software, hardware, or social) on different scales or with additional available information.", + "version": 1, + "predicates": [ + { + "value": "exploitability", + "expanded": "Exploitability", + "description": "Quantification of attack exploitability, providing a level of exploitation for the identified vulnerability.", + "exclusive": true + }, + { + "value": "information", + "expanded": "Information", + "description": "Complementary information related to the vulnerability." + } + ], + "values": [ + { + "predicate": "exploitability", + "entry": [ + { + "value": "industrialised", + "expanded": "Industrialised", + "description": "Existing vulnerability with detailed attack methods; multiple tools are available for exploitation." + }, + { + "value": "customised", + "expanded": "Customised", + "description": "Existing vulnerability with a detailed attack approach and one known custom tool available for exploitation." + }, + { + "value": "documented", + "expanded": "Documented", + "description": "Existing vulnerability is documented with an attack approach, but tools for exploitation are not available." + }, + { + "value": "theoretical", + "expanded": "Theoretical", + "description": "Publication describes a theoretical but no actual vulnerability is reported." + } + ] + }, + { + "predicate": "information", + "entry": [ + { + "value": "PoC", + "expanded": "Proof-of-Concept", + "description": "Reference to a proof-of-concept for exploiting the vulnerability." + }, + { + "value": "remediation", + "expanded": "Remediation", + "description": "Remediation to limit or block the exploitability of the vulnerability." + }, + { + "value": "annotation", + "expanded": "Annotation", + "description": "Annotation or clarification to a vulnerability." + } + ] + } + ] +} From 220c5637975d0fec7e1ca73c24dee1e7e751ce6c Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Fri, 30 Aug 2024 09:31:29 +0200 Subject: [PATCH 20/22] chg: [MANIFEST] updated --- MANIFEST.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/MANIFEST.json b/MANIFEST.json index 2c7df46..f520aca 100644 --- a/MANIFEST.json +++ b/MANIFEST.json @@ -501,7 +501,7 @@ { "description": "Classification based on different categories. Based on https://www.sans.org/reading-room/whitepapers/incident/malware-101-viruses-32848", "name": "malware_classification", - "version": 2 + "version": 3 }, { "description": "classification for the identification of type of misinformation among websites. Source:False, Misleading, Clickbait-y, and/or Satirical News Sources by Melissa Zimdars 2019", @@ -511,7 +511,7 @@ { "description": "MISP taxonomy to infer with MISP behavior or operation.", "name": "misp", - "version": 12 + "version": 14 }, { "description": "MISP workflow taxonomy to support result of workflow execution.", @@ -748,12 +748,17 @@ "name": "vocabulaire-des-probabilites-estimatives", "version": 3 }, + { + "description": "A taxonomy for describing vulnerabilities (software, hardware, or social) on different scales or with additional available information.", + "name": "vulnerability", + "version": 1 + }, { "description": "Workflow support language is a common language to support intelligence analysts to perform their analysis on data and information.", "name": "workflow", - "version": 12 + "version": 14 } ], "url": "https://raw.githubusercontent.com/MISP/misp-taxonomies/main/", - "version": "20240304" + "version": "20240830" } From f467e5efe3a0fa4a980255f2b84a804e7e01f49e Mon Sep 17 00:00:00 2001 From: Alexandre Dulaunoy Date: Fri, 30 Aug 2024 09:44:05 +0200 Subject: [PATCH 21/22] fix: [tools] path fixed --- tools/gen.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/gen.sh b/tools/gen.sh index f2586a2..0e55f0f 100644 --- a/tools/gen.sh +++ b/tools/gen.sh @@ -1,7 +1,7 @@ python3 machinetag.py -a >a.txt asciidoctor a.txt asciidoctor-pdf -a allow-uri-read a.txt -cp a.html ../../misp-website-new/static/taxonomies.html -cp a.pdf ../../misp-website-new/static/taxonomies.pdf +cp a.html ../../misp-website/static/taxonomies.html +cp a.pdf ../../misp-website/static/taxonomies.pdf scp a.html circl@cpab.circl.lu:/var/www/nwww.circl.lu/doc/misp-taxonomies/index.html scp a.pdf circl@cpab.circl.lu://var/www/nwww.circl.lu/doc/misp-taxonomies/taxonomies.pdf From cb4982f9091a302a69f4f889c51e9b95e6aedf97 Mon Sep 17 00:00:00 2001 From: terrtia Date: Tue, 1 Oct 2024 14:48:22 +0200 Subject: [PATCH 22/22] chg: [infoleak] add qrcode tag --- infoleak/machinetag.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/infoleak/machinetag.json b/infoleak/machinetag.json index 9f50fd6..f2a5cff 100644 --- a/infoleak/machinetag.json +++ b/infoleak/machinetag.json @@ -32,7 +32,7 @@ "exclusive": true } ], - "version": 7, + "version": 8, "description": "A taxonomy describing information leaks and especially information classified as being potentially leaked. The taxonomy is based on the work by CIRCL on the AIL framework. The taxonomy aim is to be used at large to improve classification of leaked information.", "namespace": "infoleak", "values": [ @@ -159,6 +159,10 @@ "value": "onion", "expanded": "Onion link" }, + { + "value": "qrcode", + "expanded": "QR Code" + }, { "value": "sql-injection", "expanded": "SQL injection" @@ -288,6 +292,10 @@ "value": "onion", "expanded": "Onion link" }, + { + "value": "qrcode", + "expanded": "QR Code" + }, { "value": "sql-injection", "expanded": "SQL injection"