
تجاوز قواعد استدعاء النظام القائمة على connect() باستخدام TCP Fast Open (PoC لـ CVE-2026-63828)
TCP Fast Open (TFO) هي طريقة لتهيئة اتصال TCP حيث يمكن للعميل إرسال البيانات في حزمة SYN الأولية المرسلة إلى الخادم. هذا مفيد للسرعة لأن التبادل الأولي لمصافحة TCP يمكن تخطيه. هناك المزيد من تفاصيل التنفيذ إذا كنت مهتمًا باستخدامه في بيئة إنتاجية، لكنه مفيد لتفادي بعض محركات القواعد القائمة على استدعاءات النظام لأنه إحدى طرق فتح اتصالات TCP دون استخدام استدعاء النظام connect بشكل صريح.
من منظور استدعاءات النظام، يبدو اتصال TCP الأساسي عمومًا كما يلي:
socket() -> connect() -> write()/read()
أما اتصال TFO، فيتم تهيئته باستخدام استدعاء النظام sendto مع العلم MSG_FASTOPEN:
socket() -> sendto(...,MSG_FASTOPEN,...) -> write()/read()
لقد استكشفت هذا نوعًا ما كمهمة جانبية لشيء آخر كنت أعمل عليه، لكن أثناء إجراء المزيد من البحث حول TFO، ظهر CVE-2026-63828 كثغرة معروفة (حديثة) خاصة بتجاوز العمليات المقيدة بالشبكة في AppArmor. ومع ذلك، فهي تنطبق على أكثر من مجرد AppArmor، لذا اعتقدت أنني سأنشر PoC بسيطًا هنا.
لنفترض أنك تريد الاستعلام عن خادم Kubernetes API من داخل حاوية كجزء من الاستطلاع بعد الاختراق، ولكن هناك قواعد مراقبة/حظر قائمة على استدعاءات النظام مثل eBPF أو AppArmor أو غيرها في مكانها. إذا كنت لا تريد استخدام تنفيذ/مكتبة شبكات أثقل في مساحة المستخدم وكانت بدائل تفادي استدعاءات النظام الأخرى مثل غير متاحة، فقد يكون TFO مفيدًا. مرة أخرى، هذا مجرد PoC بسيط وليس حزمة TFO قوية.
io_uringالبناء المحمول:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
المراجع: