-
Couldn't load subscription status.
- Fork 18
Proposal: Add Hostname choice to Socket_Address Object to enable specifying Hostnames within Network_Connections
Status: Closed
Comment Period Closes: 01/02/2014
Affects Backwards Compatibility: No
Relevant Issue: https://github.com/CybOXProject/schemas/issues/28
This proposal concerns the ability to characterize either end of a network connection using a Hostname rather than or in addition to an address. CybOX currently lacks any such capability.
Create a new Hostname Object with a Hostname_Value element for capturing the hostname, a Naming_System element for specifying the relevant naming system (DNS, NIS, NetBIOS, etc.), and an is_domain_name attribute for specifying if the hostname in the Hostname_Value field is also a domain name.
Add a new Choice structure to SocketAddressObjectType, move the IP_Address element under this new Choice and add a new Hostname element of HostnameObjectType under this new Choice.
The new HostnameObjectType makes the addition to SocketAddressObjectType well-structured and may be useful in other constructs in addition to providing an ability to specify an atomic Hostname on its own.
The addition of the new Choice and Hostname element to Socket_Address will enable flexibility to specify any network Socket_Address as either an IP_Address/Port pair or a Hostname/Port pair. It will also enable the specification of just an IP_Address, just a Hostname or just a Port. This change to Socket_Address would indirectly enable the specification of either end of a network connection in Network_Connection_Object using either an IP_Address or a Hostname (including Domain names that are also host names).
An example of a simple network connection using the current address capability could look like the following:
<cybox:Observable>
<cybox:Object>
<cybox:Properties xsi:type="NetworkConnectionObj:NetworkConnectionObjectType">
<NetworkConnectionObj:Destination_Socket_Address>
<SocketAddressObj:IP_Address category="ipv4-addr">
<AddressObj:Address_Value>198.49.123.10</AddressObj:Address_Value>
</SocketAddressObj:IP_Address>
<SocketAddressObj:Port>
<PortObj:Port_Value>80</PortObj:Port_Value>
</SocketAddressObj:Port>
</NetworkConnectionObj:Destination_Socket_Address>
</cybox:Properties>
</cybox:Object>
</cybox:Observable>An example of a simple network connection using just the proposed added hostname capability could look like the following:
<cybox:Observable>
<cybox:Object id="example:Object-54400c36-5038-478b-bffe-808c40b2f04e">
<cybox:Properties xsi:type="NetworkConnectionObj:NetworkConnectionObjectType">
<NetworkConnectionObj:Destination_Socket_Address>
<SocketAddressObj:Hostname>
<HostnameObj:Hostname_Value>foo.acme.com</HostnameObj:Hostname_Value>
<HostnameObj:Naming_System>DNS</HostnameObj:Naming_System>
</SocketAddressObj:Hostname>
<SocketAddressObj:Port>
<PortObj:Port_Value>80</PortObj:Port_Value>
</SocketAddressObj:Port>
</NetworkConnectionObj:Destination_Socket_Address>
</cybox:Properties>
</cybox:Object>
</cybox:Observable>An example of a more detailed network connection specifying a source host using an Hostname and a destination host using an IP address could look like the following:
<cybox:Observable>
<cybox:Object>
<cybox:Properties xsi:type="NetworkConnectionObj:NetworkConnectionObjectType">
<NetworkConnectionObj:Layer3_Protocol datatype="string">IPv4</NetworkConnectionObj:Layer3_Protocol>
<NetworkConnectionObj:Layer4_Protocol datatype="string">TCP</NetworkConnectionObj:Layer4_Protocol>
<NetworkConnectionObj:Source_Socket_Address>
<SocketAddressObj:Hostname>
<HostnameObj:Hostname_Value>jsmithlaptop.acme.com</HostnameObj:Hostname_Value>
<HostnameObj:Naming_System>DNS</HostnameObj:Naming_System>
</SocketAddressObj:Hostname>
<SocketAddressObj:Port>
<PortObj:Port_Value>5525</PortObj:Port_Value>
</SocketAddressObj:Port>
</NetworkConnectionObj:Source_Socket_Address>
<NetworkConnectionObj:Destination_Socket_Address>
<SocketAddressObj:IP_Address category="ipv4-addr">
<AddressObj:Address_Value>198.49.123.10</AddressObj:Address_Value>
</SocketAddressObj:IP_Address>
<SocketAddressObj:Port>
<PortObj:Port_Value>80</PortObj:Port_Value>
</SocketAddressObj:Port>
</NetworkConnectionObj:Destination_Socket_Address>
</cybox:Properties>
</cybox:Object>
</cybox:Observable>There is no expected compatibility impact. These changes record additional information beyond what was possible to represent in previous versions of CybOX. Because the fields are optional, both producers and consumers who are not interested in the information contained in this field may ignore it.
- Is there value in adding a new
HostnameObject? - Is the set of fields outlined for the
HostnameObject adequate? - Is there value in adding the capability to specify hostnames for either end of a network connection?
- Are there any issues with modifying
Socket_Addressto use aChoicebetweenIP_AddressorHostname? - Are these modifications to
Socket_Addressadequate for the stated purpose?