Files
PVE-Tools-9/lib/config.sh
Maple 9d3b17daed feat: v10.0.1 — 安全中心新增 CVE 漏洞修补 (Januscape CVE-2026-53359)
新增 src/modules/09-security/cve-fix.sh:
- 漏洞检测:嵌套虚拟化状态 + 内核版本综合评估
- 临时修补:grub_add_param 禁用 kvm_intel/kvm_amd 嵌套虚拟化
- 升级内核修补:引导至内核管理模块安装已修复内核
- 恢复嵌套虚拟化:grub_remove_param 移除禁用参数
- CVE 修补主菜单:集成到安全中心第 3 项

Januscape 是 KVM/x86 shadow MMU use-after-free 漏洞,影响 2010~2026 全部内核版本
修复参考: https://github.com/V4bel/Januscape
2026-07-08 13:57:16 +08:00

254 lines
9.9 KiB
Bash

#!/bin/bash
# SPDX-License-Identifier: GPL-3.0-only
# Copyright (C) 2026 Ciriu Networks
# 版本信息
CURRENT_VERSION="10.0.1"
BUILD_NICKNAME="Evanescia"
VERSION_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/VERSION"
UPDATE_FILE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/UPDATE"
PVE_TOOLS_SCRIPT_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/PVE-Tools.sh"
PVE_VERSION_DETECTED=""
PVE_MAJOR_VERSION=""
RISK_ACK_BYPASS=false
# 镜像源注册表(并行数组,索引一一对应)
# 展示顺序即推荐顺序:官方源 -> 商业云 -> 骨干高校 -> 其他高校/地区源。
# 新增镜像: 在每个数组末尾追加一个元素即可。
MIRROR_NAMES=()
MIRROR_IDS=()
MIRROR_DEBIAN_URIS=()
MIRROR_SECURITY_URIS=()
MIRROR_PVE_URIS=()
MIRROR_CEPH_URIS=()
MIRROR_CT_URIS=()
MIRROR_NAMES+=("官方源 (Debian/Proxmox)")
MIRROR_IDS+=("official")
MIRROR_DEBIAN_URIS+=("https://deb.debian.org/debian")
MIRROR_SECURITY_URIS+=("https://security.debian.org/debian-security")
MIRROR_PVE_URIS+=("http://download.proxmox.com/debian/pve")
MIRROR_CEPH_URIS+=("http://download.proxmox.com/debian/ceph-squid")
MIRROR_CT_URIS+=("http://download.proxmox.com")
MIRROR_NAMES+=("阿里云 (公网限速/私网不限速)")
MIRROR_IDS+=("aliyun")
MIRROR_DEBIAN_URIS+=("https://mirrors.aliyun.com/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.aliyun.com/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("腾讯云 (公网限速/VPC不限速)")
MIRROR_IDS+=("tencent")
MIRROR_DEBIAN_URIS+=("https://mirrors.cloud.tencent.com/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.cloud.tencent.com/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("华为云 (公网限速/私网不限速)")
MIRROR_IDS+=("huaweicloud")
MIRROR_DEBIAN_URIS+=("https://mirrors.huaweicloud.com/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.huaweicloud.com/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("网易 163 (限速单线程)")
MIRROR_IDS+=("netease163")
MIRROR_DEBIAN_URIS+=("http://mirrors.163.com/debian")
MIRROR_SECURITY_URIS+=("http://mirrors.163.com/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("清华大学 (TUNA)")
MIRROR_IDS+=("tuna")
MIRROR_DEBIAN_URIS+=("https://mirrors.tuna.tsinghua.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.tuna.tsinghua.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("https://mirrors.tuna.tsinghua.edu.cn/proxmox")
MIRROR_NAMES+=("中科大 (USTC)")
MIRROR_IDS+=("ustc")
MIRROR_DEBIAN_URIS+=("https://mirrors.ustc.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.ustc.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.ustc.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirrors.ustc.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("https://mirrors.ustc.edu.cn/proxmox")
MIRROR_NAMES+=("北京大学 (PKU)")
MIRROR_IDS+=("pku")
MIRROR_DEBIAN_URIS+=("https://mirrors.pku.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.pku.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("上海交大致远 (SJTUG-Zhiyuan)")
MIRROR_IDS+=("sjtug-zhiyuan")
MIRROR_DEBIAN_URIS+=("https://mirrors.sjtug.sjtu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.sjtug.sjtu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("上海交大思源 (SJTUG-Siyuan)")
MIRROR_IDS+=("sjtug-siyuan")
MIRROR_DEBIAN_URIS+=("https://mirror.sjtu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirror.sjtu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("华中科技大学 (HUST)")
MIRROR_IDS+=("hust")
MIRROR_DEBIAN_URIS+=("https://mirrors.hust.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.hust.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("西安交通大学 (XJTU)")
MIRROR_IDS+=("xjtu")
MIRROR_DEBIAN_URIS+=("https://mirrors.xjtu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.xjtu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("南京大学 (NJUNJU)")
MIRROR_IDS+=("njunju")
MIRROR_DEBIAN_URIS+=("https://mirrors.nju.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.nju.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.nju.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirrors.nju.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("浙江大学 (ZJU)")
MIRROR_IDS+=("zju")
MIRROR_DEBIAN_URIS+=("https://mirrors.zju.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.zju.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.zju.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirrors.zju.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("https://mirrors.zju.edu.cn/proxmox")
MIRROR_NAMES+=("北京外国语大学 (BFSU)")
MIRROR_IDS+=("bfsu")
MIRROR_DEBIAN_URIS+=("https://mirrors.bfsu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.bfsu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.bfsu.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirrors.bfsu.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("兰州大学 (LZUOSS)")
MIRROR_IDS+=("lzuoss")
MIRROR_DEBIAN_URIS+=("https://mirror.lzu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirror.lzu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirror.lzu.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirror.lzu.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("山东大学 (SDU)")
MIRROR_IDS+=("sdu")
MIRROR_DEBIAN_URIS+=("https://mirrors.sdu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.sdu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.sdu.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("https://mirrors.sdu.edu.cn/proxmox/debian/ceph-squid")
MIRROR_CT_URIS+=("https://mirrors.sdu.edu.cn/proxmox")
MIRROR_NAMES+=("南阳理工学院 (NYIST)")
MIRROR_IDS+=("nyist")
MIRROR_DEBIAN_URIS+=("https://mirror.nyist.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirror.nyist.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirror.nyist.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("重庆大学 (CQU)")
MIRROR_IDS+=("cqu")
MIRROR_DEBIAN_URIS+=("https://mirrors.cqu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.cqu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.cqu.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("河南省教育科研网 (HERNET)")
MIRROR_IDS+=("hernet")
MIRROR_DEBIAN_URIS+=("https://mirrors.ha.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.ha.edu.cn/debian-security")
MIRROR_PVE_URIS+=("https://mirrors.ha.edu.cn/proxmox/debian/pve")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("南方科技大学 (SUSTech)")
MIRROR_IDS+=("sustech")
MIRROR_DEBIAN_URIS+=("https://mirrors.sustech.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.sustech.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("吉林大学 (JLU)")
MIRROR_IDS+=("jlu")
MIRROR_DEBIAN_URIS+=("https://mirrors.jlu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.jlu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("南京工业大学 (NJTech)")
MIRROR_IDS+=("njtech")
MIRROR_DEBIAN_URIS+=("https://mirrors.njtech.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.njtech.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_NAMES+=("西北农林科技大学 (NWAFU)")
MIRROR_IDS+=("nwafu")
MIRROR_DEBIAN_URIS+=("https://mirrors.nwafu.edu.cn/debian")
MIRROR_SECURITY_URIS+=("https://mirrors.nwafu.edu.cn/debian-security")
MIRROR_PVE_URIS+=("")
MIRROR_CEPH_URIS+=("")
MIRROR_CT_URIS+=("")
MIRROR_SELECTED_DEBIAN=-1
MIRROR_SELECTED_SECURITY=-1
MIRROR_SELECTED_PVE=-1
MIRROR_SELECTED_CEPH=-1
MIRROR_SELECTED_CT=-1
# 自动更新网络检测配置
CF_TRACE_URL="https://www.cloudflare.com/cdn-cgi/trace"
GITHUB_MIRROR_PREFIX="https://ghfast.top/"
USE_MIRROR_FOR_UPDATE=0
USER_COUNTRY_CODE=""
NETWORK_MODE="auto"
IS_OFFLINE_MODE=0
HITOKOTO_API_URL="https://v1.hitokoto.cn/?encode=json"
SESSION_TIP=""
PVE_KVM_ROM_DIR="/usr/share/kvm"
# 快速虚拟机下载脚本配置
FASTPVE_INSTALLER_URL="https://raw.githubusercontent.com/kspeeder/fastpve/main/fastpve-install.sh"
FASTPVE_PROJECT_URL="https://github.com/kspeeder/fastpve"
THIRD_PARTY_MODULES_TREE_API_MAIN_URL="https://api.github.com/repos/PVE-Tools/PVE-Tools-9/git/trees/main?recursive=1"
THIRD_PARTY_MODULES_TREE_API_MASTER_URL="https://api.github.com/repos/PVE-Tools/PVE-Tools-9/git/trees/master?recursive=1"
THIRD_PARTY_MODULES_RAW_BASE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/Modules"
COOLERCONTROL_PROJECT_URL="https://gitlab.com/coolercontrol/coolercontrol"
COOLERCONTROL_DOCS_URL="https://docs.coolercontrol.org/getting-started.html"
COOLERCONTROL_DEB_SETUP_URL="https://dl.cloudsmith.io/public/coolercontrol/coolercontrol/setup.deb.sh"
NVIDIA_ASSETS_BASE_URL="https://raw.githubusercontent.com/PVE-Tools/PVE-Tools-9/main/Modules/NVIDIA"
NVIDIA_VGPU_UNLOCK_SO_URL="${NVIDIA_ASSETS_BASE_URL}/libvgpu_unlock_rs.so"
VM_CONFIG_EXPORT_DIR="/var/lib/pve-tools/vm-config-exports"
VM_BACKUP_CRON_FILE="/etc/cron.d/pve-tools-vm-backup"
VM_DEFAULT_CLOUDINIT_BRIDGE="vmbr0"
HOST_NETWORK_INTERFACES_FILE="/etc/network/interfaces"
HOST_NETWORK_INTERFACES_STAGED_FILE="/etc/network/interfaces.new"
HOST_NETWORK_EXPORT_DIR="/var/lib/pve-tools/network-firewall-exports"
PVE_CLUSTER_FIREWALL_FILE="/etc/pve/firewall/cluster.fw"