أباتشي HTTPd ديفس تعتبر ضارة

الخلفية
على مدى السنوات ال 25 الماضية، كنت المطور الرئيسي ل apreq المشروع الفرعي داخل خادم Apache HTTPd المشروع الرئيسي. الفكرة الأصلية من libapreq، كآمنة / أداء تقديم نموذج HTML و ملف تعريف الارتباط خرجت مكتبة التحليل من تعاون بين لينكولن شتاين ودوغ MacEachern في أواخر 90s.
كانت رؤيتي في ذلك الوقت لتحويل المكتبة إلى عام، غير مرتبط ببيرل جيم المكتبة التي من شأنها دعم الروابط اللغوية من لغات البرمجة الأخرى، وهذا هو السبب في أنني دفعت إلى أن يكون المشروع مسكن تحت مظلة HTTPd بدلاً من أباتشي بيرل مشروع.
مع ظهور httpd-2. X، جديد تمامًا مرشح المدخلات/المخرجات العمارة خرجت من httpd الأساسية، فضلا عن الفصل الكامل من APR من الأساس نفسه كوقت تشغيل قابلية نقل أشبه بـ POSIX للأغراض العامة جيم مشاريع مثل الإصدار الفرعي. في الواقع، libapreq2 هو أكثر ميلا مع أباتشي APR المشروع بهذه الروح، وتعكس واجهة برمجة تطبيقات بيرل ذلك كجزء من APR::طلب البناء. يحتوي على وضع CGI مدمج للتشغيل المستقل، خارج httpd وقت التشغيل، مما يجعل وحدة اختبار نسيم.
ومع ذلك، فإن العنصر الرئيسي في apreq2 كان دائما mod_apreq2 وحدة أباتشي، والتي تم تصميمها لأول مرة من قبل بيل روي في وقت مبكر 2000s. ما صممه، خلال جلسة العصف الذهني معي (شخصيًا)، كان مكتبة محلل لغوي واحدة داخلية لـ httpd، أن مشاركة الطلب المقدم الجسم مع كل وحدة من وحدات أصحاب المصلحة الرئيسيين في وقت التشغيل. وهذا يعني توفير البيانات المحللة للوحدات التي تم ربطها بمحرك معالجة الطلب قبل وأثناء وبعد تشغيل معالج المحتوى. كما احتاجت إلى العمل على الطلبات الفرعية أيضًا، بغض النظر عما إذا كان معالج المحتوى يستهلك البيانات المحللة أم لا، أو يستهلك جسم الطلب الخام نفسه ويعيد تحليله.
لقد شرحت أهداف التصميم عدة مرات على مر السنين، حتى في عام 2012 على تطوير @httpd. لكن الأمر كان يشبه دائمًا التحدث إلى الرياح مع هؤلاء الرجال ؛ لم يهتموا أبدًا.
غيوم العاصفة تجمع
في حين أن هذه الرؤية كانت ناجحة للغاية، مع توفر روابط لغوية لعدة لغات مثل بيرل, الصفحة الرئيسية, ضريبة تغير المناخ, RR، وما إلى ذلك، من أي وقت مضى منذ حوالي عام 2010 وقد أثبتت مأساوية ل مجتمع المستخدمين الحاليين تتكون من كل منهموليس فقط أعضاء بيرل المجتمع.
ماذا حدث؟ فيليب غولوتشي، وهو زميل بيرل/FreeBSD لي في ذلك الوقت، بدأ التحريض على أننا نروج للمشروع الذي سيتم إصداره من داخل خادم HTTPd نفسه. ماذا فيليب لم’تعرف جيدا في ذلك الوقت كان كيف تماما حاجب، سريع، وإقليمي هذا الفريق أصبحالذي كان يعني الحاجة إلى التعاون معهم مباشرة على القرارات الموجهة للمستخدم حول قاعدة التعليمات البرمجية.
في عام 2012، حصل فيليب على ما يريده وتوقفت عن المقاومة، لذلك مذراة المشروع الحالي ونسخ جيم مكونات المكتبة في نواة HTTPd.
سقوط
في 2018 استقالت من المؤسسة بشكل جماعي1. يمكنك تخمين الأسباب.
في عام 2020 أو نحو ذلك، جوجل’استفاد فريق الأمن من إصدار ألفا من httpd 2.5 عن طريق تغريب نسخته البالغة من العمر 8 سنوات من apreq2. وجدوا بعض النقاط الساخنة التي تحتاج إلى إصلاح.
بدلاً من أن يكون لديك مجاملة للتواصل مع فيليب، إسحاق غولدستاند, ماكس كيلرمان (@MaxKellermann)، أنا (@joesuf4)، أو أي شخص آخر يشارك في تطوير libapreq2، مهندس صغير في فريق HTTPd ذهب حول الأعمال التجارية من “إصلاح الأخطاء” نقاط الضعف التي وجدتها جوجل. يمكنك أن ترى سجلا من تجربته وعمل الخطأ في كل إصدار منذ ذلك الحين.
لكن الانقلاب كان إطلاق سراح عام 2022 2.17، حيث المطور روكي إدخال خطأ فادح عن قصد في قاعدة التعليمات البرمجية، كسر اختبار انحدار عمره تسعة عشر عاما.
ما بعد الوفاة
إذا كنت تتساءل كيف ينتهي شيء ما مع اختبار الانحدار المكسور وحدة المعالجة المركزية، أنت’يجب أن ننظر في كيفية ريلينغ يتم ذلك في مشروع الخادم.
قصة طويلة قصيرة، وعلقوا على الاختبار وشحنها على أي حال، ووصفها بأنها إصدار أمني إصلاح ثغرة أمنية كان كل إصدار سابق عرضة.

لماذا أهتم الآن؟ لأنني’m مصاصة يتواصل المستخدمون للحصول على إجابات كخبير موضوعي معروف.
هذا تمتص، ولكن أنا’آسف أن أقول لكم أن أيام بلدي ارتداء قبعة سوبرمان في أباتشي انتهت قبل حوالي عقد من الزمان.
على أي حال، أفضل ما يمكنني القيام به في هذه المرحلة هو إظهار شجرة مصدر الإنتاج الخاصة بي لـ libapreq2 — @joesuf4/apreq (و@joesuf4/mod_perl).
الحواشي السفلية
- واحد لا’ببساطة “استقال من ASF”. لإجراء استراحة نظيفة، يجب على المرء الاستقالة ليس فقط من عضوية ASF، ولكن من كل مشروع / لجنة عضو فيها. وإلا ينتهي أحد الغرق في الجحيم أبدا أباتشي البريد الإلكتروني البريد المزعج.
