LiteLLM 1.107.0 ছিল ক্ষতিকর: কীভাবে যাচাই করবেন, পরিষ্কার করবেন ও সিক্রেট বদলাবেন

২১ অক্টোবর হ্যাক হওয়া রিলিজ পাইপলাইন প্রায় দুই ঘণ্টা PyPI ও Docker-এ ক্রেডেনশিয়াল-চোর LiteLLM 1.107.0 ছড়ায়। ম্যালওয়্যার কী করে, আপনি ক্ষতিগ্রস্ত কি না, আর কোন ক্রমে পরিষ্কার ও রোটেট করবেন।

অন্ধকার স্ক্রিনে জ্বলজ্বলে রঙিন প্রোগ্রাম কোড

২১ অক্টোবর ২০২৬ আক্রমণকারীরা ডেভেলপারদের চুরি করা ক্রেডেনশিয়াল ব্যবহার করে LiteLLM-এর নিজস্ব রিলিজ পাইপলাইন দিয়ে PyPI ও প্রকল্পের Docker ইমেজে ক্ষতিকর litellm 1.107.0 প্রকাশ করে। প্যাকেজটি প্রায় দুই ঘণ্টা লাইভ ছিল। কোনো মেশিন বা কন্টেইনার এটি ইনস্টল করে থাকলে সেটিকে আপসকৃত ধরে নিন।

লেখাটি LiteLLM-এর ঘটনা-প্রতিবেদন ও Datadog Security Labs-এর বিশ্লেষণ অনুসরণ করেছে, সঙ্গে The Hacker News ও Help Net Security-র খবর। LiteLLM বলছে কিছু তথ্য এখনও নিশ্চিত করা হচ্ছে, তাই তাদের পেজে আপডেট দেখুন।

কী ঘটেছিল

  • কীভাবে: আক্রমণকারী তিন প্রকৌশলীর চুরি করা GitHub CLI ক্রেডেনশিয়াল দিয়ে LiteLLM-এর প্রাইভেট রিলিজ ওয়ার্কফ্লো একটি নকল রিপোজিটরি Berri-AI/litellm (আসলটি BerriAI/litellm) বিরুদ্ধে চালায়। অফিসিয়াল সোর্স ট্যাগে ম্যালওয়্যার নেই; ক্ষতিকর বিল্ড এসেছে নকল রিপোজিটরি থেকে।
  • কখন (UTC, ২১ অক্টোবর): প্রায় ১১:৪০-এ PyPI-তে wheel আপলোড; প্রায় ১১:৪৭-এ Docker ইমেজ প্রকাশ; প্রায় ১৩:২০-এ PyPI রিলিজ সরায়; প্রায় ১৪:২০-এর মধ্যে ক্ষতিগ্রস্ত Docker ট্যাগ পরিষ্কার।
  • কোথায়: PyPI-র litellm==1.107.0 এবং Docker ট্যাগ v1.107.0, latest, main-latest, main-stable (GitHub-এর রেজিস্ট্রিতেও)।
  • নিরাপদ ভার্সন: LiteLLM বলছে আগের সব ভার্সন নিরাপদ। Datadog litellm==1.106.2 পিন করতে বলছে।
  • এখনও অজানা: ক্রেডেনশিয়াল প্রথমে কীভাবে চুরি হলো। LiteLLM সম্প্রতি প্যাচ করা একটি ত্রুটির সন্দেহ করছে, নিশ্চিত করেনি। তারা এও বলছে ২০২৬ সালের মার্চের আগের ঘটনার সঙ্গে যোগসূত্র প্রমাণিত হয়নি।

ম্যালওয়্যার কী করে

site-packages-এ তিনটি ফাইল বসে: cook.pth, cook.py ও sitecustomize.py। Python প্রতিবার চালু হওয়ার সময় .pth ফাইল ও sitecustomize.py চালায়, তাই কোড চলে litellm কখনো import না করলেও।

  • ক্রেডেনশিয়াল-চোর: ক্লাউড key (AWS, GCP, Azure, Kubernetes, Docker, Vault, Terraform), SSH/GPG key, Git, npm ও PyPI টোকেন, .env ফাইল, শেল হিস্ট্রি, AI প্রোভাইডার key ও ব্রাউজারের পাসওয়ার্ড সংগ্রহ করে। এনক্রিপ্ট করে দূরের সার্ভারে পাঠায়। ডেটাবেসসহ LiteLLM প্রক্সিতে সেখানে রাখা প্রোভাইডার key-ও পড়ে।
  • ব্যাকডোর: প্রতি ঘণ্টায় GitHub-এ রাখা একটি ফাইল থেকে ঠিকানা নিয়ে সেখান থেকে Python কোড এনে চালায়। Datadog বলছে ফাইলে শুধু পরীক্ষামূলক মান ছিল, তাই দ্বিতীয় ধাপের পেলোড দেখা যায়নি।

