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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
LID — LID — Linux Integrity Drift: Bypassing AppArmor via eBPF pathname rewriting. Pre-LSM syscall argument manipulation with zero audit footprint. "Linux is Dying" | Kitploit
उपकरण/GitHubGitHub/azqzazq1/lid
Privilege EscalationVulnerability AnalysisExploitationIDS/IPS EvasionPenetration TestingBinary AnalysisPapers & ResearchLearning & EducationRed Teaming
GitHubazqzazq1/lid

LID

LID — Linux Integrity Drift: Bypassing AppArmor via eBPF pathname rewriting. Pre-LSM syscall argument manipulation with zero audit footprint. "Linux is Dying"

2012 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें


``` ██╗ ██╗██████╗ ██║ ██║██╔══██╗ ██║ ██║██║ ██║ ██║ ██║██║ ██║ ███████╗██║██████╔╝ ╚══════╝╚═╝╚═════╝ ```

लिनक्स इंटीग्रिटी ड्रिफ्ट

— "लिनक्स मर रहा है" —


LSM सुरक्षा गारंटियों को बायपास करने वाले कर्नेल कोड पथों की व्यवस्थित खोज
गेट कभी तोड़ा नहीं गया। इसे बस घूमकर पार किया गया।



LID क्या है?

लिनक्स सिक्योरिटी मॉड्यूल फ्रेमवर्क की एक मुख्य गारंटी है जो 20+ वर्षों से बनी हुई है:

सुरक्षा मॉड्यूल केवल प्रतिबंध जोड़ सकते हैं। वे कभी भी प्रतिबंध हटा नहीं सकते।

यह गारंटी सही है। LID इसे तोड़ता नहीं है।

LID ऐसे कर्नेल कोड पथ ढूंढता है जो LSM हुक को पूरी तरह से बायपास करते हैं — वे सबसिस्टम जो LSM फ्रेमवर्क से परामर्श किए बिना सुरक्षा-संवेदनशील संचालन करते हैं। सुरक्षा जांच सही है। समस्या यह है कि कर्नेल कभी पूछता ही नहीं।


यह समझना कि LID क्या है (और क्या नहीं है)

प्रत्येक खोज के दो अलग-अलग आयाम हैं जिन्हें भ्रमित नहीं किया जाना चाहिए:

A) नीति दृश्यता अंतर

वास्तुशिल्पीय अंध-स्थान। सवाल यह नहीं है कि "क्या कोई हमलावर इसका शोषण कर सकता है?" बल्कि:

  • AppArmor/SELinux वास्तव में क्या देखता है?
  • ऑडिट लॉग क्या रिकॉर्ड करता है?
  • आपका SIEM/EDR क्या अवलोकन करता है?
  • नीति इंजन को क्या लगता है कि हुआ?

यदि कोई सुरक्षा-संवेदनशील संचालन होता है और प्रवर्तन स्तर उसका मूल्यांकन भी नहीं करता, तो आपके पास एक दृश्यता अंतर है — भले ही आज कोई हमलावर व्यावहारिक रूप से इसका दुरुपयोग कर सके या नहीं। यह अनुपालन, फोरेंसिक्स, और गहराई-में-रक्षा धारणाओं के लिए मायने रखता है।

B) व्यावहारिक एस्केलेशन पथ

वास्तविक दुनिया की शोषण-क्षमता का सवाल:

  • क्या यह एक विशेषाधिकार सीमा को पार करता है?
  • क्या हमलावर को इसे ट्रिगर करने के लिए मौजूदा रूट/CAP_BPF की आवश्यकता है?
  • क्या एक शोषण श्रृंखला आवश्यक है, या यह स्वतंत्र है?
  • वास्तविक प्रभाव क्या है — डेटा एक्सेस, विशेषाधिकार वृद्धि, नीति चोरी?

ये दो चीजें अलग हैं। एक खोज एक महत्वपूर्ण दृश्यता अंतर हो सकती है (आपकी निगरानी अंधी है) बिना एक व्यावहारिक विशेषाधिकार वृद्धि (हमलावर को पहले से रूट चाहिए) के। इसके विपरीत, एक खोज न्यूनतम पूर्वापेक्षाओं के साथ एक सीधा एस्केलेशन पथ हो सकता है।


