eui icon indicating copy to clipboard operation
eui copied to clipboard

Improve tables at small resolutions

Open JasonStoltz opened this issue 1 year ago • 1 comments

Elevator pitch

There are tables all over Kibana that look awful at small resolutions. We should fix this globally.

Image

Is your feature request related to a problem? Please describe.

When looking at usage of EUI tables throughout Kibana and Cloud UI, you can observe the majority of tables in use breaking in the same way.

To be clear, I don't believe this is a bug with EUI. We have features available to handle small resolutions, and these tables are likely not using them.

The list of known tables that have this issue: Kibana > Machine learning Notifications Kibana> Machine Learning Overview Kibana > Security Cases Cloud UI > Cloud Home page Cloud UI > Cloud Activity

Describe the solution you'd like The solution could come in two forms here:

  1. Provide clearer table guidance instructing folks how to deal with tables at small resolutions
  2. Provide some sort of guardrails in EUI tables that would prevent this automatically.

Some example guidance suggested by Cee:

  • Play with columns.width - try either switching between % based widths or static pixel widths to see what works best for the content in the cell
  • Set a minimum width on the table and its wrapper and have the table scroll horizontally if it goes below that width
  • Use the responsiveBreakpoint="s|m|l|xl" prop to collapse the table down into cards sooner (see docs for responsive/mobile tables here).

Describe alternatives you've considered No other alternatives considered.

Desired timeline No desired timeline, it's been an issue for years, so I don't believe there is a ton of urgency, but it would also be great to clean up.

Additional context

JasonStoltz avatar Sep 11 '24 15:09 JasonStoltz

@seanthegeek : Can you provide an example log? It's just easier to think about stuff when I can use some visual help.

phantinuss avatar Jul 17 '25 11:07 phantinuss

@phantinuss Here's an example CrowdStrike Falcon log entry in JSON format, with identifying information redacted. The FileFix approach is used to launch ping via cmd as a child process of msedge.exe.

{
  "#event_simpleName": "ProcessRollup2",
  "#humioAutoShard": 14,
  "#repo": "base_sensor",
  "#repo.cid": "REDACTED",
  "#type": "falcon-raw-data",
  "@id": "REDACTED",
  "@ingesttimestamp": 1752721485716,
  "@source": "PlatformEvents",
  "@sourcetype": "xdr/xdr-base-parsers:falcon-raw-data",
  "@timestamp": 1752700531757,
  "@timestamp.nanos": 0,
  "@timezone": "Z",
  "Agent IP": "REDACTED",
  "AuthenticationId": 70902049,
  "AuthenticodeHashData": "63b7011fe73c0f33106972b3da8587db042dee75",
  "CallStackModuleNames": "0<-1>\\Device\\HarddiskVolume4\\Windows\\System32\\ntdll.dll+0x163984:0x266000:0x1d4ecf98|\\Device\\HarddiskVolume4\\Windows\\System32\\KernelBase.dll+0xfc66a:0x3cc000:0xe6128e90|1+0xf9da6|\\Device\\HarddiskVolume4\\Windows\\System32\\kernel32.dll+0x3c6d4:0xc9000:0x35202ecf|\\Device\\HarddiskVolume4\\Windows\\System32\\windows.storage.dll+0x16feac:0x856000:0xf7e71a4b|4+0x16ef2e|4+0x264115|4+0xc602e|4+0xc6b5d|4+0xc2a09|4+0xc270d|4+0xc6dbd|4+0x24f1d3|4+0x24eb9a|\\Device\\HarddiskVolume4\\Windows\\System32\\shell32.dll+0x115c37:0x72d000:0xfb79c30d|14+0x1159ce|14+0x139fd2|14+0x2336ba|4+0x2f4dae|4+0x599beb|4+0x350414|4+0x596bbb|\\Device\\HarddiskVolume4\\Windows\\System32\\SHCore.dll+0x4805a:0xef000:0xeef44c00|3+0x2e8d7|0+0x9c5dc",
  "CallStackModuleNamesVersion": 8,
  "CommandLine": "\"C:\\Windows\\System32\\cmd.exe\" /c ping example.com",
  "ComputerName": "REDACTED",
  "ConfigBuild": "1007.3.0019508.15",
  "ConfigStateHash": 67393663,
  "CreateProcessType": 1,
  "EffectiveTransmissionClass": 3,
  "Entitlements": 15,
  "EventOrigin": 1,
  "FileName": "cmd.exe",
  "FilePath": "\\Device\\HarddiskVolume4\\Windows\\System32\\",
  "ImageFileName": "\\Device\\HarddiskVolume4\\Windows\\System32\\cmd.exe",
  "ImageSubsystem": 3,
  "IntegrityLevel": 8192,
  "LocalAddressIP4": "REDACTED",
  "LocalIP": "REDACTED",
  "MD5HashData": "e86a8609fea011c240950f5369d12714",
  "ParentAuthenticationId": 70902049,
  "ParentBaseFileName": "msedge.exe",
  "ParentProcessId": 1207580822080,
  "ProcessCreateFlags": 67634196,
  "ProcessEndTime": "",
  "ProcessParameterFlags": 24577,
  "ProcessStartTime": 1752700531.170,
  "ProcessSxsFlags": 64,
  "RawProcessId": 17572,
  "SHA1HashData": 0000000000000000000000000000000000000000,
  "SHA256HashData": "83c991bf32bbc3546eb62f45f9b3fd35abbf5bbb7e57ef8ea298822bfd4788ab",
  "SessionId": 2,
  "ShowWindowFlags": 1,
  "SignInfoFlags": 8683538,
  "SourceProcessId": 1207580822080,
  "SourceThreadId": 69359417953148,
  "Tactic": "Execution",
  "Tags": "REDACTED",
  "TargetProcessId": 1207584520471,
  "Technique": "User Execution",
  "TokenType": 1,
  "UserName": "REDACTED",
  "UserSid": "REDACTED",
  "WindowFlags": 1025,
  "aid": "REDACTED",
  "aip": "REDACTED",
  "cid": "REDACTED",
  "event_platform": "Win",
  "id": "REDACTED",
  "name": "ProcessRollup2V19",
  "timestamp": 1752700531757
}

