CyberLock 9.0

  • Thread starter Thread starter danb
  • Start date Start date
  • Featured
Hi Dan,

I also have issues with Cyberlock (9.12, but I don't think the version makes a difference) and Claude desktop. Claude runs the following virtual drive files every time it runs a task:
rootfs.vhdx
sessiondata.vhdx
smol-bin.vhdx
in C:\Users\[USERNAME]\AppData\Local\Packages\Claude_[STRING]\LocalCache\Roaming\Claude\vm_bundles\claudevm.bundle

These files are not signed so every time I have to click allow. Is there any way to tame it?
 
Hey Dan,

Ran into something on CyberLock 9.13 (Windows 11 Pro 26200, running next to Windows Defender + WHHLight) Smart mode, Aggressive, Smart Firewall on Recommended.

I've been using an AI (Claude Code) that fires off a ton of short-lived Git Bash processes in quick succession. Git's bash.exe isn't signed, so nothing matches the whitelist snapshot and every single spawn goes the full cloud route (VoodooAi + WhitelistCloud). Under that burst the service just can't keep up - launches were hanging for about two minutes each, and the machine basically became unusable while it churned.

Digging into the logs is where it got interesting. When the decision path backs up, the driver eventually gives up and lets the process through unevaluated:

[ERROR] HandleSingleProcess: process decision timed out after 122000 ms; replying fail-open to match driver timeout policy.
[ERROR] HandleSingleProcess: Failed to reply to driver (0x801F0020)

I counted 8 of those timeout/fail-open pairs inside about a 90-second window. Any workload that spawns lots of distinct unsigned processes fast should hit it: build tools, git hooks, interpreters shelling out, that kind of thing. A quick loop of 10-20 rapid unsigned launches was enough for me.

The part that made me raise an eyebrow is that the timeout fails OPEN. So a flood of process launches, mine were harmless, but they wouldn't have to be, opens a window where new processes get allowed without any evaluation at all. I keep thinking that for a default-deny product you'd want it to fail closed (block, or hold and retry) rather than wave things through when it's overwhelmed. Defender is still there as a backstop on my end, but the gate going open under load feels like something worth locking down.

For what it's worth, I did get my latency under control with a rule: an Allow rule, type Folder, C:\Program Files\Git\, applied in ON/OFF/AUTOPILOT, with all three file-insight checks (Digital Signature / VoodooAi / WhitelistCloud) turned off, and "Override Custom Folders Settings" on. The log shows the override doing exactly what I hoped:

[INFO] Process blocked by Custom Folders: c:\program files\git\bin\bash.exe
[INFO] Process allowed by Allow Rule: c:\program files\git\bin\bash.exe

After that, 10 back-to-back bash.exe launches ran in about 1.5s (~150ms each) instead of stalling for two minutes, and the timeouts stopped completely. Obviously that's a workaround for my case, not a fix for the fail-open itself.

So mostly I wanted to flag it, plus a few honest questions:

- Is the 122,000 ms fail-open deliberate? Could saturation fail closed instead so the gate can't be forced open by sheer volume?
- Any chance the service could remember a repeated identical unsigned image locally (a per-session decision cache) so it's not re querying the cloud on every spawn in Smart mode?
- Would a bounded or parallel decision queue help, so a burst of one process type doesn't block everything else?

Glad to send over the full DeveloperServiceLog / DeveloperLog with timestamps if that's useful. Thanks.
Excellent report, thank you for taking the time to dig into this so thoroughly. This is exactly the kind of edge case I want to know about.

The 122-second fail-open is deliberate. It is essentially a last-resort safety valve so that if something goes seriously wrong in the decision path, CyberLock does not leave a process hung indefinitely and potentially make the entire machine unusable.

Having said that, I agree with the larger point you are making: saturation should not become a practical way for unevaluated processes to get through the execution gate.

I also do not think simply changing the global timeout from fail-open to fail-closed is necessarily the right solution. If the CyberLock service, network connection, cloud provider, or some other dependency has a problem, blindly failing closed could potentially turn that condition into an endpoint-wide denial of service. We need to distinguish between those kinds of failures and a queue that is temporarily saturated with repetitive work.

Your Claude Code / Git Bash example is particularly useful because bash.exe is the same executable being launched over and over. There is no good reason for CyberLock to repeatedly perform expensive identical work when it can safely determine that it has already evaluated the same image under the same relevant conditions.

So there are really a few things I want to look at here:

1. Coalescing identical evaluations that are already in flight, so 20 launches of the same executable do not create 20 independent cloud-analysis jobs.
2. A short-lived local/session decision cache for identical files where appropriate.
3. Better queue/saturation handling so one bursty workload cannot starve unrelated process decisions.
4. Revisiting the timeout behavior so that overload conditions are handled differently from a true service failure.

Your folder rule is a clever workaround and the log confirms it is behaving exactly as designed. I would not want users to have to create broad allow rules with all of the file-insight checks disabled just to accommodate workloads like this, though. The underlying behavior should be improved.

Please send me the full DeveloperServiceLog and DeveloperLog. If you still have the exact loop/test you used to reproduce it, send that as well. Being able to reproduce this reliably with 10-20 rapid launches should make it substantially easier to fix and verify.

And again, excellent find. This is a very useful report.
 
Hi Dan,

I also have issues with Cyberlock (9.12, but I don't think the version makes a difference) and Claude desktop. Claude runs the following virtual drive files every time it runs a task:
rootfs.vhdx
sessiondata.vhdx
smol-bin.vhdx
in C:\Users\[USERNAME]\AppData\Local\Packages\Claude_[STRING]\LocalCache\Roaming\Claude\vm_bundles\claudevm.bundle

These files are not signed so every time I have to click allow. Is there any way to tame it?
We will fix this as well when we fix the other issues, thank you!
 
Hey guys,

Here is the latest that address the 2 recent bugs in this thread. I sent this version to @acyclovir for testing and I will continue to test as well. This version should be stable, but if you have any issues, please revert to 9.13beta. Version 9.14beta is now fail-closed as opposed to fail-opened. After 15 years of development and with CyberLock being as stable as it is, I figured it was time to switch to fail-closed. Realistically it should not make a huge difference in malware blocking efficacy, but with everything going on in the world today, we would rather be safe than sorry ;).

CyberLock 9.14beta
SHA-256: 8bcf91c30e8ef245a44996512280365088403da7ae0ffc08eb82a2f5ef256ef0

Thank you guys!

Dan
 
Hey guys,

Here is the latest that address the 2 recent bugs in this thread. I sent this version to @acyclovir for testing and I will continue to test as well. This version should be stable, but if you have any issues, please revert to 9.13beta. Version 9.14beta is now fail-closed as opposed to fail-opened. After 15 years of development and with CyberLock being as stable as it is, I figured it was time to switch to fail-closed. Realistically it should not make a huge difference in malware blocking efficacy, but with everything going on in the world today, we would rather be safe than sorry ;).