पुनरुत्पादन मैट्रिक्स

प्रत्येक खोज के विशिष्ट कर्नेल/कॉन्फ़िग/विशेषाधिकार आवश्यकताएँ हैं। यदि आपका वातावरण मेल नहीं खाता, तो खोज पुनरुत्पादित नहीं होगी।

LID-001: eBPF पथनाम पुनर्लेखन

LID-002: io_uring MSG_RING

LID-004: BPF टोकन AppArmor अंधापन

LID-003: नया माउंट API

LID-005: AF_XDP tc ईग्रेस बायपास

त्वरित संदर्भ: प्रत्येक खोज को क्या ब्लॉक करता है


खोजें


पैटर्न

प्रत्येक खोज एक ही पैटर्न का अनुसरण करती है:``` ┌─────────────────────────────────────────────────────────────┐ │ THE LID PATTERN │ │ │ │ Kernel Subsystem A LSM Framework │ │ (eBPF / io_uring / mount API) (AppArmor / SELinux) │ │ │ │ ┌───────────────────┐ │ │ │ Performs operation │──── should call ──── security_*() │ │ │ or manipulates │ but │ │ │ security input │ DOESN'T ██ │ │ └───────────────────┘ │ │ │ │ The LSM framework is correct. │ │ The kernel just doesn't always use it. │ └─────────────────────────────────────────────────────────────┘

root@kitploit:~
दो कर्नेल उपतंत्र। असंगत विश्वास धारणाएँ। एक अंतर।

<br>

---

## LID-001: eBPF Pathname Rewriting

**प्रमुख खोज।** `do_sys_openat2` पर एक BPF kprobe कर्नेल द्वारा कॉपी करने से पहले उपयोगकर्ता मेमोरी में फ़ाइलनाम को फिर से लिखता है। AppArmor पुनर्लिखित पथ की जाँच करता है, पहुँच प्रदान करता है। शून्य ऑडिट ट्रेस।```
  process: open("/tmp/secret.txt")
       │
       ▼
  do_sys_openat2()
       │
    ★ LID kprobe fires here
    │  bpf_probe_write_user()
    │  rewrites "/tmp/secret.txt" → "/tmp/.bypass_link"
       │
       ▼
  getname_flags()          ← kernel copies the (rewritten) path
       │
       ▼
  security_file_open()     ← LSM hooks check "/tmp/.bypass_link"
       │                      AppArmor: ALLOW ✓
       ▼
  VFS opens inode          ← same file content (hard link)
       │
       ▼
  return fd to process     ← success, zero audit trace

त्वरित आरंभ```bash

sudo ./scripts/check_prerequisites.sh sudo ./scripts/setup_env.sh make sudo ./scripts/setup_demo.sh sudo ./scripts/run_demo.sh

root@kitploit:~
### डेमो आउटपुट```
╔══════════════════════════════════════════════════════════╗
║  Phase 1: AppArmor ENFORCING — access should be DENIED   ║
╚══════════════════════════════════════════════════════════╝

  $ /tmp/test_reader
  [-] DENIED: open() failed: Permission denied (errno=13)

╔══════════════════════════════════════════════════════════╗
║  Phase 2: Loading LID — BPF kprobe pathname rewrite       ║
╚══════════════════════════════════════════════════════════╝

  [*] BPF kprobe attached to do_sys_openat2

╔══════════════════════════════════════════════════════════╗
║  Phase 3: With LID active — access should be GRANTED      ║
╚══════════════════════════════════════════════════════════╝

  $ /tmp/test_reader
  [+] SUCCESS: Read 44 bytes: SECRET_DATA=this_is_protected_content_12345

╔══════════════════════════════════════════════════════════╗
║  Phase 4: Stealth check — audit log inspection             ║
╚══════════════════════════════════════════════════════════╝

  $ dmesg | grep apparmor | grep DENIED
  (empty — no denial was ever generated)


LID-002: io_uring MSG_RING लापता LSM हुक

