Views:

Findings

Process Table Capacity

The Deep Security Agent maintains an internal process information table with a capacity of 20,000 process entries.

Log entries indicate a large number of processes were created on the server leading to process info table full capacity which can also causes an OOM.

From ds.am.log:

2026-02-23 12:16:50.693591: [ds_am/4] | [PROCESS INFO] Hit capacity, bypass event (numOfProcessNodes: 20000) | process_info_table.cpp:83:NewProcess | 198702:198751:114049:: 
2026-02-23 12:16:50.693596: [ds_am/4] | [PROCESS INFO] Hit capacity, bypass event (numOfProcessNodes: 20000) | process_info_table.cpp:83:NewProcess | 198702:198751:114050:: 
2026-02-23 12:16:50.693599: [ds_am/4] | [PROCESS INFO] Hit capacity, bypass event (numOfProcessNodes: 20000) | process_info_table.cpp:83:NewProcess | 198702:198751:114051:: 
2026-02-23 12:16:50.693601: [ds_am/4] | [PROCESS INFO] Hit capacity, bypass event (numOfProcessNodes: 20000) | process_info_table.cpp:83:NewProcess | 198702:198751:114052:: 
2026-02-23 12:16:50.693604: [ds_am/4] | [PROCESS INFO] Hit capacity, bypass event (numOfProcessNodes: 20000) | process_info_table.cpp:83:NewProcess | 198702:198751:114053:: 

ds_am.log indicating an Agent restart due to an OOM condition.

2026-02-23 12:16:53.615647: [ds_am-M/2] | [DAEMON] Child process exited with status 0 | main.cpp:823:do_daemon | 1005:1005:31887::log 
2026-02-23 12:16:53.615696: [ds_am-M/2] | [DAEMON] Restart child process due to OOM detected | main.cpp:831:do_daemon | 1005:1005:31888::log 
2026-02-23 12:16:53.615715: [ds_am-M/2] | [DAEMON] do restart trashing control 6382. | main.cpp:767:do_daemon | 1005:1005:31889::log 
2026-02-23 12:16:53.639742: [ds_am-M/2] | [DAEMON] Delaying 64000ms before restart 7 | main.cpp:788:do_daemon | 1005:1005:31890::log 
2026-02-23 12:17:57.639487: [ds_am-M/2] | [DAEMON] Monitor process 1005:1:1005 is_running:1 | main.cpp:815:do_daemon | 1005:1005:31891::log 
2026-02-23 12:17:57.639537: [ds_am-M/2] | [DAEMON] fork child process 1993C5:1005:1005 is_running:1 | main.cpp:810:do_daemon | 1993C5:1993C5:31891::log 

An enhancement has been made in process info table storage method to prevent it from becoming full. This has been released via version 20.0.2-22850.

Page Fault

When the Agent restarted to recover from the out of memory condition, this also closed BM hooking and at this moment bmhook caused a page fault by accessing an invalid memory address in ScalarBaseEntryAddValue, leading to a kernel panic.

[6696106.088270] RIP: 0010:ScalarBaseEntryAddValue+0xa/0x20 [bmhook] 
[6696106.088382] Code: 48 89 ef e8 f8 ad b1 f3 48 89 c3 48 85 c0 75 c7 5b 5d e9 94 be e1 f3 66 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 85 ff 74 06 <83> 7f 20 01 74 05 e9 76 be e1 f3 e9 96 fc ff ff 66 0f 1f 44 00 00 
[6696106.088591] RSP: 0018:ffffb19ab0293c38 EFLAGS: 00010286 
[6696106.088699] RAX: ffff96d4cf4bef40 RBX: 0000000000000000 RCX: 0000000000000000 
[6696106.088827] RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffb19a8780d000 
[6696106.088939] RBP: ffffb19ab0293d70 R08: 0000000000000001 R09: 0000000000000001 
[6696106.089051] R10: ffff96d7c9129000 R11: 0000000000000000 R12: 0000000000199ccd 
[6696106.089163] R13: 0000000000000000 R14: 0000000000000010 R15: 0000000000000000 
[6696106.089278] FS:  00007ff0bb5d0840(0000) GS:ffff96e3bfc00000(0000) knlGS:0000000000000000 
[6696106.089393] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033 
[6696106.089508] CR2: ffffb19a8780d020 CR3: 000000093d938005 CR4: 0000000000370ef0 
[6696106.089629] Call Trace: 
[6696106.089763]  ? __die_body+0x1a/0x60 
[6696106.089883]  ? no_context+0x1ba/0x3f0 
[6696106.090005]  ? __bad_area_nosemaphore+0x157/0x180 
[6696106.090127]  ? do_page_fault+0x37/0x12d 
[6696106.090247]  ? page_fault+0x1e/0x30 
[6696106.090371]  ? ScalarBaseEntryAddValue+0xa/0x20 [bmhook] 
[6696106.090503]  bmhook_telemetry_scalar_add_value+0x24/0x40 [bmhook] 
[6696106.090636]  tmbpf_telemetry_scalar_add_value+0xa/0x20 [bmhook] 
[6696106.090795]  ? bmhook_prehook_handler+0x243/0x2e0 [bmhook] 
[6696106.090929]  ? task_work_add+0xc8/0xe0 
[6696106.091053]  ? srso_alias_return_thunk+0x5/0xfcdfd 
[6696106.091180]  ? tmhook_invoke_prehooks+0x41/0xb0 [tmhook] 
[6696106.091310]  ? tmhook_handler+0x18b/0x210 [tmhook] 

This has been addressed in versions 20.0.2-29760, 20.0.2-29810, and later by using a lock to protect the BM hook from accessing an invalid address.

Solution

Both issues stated above have been addressed on DSA December builds (20.0.2-29760 & 20.0.2-29810) and later.

To resolve this issue, upgrade to the latest Deep Security Agent.