CyberLock 9.14beta
SHA-256: 8bcf91c30e8ef245a44996512280365088403da7ae0ffc08eb82a2f5ef256ef0

Thank you guys!

Dan

Follow-up, Dan - installed 9.14 and can confirm the fix on my end.

First, the original latency: my case (AI Claude code spawning tons of Git bash processes) no longer stalls. A folder allow-rule keeps the known workflow instant, and I'm seeing zero timeout/fail-open entries in the service log since updating.

But the part I really wanted to verify was the fail-closed switch, so I tested it directly. I launched 6 brand-new unsigned executables (harmless - just renamed copies of a GNU coreutils binary with random bytes appended so each has a novel hash) and deliberately did NOT answer any of the prompts. On 9.13 that path was fail-open at 122s. On 9.14, after ~84s with no response, CyberLock automatically blocked all six:

Bloqueo automático: testx_N.exe | ... RuleID: 8 | Allowed: False

Six x six, nothing slipped through - exactly the behavior I was hoping for. The timeout also seems to have come down from ~122s to ~84s.

One more thing worth mentioning, since it impressed me: I ran one of those blocked files through SiriusGPT. It nailed it - correctly identified it as GNU Coreutils "ls" built under MSYS2, unsigned, no suspicious imports (no injection/network/registry/persistence), and it even flagged the appended overlay bytes and the compile timestamp. Verdict: "Safe, 98% confidence."
Thanks Dan for turning this around so fast. Really appreciate it.
 
