当 CVE 数量超过 10 万导致NeuVector UI 无法显示 Vulnerabilities 列表

问题概述

当节点扫描出来的 CVE 达到 100000 个左右时, NeuVector UI > Assets > Nodes > Vulnerabilities 页面就会加载数据失败,看不到任何 CVE 数据。

问题发生在 5.4.1,并且在 5.4.5也能复现。

复现步骤

  1. 准备 Ubuntu 22.04 OS,并安装 docker-ce 20.10.24
  2. 安装其他旧的内核版本,使得 node scan 可以扫出 100000+个 CVE。
1
2
3
4
5
6
7
8
9
sudo vi /etc/apt/sources.list.d/focal.list

deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse


sudo apt update
sudo apt install linux-image-5.15.0-140-generic linux-image-5.15.0-141-generic linux-image-5.15.0-143-generic linux-image-5.4.0-100-generic linux-image-5.4.0-104-generic linux-image-5.4.0-105-generic linux-image-5.4.0-107-generic linux-image-5.4.0-109-generic linux-image-5.4.0-110-generic linux-image-5.4.0-113-generic linux-image-5.4.0-148-generic linux-image-5.4.0-155-generic linux-image-5.4.0-156-generic linux-image-5.4.0-166-generic linux-image-5.4.0-172-generic linux-image-5.4.0-182-generic linux-image-5.4.0-190-generic linux-image-5.4.0-198-generic linux-image-5.4.0-202-generic linux-image-5.4.0-205-generic linux-image-5.4.0-216-generic linux-image-5.4.0-90-generic linux-image-5.4.0-91-generic linux-image-5.4.0-96-generic linux-image-5.4.0-97-generic linux-image-5.4.0-99-generic linux-image-virtual
  1. 启动 allinone + scanner

为了方便测试,直接使用 allinone 进行测试。

1
2
3
4
docker run -d --name allinone --pid=host --privileged     -e CLUSTER_JOIN_ADDR=192.168.2.68     -e NV_PLATFORM_INFO=platform=Docker     -p 18300:18300     -p 18301:18301     -p 18400:18400     -p 18401:18401     -p 18301:18301/udp     -p 8443:8443     -p 10443:10443     -v /lib/modules:/lib/modules:ro     -v /var/neuvector:/var/neuvector     -v /var/run/docker.sock:/var/run/docker.sock:ro     -v /sys/fs/cgroup:/host/cgroup:ro     -v /proc:/host/proc:ro  neuvector/allinone:5.4.1-p2


docker run -td --name scanner -e CLUSTER_JOIN_ADDR=192.168.2.68 -p 18402:18402 -v /var/run/docker.sock:/var/run/docker.sock:ro neuvector/scanner:latest
  1. 执行 node scan,等待 node scan 完成。能看到 Scan status 是 Finished,High+Medium 共有 100000+的数量。
  2. 此时点击进入 NeuVector UI > Assets > Nodes > Vulnerabilities 页面,会看到无法加载列表。通过 F12 进入控制台查看 Network,可以看到,在访问 /scan/host?id=xxxx 时,报错 net::ERR_CONNECTION_RESET

问题原因

在 UI 上进入 Setting -> Configuration,勾选 Enable controller control path debug开启 Debug。通过日志可以看到:

1
2025-07-14 17:40:29,695|ERROR|MANAGER|org.apache.pekko.actor.ActorSystemImpl(applyOrElse$$anonfun$1:89): Response stream for [GET /scan/host] failed with 'HTTP chunk size exceeds the configured limit of 31457280 bytes'. Aborting connection.

临时解决方法

通过 API 下载 node scan report,参考如下:

  1. 通过 NeuVector UI,进入 Setting -> “Users, API Keys & Roles” -> “API Keys” 页面,点击 “Create API Key” 生成一个 API Key,其中 Global Role 选择 admin。生成之后,保存 X-Auth-Apikey 的值,该值只在生成的时候显示一次,关闭之后如果没有保存需要重新再次生成。
  2. 通过 API 进行操作:
1
2
3
4
5
6
7
8
9
10
11
12
## 这里保存刚刚的 X-Auth-Apikey
KEY="test2:2+cR1paZ6k4VynnFWpAaaay4pXyz6AmBKKfJp+Su9a5aDbyACN19BjK5OunzjG59"

## 执行这个命令确认是否能够获取到 node list
curl -k -H "Content-Type: application/json" -H "X-Auth-Apikey: $KEY" https://192.168.2.68:10443/v1/host

## 查询 node ID
curl -s -X GET -k -H "Content-Type: application/json" -H "X-Auth-Apikey: $KEY" https://192.168.2.68:10443/v1/host | jq .hosts[].id

## 最后通过这个命令可以导出 node scan report
## 例如 ID 是:u68:3OGA:PDPH:KZUR:327K:55BU:5473:ZSY2:YGGJ:JDKU:XRWI:MKJE:57QV
curl -s -X GET -k -H 'accept: application/json' -H "X-Auth-Apikey: $KEY" https://192.168.2.68:10443/v1/scan/host/u68:3OGA:PDPH:KZUR:327K:55BU:5473:ZSY2:YGGJ:JDKU:XRWI:MKJE:57QV > node-report-`hostname -s`.json