Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
POC-CopyEscape-CVE-2026-17106 — CVE-2026-17106 (CopyEscape) का कार्यात्मक PoC: docker cp में TOCTOU रेस जो Docker होस्ट पर मनमाना लेखन (arbitrary write) की अनुमति देता है। Docker लैब + inotify मॉनिटर + LD_PRELOAD। macOS के लिए हानिरहित और Linux के लिए विनाशकारी वैरिएंट। | Kitploit
उपकरण/GitHubGitHub/686f6c61/poc-copyescape-cve-2026-17106
विशेषाधिकार वृद्धिकंटेनर सुरक्षाभेद्यता विश्लेषणशोषणलर्निंग और शिक्षाकंटेनर एस्केपप्रतिकूल हमलालैब और अभ्यास

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
GitHub
686f6c61/poc-copyescape-cve-2026-17106

POC-CopyEscape-CVE-2026-17106

CVE-2026-17106 (CopyEscape) का कार्यात्मक PoC: docker cp में TOCTOU रेस जो Docker होस्ट पर मनमाना लेखन (arbitrary write) की अनुमति देता है। Docker लैब + inotify मॉनिटर + LD_PRELOAD। macOS के लिए हानिरहित और Linux के लिए विनाशकारी वैरिएंट।

रिपॉजिटरी देखें
1829 दिन पहलेअभी तक समीक्षित नहीं

CopyEscape — CVE-2026-17106 का PoC

CopyEscape (CVE-2026-17106) की शैक्षिक Proof of Concept — docker cp में TOCTOU रेस स्थिति भेद्यता जो एक दुर्भावनापूर्ण कंटेनर को Docker होस्ट पर मनमानी फ़ाइलें लिखने की अनुमति देती है। masasron के मूल कार्य से प्रेरित, जिन्होंने "CopyEscape: Taking Over Docker Hosts with docker cp" ब्लॉग में इस भेद्यता की खोज की और दस्तावेज़ित किया।


विषय-सूची

  1. कार्यकारी सारांश
  2. कानूनी चेतावनी
  3. श्रृंखला का आर्किटेक्चर
  4. आवश्यकताएँ
  5. रिपॉज़िटरी संरचना
  6. त्वरित उपयोग गाइड
  7. शोषण का सत्यापन
  8. मूल से तुलना
  9. शमन
  10. श्रेय
  11. लाइसेंस

कार्यकारी सारांश

CVE-2026-17106 docker cp <कंटेनर>:<पथ> <गंतव्य> के दौरान Docker डेमॉन द्वारा उत्पादित tar फ़ाइल के निष्कर्षण में एक रेस स्थिति (TOCTOU) भेद्यता है। यह Docker CLI 29.6.1 और पुराने संस्करणों को प्रभावित करती है; 29.7.0 से पैच की गई। बग CLI में है (होस्ट पर tar निष्कर्षण), डेमॉन में नहीं।

CopyEscape नामित यह श्रृंखला दर्शाती है कि केवल एक चालू कंटेनर से, बिना किसी अतिरिक्त क्षमता के, एक हमलावर यह कर सकता है:

  1. एक वास्तविक निर्देशिका /watched/file.txt/ को कंटेनर के भीतर उसे खोलने वाली किसी भी प्रक्रिया के सामने एक सामान्य फ़ाइल के रूप में छुपाना, एक LD_PRELOAD लाइब्रेरी के माध्यम से जो open, openat, openat2, fopen, stat, lstat, fstatat, statx और 64 वेरिएंट को इंटरसेप्ट करती है।
  2. 16 MiB का एक चारा फ़ाइल aaa.txt बनाए रखना जो डेमॉन को tar उत्पादित करने में इतना समय लेने के लिए बाध्य करता है कि मॉनिटर रेस जीत सके।
  3. inotify के साथ डेमॉन की पहुँच पर नज़र रखना और, रेस विंडो में, रोलबैक के साथ दो परमाणु rename(2) के माध्यम से उपनिर्देशिका को होस्ट के लक्ष्य के पूर्ण symlink से बदलना (macOS पर या Linux पर )।

