یک آسیبپذیری امنیتی در کتابخانه ssl مربوط به Erlang/OTP شناسایی شده است که امکان تبادل کلید بدون احراز هویت موجودیت (Entity Authentication) را فراهم میکند. این نقص امنیتی به مهاجم اجازه میدهد تا در هنگام برقراری اتصال TLS 1.3، خود را به جای سرور مقصد معرفی کند.
جزئیات فنی آسیبپذیری
این مشکل زمانی رخ میدهد که یک Peer در پاسخ به درخواست اتصال کلاینت TLS 1.3، یک افزونه pre_shared_key را در پیام ServerHello ارسال کند، در حالی که کلاینت هرگز چنین درخواستی را ارائه نداده است. در این حالت، کلاینت فرآیند Handshake را بدون اعتبارسنجی گواهینامه (Certificate) سرور تکمیل میکند.
پیامدهای امنیتی
در نتیجه این نقص، تابع ssl:connect مقدار {ok, Socket} را بازمیگرداند، در حالی که طرف مقابل (Peer) هیچگونه گواهینامه معتبر، کلید خصوصی (Private Key) یا Session قبلی ندارد. این وضعیت منجر به ایجاد یک اتصال امن کاذب میشود که در آن احراز هویت سرور به طور کامل دور زده شده است.
تحلیل ریشه (Root Cause)
بررسیها نشان میدهد که تابع tls_client_connection_1_3:handle_server_hello/2 در مدیریت پیامهای دریافتی از سرور دچار خطا شده و جریان اعتبارسنجی را نادیده میگیرد، که این امر منجر به ایجاد یک حفره امنیتی در لایه انتقال (Transport Layer) میشود.