Last edited:
Follow-up, Dan - installed 9.14 and can confirm the fix on my end.

First, the original latency: my case (AI Claude code spawning tons of Git bash processes) no longer stalls. A folder allow-rule keeps the known workflow instant, and I'm seeing zero timeout/fail-open entries in the service log since updating.

But the part I really wanted to verify was the fail-closed switch, so I tested it directly. I launched 6 brand-new unsigned executables (harmless - just renamed copies of a GNU coreutils binary with random bytes appended so each has a novel hash) and deliberately did NOT answer any of the prompts. On 9.13 that path was fail-open at 122s. On 9.14, after ~84s with no response, CyberLock automatically blocked all six:

Bloqueo automático: testx_N.exe | ... RuleID: 8 | Allowed: False

Six x six, nothing slipped through - exactly the behavior I was hoping for. The timeout also seems to have come down from ~122s to ~84s.

One more thing worth mentioning, since it impressed me: I ran one of those blocked files through SiriusGPT. It nailed it - correctly identified it as GNU Coreutils "ls" built under MSYS2, unsigned, no suspicious imports (no injection/network/registry/persistence), and it even flagged the appended overlay bytes and the compile timestamp. Verdict: "Safe, 98% confidence."
Thanks Dan for turning this around so fast. Really appreciate it.
Very cool, thanks again for finding this bug and testing again once it was fixed! I never experienced this bug with Codex or Claude Code, so I am happy you found it. This fix also does some other pretty cool things, like severely reducing token usage for scenarios like this, and CyberLock is fail-closed now. So it all worked out great in the end, thanks again!
 
Hi Dan How are you doing?,

Wanted to flag a false positive, because it's on a built-in Windows component and I suspect other users are seeing it too.

On my Win11 box CyberLock keeps prompting on this one, and SiriusGPT rates it Malicious with 92% confidence:

Process: c:\windows\system32\rundll32.exe
Parent: c:\windows\system32\svchost.exe
Cmd line: rundll32.exe StartupScan.dll,SusRunTask
SiriusGPT verdict: Not Safe, 92% (LOLBin.Rundll32.StartupScan)

That's actually a legitimate Windows maintenance task: StartupAppTask, under \Microsoft\Windows\Application Experience. It's the thing that measures "startup impact" for apps (the High/Medium/Low column on the Startup tab in Task Manager). It runs every couple of days.

I verified it on my machine before writing this:

- The scheduled task XML (System32\Tasks\Microsoft\Windows\Application Experience\StartupAppTask) is Microsoft's, and its action is exactly rundll32.exe StartupScan.dll,SusRunTask.
- C:\Windows\System32\StartupScan.dll -> CompanyName "Microsoft Corporation", description "Startup scan task DLL", ~53 KB, in System32.

I think three things stacked up to fool the analysis: (1) rundll32 is a classic LOLBin with an svchost parent, (2) the DLL has no *embedded* Authenticode signature - like most OS DLLs it's catalog-signed, so a plain WinVerifyTrust returns TRUST_E_NOSIGNATURE and it looks "unsigned," and (3) SiriusGPT latched onto the function name "SusRunTask" as suspicious. Its own reasoning literally calls the name generic/suspicious - but "Sus" here is just "StartUp Scan," not "suspicious."

Two reasons I think it's worth fixing beyond the single verdict:
- A high-confidence "Malicious" call on a core OS task is genuinely alarming - a less technical user would assume they're infected.
- Because it's a scheduled task, blocking it doesn't make it go away: Windows re-fires it every couple of days, so the "malware" prompt keeps coming back. That really looks like active infection/persistence to someone who doesn't know the internals.

Before landing a high-confidence malicious verdict, could the engine check catalog signatures (not just embedded ones) and/or recognize Microsoft-signed system DLLs and known built-in scheduled tasks? Even just lowering confidence when the image is a catalog-signed Microsoft binary under System32 would avoid this class of scare.

Happy to share the full task XML or DLL metadata if useful.

Thanks!
 
Hi Dan How are you doing?,

Wanted to flag a false positive, because it's on a built-in Windows component and I suspect other users are seeing it too.

On my Win11 box CyberLock keeps prompting on this one, and SiriusGPT rates it Malicious with 92% confidence:

Process: c:\windows\system32\rundll32.exe
Parent: c:\windows\system32\svchost.exe
Cmd line: rundll32.exe StartupScan.dll,SusRunTask
SiriusGPT verdict: Not Safe, 92% (LOLBin.Rundll32.StartupScan)

That's actually a legitimate Windows maintenance task: StartupAppTask, under \Microsoft\Windows\Application Experience. It's the thing that measures "startup impact" for apps (the High/Medium/Low column on the Startup tab in Task Manager). It runs every couple of days.

I verified it on my machine before writing this:

- The scheduled task XML (System32\Tasks\Microsoft\Windows\Application Experience\StartupAppTask) is Microsoft's, and its action is exactly rundll32.exe StartupScan.dll,SusRunTask.
- C:\Windows\System32\StartupScan.dll -> CompanyName "Microsoft Corporation", description "Startup scan task DLL", ~53 KB, in System32.

I think three things stacked up to fool the analysis: (1) rundll32 is a classic LOLBin with an svchost parent, (2) the DLL has no *embedded* Authenticode signature - like most OS DLLs it's catalog-signed, so a plain WinVerifyTrust returns TRUST_E_NOSIGNATURE and it looks "unsigned," and (3) SiriusGPT latched onto the function name "SusRunTask" as suspicious. Its own reasoning literally calls the name generic/suspicious - but "Sus" here is just "StartUp Scan," not "suspicious."

Two reasons I think it's worth fixing beyond the single verdict:
- A high-confidence "Malicious" call on a core OS task is genuinely alarming - a less technical user would assume they're infected.
- Because it's a scheduled task, blocking it doesn't make it go away: Windows re-fires it every couple of days, so the "malware" prompt keeps coming back. That really looks like active infection/persistence to someone who doesn't know the internals.

Before landing a high-confidence malicious verdict, could the engine check catalog signatures (not just embedded ones) and/or recognize Microsoft-signed system DLLs and known built-in scheduled tasks? Even just lowering confidence when the image is a catalog-signed Microsoft binary under System32 would avoid this class of scare.

Happy to share the full task XML or DLL metadata if useful.

Thanks!
Great, thank you, you? Another great find! I agree, there will always be a small handful of false positives, but this one is important to fix.

I searched our database for this command line and found 2 different Sirius Analysis, both were quite old, and these cached results were stored from super old versions of Sirius. Sirius has progressed tremendously since v1, so what I did was delete the 2 old cached results. So now the next time this command line is blocked, it will reanalyze the command line with the latest version of Sirius, and hopefully return the correct verdict. And actually, depending on a lot of things, you might not even see a block at all. But if you do see a block, especially if the verdict is Not Safe, then we will have to manually adjust the verdict. But I am hoping the new Sirius version will render the correct verdict and there will be nothing else we need to do. Either way, I will search the database for this command line in 1-2 days and check the verdict. Thank you!

Edit: BTW, you might want to delete this command line in CyberLock Settings / Command Lines, just to be sure the event is analyzed by the new Sirius.
 
@acyclovir, I checked on this item today, and sure enough it was reanalyzed with the latest Sirius and here are the results, so we should be good to go.

[{"Model":0,"FinalScore":80},{"Model":1,"FinalScore":80},{"Model":2,"FinalScore":95}]

## Analysis Summary **Process Context:** - rundll32.exe is a legitimate Windows binary used to execute DLL functions - Parent process svchost.exe is a standard Windows service host process - This parent-child relationship is expected and normal for Windows services **Command Line Analysis:** - The command executes `startupscan.dll` with the `susruntask` export function - `startupscan.dll` is a legitimate Windows Defender component (Microsoft Malware Protection) - The `susruntask` function is associated with scheduled startup scanning tasks - This matches standard Windows Defender behavior for automated security scanning **Behavioral Assessment:** - No encoded or obfuscated commands present - No download-and-execute patterns - No execution from unusual paths (standard System32 location) - No suspicious persistence mechanisms or LOLBin abuse chains - The DLL path and function name are consistent with legitimate Windows security operations **Conclusion:** This execution represents normal Windows Defender scheduled scanning activity. The service host (svchost.exe) legitimately invokes rundll32.exe to run a Defender component for startup scanning, which is standard system behavior. Final verdict: Safe with 95% confidence.