परिणाम docker cp चलाने वाली प्रक्रिया के अनुमतियों के साथ होस्ट पर मनमानी फ़ाइल लेखन है। Linux वेरिएंट /usr/bin/runc को अधिलेखित करता है और अगले docker run / exec पर होस्ट पर root के रूप में कोड निष्पादन प्राप्त करता है।


कानूनी चेतावनी

इस रिपॉज़िटरी में पूर्णतः शैक्षिक और रक्षात्मक सामग्री है।

  • उद्देश्य: प्रशिक्षण, स्वयं के ऑडिट और पैच के सत्यापन के उद्देश्यों के लिए शोषण श्रृंखला का प्रदर्शन करना।
  • अधिकृत उपयोग: इसे केवल उन सिस्टमों के विरुद्ध चलाएँ जो आपके हैं या जिन पर आपके पास स्पष्ट लिखित प्राधिकरण है।
  • निषिद्ध: बिना सहमति के तीसरे पक्ष के सिस्टम के विरुद्ध कोई भी उपयोग। रिपॉज़िटरी का लेखक यहाँ शामिल सामग्री के दुरुपयोग के लिए जिम्मेदार नहीं है।
  • जिम्मेदारी: ऑपरेटर लागू कानून (स्पेन में LOPD/RGPD, अमेरिका में CFAA, आदि) के अनुपालन के लिए अकेला जिम्मेदार है।
  • Linux वेरिएंट होस्ट के runc को नष्ट कर देता है: इसे केवल सत्यापित बैकअप वाली डिस्पोजेबल VM में उपयोग करें।

PoC को एक हानिरहित macOS वेरिएंट के साथ वितरित किया जाता है (मार्कर के रूप में ~/pwnd लिखता है) जिसका एकमात्र उद्देश्य एक प्रतिलिपि-योग्य प्रदर्शन के रूप में कार्य करना है।


श्रृंखला का आर्किटेक्चर

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│  1. LD_PRELOAD camufla /watched/file.txt como archivo regular       │
│     open/openat/openat2/fopen/stat/lstat/fstatat/statx → decoy       │
│     docker exec ... cat /watched/file.txt  →  "top-level file"       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  2. Layout real dentro del contenedor                               │
│     /watched/file.txt/                                               │
│     ├── aaa.txt            (16 MiB de 'B', cebo lento)               │
│     ├── escape/            (directorio real inicial)                 │
│     ├── escape/<basename>  (payload: runc o pwnd)                    │
│     └── .swap-escape       (symlink → /Users/<usr> o /usr/bin)       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  3. docker cp pide tar al daemon                                    │
│     daemon recorre /watched/file.txt/ y abre aaa.txt                │
│     inotify detecta IN_OPEN sobre aaa.txt                           │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  4. Monitor pivot: dos rename(2) atomicos con rollback              │
│     escape/ → .old-escape/   (backup)                                │
│     .swap-escape → escape/   (symlink al target del host)            │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  5. Tar resultante contiene:                                        │
│     escape → /Users/<usr>   (symlink absoluto)                       │
│     escape/<basename>        (entrada hija que atraviesa el symlink) │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  6. CLI vulnerable extrae symlink + hija                            │
│     crea escape → /Users/<usr> en el destino local                   │
│     extrae escape/<basename> A TRAVES del symlink                    │
│     escribe /Users/<usr>/<basename> en el host                       │
└──────────────────────────────────────────┬──────────────────────────┘
                                           │
                                           ▼
┌─────────────────────────────────────────────────────────────────────┐
│  macOS: ~/pwnd con "COPYESCAPE_MACOS_DEMO"  (demo inocua)           │
│  Linux: /usr/bin/runc sobrescrito          (RCE como root)          │
└─────────────────────────────────────────────────────────────────────┘

आवश्यकताएँ

PoC macOS पर चलने के लिए बनाई गई है:

  • Docker Desktop 4.81+ चालू (डेमॉन कोई भी संस्करण हो सकता है; बग CLI में है)।
  • PATH में curl, tar, git और docker।
  • कमजोर CLI 29.6.1 (लगभग 18 MB) और आधार इमेज alpine:3.21 डाउनलोड करने के लिए इंटरनेट कनेक्शन।
  • HOME का रूप /Users/<उपयोगकर्ता> हो।

