15. سپتامبر 2026
CVE-2026-84445 در gRPC-Go: سرور xDS با درخواست بدون :authority از پا میافتد

مسیر exploit اینجا RCE نیست. یک ایندکس روی اسلایس خالی است، و goroutine مربوط به RPC از panic برنمیگردد؛ پس کل پروسه خارج میشود.
۸ سپتامبر ۲۰۲۶ این موضوع در GitLab Advisory Database با شناسه CVE-2026-84445 ثبت شد. کلاس ضعف: CWE-129 (اعتبارسنجی نادرست ایندکس آرایه) و CWE-248 (استثنای گرفتهنشده). advisory گیتهاب: GHSA-2v4p-qf9q-27wj.
فقط سرورهایی که با xds.NewGRPCServer() ساخته شدهاند. این سازنده روی هر RPC یک interceptor مسیریابی xDS میگذارد. interceptor برای انتخاب virtual host سراغ هدر :authority میرود. ترنسپورت HTTP/2 قبلاً درخواستی را قبول میکرد که نه :authority داشت نه Host. آنوقت authorities یک اسلایس خالی میشد و دسترسی به عنصر اول، index out of bounds و panic.
panic در pipeline اینترسپتور است. یعنی اول handshake ترنسپورت (TLS، mTLS یا ALTS) و برقراری HTTP/2 باید موفق شود، بعد درخواست ساختهشده به این منطق برسد.
- Insecure / TLS معمولی: اگر سرور plaintext یا credential استاندارد بدون چک گواهی کلاینت بپذیرد، مهاجم remote بدون احراز هویت میتواند crash بسازد.
- mTLS / ALTS: مهاجم باید credential معتبر ترنسپورت داشته باشد.
نسخههای آسیبپذیر طبق GLAD: همه قبل از ۱٫۸۲٫۲؛ از ۱٫۸۳٫۰ تا قبل از ۱٫۸۳٫۲؛ و dev از ۱٫۸۴٫۰-dev تا قبل از ۱٫۸۵٫۰-dev.0.20260825072537-93e31b48545e.
فیکس:
google.golang.org/grpcv1.82.2- v1.83.2
- یا همان pseudo-version dev بالا
نوت ریلیز ۱٫۸۲٫۲ رفتار جدید را اینطور نوشته: درخواست بدون هر دو هدر با HTTP 400 و status Internal رد میشود، نه با panic. اگر سرویستان روی xDS است، پین ماژول را به یکی از این سه برسانید؛ DoS سطح پروسه برای control-plane معمولاً از «یک RPC بد» گرانتر تمام میشود.