الخلاصة

  • فصل FTP في مواصفة 1985 بين أوامر التحكم ومسار البيانات، فأمكن للمستخدم ترتيب نقل ملف مباشرة بين خادمين وتحديد وجهة بديلة بأمر PORT.
  • شرح RFC 2577 عام 1999 كيف يستطيع اختيار الوجهة نفسه توجيه خادم FTP إلى خدمة لا صلة لها بنقل الملف.

صندوق في مستودع يريد الوصول إلى مستودع آخر. إعادته أولاً إلى منزل صاحب الطلب، عبر وصلة بطيئة، عمل يتقنه من يريد مضاعفة أجرة النقل. وجد FTP طريقاً أقصر: الزبون يدير الخادمين والملف يعبر بينهما مباشرة. لكن استمارة الشحن بقيت في يد الزبون. حين يكتب عليها عنوان مبنى ثالث، يخرج الخادم بسيارته إلى باب لم يدخل أصلاً في الصفقة.

بيّن RFC 959 الصادر في أكتوبر 1985 أن محادثة الأوامر في FTP منفصلة عن اتصال نقل البيانات. يستطيع المستخدم فتح محادثتي تحكم مع خادمين، فيجعل أحدهما ينتظر والآخر يبدأ اتصال البيانات. يحدد PORT منفذاً بديلاً لذلك الاتصال. ذكرت المواصفة مضيفاً ثالثاً وطابعة بعيدة ضمن الاستخدامات الممكنة. كان تجاوز جهاز المستخدم وسيطاً للملف مكسباً حقيقياً لأصحاب الوصلات البطيئة.

هذه الراحة قسمت القرار والتنفيذ بين طرفين. المستخدم يختار الوجهة؛ الخادم هو الذي يفتح الاتصال. في نقل مشروع بين خادمين تكون الوجهة هي الخادم الآخر المشارك في العملية. أما قبول أي عنوان يورده المستخدم فيرسل الخادم إلى خدمة مختلفة تماماً. ترى تلك الخدمة عنوان خادم FTP مصدر الاتصال. ولا ترى من ملأ خانة الوجهة في جلسة التحكم.

تناول RFC 1579 الذي كتبه Steve Bellovin في فبراير 1994 مشكلة أخرى نشأت من اتجاه الاتصال. في نمط FTP النشط، يتصل الخادم بمنفذ لدى العميل؛ يصعب على جدار تصفية الحزم السماح بدخول اتصال إلى منفذ غير متوقع. أوصى Bellovin باستعمال PASV: ينتظر الخادم، ويبدأ العميل اتصال البيانات إلى الخارج. وطرح تصوراً لأمر APSV، موضحاً أنه لا يعرف تنفيذاً له حين كتب الوثيقة. صار السؤال «من يبدأ الاتصال؟» قراراً عملياً لمن يحرس حدود الشبكة.

كبرت عناوين الشبكة أيضاً. أضاف RFC 2428 الصادر في سبتمبر 1998 الأمرين EPRT وEPSV للتعامل مع IPv6 وترجمة العناوين. يحدد EPRT عائلة بروتوكول الشبكة والعنوان ومنفذ TCP. ويلزم EPSV ALL الجلسة بنقل بين طرفين؛ إذا احتاج المستخدم لاحقاً إلى نقل ثلاثي، يبدأ جلسة جديدة. اتسعت خانة العنوان وصار خيار الطرفين أو الأطراف الثلاثة أوضح. لم تمنح الصيغة الجديدة الزبون وحده سلطة تحديد أي باب يطرقه الخادم.

في RFC 2577 المنشور في مايو 1999 ظهر اسم الخطر: هجوم الارتداد. يستطيع العميل أن يضع في PORT عنوان خدمة ومنفذها على جهاز ثالث، ثم يطلب من خادم FTP إرسال بيانات إليها. إن كانت تلك البيانات أوامر تفهمها الخدمة، صار الخادم رسولاً لمن اختار الوجهة. قدمت الوثيقة مثال ملف يحوي أوامر SMTP يرسله الخادم إلى خدمة بريد في آلة ثالثة. المتصل بالخدمة هو خادم FTP، بينما الشخص الذي جهز الملف لا يحتاج إلى الاتصال بها مباشرة.

قدمت الوثيقة أدوات محددة لا عصا سحرية. اقترحت رفض اتصال البيانات بمنافذ TCP الأقل من 1024 والرد بالرمز 504 على طلب PORT كهذا. تبقى الخدمات التي تستمع على منافذ أعلى قابلة للاستهداف. وقد تمنع صلاحيات الملفات الجيدة إيداع مادة هجومية ثم إرسالها. وتعطيل PORT يلغي طريق النقل بين خادمين أيضاً. رأى المؤلفان أن PASV يكفي معظم عمليات النقل المعتادة. ثمن الاحتفاظ بخدمة النقل الثلاثي هو أن يقرر المشغّل إلى أين يسمح لمعداته أن تذهب.

من 1985 إلى 1999 لم تتغير فائدة الساعي: نقل الملف من مكان إلى آخر بأقل التفافات. الذي انكشف هو أن دفتر عناوينه كان في يد طالب الخدمة. يحق للزبون اقتراح رحلة. أما إرسال سيارة الخادم إلى أي مبنى يختاره فقرار صاحب السيارة.