macOS वेरिएंट के लिए root की आवश्यकता नहीं है। Linux वेरिएंट के लिए root और एक डिस्पोजेबल VM आवश्यक है।

run-poc.sh रनर स्वचालित रूप से Docker की आधिकारिक साइट (download.docker.com) से कमजोर CLI 29.6.1 का बाइनरी डाउनलोड करता है। यह सिस्टम के Docker Desktop इंस्टॉलेशन को संशोधित नहीं करता: यह वर्तमान डेमॉन का उपयोग करता है, लेकिन docker cp ऑपरेशन के लिए डाउनलोड किए गए बाइनरी को लागू करता है।


रिपॉज़िटरी संरचना

root@kitploit:~
POC CopyEscape (CVE-2026-17106)/
├── README.md                 ← Este archivo
├── LICENSE                   ← Licencia MIT
├── .gitignore
├── Dockerfile                ← Dockerfile unificado (macos | linux)
├── entrypoint.sh             ← Arranque del monitor sin LD_PRELOAD
├── monitor.c                 ← Monitor inotify unificado (una sola fuente)
├── watched_preload.c         ← LD_PRELOAD con cobertura ampliada
└── run-poc.sh                ← Runner robusto con reintentos

cli-vulnerable/ निर्देशिका (डाउनलोड की गई CLI 29.6.1) को .gitignore के माध्यम से रिपॉज़िटरी से बाहर रखा गया है। रनर इसे स्वचालित रूप से डाउनलोड करता है यदि यह उपस्थित नहीं है।


त्वरित उपयोग गाइड

1. PoC चलाना (macOS वेरिएंट, हानिरहित)

root@kitploit:~
cd poc-v2
./run-poc.sh

रनर:

  1. यदि कमजोर CLI 29.6.1 उपस्थित नहीं है तो उसे डाउनलोड करता है।
  2. Docker इमेज copyescape-macos-pocv2:local बनाता है।
  3. COPYESCAPE_HOST_HOME=$HOME के साथ तैयार कंटेनर प्रारंभ करता है।
  4. कंटेनर के भीतर /watched/file.txt पठनीय होने की प्रतीक्षा करता है।
  5. कमजोर CLI के साथ docker cp निष्पादित करता है।
  6. मार्कर ~/pwnd के निर्माण का सत्यापन करता है।

2. रनर के विकल्प

root@kitploit:~
./run-poc.sh 10         # 10 प्रयास (रेस संभाव्य है)
./run-poc.sh --cleanup  # 5 प्रयास और अंत में इमेज हटा देता है

3. अपेक्षित आउटपुट

root@kitploit:~
[run-poc] CLI vulnerable: 29.6.1
[run-poc] Intento 1/5 (contenedor copyescape-pocv2-NNNN-RRRR)
[run-poc]   /watched/file.txt lee: top-level file
[run-poc]   docker cp (CLI 29.6.1)...
[run-poc]   EXITO en intento 1: se creo /Users/<tu-usuario>/pwnd
  Contenido del marcador: COPYESCAPE_MACOS_DEMO
[run-poc]   Logs del monitor:
    [monitor] plataforma=macos target_dir=/Users/<tu-usuario> target_file=/Users/<tu-usuario>/pwnd quiet_ms=400 trigger=aaa.txt
    [monitor] pivoted /watched/file.txt/escape -> /Users/<tu-usuario>
[run-poc] Resumen: 1 exito en 1 intento(s).

4. सफाई

root@kitploit:~
rm -f -- "$HOME/pwnd"
rm -rf -- poc-v2/file.txt
docker image rm copyescape-macos-pocv2:local

शोषण का सत्यापन

एक बार श्रृंखला पूरी हो जाने पर, निम्नलिखित तत्व साक्ष्य के रूप में काम करते हैं:


मूल से तुलना

मूल से क्या बरकरार है

