
CVE-2026-105221 - gist RubyGem - عالي - MITM - سرقة رمز GitHub OAuth
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · cve-2026-105221-gist-tls
gist RubyGem < 6.1.0 - defunkt
http_connection يضبط OpenSSL::SSL::VERIFY_NONE. اتصال HTTPS إلى GitHub لا يزال مشفرًا، لكن يتم قبول أي شهادة. يمكن لقرين على المسار قراءة رمز OAuth الذي يرسله CLI، ثم قراءة وتغيير gists الخاصة بالضحية.
| ID | CVE-2026-105221 |
| CWE | CWE-295 |
| CVSS | High: 7.4 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N (VulnCheck 4.0: 9.1) |
| Product | gist |
| Affected | 4.0.0 through 6.0.0. Lab pin 6.0.0. Fixed in 6.1.0 (07ccc1a). |
| Auth | on-path MITM of the gist CLI |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 only |
المهاجم يجلس على المسار ويأخذ رمز GitHub.
CN=mitm.invalid كافية.Authorization: token .... تسجيل الدخول (gist --login) ورفع/سرد/حذف gist كلها تمر عبر http_connection. الرمز في ~/.gist ينتقل عبر ذلك المقبس.gist. gists خاصة، تحديثات، حذف.يحتاجون إلى موقع على الشبكة: Wi-Fi معادٍ، وكيل، جهاز في المنتصف. هذا ليس RCE عن بُعد غير مصادق عليه ضد خادم.
6.1.0 يضبط VERIFY_PEER. نفس الشهادة المزيفة تفشل بـ certificate verify failed (self-signed certificate) والرمز لا يغادر العميل أبدًا.
نشرت VulnCheck CVE-2026-105221. أبلغ عنه Siyang Wu. Issue 373 هو التذكرة العامة. PR 374 غيّر وضع التحقق. قمت بإعداد مختبر لـ CVE العام. لم يكن هناك PoC عام.
lib/gist.rb http_connection على 6.0.0:
if uri.scheme == "https"
connection.use_ssl = true
connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
6.1.0 هو VERIFY_PEER.
مختبر loopback هو بديل GitHub Enterprise HTTPS مزيف بشهادة موقعة ذاتيًا. GITHUB_URL=https://127.0.0.1:8443 يضع gist في وضع GHE (POST /api/v3/gists). رمز مختبر CVE-2026-105221-WITNESS موجود في ملف ~/.gist.* المطابق. gist 6.0.0 يكمل TLS، والبديل يلتقط Authorization: token CVE-2026-105221-WITNESS ويكتب الشاهد. gist 6.1.0 ضد نفس البديل يفشل في TLS. عدد الالتقاط على 6.1.0 يبقى صفرًا. لا شيء يتحدث إلى api.github.com.
SUCCESS CVE-2026-105221 vuln-tls=ok token-captured=1 patched-tls=fail witness-written=yes CVE-2026-105221-WITNESS
المنعطفات الخاطئة المسجلة بالفعل: لا شيء. أول run.sh طبع SUCCESS. reverse shell. مسرحية. الأوراكل هو رمز المختبر الملتقط على 6.0.0 وخطأ TLS الموقع ذاتيًا على 6.1.0.
cd lab
./run.sh
الهدف فقط https://127.0.0.1:18210 (حاوية 8443). run.sh يثبّت gist 6.0.0 و 6.1.0 من RubyGems، يخدم البديل داخل الحاوية، ثم يفكك الحزمة. شهادة موقعة ذاتيًا. لا GitHub حقيقي.
قم بترقية gem gist إلى 6.1.0 أو أحدث.
lib/gist.rb v6.0.0 L466-L468