---
title: "ثغرة decode-uri-component: طلب واحد بيوقّف تطبيق Node، حدّث لـ 0.5.1"
description: "decode-uri-component لحد 0.5.0 بتاخد وقت تربيعي على مدخل خربان، فطلب واحد بحجم 224 KB تقريباً بيوقّف حلقة الأحداث بـ Node حوالي 20 ثانية. الإصلاح بـ 0.5.1."
url: https://ihsanalapsi.dev/articles/decode-uri-component-dos-fix
lang: ar
date: 2026-10-30
updated: 2026-10-30
tags: ["أمن التطبيقات", "تحديثات أمنية", "تطوير الويب"]
author: Ihsan Alapsi (إحسان العبسي)
---
# ثغرة decode-uri-component: طلب واحد بيوقّف تطبيق Node، حدّث لـ 0.5.1

إذا تطبيقك Node.js بيفك ترميز روابط أو فورمات جاية من برّا، في ثغرة بمكتبة صغيرة اسمها decode-uri-component بتخلّي طلب واحد يوقّف التطبيق ثواني. هون بتعرف إذا مشروعك متأثر، وكيف تلاقي المكتبة وتحدّثها.

## شو الثغرة بـ decode-uri-component؟

ثغرة decode-uri-component هي إنو المكتبة، لما الفك العادي بيفشل على مدخل خربان، بتمرق على النص كله مرة لكل مقطع مرمّز مختلف، فالوقت بيكبر تربيعياً مع طول المدخل.

الإرشاد بقاعدة ثغرات GitHub اسمه GHSA-qr28-fpjm-wq7f، ورقم الثغرة CVE-2026-118664.

تقييمها عالي حسب [الإرشاد الرسمي](https://github.com/advisories/GHSA-qr28-fpjm-wq7f): 8.2 على CVSS 4.0.

## ليش طلب واحد بيكفي؟

السبب إنو Node.js بيشغّل كود تطبيقك على خيط واحد. لما الدالة بتعلق بحساب طويل، كل الطلبات التانية بتستنى وراها.

الإرشاد بيعطي الرقم: طلب واحد بلا تسجيل دخول بحجم 224 KB تقريباً بيوقّف حلقة الأحداث حوالي 20 ثانية.

وانتبه للنسخة 0.5.0. هي النسخة يلي صلّحت ثغرة قبلها (CVE-2026-45822)، والإرشاد بيقول إنها متأثرة بهالثغرة كمان، لأنو الإصلاح الأول ترك حلقة الاستبدال متل ما هي.

## هل تطبيقي متأثر؟

تطبيقك متأثر إذا فيه decode-uri-component لحد 0.5.0، ومدخل من برّا بيوصل لـ `decodeUriComponent()`، من كودك أو من حزمة تانية.

الإرشاد بيسمّي query-string كمثال على حزمة بتمرّق المدخل للمكتبة. ويفرّق بين حالتين:


| وين المدخل                                              | قديش الخطر                                                                     |
| ------------------------------------------------------- | ------------------------------------------------------------------------------ |
| بالرابط (query string)                                  | الحد الافتراضي لحجم الـ headers بـ Node هو 16 KB، فالطلب بيوقّف حوالي 40 ms بس |
| بجسم الطلب (فورم بتفكه بـ `query-string.parse()` مثلاً) | الإرشاد بيقول إنو التطبيقات يلي بتفك جسم الطلب مكشوفة بالكامل                  |


يعني إذا بتفك جسم فورمات أو بيانات مرمّزة جاية من المستخدم، هاد المكان يلي لازم تفحصه أول.

إذا عم تحدّث Node.js نفسه هالشهر كمان، شوف [تحديثات Node.js الأمنية لتشرين الأول](/articles/nodejs-october-2026-security-releases).

## كيف بتصلّحها؟

حدّث decode-uri-component لـ 0.5.1. أول شي شوف مين جايبها لمشروعك:

```bash
npm ls decode-uri-component
```

إذا هي بـ `dependencies` تبعك مباشرة، حدّثها:

```bash
npm install decode-uri-component@0.5.1
```

وإذا جاية من حزمة تانية، حدّث هديك الحزمة لنسخة بتسحب 0.5.1. وإذا لسا ما في، فيك تجبر النسخة بـ `overrides` بـ `package.json`، بس جرّب التطبيق بعدها لأنو الحزمة الأم ممكن تكون مكتوبة على نسخة أقدم.

الإرشاد ما بيعطي حل مؤقت. التحديث هو الإصلاح.

## من وين تبلّش هلق؟

بلّش بشجرة الحزم وبالأماكن يلي بتفك فيها مدخل من المستخدم.

1. شغّل `npm ls decode-uri-component` وشوف إذا في نسخة 0.5.0 أو أقدم.
2. دوّر بكودك على `query-string.parse` وعلى أي فك لجسم الطلب، وشوف إذا المدخل جاي من برّا.
3. حدّث لـ 0.5.1، وجرّب التطبيق.

وإذا بدك حدا يجرّب منصتك متل ما بيجرّبها مهاجم، ومنها الطلبات يلي بتوقّفها، هاد شغل [مُحَصَّن](/muhassan).

ومقالات أمان التطبيقات كلها بمكان واحد: [أمن التطبيقات](/articles?tag=app-security).

## FAQ

**هل المهاجم بيحتاج حساب بتطبيقي؟**

لأ. الإرشاد بيحكي عن طلب واحد بلا تسجيل دخول بيكفي ليوقّف حلقة الأحداث.

**أنا ما بستعمل decode-uri-component بكودي، ليش ممكن كون متأثر؟**

لأنها بتوصل لمشروعك من حزم تانية. الإرشاد بيسمّي query-string كمثال على حزمة بتمرّق المدخل لـ decodeUriComponent.

**هل بتسرّب بيانات؟**

لأ. حسب تقييم الإرشاد، الأثر على توفّر التطبيق بس: ما في أثر على سرية البيانات ولا على سلامتها.
