AdguardTeam / AdguardTeam/AdguardForWindows

AdguardSvc.exe polls WMI Win32_UserAccount every ~11 s, generating continuous SMB/LSA traffic to the domain controller on domain-joined machines

未关闭
#6,184 2 条评论 0 个 reaction 已指派 1 人 已指派给 @pakifev 在 GitHub 查看
Bug Priority: P4
主要语言
没有语言数据
星标
887
派生
84
平均合并
27 分钟
30 天内合并 PR
2

描述

### Please answer the following questions for yourself before submitting an issue

- [x] Filters were updated before reproducing an issue
- [x] I checked the [knowledge base](https://adguard.com/kb/) and found no answer
- [x] I checked to make sure that this issue has not already been filed

### AdGuard version

8.0.0 (5560)

### Browser version

Chrome 152 (not related — the issue occurs with no browser running)

### OS version

Windows 11 Pro, 25H2 (OS build 26200.9168), joined to an Active Directory domain

### Traffic filtering

- [ ] yes, I do

### Ad Blocking

_No response_

### Privacy

_No response_

### Social

_No response_

### Annoyances

_No response_

### Security

_No response_

### Other

_No response_

### Language-specific

_No response_

### Which DNS server do you use?

System default DNS

### DNS protocol

Regular

### Custom DNS

_No response_

### What Stealth Mode options do you have enabled?

_No response_

### Support ticket ID

1561487

### Issue Details

Environment note: this only happens on a machine that is **joined to an Active Directory domain**. It does not occur on a standalone / workgroup machine.

Steps to reproduce:

1. Install AdGuard for Windows on a machine joined to an Active Directory domain.
2. Leave the machine completely idle (no browsing, no user activity).
3. Watch the Ethernet throughput graph in Task Manager, or monitor the `\Redirector\Bytes Received/sec` performance counter.
4. Observe a burst of traffic to the domain controller on TCP/445 roughly every 11 seconds.

Root cause (already identified):

`AdguardSvc.exe` executes the WMI query `SELECT * FROM Win32_UserAccount` (namespace `root\CIMV2`) approximately **every 10.9 seconds**. On a domain-joined machine, enumerating this class enumerates **every user account in the entire AD domain**, so Windows issues a large number of LSA RPC calls (interface UUID `12345778-1234-abcd-ef00-0123456789ab`) to the domain controller over SMB (TCP/445).

Minimal reproduction of the cost of a single query:

```powershell
Get-CimInstance Win32_UserAccount
```

On my machine this returns 62 accounts and generates **274 KB of SMB receive traffic** — and AdGuard performs this every ~11 seconds, permanently.

### Expected Behavior

An idle machine with AdGuard installed should not generate continuous, periodic network traffic to the domain controller.

AdGuard should not enumerate all domain user accounts every ~11 seconds.

### Actual Behavior

Even when the machine is completely idle, AdGuard causes a burst of roughly **500 KB of network traffic (send + receive combined) to the domain controller every ~11 seconds, continuously**.

This is not a crash or a visible malfunction — it is a permanent background load that is invisible unless you happen to look at a network graph. I originally noticed it as regular spikes in Task Manager and traced it back to AdGuard.

It also places a corresponding permanent load on the domain controller itself, and the cost scales with the number of accounts in the domain.

### Screenshots

Task Manager — Ethernet throughput on an idle machine

Image

### Additional Information

### Evidence

**a) The WMI query and its source process** — ETW provider `Microsoft-Windows-WMI-Activity`:

```
"select * from Win32_UserAccount", "//./root/CIMV2",
```

Recorded repeatedly at ~10.9 second intervals.

**b) The resulting RPC calls** — ETW provider `Microsoft-Windows-RPC`:
`WmiPrvSE.exe` making LSARPC calls (`{12345778-1234-abcd-ef00-0123456789ab}`) to `\\`.

**c) The network traffic** — `pktmon` capture filtered to TCP/445: confirmed as traffic between this machine and the domain controller.

**d) Service stop / start test** — measured with the `\Redirector\Bytes Received/sec` counter on an otherwise idle machine:

| State | Duration | SMB bytes received | Bursts observed |
|---|---|---|---|
| AdGuard running | 25 s | **1,254 KB** | 6 |
| AdGuard service stopped | 40 s | **1 KB** | **0** |
| AdGuard running again | 25 s | **1,095 KB** | 6 |

Stopping the AdGuard service eliminates the traffic completely; starting it reproduces the traffic immediately.

### Suggested fix

If only local account information is needed, please avoid enumerating `Win32_UserAccount` in full. Possible approaches:

- Restrict the query to local accounts (e.g. `WHERE Domain=''`), or use the `NetUserEnum` Win32 API with a local-only scope.
- Cache the result instead of re-querying every ~11 seconds.
- Substantially increase the polling interval.

On larger domains this polling will place a proportionally larger load on the domain controller, so the impact scales badly with domain size.

### Note

This was first reported to support (ticket regarding "AdGuard for Windows v8.0.0 (5560) – Bug"), and I was asked to post it here.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。