Arch Linux ने अब malware घटना को नियंत्रित मान लिया: 1,500 से अधिक packages प्रभावित
(phoronix.com/news)- Arch Linux के AUR user-contributed repository में malware-संक्रमित packages की संख्या पहले 400 से अधिक पाई गई थी, लेकिन अंततः यह बढ़कर 1,500 से अधिक हो गई
- कुछ घंटे पहले के अपडेट में इस सप्ताह की घटना से प्रभावित packages की संख्या लगभग 900 बताई गई थी
- इसके बाद Arch Linux डेवलपर्स ने पहचाने गए सभी malicious commits हटा दिए, और प्रभावित packages की संख्या 1,579 दर्ज की गई
- 1,579 की सूची को भी प्रभावित packages की काफी बड़ी लेकिन पूरी नहीं सूची बताया गया, इसलिए कुल दायरा इससे बड़ा हो सकता है
- user-maintained repository के बहुत से software इस security incident से प्रभावित हुए, और एक अलग अपडेट में अधिक परिष्कृत malware हमले की एक और लहर का उल्लेख किया गया
घटना का सार
- Arch Linux उपयोगकर्ताओं के लिए AUR user-contributed repository में 400 से अधिक malware-संक्रमित packages मिलने के साथ यह घटना शुरू हुई
- दिन के अंत तक Arch Linux पक्ष ने माना कि प्रभावित commits सभी संभाल लिए गए हैं, लेकिन प्रभावित packages की संख्या 1,500 से अधिक हो गई
- यह घटना user-maintained Arch Linux repository के बहुत से software को प्रभावित करने वाली एक security incident थी
प्रभाव के दायरे में बदलाव
- कुछ घंटे पहले के अपडेट में इस सप्ताह की घटना से लगभग 900 packages के malware से संक्रमित होने की बात सामने आई थी
- इसके बाद security incident thread के अंतिम संदेश के अनुसार Arch Linux डेवलपर्स ने पहचाने गए सभी malicious commits हटा दिए
- उद्धृत सूची में malware से प्रभावित packages की संख्या 1,579 दिखाई गई
बची हुई अनिश्चितता
- 1,579 packages दिखाने वाली सूची को भी “प्रभावित packages की काफी बड़ी लेकिन पूरी नहीं सूची” के रूप में चिह्नित किया गया
- इसलिए सार्वजनिक संख्या पुष्टि किए गए बड़े पैमाने के प्रभाव को दिखाती है, लेकिन सूची स्वयं सभी packages को शामिल नहीं करती
अनुवर्ती अपडेट
- एक अलग अपडेट में कहा गया कि Arch Linux AUR पर अधिक परिष्कृत malware हमले की एक और लहर आई
1 टिप्पणियां
Hacker News की राय
जानना चाहता हूँ कि क्या AUR टीम ने कभी postmortem जारी किया है
इस बार की प्रतिक्रिया प्रभावित करने वाली तेज़ थी, लेकिन ईमानदारी से कहें तो AUR policies हों या wrappers, बदलाव की ज़रूरत दिखती है
pnpmकी तरह minimum package age सेट कर पाना चाहिए, और orphan packages को कोई भी जाकर adopt न कर सकेadoption पर global rate limit भी लगाई जा सकती है ताकि उसे attack signal की तरह इस्तेमाल किया जा सके, और जैसे NPM में कई कंपनियाँ करती हैं, वैसे publish समय पर vulnerability scan भी चाहिए
हालाँकि इन बदलावों में से ज़्यादातर काम AUR maintainers से ज़्यादा packaging helpers और third parties के हिस्से का लगता है
तब ownership गायब नहीं होगी, इसलिए orphan करने की ज़रूरत ही नहीं पड़ेगी
pnpmसे प्रेरित होकर मैंने हाल ही मेंpakkuमें minimum AUR age जोड़ने वाला patch [1] बनाया है[1] https://github.com/gavinhungry/patches/blob/main/pakku/pakku...
[2] https://github.com/zqqw/pakku
restrictions ज़रूरी हैं, लेकिन जैसे कुछ समय पहले से registered users को महीने में 1 adoption तक सीमित करना ठीक लग सकता है
वैसे भी local machine पर installed AUR packages पर कोई automatic, unreviewed updates लागू नहीं करता होगा, इसलिए attack surface पहले से ही काफ़ी छोटी है
miasmaworm की जड़ यही है कि signatures और helper तरीक़े बहुत तेज़ी से बदलते हैंencrypted malicious implant uploaded GitHub location के हिसाब से बदलने वाली AES-128-GCM key से payload को decrypt करता है, और code के method names भी dynamically बदलते हैं, साथ ही encrypted symbol offsets को मिलाकर दोबारा इस्तेमाल करता है
यह polymorphic malware है, इसलिए signature-based tools के लिए सबसे बुरा प्रतिद्वंद्वी है
APT28/29 कुछ हद तक इस बात पर निर्भर दिखते हैं कि GitHub पर C2 infrastructure के रूप में इस्तेमाल हो रहे users और repositories को Microsoft अपने-आप block करने में धीमा है
इसका security strategy के लिए क्या मतलब है, इस पर सोचने की ज़रूरत है
जब तक आप signatures या strings scan कर पाते हैं, तब तक आप पहले ही पूरी तरह automated botnet के साथ cat-and-mouse game में पहुँच चुके होते हैं, और उसे जीता नहीं जा सकता
पिछले हफ़्ते भर में इस implant के बदलावों को track करने वाला supply-chain tool शायद सिर्फ
socket.devथा, जबकि दूसरे toolsMiasmaको पहचान भी नहीं पाए और उसे नई campaign समझकर फिर से खोजते रहेनए ecosystem adapters हर 24 घंटे में आ रहे थे, लेकिन payload को उतनी तेज़ी से reverse engineer करने के लिए लोगों और toolchain की कमी थी
यहाँ fully automated का मतलब यह है कि दूसरे package ecosystems में 48 घंटे से भी कम समय में चोरी किए गए credentials पहले ही इस्तेमाल हो रहे हैं
email addresses और names बार-बार सामने आ रहे हैं, और लगता है कि वे ऐसे लोग हैं जिन्हें शायद इस self-propagating worm के असर का अंदाज़ा ही नहीं था
उदाहरण के लिए
bunपर निर्भर packages खोजने वाले indicators of compromise भी बहुत मददगार नहीं हैंmalware बस किसी बाहरी तरीके से फिर से डाउनलोड किया जा सकता है
दूसरी PyPI campaign में, PyPI maintainers को RedHat campaign की पहली malicious dropper wave दिखने के बाद, इसे बदलकर compressed WHL files और auto-executed
setup.pthfiles के ज़रिए dropper डाउनलोड कराया गयाजब तक इन ecosystems के package managers को शुरू से
chroot, sandbox, network·domain logs, और per-entry allowlists को ध्यान में रखकर दोबारा नहीं लिखा जाता, तब तक supply-chain attacks के ज़रिए malware distribution की strategy व्यावहारिक बनी रहेगीmitigation tools का repository [1] है, और technical details blog post [2] में हैं
Composer,Rubygems,NPM,PyPI,Go— सब प्रभावित हैं; यह सभी package managers में फैली समस्या हैpackage managers में कितनी लापरवाही और external trust जोड़ा हुआ है, इस पर ज़्यादा खुलकर चर्चा होनी चाहिए, और यह सच में बदलना चाहिए
[1] https://github.com/cookiengineer/antimiasma
[2] https://cookie.engineer/weblog/articles/malware-insights-mia...
जब AUR से सीधे install किए जा सकने वाले pacman wrappers आने लगे थे, तब यह मुझे सच में असुविधाजनक लगा था
मैंने AUR से कुछ install किया है, लेकिन ज़्यादातर मामलों में मैं बीच के कदम छोड़कर सीधे project website पर जाना पसंद करता हूँ
पहले से तैयार
PKGBUILDइतने सुविधाजनक नहीं लगते कि typosquatting याnpm·pipdependency abuse के जोखिम को सही ठहराया जा सकेyayजैसे wrappers हर update पर PKGBUILD diff दिखाते हैंपहली install के समय URL जाँचा जाता है और देखा जाता है कि install scripts वगैरह ठीक लग रही हैं या नहीं, और उसके बाद updates में ज़्यादातर सिर्फ version number और checksum बदलते हैं
typosquatting attack काफ़ी साफ़ नज़र आएगा
पहली install थोड़ी vulnerable ज़रूर है, लेकिन project website पर जाकर download बटन दबाने का तरीका भी ऐसा ही है
ज़िंदगी के कई और पहलुओं में भी यही बात लागू होती है
Void Linuxइस्तेमाल करने के बाद मैंने Arch पर भी ऐसी ही separation के लिएaurutilsअपना लियाइससे सीधे build करके local AUR repository को आसानी से maintain किया जा सकता है, और
pacmanसे install·manage करने पर पूरा upgrade process बेहतर हो जाता हैमैंने Linux पर इसलिए switch नहीं किया था कि Windows users की तरह website पर जाकर “download” दबाऊँ और programs update करने में समय बर्बाद करूँ
फिर भी, जिन
pacmanwrappers का ज़िक्र हुआ है वे जोखिमभरे लगते हैंइन repositories का इस्तेमाल करने वाली tutorials इतनी व्यापक हैं कि कभी-कभी ऐसा लगता है जैसे मैं ही अजीब हूँ, क्योंकि मैं किसी अनजान व्यक्ति को, लगभग बिना किसी peer review के, अनिश्चित समय के लिए root access नहीं देना चाहता
और यह सब सिर्फ किसी ऐसे package का एक version install करने के लिए, जिसे शायद update की ज़रूरत ही न पड़े या बहुत कम पड़े
जल्दी से पढ़ने पर लगा कि npm से
atomic-lockfile,js-digest,lockfile-jsइंस्टॉल किए गए थेप्रभावित packages की सूची [1] में है
सिस्टम चेक करने का तरीका मुझे तुरंत नहीं मिला, इसलिए external packages और तारीख से जुड़ी जानकारी देखने के लिए मैंने
pacman -Qmiचलायाoutput को प्रभावित packages की सूची से मिलान कर सकते हैं
इसके अलावा कई locations में इस तरह files खोजी जा सकती हैं
grep -rl "atomic-lockfile" / --include="package.json" --include="package-lock.json"grep -rl "atomic-lockfile" ~/.npm 2>/dev/nullgrep -i "atomic-lockfile" /var/log/pacman.log 2>/dev/nullपता नहीं run होने के बाद package खुद को delete करता है या नहीं
बाकी जानकारी बहुत मददगार नहीं लगी, इसलिए सोचा कम-से-कम basic commands ही share कर दूँ
[1] https://md.archlinux.org/s/SxbqukK6IA
yayसे AUR से आए installed packages की सूची ली:yay -Qam > packages_aur.lasthttps://md.archlinux.org/s/SxbqukK6IA# से सूची ली:
curl https://md.archlinux.org/s/SxbqukK6IA/download > compromised.txtफिर
grep -wFf compromised.txt packages_aur.lastचलाने पर वे packages मिल जाने चाहिए जो दोनों files में हैं, यानी ऐसे packages जो किसी समय compromised थेatomic-lockfileदेखना काफी नहीं हैjs-digestऔरlockfile-jsभी इस्तेमाल हुए थे, और किसी समय npm की जगह bun पर switch किया गया थाक्या legendary platform है
emacs-magitकैसे प्रभावित हुआ, यह समझ नहीं आ रहाजहाँ तक मुझे पता है, उसमें JavaScript बिल्कुल नहीं है
यह हमेशा की तरह एक उचित याद दिलाना है कि बिना review किए मनमाने third-party packages, libraries, applications इंस्टॉल नहीं करने चाहिए
अच्छी बात है कि यह मामला AUR तक सीमित था, और AUR दरअसल ऐसा package repository है जहाँ लगभग कोई भी upload कर सकता है; official repositories के विपरीत, install करने से पहले review ज़रूरी है, इस बारे में कई बार चेतावनी दी गई है
ruaजैसे command-line tools AUR से install करने से पहले packages का review करना आसान बनाते हैंअगर आप उसी computer पर banking भी करते हैं, तो जिस software पर निर्भर हैं उसका review न करने का कोई बहाना नहीं है
package count कम रखें और सिर्फ ज़रूरी चीज़ें इस्तेमाल करें, तो upgrade के समय भी चीज़ें बहुत सरल रहती हैं
क्या install करने से पहले code की हर एक line पढ़नी होगी
और अगर binary package हो तो क्या करें
क्या जो कुछ भी install करें, उसके लिए reproducible build बनाना होगा, या फिर source-based distribution पर चले जाएँ
यह ज़िम्मेदारी user पर डालना कोई sustainable solution नहीं है
common sense की गुंजाइश है, लेकिन इसके लिए user को blame करना ठीक नहीं है
दुनिया में code की मात्रा इतनी ज़्यादा है कि एक इंसान पूरी ज़िंदगी में जितना पढ़ सकता है उससे कहीं अधिक है
संभव है आपने अपने computer पर अभी चल रहे source code का 1% भी न पढ़ा हो
तो क्या आपने computer इस्तेमाल करना छोड़ दिया
फिर उसके भीतर हो रही चीज़ों पर भरोसा कैसे करेंगे
Arch Linux developers शानदार काम करते हैं और मैं व्यक्तिगत रूप से आभारी हूँ, लेकिन आजकल supply-chain attacks जिस तरह बढ़ रहे हैं, उसमें सिर्फ user warnings से काम चलने की सीमा बहुत पहले आ चुकी लगती है
आसान समाधान दिखाई नहीं देता, लेकिन publish से पहले peer review या waiting period जैसे controls कुछ हद तक समस्या कम कर सकते हैं
यह बेतुका है कि package को orphan mark करके 2 हफ्ते इंतज़ार किया जाए, और अगर मूल maintainer छुट्टी पर होने के कारण जवाब न दे पाए, तो हमलावर maintainer बनकर malicious update जारी कर सके
immutable distributions, Wayland, Flatpak में इसके कुछ हिस्से हैं, लेकिन महत्वपूर्ण खामियाँ अब भी बाकी हैं
सबसे बड़ी समस्या यह है कि sandboxing package format से बँधी हुई है, और मुझे लगता है यह गलती है
sandboxing और access permissions system-level features होने चाहिए, ताकि arbitrary binaries भी आसानी से बचकर न निकल सकें
इससे समस्या पूरी तरह हल नहीं होगी, लेकिन नुकसान का दायरा काफ़ी कम हो सकता है और distro users को कम आकर्षक target बनाया जा सकता है
जो लोग चिंतित हैं, उनके लिए मुझे एक repository मिली है जो updated scripts और package lists इकट्ठा करती है ताकि infection check करने में मदद मिल सके: https://github.com/lenucksi/aur-malware-check
किसी भी तरीके से शायद काम चल जाएगा
मैं Arch Linux यूज़र नहीं हूँ, लेकिन NodeJS का काफ़ी इस्तेमाल करता हूँ, और वहाँ भी ऐसे ही हमले अक्सर देखने को मिलते हैं
आजकल जिज्ञासा होती है कि package management ठीक से और सुरक्षित तरीके से आखिर कहाँ किया जाता है
इस बार जैसा इतना बड़ा पैमाना नहीं था, लेकिन शुरुआत से ही यह साफ़ था कि यह सुरक्षित नहीं है, और जगह-जगह जोखिम की चेतावनियाँ लगी हुई थीं
सब जगह packages की समीक्षा करने और ज़िम्मेदारी लेने वाले maintainers होते हैं
Arch Linux में भी यही बात लागू होती है
AUR की मूलभूत अविश्वसनीयता Arch Wiki और उसके आसपास की संस्कृति में हमेशा साफ़ तौर पर बताई गई है, और यह npm या pip जैसे programming language package managers से अलग है
अगर AUR का इस्तेमाल करें, तो हर चीज़ जाँचनी चाहिए
ज़्यादातर distributions भी ठीक हैं, और बड़े distributions का रिकॉर्ड काफ़ी अच्छा रहा है
शायद इसकी वजह हद से ज़्यादा DRY culture हो, या कोई और कारण
मैंने जो इस्तेमाल किए हैं, उनमें dependency tree के ऐसे दुःस्वप्न जैसा कुछ नहीं देखा
AUR में 15,000 orphan packages हैं
आज सुबह मैंने इन्हें लोकप्रियता के हिसाब से sort किया और उनमें से लगभग अपडेट न होने वाले 3 packages adopt करके build किए
अगर आप orphan packages इस्तेमाल कर रहे हैं, तो बुरे लोग उन्हें ले लें उससे पहले खुद adopt करने पर विचार किया जा सकता है
मैं गलत भी हो सकता हूँ, लेकिन यह स्थिति desktop Linux adoption बढ़ने का संकेत लगती है
मुझे कभी AUR की ज़रूरत नहीं पड़ी
अगर official repository में न होने वाला कोई package चाहिए होता है, तो मैं उसे खुद build करता हूँ, या binary release हो तो उसे डाउनलोड कर लेता हूँ
ऐसा करने से build के समय root की ज़रूरत नहीं पड़ती, और program को single-user के लिए local install किया जा सकता है, इसलिए ज़्यादातर desktop use cases के लिए यह तरीका उल्टा ज़्यादा उपयुक्त है
कम-से-कम developer → user path की तुलना में developer → maintainer → user के रूप में malicious code injection की एक अतिरिक्त संभावना कम हो जाती है
makepkgroot के रूप में चलाने पर सक्रिय रूप से मना करता हैजब तक आप जानबूझकर
env EUID=123 makepkg ...जैसी किसी तरकीब से इसे bypass न करें, यह root पर नहीं चलताहालांकि, अच्छा होगा अगर pacman user-level installation को support करे
फिलहाल यह root न होने पर installation से मना करता है, और workaround के तौर पर user namespace में खुद को root पर map किया जा सकता है
मैं समझता हूँ कि इस बार मामला AUR का था
AUR हो या न हो, package install करते समय आप कौन-कौन से steps लेते हैं, और जिस package व dependencies को install करने जा रहे हैं वे malware नहीं हैं, यह कैसे सुनिश्चित करते हैं, अगर लोग यह साझा करें तो अच्छा होगा
कोई खराब package install हो जाने के बाद सच में उसे वापस पलटना बहुत मुश्किल लगता है