litellm প্যাকেজ সরালে এই ফাইলগুলো সরে না, আর ওই এনভায়রনমেন্টে pip বা python চালালে সেগুলো আবার চলে।

আপনি ক্ষতিগ্রস্ত কি না যাচাই

  1. প্রতিটি হোস্ট, virtualenv, CI runner ও কন্টেইনারে litellm 1.107.0 খুঁজুন (pip show litellm, lock ফাইল, ইমেজ হিস্ট্রি)।
  2. site-packages-এ cook.pth, cook.py বা sitecustomize.py এবং /tmp/remote_code_loader.lock খুঁজুন।
  3. ২১ অক্টোবর প্রায় ১১:৪৭ থেকে ১৪:২০ UTC-র মধ্যে latest পুল করে থাকলে Docker ইমেজ LiteLLM-এর প্রকাশিত ডাইজেস্টের (sha256:1bbcb144…c339e) সঙ্গে মেলান।
  4. LiteLLM সতর্ক করছে, মার্কার ফাইল না পাওয়া কিছুই প্রমাণ করে না। ইন্টারনেট-সংযুক্ত মেশিনে 1.107.0 কখনো চললে ধরে নিন সিক্রেট চুরি হয়েছে।

এই ক্রমে পরিষ্কার করুন

  1. pip install দিয়ে শুরু করবেন না। আক্রান্ত এনভায়রনমেন্টে Python চালু হলেই ম্যালওয়্যার আবার চলে।
  2. ব্যাকগ্রাউন্ড Python প্রসেস বন্ধ করুন, তিনটি ফাইল ও __pycache__-এর কপি মুছুন, litellm-1.107.0.dist-info ফোল্ডার সরান।
  3. আরও ভালো: litellm==1.106.2 পিন করে virtualenv বা ইমেজ নতুন করে বানান।
  4. পরিষ্কার মেশিন থেকে সিক্রেট রোটেট করুন (নিচে)।

যা রোটেট করবেন

  • যে মেশিনে চলেছে তার ক্লাউড রোল ও অ্যাক্সেস key, তারপর CloudTrail (বা আপনার ক্লাউডের audit log) দেখুন নেটওয়ার্কের বাইরে থেকে ব্যবহার হয়েছে কি না।
  • প্রক্সিতে রাখা সব LLM প্রোভাইডার key, LiteLLM master ও virtual key এবং ডেটাবেস পাসওয়ার্ড।
  • GitHub, npm, PyPI ও Docker টোকেন, SSH key, এবং .env ফাইল বা প্রসেস এনভায়রনমেন্টের সবকিছু।

যে সার্ভিস সিক্রেট দিয়েছে সেখানে বদলান এবং পুরোনোটা বাতিল করুন। রোটেশনের আরও বিস্তারিত ক্রম আমাদের Railway সিক্রেট গাইডে।

নিজের পাইপলাইনের জন্য শিক্ষা

  • ডিপেন্ডেন্সি পিন ও হ্যাশ করুন, নতুন ভার্সন আসামাত্র নিজে থেকে আপডেট নেবেন না।
  • নতুন রিলিজ নেওয়ার আগে কয়েক দিনের বিরতি রাখুন, যাতে কমিউনিটি ক্ষতিকরগুলো ধরে ফেলতে পারে।
  • ডেভেলপারের CLI টোকেনকে মূল্যবান সিক্রেট ধরুন এবং রিলিজ ওয়ার্কফ্লো অনুমোদিত রিপোজিটরি ও ব্রাঞ্চে সীমিত রাখুন।

আপডেট লগ

  • ২৫ অক্টোবর ২০২৬: LiteLLM-এর প্রতিবেদন, Datadog ও খবরের কভারেজ থেকে প্রথম প্রকাশ। একটি খবরের সংকলনে উল্লেখ করা CERT-In অ্যাডভাইজরি নম্বর CERT-In-এর নিজস্ব সাইটে যাচাই করা যায়নি, তাই আমরা তার ওপর নির্ভর করিনি।

কভার ছবি: Slashme, CC0, Wikimedia Commons-এর মাধ্যমে।

আরও পড়ুন

Security header checklist: HSTS, CSP, frame সুরক্ষা ও আরও

কয়েকটি response header পুরো এক শ্রেণির আক্রমণ বন্ধ করে। সেট করার সংক্ষিপ্ত তালিকা, প্রতিটির কাজ ও পরীক্ষার উপায় দেখুন।

ওয়েব সিকিউরিটি•২ মিনিটে পড়া

XXE: XML external entity আক্রমণ ও বন্ধ করার উপায়

XML-এর একটি feature ডকুমেন্টকে বাইরের কনটেন্ট টেনে আনতে দেয়। আপনার parser অনুমতি দিলে আক্রমণকারী এটি ব্যবহার করতে পারে। সমাধান একটি parser সেটিং।

ওয়েব সিকিউরিটি•২ মিনিটে পড়া