IORING_OP_MSG_RING with IORING_MSG_SEND_FD io_uring रिंग्स के बीच फ़ाइल डिस्क्रिप्टर स्थानांतरित करता है बिना security_file_receive() को कॉल किए। हर अन्य fd स्थानांतरण तंत्र इसे कॉल करता है:``` MSG_RING SEND_FD: __io_fixed_fd_install() ← NO security_file_receive() FIXED_FD_INSTALL: receive_fd() ← security_file_receive() ✓ SCM_RIGHTS: receive_fd() ← security_file_receive() ✓ binder: security_binder_transfer_file() ✓

root@kitploit:~
**बग स्थान:** `io_uring/msg_ring.c`, `io_msg_install_complete()` — सीधे `__io_fixed_fd_install()` को कॉल करता है, जिससे LSM हुक छूट जाता है।

**ftrace से सत्यापित:** `security_file_receive` SCM_RIGHTS के लिए फायर होता है लेकिन MSG_RING के लिए नहीं।

**प्रभावित:** Linux 5.18+ से v7.1-rc3 तक (2026-05-17 तक अनफिक्स्ड)।

**PoC:** [`findings/lid-002-iouring-msgring/msg_ring_bypass.c`](https://github.com/azqzazq1/lid/blob/HEAD/findings/lid-002-iouring-msgring/)

<br>

---

## LID-003: नया माउंट API AppArmor को बायपास करता है

नया माउंट API (`fsopen` + `fsconfig` + `fsmount` + `move_mount`) **कभी भी `security_sb_mount()` को कॉल नहीं करता** — यह एकमात्र माउंट हुक है जो AppArmor लागू करता है।```
  OLD API:  mount("proc", "/mnt", "proc", 0, NULL)
            → security_sb_mount()  → AppArmor: DENY ✗

  NEW API:  fsopen("proc") → fsconfig(CMD_CREATE) → fsmount() → move_mount()
            → security_sb_kern_mount()  → AppArmor: (not implemented) → ALLOW ✓

AppArmor 4 माउंट हुक पंजीकृत करता है। SELinux 14 पंजीकृत करता है। नया माउंट API उन हुकों का उपयोग करता है जिन्हें केवल SELinux लागू करता है।

अतिरिक्त अंतराल पाए गए:

  • open_tree(OPEN_TREE_CLONE): शून्य सुरक्षा हुक — बाइंड-माउंट नीति को बायपास करता है
  • mount_setattr(): कर्नेल में कोई LSM हुक मौजूद नहीं है
  • move_mount() के साथ डिटैच्ड माउंट: AppArmor NULL स्रोत पथ देखता है

विवरण: findings/lid-003-mount-api/



LID-004: BPF Token — AppArmor शून्य कवरेज

BPF टोकन सबसिस्टम (Linux 6.9+) यूज़र नेमस्पेस में अनप्रिविलेज्ड प्रक्रियाओं को BPF क्षमताएँ सौंपता है। कर्नेल 9 BPF LSM हुक परिभाषित करता है। SELinux वास्तविक avc_has_perm() प्रवर्तन के साथ सभी 9 को लागू करता है। AppArmor शून्य लागू करता है।``` Kernel defines 9 BPF LSM hooks: ┌─────────────────────────────────────────────────────────────────┐ │ bpf, bpf_map, bpf_prog, bpf_map_create, bpf_prog_load, │ │ bpf_token_create, bpf_token_free, bpf_token_cmd, │ │ bpf_token_capable │ └─────────────────────────────────────────────────────────────────┘

SELinux: ████████████████████████████ 9/9 implemented AppArmor: 0/9 implemented Smack: 0/9 implemented

root@kitploit:~
On Ubuntu/Debian पर, bpffs delegation वाला एक कंटेनर:
- BPF टोकन बनाएं → AppArmor कुछ नहीं देखता
- टोकन का उपयोग करके ट्रेसिंग प्रोग्राम लोड करें → AppArmor कुछ नहीं देखता
- CAP_PERFMON सौंपें → Spectre mitigations अक्षम करें → AppArmor कुछ नहीं देखता

**विवरण:** [`findings/lid-004-bpf-token/`](https://github.com/azqzazq1/lid/blob/HEAD/findings/lid-004-bpf-token/)

<br>

---

## LID-005: AF_XDP tc Egress Bypass डिफ़ॉल्ट Docker कंटेनर से

AF_XDP का कॉपी-मोड ट्रांसमिट पथ (`xsk_generic_xmit` → `__dev_direct_xmit`) **tc egress classifiers को बाईपास करता है** कंटेनर के इंटरफ़ेस पर। tc u32 DROP-ALL के साथ सत्यापित — AF_PACKET अवरुद्ध, AF_XDP पास होता है।

**हालांकि:** Cilium v1.19 (kind cluster, deny-all egress NetworkPolicy) के साथ परीक्षण किया गया — **Cilium को बाईपास नहीं किया गया।** Cilium नोड-साइड veth पीयर इनग्रेस (`cil_from_container` tcx/ingress के माध्यम से) पर लागू करता है + स्रोत IP सत्यापन है। AF_XDP पैकेट `bpf_lxc.c:1603` पर "Invalid source ip" के रूप में गिरा दिए गए। प्रभाव नेटवर्क पॉलिसी के लिए पूरी तरह से tc egress classifiers पर निर्भर वातावरणों तक सीमित है (plain Docker + tc rules, no CNI)।```
  Normal TX path:
  socket → dev_queue_xmit() → sch_handle_egress() → tc classifiers → driver
                                     ↑
                                  ENFORCED (Cilium eBPF, Calico, tc u32)

  AF_XDP copy-mode TX:
  xsk_sendmsg() → xsk_generic_xmit() → __dev_direct_xmit() → driver
                                              ↑
                                           SKIPPED (tc never runs)

