Consul: توکن ACL محلی سرویس imported از peering را deregister می‌کند (CVE-2026-87107)

/images/consul-hcsec-2026-36.png

Cluster peering در Consul یعنی دو کلاستر مستقل catalog را با رابطهٔ مورد اعتماد به اشتراک می‌گذارند. سرویس exportشده در کلاستر مبدأ، در catalog مقصد دیده می‌شود تا discovery و routing بین‌کلاستری کار کند. انتظار ACL این است که اشیاء imported را فقط مسیر replication peering مدیریت کند، نه یک write محلی.

۱۰ سپتامبر ۲۰۲۶ HashiCorp در HCSEC-2026-36 نوشت این مرز روی مسیر catalog deregistration کامل enforce نمی‌شد. شناسه: CVE-2026-87107. گزارش به HashiCorp: Yazdan Soltani.

چه کسی، با چه توکنی

نسخه‌های آسیب‌پذیر: Consul و Consul Enterprise 1.21.0 تا 2.0.3.

یک caller با توکن ACL محلی که فقط service:write یا node:write دارد می‌تواند درخواست deregistration ساخته‌شده بفرستد و سرویس، health check یا nodeی را که از peer آمده حذف کند — بدون اختیار روی origin. catalog سمت exportکننده عوض نمی‌شود. دادهٔ مقصد ممکن است با replication بعدی برگردد؛ تا آن لحظه discovery و routing روی کلاستر importکننده می‌تواند بشکند.

دو شرط exploitation که خود advisory گذاشته:

  • peering فعال بین کلاسترها
  • توکن محلی با write روی منابع catalog

اگر cluster peering ندارید، در معرض نیستید. این باگ RCE روی HTTP API باز نیست؛ bypass مالکیت است برای کسی که همین حالا write محدود catalog دارد.

پچ

  • Consul 2.0.4
  • Consul Enterprise 1.21.18، 1.22.12، 2.0.4

HashiCorp از مشتری خواسته ریسک را ارزیابی کند و ارتقا بدهد. اگر peering دارید، نسخه را با consul version چک کنید؛ توکن‌هایی با service:write/node:write را در کلاستر importکننده مرور کنید. حذف موقت در catalog مقصد را با replication بعدی اشتباه نگیرید با «هرگز اتفاق نیفتاد».

آخرین مطالب