CVE-2026-25812

8.8 HIGH

📋 TL;DR

PlaciPy placement management system lacks CSRF protection while allowing credentialed CORS requests, enabling attackers to perform unauthorized actions on behalf of authenticated users. Educational institutions using PlaciPy version 1.0.0 are affected.

💻 Affected Systems

Products:
  • PlaciPy
Versions: 1.0.0
Operating Systems: Any
Default Config Vulnerable: ⚠️ Yes
Notes: All installations of version 1.0.0 are vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could manipulate student placements, modify institutional data, or perform administrative actions as authenticated users, potentially disrupting educational operations.

🟠

Likely Case

Attackers trick authenticated users into submitting malicious requests that modify placement data or user accounts without their knowledge.

🟢

If Mitigated

With proper CSRF tokens and CORS restrictions, only legitimate requests from authorized origins would be processed.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires tricking authenticated users into visiting malicious sites while logged into PlaciPy.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check GitHub advisory for latest patched version

Vendor Advisory: https://github.com/Praskla-Technology/assessment-placipy/security/advisories/GHSA-99xx-fc63-wc39

Restart Required: Yes

Instructions:

1. Review GitHub advisory for patched version
2. Update PlaciPy to latest version
3. Restart application services
4. Verify CSRF protection is enabled

🔧 Temporary Workarounds

Implement CSRF Middleware

all

Add CSRF token validation to all state-changing endpoints

# Add CSRF protection in your PlaciPy middleware configuration
# Example for Python frameworks: implement csrf_protect decorators

Restrict CORS Origins

all

Limit CORS to trusted domains only instead of allowing credentialed requests broadly

# Configure CORS to allow only specific origins
CORS_ALLOWED_ORIGINS = ['https://your-trusted-domain.com']

🧯 If You Can't Patch

  • Implement WAF rules to detect and block CSRF patterns
  • Use SameSite cookie attributes and additional authentication for sensitive actions

🔍 How to Verify

Check if Vulnerable:

Check if PlaciPy version is 1.0.0 and verify absence of CSRF tokens in forms/API requests

Check Version:

Check PlaciPy configuration files or package.json for version information

Verify Fix Applied:

Test that state-changing requests require valid CSRF tokens and fail without them

📡 Detection & Monitoring

Log Indicators:

  • Multiple failed state-changing requests from same IP without CSRF tokens
  • Unusual placement modifications from unexpected user agents

Network Indicators:

  • Cross-origin requests to PlaciPy endpoints with credentials
  • Requests missing Referer headers or CSRF tokens

SIEM Query:

source="placipy" AND (action="modify" OR action="create" OR action="delete") AND csrf_token="null"

🔗 References

📤 Share & Export