تم حل خطأ مهلة جلب السمة عن طريق إزالة الحل المسبق لنظام أسماء النطاقات

متابعة النقاش من التحديثات الأخيرة توقفت عن مهمة rake لتحديث الثيمات لاستخدام خادم وكيل:

لم أتمكن من جلب أو تحديث أي مكون ثيم بسبب خطأ المهلة هذا، وأخيراً اكتشفت الحل. إزالة الأسطر التالية التي تبدأ بـ - في الملف \u003cDiscourse\u003e/lib/theme_store/git_importer.rb:

  def clone_http!
    uri = redirected_uri

    raise_import_error! if %w[http https].exclude?(@uri.scheme)

-    addresses = FinalDestination::SSRFDetector.lookup_and_filter_ips(uri.host)

-    raise_import_error! if addresses.empty?

    env = { "GIT_TERMINAL_PROMPT" => "0" }

    args =
      clone_args(
        uri.to_s,
-        "http.followRedirects" => "false",
-        "http.curloptResolve" => "#{uri.host}:#{uri.port}:#{addresses.join(\",\")}",
      )

    begin
      Discourse::Utils.execute_command(env, *args, timeout: COMMAND_TIMEOUT_SECONDS)
    rescue RuntimeError
      raise_import_error!
    end
  end

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

في الواقع، لدي سؤال حول وجوده، git نفسه سيقوم بحل DNS، لماذا نحتاج إلى هذا المنطق؟ هذا ليس واضحاً.

SSRF (كما هو مذكور في FinalDestination::SSRFDetector) يرمز إلى تزوير الطلبات من جانب الخادم (Server-Side Request Forgery). يشير هذا إلى آلية يقوم المهاجم من خلالها بخداع الخادم الخاص بك للوصول إلى موارد قد لا يتمكن المهاجم من الوصول إليها بخلاف ذلك.

على سبيل المثال، تخيل أنك كنت تشغل Discourse داخل شبكة خاصة مع وكيل عكسي (reverse proxy) للسماح بالوصول من الإنترنت. يمكن للمهاجم إنشاء موضوع برابط يشير إلى عنوان IP داخل شبكتك الخاصة. قد يقوم نظام Onebox الخاص بـ Discourse بعد ذلك باسترداد عنوان URL هذا وعرض محتوياته في Onebox.

لمنع حدوث ذلك، لا يصل Discourse إلى أي عناوين URL يوفرها المستخدمون دون التحقق أولاً من أنها لا تشير إلى عناوين IP خاصة.

قد يكون هذا أقل أهمية بالنسبة لمستودعات git المستخدمة بواسطة السمات ومكونات السمات، نظرًا لأن المسؤولين هم من يحددونها، لكن Discourse يفضل توخي الحذر هنا.