seanthegeek avatar Jul 17 '25 14:07 seanthegeek

And here is a log entry for the Adobe Acrobat Google Chrome extension that would generate thousands of false positive alerts without the double quotes anchored at the beginning in the command line regex.

{
  "#event_simpleName": "ProcessRollup2",
  "#humioAutoShard": 19,
  "#repo": "base_sensor",
  "#repo.cid": "REDACTED",
  "#type": "falcon-raw-data",
  "@id": "REDACTED",
  "@ingesttimestamp": 1752771139530,
  "@source": "PlatformEvents",
  "@sourcetype": "xdr/xdr-base-parsers:falcon-raw-data",
  "@timestamp": 1752771137989,
  "@timestamp.nanos": 0,
  "@timezone": "Z",
  "Agent IP": "REDACTED",
  "AuthenticationId": 2410301,
  "AuthenticodeHashData": "d2608be9ff73fa04b0c0afd148be3a12f28579ac",
  "CallStackModuleNames": "0<-1>\\Device\\HarddiskVolume4\\Windows\\System32\\ntdll.dll+0x163514:0x265000:0x9194561f|\\Device\\HarddiskVolume4\\Windows\\System32\\KernelBase.dll+0xfcf8a:0x3e8000:0xfc5b8f29|1+0xfa6c6|\\Device\\HarddiskVolume4\\Windows\\System32\\kernel32.dll+0x3c6d4:0xc9000:0xd3aca5a1|\\Device\\HarddiskVolume4\\Program Files\\Google\\Chrome\\Application\\138.0.7204.97\\chrome.dll+0xa91f50:0xf403000:0x6862375f|4+0x76e6394|4+0x76e004d|4+0x76e0ce0|4+0x76e114f|4+0x4dd9292|4+0x3aeba1b|4+0x3aeb7bb|4+0x3222329|4+0x3221a8f|4+0x321fdaf|4+0x321dc86|4+0x8ad18|4+0x728d88|3+0x2e8d7|0+0x3c34c",
  "CallStackModuleNamesVersion": 8,
  "CommandLine": "C:\\WINDOWS\\system32\\cmd.exe /d /s /c \"\"C:\\Program Files\\Adobe\\Acrobat DC\\Acrobat\\Browser\\WCChromeExtn\\WCChromeNativeMessagingHost.exe\" chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/ --parent-window=0\" < \\\\.\\pipe\\chrome.nativeMessaging.in.30ca1ee3f95dc961 > \\\\.\\pipe\\chrome.nativeMessaging.out.30ca1ee3f95dc961",
  "ComputerName": "LWJT99DY3",
  "ConfigBuild": "1007.3.0019508.15",
  "ConfigStateHash": 1670357323,
  "CreateProcessType": 1,
  "EffectiveTransmissionClass": 3,
  "Entitlements": 15,
  "EventOrigin": 1,
  "FileName": "cmd.exe",
  "FilePath": "\\Device\\HarddiskVolume4\\Windows\\System32\\",
  "ImageFileName": "\\Device\\HarddiskVolume4\\Windows\\System32\\cmd.exe",
  "ImageSubsystem": 3,
  "IntegrityLevel": 8192,
  "LocalAddressIP4": "REDACTED",
  "LocalIP": "REDACTED",
  "MD5HashData": "59a3f41dd84517fcf809bd65fff5e721",
  "ParentAuthenticationId": 2410301,
  "ParentBaseFileName": "chrome.exe",
  "ParentProcessId": 6628223996890,
  "ProcessCreateFlags": 0,
  "ProcessEndTime": "",
  "ProcessParameterFlags": 24577,
  "ProcessStartTime": 1752771138.058,
  "ProcessSxsFlags": 64,
  "RawProcessId": 16348,
  "SHA1HashData": 0000000000000000000000000000000000000000,
  "SHA256HashData": "ae4943e5f3f763688e10601f090b4cae3ce19f0b427007884b40d27d7fb9274d",
  "SessionId": 1,
  "ShowWindowFlags": 0,
  "SignInfoFlags": 8683538,
  "SourceProcessId": 6628223996890,
  "SourceThreadId": 721733025460206,
  "Tactic": "Execution",
  "Tags": "REDACTED",
  "TargetProcessId": 6628243768936,
  "Technique": "User Execution",
  "TokenType": 1,
  "UserName": "REDACTED",
  "UserSid": "REDACTED",
  "WindowFlags": 1,
  "aid": "REDACTED",
  "aip": "REDACTED",
  "cid": "REDACTED",
  "event_platform": "Win",
  "id": "REDACTED",
  "name": "ProcessRollup2V19",
  "timestamp": 1752771137989
}

seanthegeek avatar Jul 17 '25 17:07 seanthegeek

Actually, that regex matches the Sysmon log from the original PR without #, so I removed #. The # is used when opening a decoy file, but the attack can be used without it:

    <Data Name="CommandLine">"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -c ping example.com                                                                                                                # C:\company\internal-secure\filedrive\HRPolicy.docx</Data>

seanthegeek avatar Jul 17 '25 17:07 seanthegeek