Andrea Leopardi

#3418من 57,946
81.7إجمالي CVSS
الثغرات · 11
متوسطة
5
عالية
6
PT-2026-108772
8.2
2026-10-09
Hexpm · Elixir-Protobuf · CVE-2026-104635
**Name of the Vulnerable Software and Affected Versions** elixir-protobuf versions 0.8.0 through 0.17.0 **Description** An unauthenticated remote attacker can cause a crash of the decoding process by providing a deeply nested JSON document. This occurs when an application decodes attacker-supplied JSON into a schema containing a self-referential or cyclic message type using the functions `Protobuf.JSON.decode/3`, `Protobuf.JSON.decode!/3`, or `Protobuf.JSON.from decoded/3`. In `lib/protobuf/json/decode.ex`, the `embedded-message` clause of the `decode singular/3` function recurses into `internal from json data/3` for each nesting level without incrementing or verifying the decoder's depth counter. While the `increase depth and maybe throw/1` guard exists, it only applies to `Google.Protobuf.ListValue` and `Google.Protobuf.Struct` clauses, rendering the `recursion limit` option ineffective for user-defined message types. Consequently, each nesting level allocates a stack frame and heap objects, allowing a sufficiently deep document to exhaust the memory of the decoding process and crash it. If the BEAM `max heap size` process flag is set to unlimited, concurrent requests may exhaust the memory of the entire node. **Recommendations** Update elixir-protobuf to version 0.17.1. As a temporary workaround, reject JSON documents whose nesting depth exceeds a fixed bound at the web or middleware layer before they are passed to the `Protobuf.JSON.decode/3`, `Protobuf.JSON.decode!/3`, or `Protobuf.JSON.from decoded/3` functions.
PT-2026-60461
6.3
2026-07-16
Hexpm · Elixir-Mint · CVE-2026-59249
**اسم البرنامج المعرض للخطر والإصدارات المتأثرة** إصدارات elixir-mint من 0.1.0 إلى 1.9.2 **الوصف** توجد مشكلة تهريب استجابات HTTP بسبب التفسير غير المتسق لطلبات HTTP. يمكن لخادم HTTP/1 ضار أن يخل بالتزامن بين وسيط صارم وعميل Mint على اتصال مجمَّع، مما يؤدي إلى تسميم قائمة انتظار الاستجابات للطلبات اللاحقة التي تشترك في ذلك الاتصال. تستخدم الدالة `decode body()` الموجودة في `lib/mint/http1.ex` الدالة `Integer.parse(data, 16)` لتحليل سطر حجم القطعة (chunk-size) في استجابة Transfer-Encoding: chunked. في حين أن RFC 7230 يحظر استخدام بادئات الإشارة لحجم القطعة، فإن `Integer.parse/2` تقبل علامات + أو - في بداية السطر. ونتيجةً لذلك، يُعامل سطر حجم القطعة الذي يحتوي على +5 على أنه قطعة مكونة من خمسة بايتات، ويُعامل +0 أو -0 على أنهما قطعتان منتهيتان بطول صفر، مما يؤدي إلى إنهاء نص الرسالة قبل الأوان. ويرفض الوسيط الذي يلتزم بصرامة بمعايير RFC هذه الأشكال، مما يتسبب في خلاف حول حدود الاستجابة. في حالة اتصالات keep-alive المجمعة، يمكن لمصدر متأثر بالمهاجم حقن بايتات ينسبها العميل إلى الاستجابة الشرعية التالية، مما يؤدي إلى إتلاف الاستجابات لطلبات قيد التنفيذ غير ذات صلة. يتطلب هذا وجود بنية شبكية يتم فيها وضع وسيط HTTP/1 يلتزم بصرامة بمعايير RFC (مثل وكيل أو موزع تحميل أو جدار حماية الويب WAF) بين عميل Mint والمصدر، ويتم إعادة استخدام الاتصالات. **التوصيات** تحديث elixir-mint إلى الإصدار 1.9.3 أو أحدث.