कर्नेल 6.8.0 पर Docker डिफ़ॉल्ट कंटेनरों के साथ गतिशील रूप से सत्यापित:``` tc egress DROP-ALL on container eth0:

AF_PACKET sendto → ENOBUFS (BLOCKED by tc) AF_XDP sendto → 0 (BYPASS — 3 spoofed packets reached docker0 bridge)

root@kitploit:~
पैकेट्स हमलावर-नियंत्रित ईथरनेट हेडर — स्पूफ़्ड MAC, स्पूफ़्ड IP — ले जाते हैं और सक्रिय DROP नीति के बावजूद Docker ब्रिज तक पहुँचते हैं।

**PoC + विवरण:** [`findings/lid-005-afxdp-tc-bypass/`](https://github.com/azqzazq1/lid/blob/HEAD/findings/lid-005-afxdp-tc-bypass/)

<br>

---

## आर्किटेक्चर: BPF LSM इसे क्यों ठीक नहीं कर सकता```
  LSM Hook Chain: call_int_hook(file_open, ...)

  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐
  │  Lockdown    │──>│  Capability  │──>│   AppArmor   │──>│  BPF LSM    │
  │  return 0    │   │  return 0    │   │  return -13  │   │  (never     │
  │  (allow)     │   │  (allow)     │   │  (DENY) ██   │   │   reached)  │
  └─────────────┘   └─────────────┘   └──────┬───────┘   └─────────────┘
                                              │
                                         loop breaks
                                         RC = -EACCES

  ★ The LSM framework is correct. No module can undo another's denial.
  ★ LID operates OUTSIDE the framework — before hooks run, or where hooks don't exist.

साथी: SunnyDayBPF```

root@kitploit:~
               ┌───────────────────────────────────────┐
               │          THE ATTACK TIMELINE           │
               │                                       │

Syscall Entry │ ★ LID ─── manipulates input │ │ │ (security check sees wrong data) │ ▼ │ │ LSM Check │ LSM allows (or never runs) ✓ │ │ │ │ ▼ │ │ Syscall Exit │ ★ SunnyDayBPF ─── rewrites telemetry │ │ │ (monitoring sees wrong data) │ ▼ │ │ Audit/Log │ SIEM sees nothing ✓ │ │ │ │ Combined: ghost access │ └───────────────────────────────────────┘

root@kitploit:~
<br>

## परियोजना संरचना```
LID/
├── src/
│   ├── bpf/
│   │   └── lid.bpf.c              # BPF kprobe — pathname rewriter (LID-001)
│   └── loader/
│       └── lid_loader.c           # Userspace loader + event monitor
├── findings/
│   ├── lid-001-ebpf-pathname/     # eBPF pathname rewriting bypass
│   ├── lid-002-iouring-msgring/   # io_uring MSG_RING missing LSM hook
│   │   ├── msg_ring_bypass.c      # PoC with ftrace verification
│   │   └── ADVISORY.md            # Technical advisory
│   ├── lid-003-mount-api/         # New mount API AppArmor bypass
│   ├── lid-004-bpf-token/        # BPF token AppArmor/Smack zero coverage
│   └── lid-005-afxdp-tc-bypass/  # AF_XDP tc egress bypass from container
├── tests/
│   └── test_reader.c              # Victim binary for LID-001 demo
├── scripts/
│   ├── check_prerequisites.sh     # Verify system requirements
│   ├── setup_env.sh               # Install build dependencies
│   ├── setup_demo.sh              # Create demo environment
│   ├── run_demo.sh                # Run full LID-001 demonstration
│   └── teardown.sh                # Clean up everything
├── docs/
│   └── RESEARCH.md                # Full technical research paper
├── publish/                       # Articles for Medium, dev.to, etc.
├── Makefile
├── LICENSE
├── SECURITY.md
└── README.md

