Isso is a lightweight commenting server written in Python and JavaScript. In commits before 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144, there is a stored Cross-Site Scripting (XSS) vulnerability affecting the website and author comment fields. The website field was HTML-escaped using quote=False, which left single and double quotes unescaped. Since the frontend inserts the website value directly into a single-quoted href attribute via string concatenation, a single quote in the URL breaks out of the attribute context, allowing injection of arbitrary event handlers (e.g. onmouseover, onclick). The same escaping is missing entirely from the user-facing comment edit endpoint (PUT /id/) and the moderation edit endpoint (POST /id//edit/). This issue has been patched in commit 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144. To workaround, nabling comment moderation (moderation = enabled = true in isso.cfg) prevents unauthenticated users from publishing comments, raising the bar for exploitation, but it does not fully mitigate the issue since a moderator activating a malicious comment would still expose visitors.
A stored Cross-Site Scripting (XSS) vulnerability exists in Isso commenting server affecting the website and author fields due to improper HTML escaping. Attackers can inject malicious JavaScript through single quotes in URLs or comment fields, compromising visitor sessions and data. While CVSS 6.1 is moderate, the stored nature and potential for widespread impact across comment sections requires immediate attention for organizations using Isso.
Immediate Actions:
1. Identify all Isso instances in your infrastructure and document their versions
2. Disable public comment submission immediately by setting 'moderation = enabled = true' in isso.cfg as temporary mitigation
3. Review comment database for suspicious entries containing quotes or event handlers (onclick, onmouseover, onerror, etc.)
4. Implement Web Application Firewall (WAF) rules to block requests containing XSS payloads in comment parameters
Patching Guidance:
1. Update Isso to commit 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144 or later when available
2. If running from source, apply the patch immediately from the official repository
3. Test thoroughly in staging environment before production deployment
Compensating Controls:
1. Implement Content Security Policy (CSP) headers: 'default-src self; script-src self; style-src self unsafe-inline'
2. Enable HTML sanitization on all comment output using libraries like DOMPurify or bleach
3. Implement input validation: reject URLs with unescaped quotes, restrict to http/https protocols only
4. Deploy rate limiting on comment submission endpoints
5. Enable comprehensive audit logging for all comment modifications
Detection Rules:
1. Monitor for comment submissions containing: single quotes ('), double quotes ("), event handlers (on[a-z]+\s*=), javascript: protocol
2. Alert on PUT /id/ or POST /id//edit/ requests with suspicious payloads
3. Track modifications to website field with URL-like patterns containing special characters
4. Monitor for unusual comment edit patterns from moderator accounts
الإجراءات الفورية:
1. حدد جميع مثيلات Isso في البنية التحتية الخاصة بك وقم بتوثيق إصداراتها
2. عطّل إرسال التعليقات العام فوراً بتعيين 'moderation = enabled = true' في isso.cfg كتخفيف مؤقت
3. راجع قاعدة بيانات التعليقات عن الإدخالات المريبة التي تحتوي على علامات اقتباس أو معالجات أحداث (onclick, onmouseover, onerror, إلخ)
4. طبّق قواعد جدار الحماية لتطبيقات الويب (WAF) لحظر الطلبات التي تحتوي على حمولات XSS في معاملات التعليقات
إرشادات التصحيح:
1. حدّث Isso إلى الالتزام 0afbfe0691ee237963e8fb0b2ee01c9e55ca2144 أو أحدث عند توفره
2. إذا كنت تعمل من المصدر، طبّق الرقعة فوراً من المستودع الرسمي
3. اختبر بدقة في بيئة التدريج قبل نشر الإنتاج
الضوابط التعويضية:
1. طبّق رؤوس سياسة أمان المحتوى (CSP): 'default-src self; script-src self; style-src self unsafe-inline'
2. فعّل تنظيف HTML على جميع مخرجات التعليقات باستخدام مكتبات مثل DOMPurify أو bleach
3. طبّق التحقق من الإدخال: رفض عناوين URL بعلامات اقتباس غير مهروبة، قصر على بروتوكولات http/https فقط
4. نشّر تحديد معدل على نقاط نهاية إرسال التعليقات
5. فعّل تسجيل التدقيق الشامل لجميع تعديلات التعليقات
قواعد الكشف:
1. راقب إرسالات التعليقات التي تحتوي على: علامات اقتباس فردية (')، علامات اقتباس مزدوجة (")، معالجات أحداث (on[a-z]+\s*=)، بروتوكول javascript:
2. تنبيه على طلبات PUT /id/ أو POST /id//edit/ بحمولات مريبة
3. تتبع التعديلات على حقل الموقع بأنماط تشبه عناوين URL تحتوي على أحرف خاصة
4. راقب أنماط تعديل التعليقات غير العادية من حسابات المشرف