العودة إلى التحديثات
New releaseAug 2, 2026

burner-net v1.3.0

عميل HTTP ذو ثقة صفرية ومضاد للطب الشرعي. يمسح الأسرار. يقطع الآثار. CPR في دبابة تخفٍ. 👻

مشاركة

BurnerNet

عميل HTTP صفر ثقة ومقاوم للطب الشرعي. يمسح الأسرار. يقطع الآثار. CPR في خزان التخفي. 👻

بورنرنت هو عميل HTTP مقاوم للطب الشرعي بلغة C++20. يوفر واجهة برمجة تطبيقات سلسة تشبه CPR للتطبيقات التي لا يمكنها الوثوق الكامل بالجهاز المحلي—يمسح الأسرار فيزيائيًا من الذاكرة ويقطع آثار التنفيذ لإخفاء منطقك عن الماسحات الضوئية والمصححات.

يقدم إعدادات افتراضية مألوفة ومتوافقة مع المضيف لـ HTTP العادي وملف تعريف مشدد (Hardened) صريح للبيئات المعادية. كلا المسارين يفضلان العملاء قصيري العمر؛ الثقة المتقدمة تظل مملوكة للتطبيق.

هل تتطلع إلى حماية الحمولات التي تم تنزيلها بواسطة BurnerNet؟ اطلع على RipStop Codec لفك تشويش الأصول في الذاكرة.

المبادئ • بدء الاستخدام • مسارات التكامل • واقع الأمان

في لمحة

المجالBurnerNet
اللغةC++20
المنصةWindows x64/x86 (ذو أولوية أولى), Linux (موثوق)
النقلHTTP(S) مدعوم بـ libcurl
نظافة الذاكرةأدوات مسح آمنة ومخصصات مسح
النظافة الشرعيةتنظيف تلقائي للكومة/المكدس عبر حالة النقل المدارة بواسطة BurnerNet
التحليل الديناميكييمكن لعزل مكدس الاستدعاءات قطع الارتباط بين المستهلك والنقل
تشديد البناءإزالة اختيارية لسلاسل التشخيص، حرفيات مشوشة، بيانات تشغيل C++ مخفضة في البناءات المشددة
تشديد وقت التشغيلدعم DoH، أسرار قائمة على المزود، وضوابط ثقة أكثر صرامة
التكاملCMake أو إسقاط المصدر في Visual Studio

لماذا تستخدمه

استخدم BurnerNet عندما يكون عميل HTTP العادي واثقًا جدًا لبيئتك.

يساعدك عندما تريد:

  • الحفاظ على عملاء الطلبات قصيري العمر بدلاً من مشاركة نقل عالمي واحد
  • تقليل الاعتماد على DNS المحلي والإعدادات الافتراضية الأخرى للمضيف
  • جلب الرموز والشهادات وأسرار التحقق فقط عند الحاجة
  • الاحتفاظ بمنطق التحقق من الاستجابة في كود التطبيق الخاص بك
  • تقليل السلاسل النصية الواضحة والبيانات الوصفية في البناءات المشددة

لمن هو مخصص

BurnerNet يناسب مشاريع مثل:

  • تطبيقات سطح المكتب Windows ذات المصادقة عالية القيمة، الترخيص، أو طلبات التحديث
  • الكود المضمن أو المحقون الذي يعمل في مضيف لا تثق به تمامًا
  • الأدوات التي تريد فحوصات نقل أكثر صرامة دون التخلي عن واجهة C++ سلسة

المكدس القياسي مقابل BurnerNet

الجانبمكدس HTTP النموذجيBurnerNet
عمر العميلغالبًا ما يكون مشتركًا وطويل العمرمصمم لعملاء يمكن التخلص منهم واستخدام نطاق الانفجار
القيم الحساسةغالبًا ما تبقى الأسرار في التهيئة أو الذاكرة لفترة أطول من اللازمعمليات استدعاء المزود تجلبها قرب الاستخدام
DNS والثقةعادة ما يرث المُحَلِّل المحلي والإعدادات الافتراضية للمضيفيدعم ضوابط ثقة أكثر صرامة بما في ذلك الاحتياطي DoH والمفاتيح المثبتة
التحققغالبًا ما يتم إضافة فحوصات السلامة الخاصة بالتطبيق لاحقًامبني للعمل مع خطافات التحقق قبل الرحلة والنقل والاستجابة