गुप्त प्रोफ़ाइल (LID-001)


शमन उपाय

विस्तृत शमन मार्गदर्शन के लिए, docs/RESEARCH.md देखें।


आवश्यकताएँ

पूर्ण प्रति-खोज विवरण के लिए Reproducibility Matrix देखें। सारांश:


लेखक

Azizcan Daştan
Milenium Security

  • GitHub: @azqzazq1

अस्वीकरण

यह उपकरण केवल अधिकृत सुरक्षा परीक्षण, अनुसंधान और शैक्षिक उद्देश्यों के लिए प्रकाशित किया गया है। उन सिस्टमों के विरुद्ध उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति नहीं है।


LID — क्योंकि अखंडता कभी लॉक नहीं थी।

टूल डाउनलोड करें
खोजदृश्यता अंतरव्यावहारिक एस्केलेशन
LID-001महत्वपूर्ण — AppArmor कुछ नहीं देखता, ऑडिट लॉग खाली, शून्य फोरेंसिक निशानसीमित — रूट या CAP_BPF+CAP_PERFMON आवश्यक (पहले से ही विशेषाधिकार प्राप्त)। यह विशेषाधिकार वृद्धि नहीं है। प्रभाव: नीति चोरी + ऑडिट अंधापन।
LID-002उच्च — security_file_receive() कभी फायर नहीं होता, fd स्थानांतरण सभी LSM के लिए अदृश्यउच्च — अविशेषाधिकार प्राप्त उपयोगकर्तास्थान से io_uring के माध्यम से काम करता है। बिना किसी विशेषाधिकार के LSM प्रवर्तन सीमा पार करता है।
LID-003उच्च — security_sb_mount() बायपास हुआ, AppArmor माउंट नीति मृत कोड हैमध्यम — माउंट नेमस्पेस एक्सेस की आवश्यकता है (उपयोगकर्ता ns में CAP_SYS_ADMIN)। कई कंटेनर कॉन्फ़िग में उपलब्ध।
LID-004महत्वपूर्ण — AppArmor कुछ नहीं देखता, शून्य BPF हुक (0/9), किसी भी BPF टोकन संचालन के लिए कोई ऑडिट ट्रेस नहींमध्यम — होस्ट द्वारा bpffs प्रतिनिधिमंडल + उपयोगकर्ता नेमस्पेस में CAP_BPF आवश्यक। BPF प्रतिनिधिमंडल (LXD/Incus) वाले कंटेनर रनटाइम में उपलब्ध।
LID-005मध्यम — कंटेनर इंटरफ़ेस पर tc ईग्रेस क्लासिफायर कभी AF_XDP ट्रैफ़िक का मूल्यांकन नहीं करतेसीमित — कंटेनर eth0 पर tc ईग्रेस को बायपास करता है (सत्यापित)। Cilium बायपास नहीं हुआ — नोड-साइड veth इनग्रेस पर प्रवर्तन + स्रोत IP सत्यापन (परीक्षण किया गया)। प्रभाव केवल tc-मात्र ईग्रेस फ़िल्टरिंग वाले सादे-Docker सेटअप तक सीमित।
शर्तआवश्यकनोट्स
कर्नेल संस्करण5.x+5.15, 6.1, 6.6, 6.8 पर परीक्षित
CONFIG_BPF_SYSCALL=yसभी प्रमुख डिस्ट्रो पर डिफ़ॉल्ट
CONFIG_BPF_KPROBE_OVERRIDE=yUbuntu/Debian इसे सक्षम करते हैं, RHEL नहीं
CONFIG_SECURITY_APPARMOR=yलक्ष्य LSM AppArmor होना चाहिए
AppArmor प्रोफ़ाइलप्रवर्तन, लक्ष्य पथ पर नियम अस्वीकार करेंकिसी भी पथ-आधारित अस्वीकार नियम के साथ काम करता है
विशेषाधिकारroot या CAP_BPF + CAP_PERFMONअविशेषाधिकार प्राप्त रूप से नहीं चल सकता
kernel.lockdownnone या integrityconfidentiality मोड kprobe अटैचमेंट को ब्लॉक करता है
kernel.unprivileged_bpf_disabledअप्रासंगिकCAP_BPF की आवश्यकता वैसे भी
fs.protected_hardlinksक्रॉस-यूज़र लिंक के लिए 01 (डिफ़ॉल्ट) अभी भी समान-उपयोगकर्ता हार्ड लिंक की अनुमति देता है
SELinux बजाय AppArmorकाम नहीं करताSELinux इनोड-आधारित है, पथनाम-आधारित नहीं
शर्तआवश्यकनोट्स
कर्नेल संस्करण6.0+IORING_MSG_SEND_FD 6.0 में जोड़ा गया
CONFIG_IO_URING=yसभी प्रमुख डिस्ट्रो पर डिफ़ॉल्ट
विशेषाधिकारकोई नहींअविशेषाधिकार प्राप्त उपयोगकर्तास्थान से काम करता है
io_uring_disabled sysctl0 (डिफ़ॉल्ट)2 अविशेषाधिकार प्राप्त को ब्लॉक करता है, 1 सभी को ब्लॉक करता है
लक्ष्य LSMकोई भी (SELinux, AppArmor, Smack)security_file_receive() एक सामान्य LSM हुक है
kernel.lockdownअप्रासंगिककोई BPF शामिल नहीं
शर्तआवश्यकनोट्स
कर्नेल संस्करण6.9+BPF टोकन 6.9 में पेश किया गया
CONFIG_BPF_SYSCALL=yसभी प्रमुख डिस्ट्रो पर डिफ़ॉल्ट
CONFIG_SECURITY_APPARMOR=yUbuntu/Debian डिफ़ॉल्ट
bpffs प्रतिनिधिमंडल के साथहाँहोस्ट को delegate_* विकल्पों के साथ माउंट करना होगा
विशेषाधिकारउपयोगकर्ता नेमस्पेस में CAP_BPFuserns रूट के लिए तुच्छ रूप से उपलब्ध
SELinux बजाय AppArmorप्रभावित नहींSELinux सभी 9 BPF हुक लागू करता है
शर्तआवश्यकनोट्स
कर्नेल संस्करण5.2+fsopen/fsmount 5.2 में पेश किया गया
CONFIG_SECURITY_APPARMOR=yकेवल AppArmor प्रभावित है
विशेषाधिकारउपयोगकर्ता नेमस्पेस में CAP_SYS_ADMINunshare -m के साथ उपलब्ध
SELinux बजाय AppArmorकाम नहीं करताSELinux security_sb_kern_mount() लागू करता है
कंटेनर रनटाइमseccomp फ़िल्टर पर निर्भर करता हैDocker डिफ़ॉल्ट seccomp fsopen को ब्लॉक करता है — Podman/LXC शायद न करें
शर्तआवश्यकनोट्स
कर्नेल संस्करण4.18+AF_XDP 4.18 में पेश किया गया
CONFIG_XDP_SOCKETS=yसभी प्रमुख डिस्ट्रो पर डिफ़ॉल्ट
विशेषाधिकारकेवल CAP_NET_RAWDocker, Kubernetes पॉड में डिफ़ॉल्ट
कंटेनर रनटाइमDocker, K8s, LXCडिफ़ॉल्ट क्षमता सेट
tc-आधारित नेटवर्क नीतिहाँCilium eBPF, Calico, tc u32/flower
वातावरणLID-001LID-002LID-003LID-004LID-005
Ubuntu 22.04+ (AppArmor, डिफ़ॉल्ट)काम करता हैकाम करता हैकाम करता हैकाम करता है (6.9+)काम करता है
Debian 12+ (AppArmor)काम करता हैकाम करता हैकाम करता हैकाम करता है (6.9+)काम करता है
RHEL/Fedora (SELinux)नहींकाम करता हैनहींनहींकाम करता है
lockdown=confidentialityनहींकाम करता हैकाम करता हैआंशिक रूप सेकाम करता है
अविशेषाधिकार प्राप्त उपयोगकर्तानहींकाम करता हैउपयोगकर्ता ns पर निर्भर करता हैbpffs प्रतिनिधिमंडल पर निर्भर करता हैनहीं
कंटेनर (बिना CAP_BPF)नहींio_uring पर निर्भर करता हैseccomp पर निर्भर करता हैनहींकाम करता है
कंटेनर (CAP_NET_RAW हटा दिया गया)नहींनिर्भर करता हैनिर्भर करता हैनहींनहीं
IDवेक्टरलक्ष्यक्या होता है
LID-001eBPF kprobe पथनाम पुनर्लेखनAppArmorkprobe copy_from_user से पहले फ़ाइलनाम को पुनर्लेखित करता है → AppArmor गलत पथ की जाँच करता है
LID-002io_uring MSG_RING SEND_FDSELinux, AppArmor, Smackfd स्थानांतरण security_file_receive() को छोड़ देता है — हर दूसरा fd स्थानांतरण इसे कॉल करता है
LID-003नया माउंट API (fsopen/fsmount)AppArmorsecurity_sb_mount() कभी कॉल नहीं होता — AppArmor का एकमात्र माउंट हुक बायपास हुआ
LID-004BPF टोकन प्रतिनिधिमंडलAppArmor, Smackशून्य BPF हुक — टोकन निर्माण, उपयोग, क्षमता प्रतिनिधिमंडल पूरी तरह से अदृश्य
LID-005AF_XDP __dev_direct_xmittc ईग्रेस, Cilium, Calicoडिफ़ॉल्ट Docker से कॉपी-मोड TX tc क्लासिफायर को बायपास करता है — जाली पैकेट ब्रिज तक पहुँचते हैं
संकेतकदृश्यतानोट्स
AppArmor ऑडिट लॉगकुछ नहींअस्वीकार कभी नहीं होता
auditd / journaldकुछ नहींकोई सुरक्षा घटना उत्पन्न नहीं हुई
dmesgएक बार की चेतावनीसामान्य bpf_probe_write_user संदेश
bpftool prog listदृश्यमानसंलग्न kprobe दिखाता है (यदि जाँच की जाए)
डिस्क पर हार्ड लिंकपता लगाने योग्यfind -samefile (धीमा, शोरगुल वाला)
शमन उपायप्रभावशीलताव्यापार-बंद
kernel.lockdown=confidentialityBPF को पूरी तरह से अवरुद्ध करता हैवैध निगरानी को समाप्त करता है
bpf_probe_write_user अक्षम करेंLID-001 पथ पुनर्लेखन को रोकता हैकर्नेल पुनर्निर्माण की आवश्यकता है
fs.protected_hardlinks=1हार्ड लिंक निर्माण को सीमित करता हैआधुनिक कर्नेल पर डिफ़ॉल्ट
bpftool prog list की निगरानी करेंसंलग्न प्रोब का पता लगाता हैसक्रिय पोलिंग की आवश्यकता है
SELinux पर स्थानांतरित करेंइनोड-आधारित, पथ पुनर्लेखन को पराजित करता हैजटिल स्थानांतरण
io_uring को प्रतिबंधित करेंLID-002 को अवरुद्ध करता हैएप्लिकेशन तोड़ सकता है
खोजन्यूनतम कर्नेलविशेषाधिकारलक्ष्य
LID-0015.x+root / CAP_BPF+CAP_PERFMONकेवल AppArmor
LID-0026.0+कोई नहींकोई भी (SELinux, AppArmor, Smack)
LID-0035.2+CAP_SYS_ADMIN (user ns ok)केवल AppArmor
LID-0046.9+CAP_BPF (user ns ok)AppArmor, Smack
LID-0054.18+CAP_NET_RAW (Docker डिफ़ॉल्ट)tc egress (Cilium, Calico, आदि)