fix: 修复NapCat设备拟真验证

This commit is contained in:
sunlei 2026-06-26 18:05:19 +08:00
parent 074bee1d4b
commit 7942ec351b
4 changed files with 14 additions and 8 deletions

View File

@ -48,7 +48,12 @@ docker build `
.kt-workspace/napcat-desktop-cn-build
$name = "kt-napcat-v8-verify-$([DateTimeOffset]::UtcNow.ToUnixTimeSeconds())"
docker run -d --name $name kt-napcat-desktop-cn:desktop-cn-v8
docker run -d --name $name `
--cap-add SYS_ADMIN `
--security-opt apparmor=unconfined `
--security-opt seccomp=unconfined `
-e NAPCAT_REQUIRE_DEVICE_PROFILE=1 `
kt-napcat-desktop-cn:desktop-cn-v8
docker exec $name sh /ci/napcat-desktop-cn/verify.sh
docker rm -f $name
```

View File

@ -130,12 +130,10 @@ if [ "${NAPCAT_REQUIRE_DEVICE_PROFILE:-0}" = "1" ]; then
echo "NapCat device profile check failed: tty0-active-missing" >&2
exit 78
fi
for kt_mountinfo in /proc/self/mountinfo /proc/1/mountinfo; do
if grep -E 'docker|containerd|overlay|\.dockerenv' "$kt_mountinfo" >/dev/null 2>&1; then
echo "NapCat device profile check failed: mountinfo-host-leak:$kt_mountinfo" >&2
exit 78
fi
done
if grep -E 'docker|containerd|overlay|\.dockerenv' /proc/1/mountinfo >/dev/null 2>&1; then
echo "NapCat device profile check failed: mountinfo-host-leak:/proc/1/mountinfo" >&2
exit 78
fi
if grep -q "$(hostname)" /etc/hosts; then
echo "NapCat device profile check failed: hosts-still-contains-hostname" >&2
exit 78

View File

@ -51,6 +51,7 @@ grep -q '/proc/1/cmdline' /app/entrypoint.sh
grep -q '/proc/1/sched' /app/entrypoint.sh
grep -q '/proc/1/status' /app/entrypoint.sh
grep -q '/proc/1/stat' /app/entrypoint.sh
grep -q '/proc/1/mountinfo' /app/entrypoint.sh
grep -q '/proc/self/mountinfo' /app/entrypoint.sh
grep -q '/sys/class/dmi/id/product_name' /app/entrypoint.sh
grep -q '/sys/class/dmi/id/bios_vendor' /app/entrypoint.sh

View File

@ -44,6 +44,7 @@ describe('NapCat Chinese Desktop Runtime image assets', () => {
expect(verify).toContain('/proc/1/sched');
expect(verify).toContain('/proc/1/status');
expect(verify).toContain('/proc/1/stat');
expect(verify).toContain('/proc/1/mountinfo');
expect(verify).toContain('/proc/self/mountinfo');
expect(verify).toContain('/sys/class/dmi/id/product_name');
expect(verify).toContain('/sys/class/dmi/id/bios_vendor');
@ -73,7 +74,8 @@ describe('NapCat Chinese Desktop Runtime image assets', () => {
expect(source).toContain('/proc/uptime');
expect(source).toContain('/proc/cpuinfo');
expect(source).toContain('/sys/devices/virtual/tty/tty0/active');
expect(source).toContain('/proc/self/mountinfo');
expect(source).toContain('mountinfo-host-leak:/proc/1/mountinfo');
expect(source).not.toContain('for kt_mountinfo in /proc/self/mountinfo /proc/1/mountinfo');
expect(source).toContain('mount --bind "$FAKE_CMDLINE" /proc/1/cmdline');
expect(source).toContain('kt_require_device_profile');
expect(source).toContain('exit 78');