विचार और रणनीति masasron की हैं: tar उत्पादक के विरुद्ध TOCTOU रेस, LD_PRELOAD के माध्यम से छलावरण, 16 MiB का चारा, दो rename(2) के साथ पिवट, और escape/ + .swap-escape संरचना। उस डिज़ाइन के बिना यह पुनर्लेखन अस्तित्व में नहीं होता। अवधारणात्मक योजना समान है।

क्या पुनर्लेखित किया गया है

लगभग 15-20 % पंक्तियाँ ऐसी हैं जो शाब्दिक रूप से मेल खाती हैं (छोटी उपयोगिताएँ और लेआउट स्थिरांक)। बाकी नया कोड है।


शमन

  • Docker CLI को 29.7.0 या उच्चतर में अपडेट करें। PoC काम करना बंद कर देती है (29.7.2 के साथ सत्यापित)।
  • ऐसे कंटेनर से docker cp न चलाएँ जिस पर भरोसा नहीं है, और Linux में कभी भी root के रूप में नहीं।
  • सरल पहचान: निष्कर्षण के दौरान docker cp के गंतव्य के भीतर पूर्ण symlinks के निर्माण की निगरानी करें, या डेमॉन में symlink के अंतर्गत चाइल्ड प्रविष्टियों वाले tars को ब्लॉक करें।
  • बग की जड़ TarSlip / ZipSlip के समान श्रेणी की विफलता है: CLI यह सत्यापित नहीं करती कि बाद की प्रविष्टियाँ पहले से बनाए गए symlink के माध्यम से बाहर न निकलें।

श्रेय

  • मूल शोध और प्रकटीकरण: masasron — https://github.com/masasron/CopyEscape-CVE-2026-17106
  • इस रिपॉज़िटरी की PoC और पैकेजिंग: शैक्षिक उद्देश्यों के लिए स्वयं का कार्य, मूल विचार पर शून्य से पुनर्लेखित।

लाइसेंस

MIT लाइसेंस के अंतर्गत वितरित। अधिक विवरण के लिए LICENSE फ़ाइल देखें।

टूल डाउनलोड करें
escape/
/Users/<उपयोगकर्ता>
/usr/bin
  • परिणामी tar में symlink escape और उसके बाद एक चाइल्ड प्रविष्टि escape/<basename> होती है; कमजोर CLI क्लाइंट में symlink बनाती है और चाइल्ड प्रविष्टि को उसके माध्यम से निकालती है, उपयोगकर्ता द्वारा चुने गए गंतव्य के बाहर लिखते हुए।
  • संसाधनअपेक्षित साक्ष्य
    ~/pwndसामग्री COPYESCAPE_MACOS_DEMO\n वाली फ़ाइल
    poc-v2/file.txt/निर्देशिका (फ़ाइल नहीं) जिसमें escape -> /Users/<tu-usuario> (symlink) और aaa.txt (16 MiB) है
    docker logs <contenedor>पंक्ति pivoted /watched/file.txt/escape -> /Users/<tu-usuario>
    CLI 29.7.2 (पैच की गई CLI के साथ docker cp)मार्कर नहीं बनता; PoC विफल हो जाती है
    फ़ाइलमूल पंक्तियाँनई पंक्तियाँपरिवर्तन
    watched_preload.c89257पुनर्लेखित: रैपर openat2, fstatat, statx, stat64, lstat64, open64, fopen64; थ्रेड-सुरक्षित कंस्ट्रक्टर; dlsym == NULL एंटी-गार्ड; O_TMPFILE
    monitor.c (macos + linux)259 + 233 = 492 (डुप्लिकेट)344 (एकीकृत)-DCOPYESCAPE_TARGET_* के साथ पुनर्लेखित और एकीकृत; try_pivot में रोलबैक; कॉन्फ़िगर करने योग्य exit_quiet_ms और ट्रिगर; मजबूत पहचान
    entrypoint.sh35unset के स्थान पर env -u LD_PRELOAD
    Dockerfile2243एकीकृत; digest pin; --platform; बिना -Werror; -static; LABEL
    demo-macos.sh → run-poc.sh88166पुनर्लेखित: रेस पुनःप्रयास; विफलता पर लॉग; --cleanup; बाइनरी को सौंपा गया सत्यापन