
Educational CVE-2026-24055 का शैक्षिक शोषण प्रदर्शन जो Langfuse में अप्रमाणित Slack OAuth इंस्टॉल को लक्षित करता है, जिसमें व्यावहारिक सुरक्षा परीक्षण के लिए कमजोर और पैच किए गए Docker वातावरण शामिल हैं।
वेब और एप्लिकेशन सुरक्षा पाठ्यक्रम परियोजना — समूह 06, कक्षा NT213.Q21.ANTT
यह परियोजना Langfuse प्लेटफ़ॉर्म पर प्रकाशित एक वास्तविक सुरक्षा भेद्यता (CVE-2026-24055) को पुनः उत्पन्न (reproduce) करती है — एक OAuth endpoint जो हमलावर को लॉगिन किए बिना किसी अन्य व्यक्ति के project में Slack workspace को जोड़ने की अनुमति देता है।
परियोजना में शामिल है: भेद्य और पैच किए गए दोनों संस्करणों का अनुकरण करने वाला Docker वातावरण स्थापित करना, चरण-दर-चरण शोषण (exploitation) करना, और पैच के सही कार्य करने का सत्यापन करना। इसके माध्यम से OAuth प्रवाह में Access Control भेद्यता का विश्लेषण करने का अभ्यास, एक ऐसा कौशल जो वेब प्रमाणीकरण प्रणालियों के निर्माण या ऑडिट में सीधे लागू होता है।
प्रदर्शित कौशल: OAuth2 प्रवाह का विश्लेषण, Docker, security advisory पढ़ना, तकनीकी रिपोर्ट लिखना, सुरक्षा परीक्षण (security testing)।
CVE-2026-24055 Langfuse में संस्करण 3.89.0 से 3.146.0 तक एक Improper Access Control भेद्यता है।
Endpoint /api/public/slack/install प्रमाणीकरण की आवश्यकता नहीं रखता, जिससे हमलावर केवल projectId जानकर अपने Slack workspace को किसी भी project से बाँध सकता है। जब victim Slack पर सूचनाएँ भेजने के लिए automation बनाता है, तो सम्पूर्ण prompt सामग्री हमलावर के workspace में लीक हो जाती है।
| विशेषता | विवरण |
|---|---|
| CWE | CWE-284 — Improper Access Control |
| प्रभावित संस्करण | Langfuse 3.89.0 – 3.146.0 |
| पैच किया गया संस्करण | Langfuse 3.147.0 |
| GitHub Advisory | GHSA-pvq7-vvfj-p98x |
| NVD | CVE-2026-24055 |

| उपकरण | न्यूनतम संस्करण |
|---|---|
| Docker Desktop | 24.0+ |
| Docker Compose | v2 |
| Git | कोई भी |
| RAM | 8 GB |
Slack API Redirect URL के रूप में
http://localhost:3000का उपयोग करने की अनुमति देता है।
http://localhost:3000
cd vulnerable
cp .env.example .env
.env फ़ाइल खोलें, निम्न मान भरें:
NEXTAUTH_URL=http://localhost:3000
SLACK_CLIENT_ID=<your-slack-client-id>
SLACK_CLIENT_SECRET=<your-slack-client-secret>
SLACK_STATE_SECRET=any-random-string
docker compose up -d
जाँचें कि containers तैयार हैं:
docker compose ps
लगभग 30–60 सेकंड प्रतीक्षा करें। सभी containers
Up (healthy)स्थिति में होने चाहिए।
http://localhost:3000 पर जाएँ:
Victim खाता
Attacker खाता
Attacker के ब्राउज़र पर (Langfuse में लॉगिन किए बिना), यहाँ जाएँ:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
प्रवाह इस प्रकार होगा:
victim खाते से लॉगिन करें:
Prompt created / updated / deletedSlack → channel चुनेंcd ../vulnerable
docker compose down
cd ../patched
cp .env.example .env
# भेद्य भाग जैसे ही मान भरें
docker compose up -d
लॉगिन किए बिना प्रयास करें:
http://localhost:3000/api/public/slack/install?projectId=<any-project-id>
अपेक्षित परिणाम — HTTP 401:
{ "error": "Authentication required" }
Attacker से लॉगिन करके, victim का projectId उपयोग करें:
http://localhost:3000/api/public/slack/install?projectId=<victim-project-id>
अपेक्षित परिणाम — HTTP 403:
{ "error": "You do not have permission to configure Slack for this project" }
भेद्यता पूरी तरह पैच कर दी गई है।
docker compose down
यदि सम्पूर्ण data (volumes) हटाना चाहते हैं:
docker compose down -v
cve-2026-24055/
├── README.md ← यह फ़ाइल
├── vulnerable/
│ ├── docker-compose.yml ← Langfuse v3.146.0 (भेद्य)
│ └── .env.example
└── patched/
├── docker-compose.yml ← Langfuse v3.147.0 (पैच किया गया)
└── .env.example