Security Vulnerability Report
涓枃
CVE-2026-23875 CVSS 5.4 MEDIUM

CVE-2026-23875

Published: 2026-01-19 21:15:52
Last Modified: 2026-02-05 19:50:59

Description

CrawlChat is an open-source, AI-powered platform that transforms technical documentation into intelligent chatbots. Prior to version 0.0.8, a non-existing permission check for the CrawlChat's Discord bot allows non-manage guild users to put malicious content onto the collection knowledge base. Usually, admin / mods of a Discord guild use the `jigsaw` emoji to save a specific message (chain) onto the collection's knowledge base of CrawlChat. Unfortunately an permission check (for e.g. MANAGE_SERVER; MANAGE_MESSAGES etc.) was not done, allowing normal users of the guild to information to the knowledge base. With targeting specific parts that are commonly asked, users can manipulate the content given out by the bot (on all integrations), to e.g. redirect users to a malicious site, or send information to a malicious user. Version 0.0.8 patches the issue.

CVSS Details

CVSS Score
5.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:crawlchat:crawlchat:*:*:*:*:*:*:*:* - VULNERABLE
CrawlChat < 0.0.8

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2026-23875 PoC - CrawlChat Discord Permission Bypass // This PoC demonstrates how a non-admin Discord user can inject content into CrawlChat knowledge base // Step 1: Join a Discord server where CrawlChat bot is installed const Discord = require('discord.js'); const client = new Discord.Client(); // Step 2: As a regular user (without MANAGE_SERVER or MANAGE_MESSAGES permissions) // send a message containing malicious content const maliciousContent = ` This is a phishing message. For more information visit: http://malicious-site.com Or contact: [email protected] `; // Step 3: Add the 'jigsaw' emoji reaction to your own message // The bot will interpret this as a request to add content to knowledge base client.on('messageReactionAdd', async (reaction, user) => { if (reaction.emoji.name === '馃З') { // Without proper permission check, the bot will add the message to knowledge base console.log('Content added to knowledge base without permission check'); } }); // Alternative: Send DM to bot with content (if bot supports it) async function injectMaliciousContent() { const bot = client.users.find(u => u.username === 'CrawlChat'); await bot.send(maliciousContent); } // Step 4: When other users query the bot, they receive the injected malicious content // This can redirect users to phishing sites or expose sensitive information // Note: This vulnerability was patched in version 0.0.8 // Fixed code should check: message.member.hasPermission('MANAGE_MESSAGES') || // message.member.hasPermission('MANAGE_SERVER')

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-23875", "sourceIdentifier": "[email protected]", "published": "2026-01-19T21:15:51.890", "lastModified": "2026-02-05T19:50:58.780", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "CrawlChat is an open-source, AI-powered platform that transforms technical documentation into intelligent chatbots. Prior to version 0.0.8, a non-existing permission check for the CrawlChat's Discord bot allows non-manage guild users to put malicious content onto the collection knowledge base. Usually, admin / mods of a Discord guild use the `jigsaw` emoji to save a specific message (chain) onto the collection's knowledge base of CrawlChat. Unfortunately an permission check (for e.g. MANAGE_SERVER; MANAGE_MESSAGES etc.) was not done, allowing normal users of the guild to information to the knowledge base. With targeting specific parts that are commonly asked, users can manipulate the content given out by the bot (on all integrations), to e.g. redirect users to a malicious site, or send information to a malicious user. Version 0.0.8 patches the issue."}, {"lang": "es", "value": "CrawlChat es una plataforma de c贸digo abierto, impulsada por IA, que transforma la documentaci贸n t茅cnica en chatbots inteligentes. Antes de la versi贸n 0.0.8, una verificaci贸n de permisos inexistente para el bot de Discord de CrawlChat permite a usuarios que no gestionan el gremio colocar contenido malicioso en la base de conocimientos de la colecci贸n. Normalmente, los administradores / moderadores de un gremio de Discord usan el emoji 'jigsaw' para guardar un mensaje espec铆fico (cadena) en la base de conocimientos de la colecci贸n de CrawlChat. Desafortunadamente, no se realiz贸 una verificaci贸n de permisos (por ejemplo, MANAGE_SERVER; MANAGE_MESSAGES, etc.), permitiendo a los usuarios normales del gremio informaci贸n a la base de conocimientos. Al apuntar a partes espec铆ficas que se preguntan com煤nmente, los usuarios pueden manipular el contenido proporcionado por el bot (en todas las integraciones), para, por ejemplo, redirigir a los usuarios a un sitio malicioso, o enviar informaci贸n a un usuario malicioso. La versi贸n 0.0.8 soluciona el problema."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 5.7, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "PROOF_OF_CONCEPT", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N", "baseScore": 5.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:crawlchat:crawlchat:*:*:*:*:*:*:*:*", "versionEndExcluding": "0.0.8", "matchCriteriaId": "D2B3FA94-6CD8-4EB0-A1D7-23661BB56EBD"}]}]}], "references": [{"url": "https://github.com/crawlchat/crawlchat/commit/f90ebb93c6a830f6cf609d683f6425af8434573a", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/crawlchat/crawlchat/releases/tag/v0.0.8", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://g ... (truncated)