Arcane is an interface for managing Docker containers, images, networks, and volumes. Prior to version 1.18.0, four GET endpoints under /api/templates* in Arcane's Huma backend are registered without any Security requirement, allowing any unauthenticated network client to list and read the full Compose YAML and .env content of every custom template stored in the instance. Because Arcane's UI exposes a "Save as Template" flow on the project / swarm-stack creation pages that persists the operator's real env content (database passwords, API keys, etc.) verbatim, this missing authorization is an unauthenticated read of operator secrets in practice — not a theoretical info-disclosure. The frontend explicitly treats /customize/templates/* as an authenticated area (PROTECTED_PREFIXES in frontend/src/lib/utils/redirect.util.ts), and every CRUD operation (POST/PUT/DELETE) on the same paths requires a Bearer/API key, so this is a clear backend authorization gap, not intended public access. This issue has been patched in version 1.18.0.
Arcane versions prior to 1.18.0 contain an unauthenticated information disclosure vulnerability in four GET endpoints under /api/templates* that expose full Docker Compose YAML and .env files containing sensitive credentials (database passwords, API keys). This is a critical authorization bypass affecting container management infrastructure used by DevOps and cloud teams. The vulnerability allows any network-accessible attacker to read operator secrets without authentication, despite the frontend treating these endpoints as protected.
IMMEDIATE ACTIONS:
1. Identify all Arcane instances in your environment: scan for exposed /api/templates endpoints on ports 3000, 8080, or custom ports
2. Restrict network access to Arcane instances using firewall rules (WAF/network ACLs) - allow only trusted administrative IPs
3. Implement reverse proxy authentication (nginx/Apache with OAuth2/SAML) in front of Arcane until patching
4. Rotate all secrets exposed in templates: database passwords, API keys, service tokens, SSH keys
5. Review audit logs for unauthorized /api/templates* requests (look for GET requests from unexpected IPs)
PATCHING:
6. Upgrade to Arcane 1.18.0 or later immediately when available
7. Test patch in staging environment before production deployment
COMPENSATING CONTROLS (if patching delayed):
8. Deploy WAF rules blocking GET requests to /api/templates* paths
9. Implement API gateway authentication requiring Bearer tokens for all /api/templates* endpoints
10. Enable VPN/bastion host requirement for Arcane access
11. Monitor for suspicious template access patterns in logs
DETECTION RULES:
- Alert on any GET request to /api/templates* without Authorization header
- Alert on /api/templates* requests from non-whitelisted IPs
- Monitor for repeated 200 responses to /api/templates* endpoints
- Search logs for patterns: GET /api/templates/*/compose or GET /api/templates/*/env
الإجراءات الفورية:
1. حدد جميع مثيلات Arcane في بيئتك: امسح للبحث عن نقاط نهاية /api/templates المكشوفة على المنافذ 3000 أو 8080 أو المنافذ المخصصة
2. قيد الوصول إلى الشبكة لمثيلات Arcane باستخدام قواعد جدار الحماية (WAF/ACLs الشبكة) - السماح فقط لعناوين IP الإدارية الموثوقة
3. تنفيذ مصادقة reverse proxy (nginx/Apache مع OAuth2/SAML) أمام Arcane حتى التصحيح
4. تدوير جميع الأسرار المكشوفة في القوالب: كلمات مرور قواعد البيانات ومفاتيح API وتوكنات الخدمة
5. مراجعة سجلات التدقيق للطلبات غير المصرح بها /api/templates* (ابحث عن طلبات GET من عناوين IP غير متوقعة)
التصحيح:
6. ترقية إلى Arcane 1.18.0 أو إصدار أحدث فوراً عند توفره
7. اختبر التصحيح في بيئة التجميع قبل نشر الإنتاج
الضوابط البديلة (إذا تأخر التصحيح):
8. نشر قواعد WAF تحظر طلبات GET لمسارات /api/templates*
9. تنفيذ مصادقة بوابة API تتطلب Bearer tokens لجميع نقاط نهاية /api/templates*
10. تطلب متطلبات VPN/bastion host للوصول إلى Arcane
11. مراقبة أنماط الوصول إلى القوالب المريبة في السجلات
قواعد الكشف:
- تنبيه على أي طلب GET إلى /api/templates* بدون رأس Authorization
- تنبيه على طلبات /api/templates* من عناوين IP غير مدرجة في القائمة البيضاء
- مراقبة استجابات 200 المتكررة لنقاط نهاية /api/templates*
- البحث في السجلات عن الأنماط: GET /api/templates/*/compose أو GET /api/templates/*/env