CVE-2025-63638

6.1 MEDIUM

📋 TL;DR

CVE-2025-63638 is a stored cross-site scripting (XSS) vulnerability in Sourcecodester AI-Powered To-Do List App v1.0 that allows attackers to inject malicious JavaScript into task titles and descriptions. When users view or interact with these tasks, the malicious code executes in their browsers, potentially compromising their accounts or sessions. This affects all users of the vulnerable application version.

💻 Affected Systems

Products:
  • Sourcecodester AI-Powered To-Do List App
Versions: v1.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: The vulnerability exists in the default installation with no special configuration required.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal session cookies, perform account takeover, redirect users to malicious sites, or execute actions on behalf of authenticated users.

🟠

Likely Case

Session hijacking, credential theft, defacement of the application interface, or redirection to phishing pages.

🟢

If Mitigated

Limited to UI disruption or minor data exposure if input validation and output encoding are partially implemented.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires the attacker to have access to create tasks (typically authenticated), but the payload executes for any user viewing the malicious task.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Not available

Vendor Advisory: Not available

Restart Required: No

Instructions:

No official patch exists. Implement input validation and output encoding as described in workarounds.

🔧 Temporary Workarounds

Implement Input Validation

all

Add server-side validation to reject or sanitize HTML/JavaScript in task title and description fields.

// Example JavaScript validation: taskTitle.replace(/[<>"']/g, '')

Implement Output Encoding

all

Encode user-controlled data before rendering in HTML context using appropriate encoding functions.

// Example: encodeURIComponent(taskDescription) or use DOMPurify.sanitize()

🧯 If You Can't Patch

  • Implement a web application firewall (WAF) with XSS protection rules
  • Restrict user permissions to limit who can create tasks

🔍 How to Verify

Check if Vulnerable:

Create a task with payload: <script>alert('XSS')</script> in title or description. If alert executes when viewing, system is vulnerable.

Check Version:

Check application version in source code or documentation (typically in readme or config files).

Verify Fix Applied:

Attempt the same test after implementing fixes; alert should not execute and payload should be displayed as plain text.

📡 Detection & Monitoring

Log Indicators:

  • Unusual task creation with script tags or JavaScript patterns in title/description fields

Network Indicators:

  • HTTP requests containing script tags or JavaScript in POST data to task creation endpoints

SIEM Query:

source="web_logs" AND ("<script>" OR "javascript:" OR "onerror=" OR "onload=") AND uri_path="/create_task"

🔗 References

📤 Share & Export