النتائج الدفاعية

  • بنية الذاكرة صفر شبح: يستخدم BurnerNet ماسح بحجم البادئة مخصص لخطف مسارات تخصيص الذاكرة الداخلية لـ libcurl وتدفقات OpenSSL. يتم مسح مخازن النقل الحساسة عند مغادرتها العمر المدار بواسطة BurnerNet. تم التحقق من هذه النظافة على كل من Windows و Linux ضمن التهيئات المدققة الموضحة في الوثائق.
  • مسح إطارات المكدس: بعد كل طلب، تقوم المكتبة بتنظيف مكدس الخيط الخاص بها بشكل استباقي (تنظيف علامة الارتفاع الأعلى). يهدف هذا إلى تدمير أجزاء النقل الزائلة قبل عودة التحكم إلى تطبيقك.
  • كومة هدف متحرك: يؤدي الجمع بين وسائل النقل القابلة للتخلص ورؤوس البيانات الوصفية المحاذية إلى تشتت عالي لمساحة العنوان، مما يجعل ذاكرة العملية غير متوقعة ومقاومة لتعيين المؤشرات المستقرة.
  • حالة طلب قصيرة العمر: تم تصميم BurnerNet حول عملاء يمكن التخلص منهم بدلاً من وسائل نقل مفردة على مستوى العملية.
  • ثقة أقل في المضيف: يساعد دعم DoH ودعم المفاتيح المثبتة وتدقيق النقل في تقليل الاعتماد على الإعدادات الافتراضية المحلية المخترقة.
  • انكشاف أقل للنص العادي: تقلل عمليات استدعاء المزود وأدوات المسح الآمنة من عمر الشهادات والمفاتيح والرموز والمخازن الحساسة الأخرى.
  • تحقق مملوك للتطبيق: يبقى التحقق من الاستجابة في الكود الخاص بك من خلال WithResponseVerifier(...) بدلاً من ترميزه ثابتًا في مكتبة مشتركة.
  • بصمة ثابتة أكثر صعوبة: يمكن للبناءات المشددة ضبط BURNERNET_DIAGNOSTIC_STRINGS=0 بحيث يعيد ErrorCodeToString(...) قيم E<number> مستقرة دون تضمين أسماء أخطاء رمزية.
  • خيارات نشر خفيفة الاستيراد: يمكن لـ BURNERNET_HARDEN_IMPORTS=1 حل التبعيات في وقت التشغيل ديناميكيًا بدلاً من الإعلان عنها مباشرة في جدول الاستيراد، باستخدام مسار KernelResolver الخاص بـ BurnerNet على Windows.
  • عزل مكدس الاستدعاءات (التسليم غير المتزامن): عند التمكين عبر .WithStackIsolation(true)، تنفذ المكتبة دورة حياة النقل على خيط عامل منفصل. يمكن لهذا قطع مكدس استدعاءات المتصل فيزيائيًا وتقليل التتبع المباشر من الأعلى إلى الأسفل لمنطق التطبيق.

التخفي الموثوق

لا يدعي BurnerNet مجرد وضع مشدد خفيف الاستيراد؛ بل يأتي أيضًا مع ملاحظات تدقيق لتكوينات محددة تم اختبارها. في تدقيق Windows x64 Release مع BURNERNET_HARDEN_IMPORTS=ON:

  • تعتم IAT: لم يتم ملاحظة أي إدخالات لـ libcurl.dll أو ws2_32.dll أو bcrypt.dll أو crypt32.dll في الثنائي المدقق.
  • تعتم الذاكرة: فشلت عمليات المسح الشرعي (Cheat Engine "All Strings") في اكتشاف عناوين URL أو رؤوس حساسة من نوع canary في كومة العملية أو مكدسها.
  • عمى المصحح: تتحقق الاختبارات المدمجة من أن المكتبة تؤدي إلى "تحول الهوية". يعمل صانع القرار (تطبيقك) والناقل (BurnerNet) على معرفات خيوط مميزة، مما يقلل من التتبع من الأعلى إلى الأسفل خلال جلسات التصحيح المباشرة.
  • الضجيج إلى الإشارة: تهدف المكتبة إلى النظافة الشرعية ضمن سلطة المسح الخاصة بها، مع الاعتراف بـ "الظلال" المتبقية على مستوى النظام في بيئة OS ووقت التشغيل.

تفاصيل ومنهجية التدقيق:

بدء الاستخدام

أسرع مسار:

  • أضف BurnerNet إلى بنائك باستخدام CMake أو إسقاط المصدر في Visual Studio.
  • قم بتضمين <burner/net.h>.
  • أنشئ عميل مكدس، أرسل طلبًا، ثم اتركه يخرج من النطاق.

مثال بسيط:

#include <iostream>

#include <burner/net.h>

int main() {
    burner::net::Client client;
    if (!client.IsReady()) {
        std::cerr << burner::net::ErrorCodeToString(client.InitError()) << '\n';
        return 1;
    }

    const auto response = client
        .Get("https://example.com")
        .WithHeader("Accept", "text/html")
        .WithTimeoutSeconds(10)
        .Send();

    if (!response.TransportOk()) {
        std::cerr << burner::net::ErrorCodeToString(response.transport_error) << '\n';
        return 1;
    }

    std::cout << "HTTP " << response.status_code << '\n';
    return 0;
}

يستخدم Client الإعدادات الافتراضية القياسية: CA للنظام، DNS، والوكيل مع تمكين التحقق من النظير واسم المضيف لـ TLS. يظل WithCasualDefaults() متاحًا كاسم مستعار للتوافق القياسي.

لحركة المرور الحيوية أمنيًا، استخدم ملف التعريف المشدد. يرفض Build() عناصر التحكم المفقودة قبل أي طلب:

auto secure = burner::net::ClientBuilder(burner::net::ClientProfile::Hardened)
    .WithMtlsProvider(ProvideMtlsCredentials)
    .WithSecurityPolicy(AppSecurityPolicy{})
    .WithDnsFallback(burner::net::DnsMode::Doh,
                     "https://resolver.example/dns-query",
                     "Primary DoH")
    .AllowSystemDns(true) // explicit fallback, after DoH
    .WithResponseVerifier(VerifySignedResponse)
    .Build();

يتطلب المشدد التحقق من النظير واسم المضيف، عزل المكدس، توجيه DoH أولاً، مدقق استجابة للتطبيق، وتركيب ثقة مملوك للتطبيق. يتم رفض بيانات الاعتماد الثابتة WithMtls(...)؛ استخدم WithMtlsProvider(...).

مسارات التكامل

1. Standard CMake

استخدم هذا عندما يستخدم مشروعك النهائي بالفعل CMake وترغب في أنظف مسار مُدار بالتبعيات.

الوثائق:

2. Visual Studio Source-Drop

الفئات