
CVE 2023 38408 का गहन विश्लेषण, एक गंभीर OpenSSH भेद्यता, जिसमें तकनीकी पृष्ठभूमि, नियंत्रित वातावरण में शोषण, और शमन रणनीतियाँ शामिल हैं।
इस रिपोर्ट का उद्देश्य CVE-2023-38408 का विश्लेषण करना है, जो OpenSSH में खोजी गई एक गंभीर वास्तविक-विश्व भेद्यता है, सैद्धांतिक समझ और व्यावहारिक अनुकरण दोनों के माध्यम से। रिपोर्ट भेद्यता की तकनीकी नींव बताती है, प्रदर्शित करती है कि इसे नियंत्रित वातावरण में कैसे शोषित किया जा सकता है, और लागू किए गए शमन उपायों की जांच करती है।
हाथों-हाथ अनुकरण के माध्यम से वास्तविक-विश्व सुरक्षा भेद्यताओं को समझना न केवल सिस्टम की सुरक्षा में मदद करता है बल्कि डेवलपर्स और सिस्टम प्रशासकों की संभावित हमले के वेक्टरों के प्रति जागरूकता को भी मजबूत करता है। ऐसी भेद्यताओं का विश्लेषण सिद्धांत और व्यावहारिक सुरक्षा कार्यान्वयन के बीच की खाई को पाटता है।
CVE-2023-38408 एक भेद्यता है जो OpenSSH में ssh-agent को प्रभावित करती है जब PKCS#11 समर्थन सक्षम होता है। यदि उपयोगकर्ता एजेंट फ़ॉरवर्डिंग सक्षम (ssh -A) के साथ एक समझौता किए गए सर्वर से कनेक्ट होता है तो यह क्लाइंट मशीन पर दूरस्थ कोड निष्पादन की अनुमति देता है। इस भेद्यता के सुरक्षित प्रमाणीकरण के लिए OpenSSH पर निर्भर किसी भी सिस्टम के लिए गंभीर परिणाम हैं।
| CVE विवरण | जानकारी |
|---|---|
| CVE ID | CVE-2023-38408 |
| CVSS स्कोर | 9.8 (गंभीर) |
| प्रभावित संस्करण | OpenSSH < 9.3p2 |
| हमला वेक्टर | नेटवर्क |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता अंतःक्रिया | आवश्यक |
| प्रभाव | पूर्ण सिस्टम समझौता |
SSH (सिक्योर शेल) एक क्रिप्टोग्राफिक नेटवर्क प्रोटोकॉल है जो असुरक्षित नेटवर्क पर सुरक्षित संचार के लिए उपयोग किया जाता है। यह रिमोट लॉगिन, कमांड निष्पादन, फ़ाइल स्थानांतरण और अधिक के लिए एन्क्रिप्टेड चैनल प्रदान करता है।```mermaid graph LR A[SSH Client] -->|Encrypted Connection| B[SSH Server] A -->|Authentication| C[ssh-agent] C -->|Private Keys| D[Key Store] B -->|Agent Forwarding| E[Remote ssh-agent Proxy]
### 2.2 ssh-agent क्या है
`ssh-agent` एक बैकग्राउंड प्रक्रिया है जो आपकी डिक्रिप्टेड प्राइवेट SSH कुंजियों को मेमोरी में संग्रहीत करती है, जिससे आप हर बार रिमोट सिस्टम से कनेक्ट होने पर पासफ्रेज़ दोबारा डाले बिना उनका उपयोग कर सकते हैं।
#### Agent Forwarding (ssh -A)
Agent forwarding एक रिमोट सिस्टम को Unix domain socket के माध्यम से आपके स्थानीय `ssh-agent` तक पहुँचने की अनुमति देता है। यह SSH कनेक्शनों को चेन करने के लिए उपयोगी है, लेकिन यदि रिमोट मशीन से समझौता हो जाता है तो इससे महत्वपूर्ण सुरक्षा जोखिम उत्पन्न होते हैं।```mermaid
sequenceDiagram
participant Client as SSH Client
participant Agent as ssh-agent
participant Server as Remote Server
participant Proxy as Agent Proxy
Client->>Agent: Start agent
Client->>Server: ssh -A user@server
Server->>Proxy: Create proxy socket
Note over Server,Proxy: SSH_AUTH_SOCK=/tmp/ssh-xxx/agent.xxx
Server->>Proxy: ssh-add request
Proxy->>Client: Forward request
Client->>Agent: Process request
Agent->>Client: Response
Client->>Proxy: Forward response
Proxy->>Server: Final response
तकनीकी रूप से, जब आप ssh -A का उपयोग करते हैं, तो SSH क्लाइंट रिमोट सर्वर पर एक यूनिक्स डोमेन सॉकेट सेट करता है जो आपके स्थानीय ssh-agent के लिए एक प्रॉक्सी के रूप में कार्य करता है। पर्यावरण चर SSH_AUTH_SOCK इस प्रॉक्सी सॉकेट को इंगित करने के लिए सेट किया जाता है। रिमोट सर्वर पर SSH_AUTH_SOCK पर किए गए किसी भी कॉल को SSH कनेक्शन के माध्यम से वापस भेजा जाता है और आपके स्थानीय ssh-agent द्वारा संसाधित किया जाता है।
PKCS#11 एक मानक API है जो क्रिप्टोग्राफिक टोकनों, जैसे स्मार्टकार्ड, YubiKeys, या वर्चुअल हार्डवेयर सुरक्षा मॉड्यूल (HSMs) के साथ इंटरैक्ट करने के लिए है।
| PKCS#11 फ़ंक्शन | उद्देश्य | जोखिम स्तर |
|---|---|---|
C_Initialize() | लाइब्रेरी को प्रारंभ करें | कम |
C_GetSlotList() | उपलब्ध स्लॉटों की सूची बनाएं | कम |
C_FindObjects() | क्रिप्टोग्राफिक ऑब्जेक्ट खोजें | मध्यम |
C_Sign() | डेटा पर हस्ताक्षर करें | उच्च |
dlopen() | साझा लाइब्रेरी लोड करें | गंभीर |
OpenSSH का ssh-agent कमांड ssh-add -s /path/to/provider.so का उपयोग करके PKCS#11 प्रदाताओं (साझा .so लाइब्रेरी) को लोड करने का समर्थन करता है। ये लाइब्रेरी एजेंट को निजी कुंजियों को सीधे उजागर किए बिना सुरक्षित हार्डवेयर या सॉफ्टवेयर मॉड्यूल के साथ इंटरैक्ट करने की अनुमति देती हैं।
अंदर से, जब ssh-add -s कॉल किया जाता है, तो यह निम्नलिखित कार्य करता है:
.so फ़ाइल को dlopen() का उपयोग करके डायनामिक रूप से मेमोरी में लोड किया जाता है।C_Initialize(), C_GetSlotList(), C_FindObjects(), और C_Sign() जैसे फ़ंक्शनों को रिज़ॉल्व और कॉल करता है।| गुण | विवरण |
|---|---|
| ID | CVE-2023-38408 |
| गंभीरता | उच्च (CVSS 9.8) |
| समयरेखा | जुलाई 2023 में खुलासा हुआ, OpenSSH 9.3p2 में ठीक किया गया |
| प्रभावित सॉफ्टवेयर | OpenSSH संस्करण 9.3p2 से पहले जिनमें PKCS#11 समर्थन है |
| हमले की जटिलता | कम |
| हमले का वेक्टर | SSH एजेंट फ़ॉरवर्डिंग के माध्यम से नेटवर्क |
भेद्यता ssh-agent द्वारा ssh-add -s के माध्यम से प्रदान की गई किसी भी साझा ऑब्जेक्ट फ़ाइल (.so) को लोड करने से उत्पन्न होती है, बिना यह मान्य किए कि यह एक वैध PKCS#11 प्रदाता है।```mermaid
graph TD
A[Attacker sends ssh-add -s malicious.so] --> B[Request forwarded to victim's ssh-agent]
B --> C[ssh-agent calls dlopen on malicious.so]
C --> D[Constructor function executes immediately]
D --> E[Arbitrary code runs on victim machine]
### 3.3 हमला प्रवाह विश्लेषण```mermaid
sequenceDiagram
participant V as Victim
participant A as Attacker
participant Agent as ssh-agent
participant Lib as Malicious .so
V->>A: ssh -A attacker@host
Note over V,A: Agent forwarding enabled
A->>Agent: ssh-add -s /path/to/malicious.so
Agent->>Lib: dlopen("/path/to/malicious.so")
Note over Lib: Constructor executes
Lib->>V: Malicious code runs
Note over V: System compromised
सबसे निचले स्तर पर, घटनाओं का क्रम इस प्रकार है:
ssh-add -s /path/to/lib.so करने के लिए कहता है।ssh-agent इस अनुरोध को प्राप्त करता है और आँख बंद करके dlopen("/path/to/lib.so", RTLD_NOW) को कॉल करता है।.so फ़ाइल में एक कंस्ट्रक्टर फ़ंक्शन (__attribute__((constructor))) है, तो यह लोड होने पर तुरंत निष्पादित होता है।