diff --git a/rfcs/text/0044-add-apple-platform-specific-fields.md b/rfcs/text/0044-add-apple-platform-specific-fields.md new file mode 100644 index 000000000..8b14a79d5 --- /dev/null +++ b/rfcs/text/0044-add-apple-platform-specific-fields.md @@ -0,0 +1,119 @@ +# 0000: Name of RFC + + +- Stage: **0 (strawperson)** +- Date: **TBD** + + +### Summary +This RFC proposes the addition of Apple platform-specific fields to the ECS schema. This enhancement will enable security software vendors to more accurately map out data, particularly for Apple platforms. + +The following feelds needs to be considered being added: + +## Fields + +##### Proposed New Fields for Process object + +Field | Type | Example | Description +--- | --- | --- | --- +responsible | keyword | Terminal.app | The responsible process on macOS, from an ancestry perspective, is the process that originally launched or spawned a given process. +platform_binary | boolean | true | Indicates wethether this process executable is a default platform binary shipped with the operating system. +endpoint_security_client | boolean | true | Indicates wethether this process executable is an Endpoint Security client. + +##### Proposed New Fields for Code Signature object + +Field | Type | Example | Description +--- | --- | --- | --- +flags | string | 570522385 | The flags used to sign the process. + +##### Proposed New Fields for Hash object + +Field | Type | Example | Description +--- | --- | --- | --- +cdhash | keyword | 3783b4052fd474dbe30676b45c329e7a6d44acd9 | The Code Directory (CD) hash of an executable + +##### Proposed New Fields for Device object + +Field | Type | Example | Description +--- | --- | --- | --- +serial_number | keyword | DJGAQS4CW5 | The unique serial number serves as a distinct identifier for each device, aiding in inventory management and device authentication. + +### Motivation + +As the number of Apple endpoints in enterprises grows, having the right fields to map data becomes increasingly valuable. This enables security researchers using Elastic, particularly those focusing on macOS, to query data more effectively by leveraging enriched data sets. + +## Usage + +As a developer at Jamf, working on the Elastic integration for Jamf Protect, our goal is to map as many fields as possible, especially as Jamf specializes in Apple platform security. While developing the integration, we've identified some gaps related to mapping events to ECS. + +These new fields offer versatile methods. For instance, they facilitate querying process executions by platform binaries or endpoint security clients without requiring specific identifiers. The added hash fields are particularly valuable for tracking the hash of an application bundle alongside the hash of the executable in the directory itself, while the others are self-explanatory. + +## Source data + +This data originates from Endpoint Security software operating on a macOS host and can be transmitted through various methods, including an Elastic Agent and as example the use of the Jamf Protect integration, which supports AWS S3 or HTTPs. + + + + + + + + + + + + + +## People + +The following are the people that consulted on the contents of this RFC. + +* txhaflaire | author + + + + +## References + + + +### RFC Pull Requests + + + +* Stage 0: https://github.com/elastic/ecs/pull/2338 + + diff --git a/rfcs/text/0044/code_signature.yml b/rfcs/text/0044/code_signature.yml new file mode 100644 index 000000000..091339048 --- /dev/null +++ b/rfcs/text/0044/code_signature.yml @@ -0,0 +1,10 @@ +--- +- name: code_signature + fields: + - name: flags + level: extended + type: string + short: Code signing flags of the process + description: > + The flags used to sign the process. + example: 570522385 \ No newline at end of file diff --git a/rfcs/text/0044/device.yml b/rfcs/text/0044/device.yml new file mode 100644 index 000000000..5bfdcdb16 --- /dev/null +++ b/rfcs/text/0044/device.yml @@ -0,0 +1,10 @@ +--- +- name: device + fields: + - name: serial_number + level: core + type: keyword + short: Serial Number of the device + description: > + The unique serial number serves as a distinct identifier for each device, aiding in inventory management and device authentication. + example: DJGAQS4CW5 \ No newline at end of file diff --git a/rfcs/text/0044/hash.yml b/rfcs/text/0044/hash.yml new file mode 100644 index 000000000..9d76c4957 --- /dev/null +++ b/rfcs/text/0044/hash.yml @@ -0,0 +1,9 @@ +--- +- name: file + fields: + - name: cdhash + level: extended + type: keyword + short: The Code Directory (CD) hash of an executable. + description: Code directory hash, utilized to uniquely identify and authenticate the integrity of the executable code. + example: 3783b4052fd474dbe30676b45c329e7a6d44acd9 \ No newline at end of file diff --git a/rfcs/text/0044/process.yml b/rfcs/text/0044/process.yml new file mode 100644 index 000000000..d9e869143 --- /dev/null +++ b/rfcs/text/0044/process.yml @@ -0,0 +1,36 @@ +--- +- name: process + title: Process + group: 2 + short: These fields contain information about a process. + description: > + These fields contain information about a process. + + These fields can help you correlate metrics information with a process id/name + from a log message. The `process.pid` often stays in the metric itself and is + copied to the global field for correlation. + type: group + reusable: + top_level: true + expected: + - at: process + as: responsible + short_override: Information about the responsible process. + +- name: process + fields: + - name: platform_binary + level: extended + type: boolean + short: Indicates whether this process executable is a default platform binary shipped with the operating system. + description: > + Binaries that are shipped by the operating system are defined as platform binaries, this value is then set to true. + example: true + + - name: endpoint_security_client + level: extended + type: boolean + short: Indicates whether this process executable is an Endpoint Security client. + description: > + Processes that have an endpoint security client must have the com.apple.endpointsecurity entitlement and the value is set to true in the message. + example: true \ No newline at end of file