কাঁটাচামচ বোমা বিশ্বব্যাপী aliasing এর কার্যকরকরণ আটকাতে পারে?


15

আপনি যদি বিশ্বব্যাপী সেট আপ ছিল

alias ':(){ :|:& };:'='echo fork bomb averted'

বাশ কাঁটাচামচ বোমা কার্যকর হওয়া এড়াতে কার্যকর নিরাপত্তা কৌশল হবে নাকি এটি কার্যকর করার কোনও উপায় থাকবে?

আমি মনে করি যে প্রশ্নটি এখানে ছড়িয়ে পড়ে: কোনও আদেশের সাথে অন্যরকম কিছু করার পরে কমান্ড কার্যকর করার কোনও উপায় আছে কি?


1
@ ব্যবহারকারী 1717828, একটি "কাঁটাচামচ বোমা" এমন একটি প্রোগ্রাম যা কেবল নিজের অনুলিপি চিরকালের জন্য চালায়। চলমান প্রোগ্রামগুলির সংখ্যার ফলস্বরূপ ক্ষতিকারক বৃদ্ধি সাধারণত সংক্ষিপ্ত ক্রমে কিছু ভেঙে দেয়।
চিহ্নিত করুন

1
এমনকি যদি এটি কাজ করে - এটি এমন কোনও প্রোগ্রামের হাত থেকে রক্ষা করবে না যাতে কাঁটাচামচ কল করে () বাশ দিয়ে যাচ্ছে না?
ইউকেমনকি

2
: () {: |: &: |: &} ;:
জোশুয়া

3
a(){ a|a& };a
সবেমাত্র

1
আপনি সাধারণ ফর্মটি এড়াতে চাইবেন (যদি আপনি এটি একেবারেই কাজ করতে চান) তবে এটিতে প্রায় অসীম পরিমাণে বৈচিত্র্য পাওয়া সম্ভব।
মাস্ট

উত্তর:


52

দুই , না, তিন ... প্রধান অবমুক্ত মধ্যে যে আছে:

  1. এটি কোনও উপাধির জন্য বৈধ নাম নয়। বাশের অনলাইন ম্যানুয়াল :

    অক্ষর ... এবং উপরের তালিকাভুক্ত শেল মেটাচার্যাক্টর বা উদ্ধৃত অক্ষরগুলির কোনও একটি উপনামের নামটিতে উপস্থিত নাও হতে পারে।

    (, ), &, |এবং হোয়াইটস্পেস ব্যাশ 4.4 বাইরে।

  2. সেই নির্দিষ্ট স্ট্রিংটি শেলের মধ্যে কাঁটাচামচ বোমা লেখার একমাত্র উপায় নয়, এটি বিখ্যাত কারণ এটি অস্পষ্ট দেখাচ্ছে। উদাহরণস্বরূপ, :প্রকৃতপক্ষে অক্ষর দ্বারা রচিত কিছুের পরিবর্তে ফাংশনটি কল করার দরকার নেই ।

  3. আপনি যদি উপনামটি সেট করতে পারতেন, ব্যবহারকারীর নামটি আনসেট করতে পারে, কমান্ড লাইনে উপনামটির নামটি ছড়িয়ে দিয়ে বা এরিয়াসগুলি সম্পূর্ণরূপে অক্ষম করতে পারে, সম্ভবত কোনও স্ক্রিপ্টে ফাংশন চালিয়ে (বাশ নন-ইন্টারেক্টিভ শেলগুলিতে এলিয়াস প্রসারিত করে না) ।

  4. এমনকি কাঁটাচামচ বোমাগুলির সমস্ত সংস্করণ বন্ধ করার জন্য শেলটি যথেষ্ট পরিমাণে সীমাবদ্ধ থাকলেও, একটি সাধারণ উদ্দেশ্য সিস্টেমে অন্যান্য প্রোগ্রামেবল ইউটিলিটি থাকতে পারে যা সাবসেসগুলি পুনরাবৃত্তি করতে এবং কাঁটাচামচ করতে পারে। পার্ল বা একটি সি সংকলক পেয়েছেন? যথেষ্ট সহজ এমনকি awk সম্ভবত এটি করতে পারে। এমনকি যদি আপনার এটি ইনস্টল না থাকে তবে আপনাকে ব্যবহারকারীকে সিস্টেমের বাইরের থেকে সংকলিত বাইনারি আনতে বা চালানো বন্ধ /bin/shকরতে হবে যা সম্ভবত সিস্টেমটির বাকী কাজ করার জন্য পুরোপুরি কার্যকর শেল হওয়া দরকার।

কোনও ব্যবহারকারী শুরু করতে পারে এমন সংখ্যার প্রক্রিয়া সীমাবদ্ধ করতে কেবল ulimit -u(অর্থাত্ RLIMIT_NPROC) বা সমমান ব্যবহার করুন । বেশিরভাগ লিনাক্স সিস্টেমে pam_limitsব্যবহারকারীরা যে কোনও কমান্ড শুরু করার আগে প্রক্রিয়া গণনা সীমা নির্ধারণ করতে পারে।

এ জাতীয় কিছুতে /etc/security/limits.confসমস্ত ব্যবহারকারীর জন্য 50 টি প্রক্রিয়ার কঠোর সীমাবদ্ধ করা হবে:

*        hard    nproc           50

(স্টিফেন কিট ইতিমধ্যে পয়েন্ট 1 উল্লেখ করেছেন , জেফ শ্যাচলার 2 এবং 3 উল্লেখ করেছেন )


এটি ছাড়া &কি কাঁটাচামচ লেখা সম্ভব ?
স্টিফেন কিট

4
@ স্টেফেনকিট আমি ১০০% নিশ্চিত নই তবে আমার অনুমান যে বাশ সম্পূর্ণরূপে টুরি হচ্ছে। যদি তাই হয় তবে অসীম সম্ভাবনা রয়েছে। উদাহরণস্বরূপ আপনি ascii চার-কোড 38 টি পার্স করতে পারেন এবং এটি সম্পাদন করতে পারেন।
মেরি

@ মেরি এই নির্দিষ্ট প্রসঙ্গে আপনি সীমাবদ্ধতার আশপাশে কাজ করার সময় অন্য কোনও নিষিদ্ধ চরিত্রকে এড়িয়ে চলতেও চাইবেন &
স্টিফেন কিট

15
আমার বক্তব্যটি মূলত: খারাপ কার্যকারিতা কালো তালিকাভুক্ত করার চেষ্টা করা একটি খারাপ ধারণা। প্রায় সবসময় উপায় আছে।
মেরি


18

না। কাঁটাচামচ লেখার অনেকগুলি উপায় রয়েছে।

অশুভ কাঁটাচামচ লেখক কেবল অন্য একটি ফাংশন নাম দিয়ে আবার চেষ্টা করবেন। বা তার কাঁটাচামচ সফল না হওয়া পর্যন্ত অন্যান্য পরিবর্তনগুলি।

অজান্তে কাঁটাচামচ বোমা লেখক প্রথমে ক্যানোনিকাল কাঁটাচামচ তৈরি করবে না।

নিজেই অজান্তে কাঁটাচামচ লেখক হয়ে উঠা বরং এটি সহজ easy উদাহরণস্বরূপ, আপনি কেবল বিকল্প এবং অ-বিদ্যমান সাব-ডাইরেক্টরিগুলির সাথে একত্রিত করে makeএকটি বহিরাগত, চেক করা ছাড়াই পুনরাবৃত্ত ব্যবহার করতে পারেন - cdএটির -jএকটি উদাহরণ যা আমি একবার হোঁচট খেয়েছি।

আপনি সমস্ত সম্ভাবনার বিরুদ্ধে রক্ষা করতে পারবেন না, এবং অবশ্যই দৃ .়সংকল্পবদ্ধ আক্রমণকারীর বিরুদ্ধে নয়। আপনি যা অর্জন করবেন তা হ'ল আপনার সিস্টেমের জটিলতা বাড়ানো।


14

আপনি কাঁটাচামচ বোতামের নাম রাখতে পারবেন না, কারণ এটি কোনও বৈধ নাম নেই :

$ alias ':(){ :|:& };:'='echo fork bomb averted'
bash: alias: `:(){ :|:& };:': invalid alias name

'/', '$', '`', '=' অক্ষর এবং উপরের তালিকাভুক্ত শেল মেটাচার্যাক্টর বা উদ্ধৃত অক্ষরগুলির কোনও একটি নামের নাম উপস্থিত নাও হতে পারে।

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


কোনও শেল এই উপন্যাসটি স্থাপনের অনুমতি দেয় কিনা তা বিবেচনা করে না। গুরুত্বপূর্ণটি হ'ল এমনকি যদি এইরকম একটি উপাধি উপস্থিত থাকে তবে কমান্ড ব্যাখ্যা করার সময় এটির প্রসারিত হয় না কারণ উলের নাম অনুমোদিত প্যাটার্নের সাথে মেলে না। dashএবং boshযেমন উভয় চুপচাপ এটিকে উপেক্ষা করুন।
স্পষ্টভাবে

10

দু'বার, না।

কাঁটাচামচ লেখার একমাত্র উপায় এটি নয়।

"একটি কমান্ড" চালানোর বিভিন্ন উপায় আছে যখন একটি উলাম নেই যখন:

command the-command
\the-command

উদাহরণ:

$ alias ls=not-really-ls
$ ls
-bash: not-really-ls: command not found
$ \ls
jeff.html  output.png
$ command ls
jeff.html  output.png

প্রধান বিষয়ের সাথে সম্পর্কিত নয় কিন্তু কেন হয়নি \lsদেন output.pngকিন্তু command lsনা?
এনএক্সনেভ

ভাল বিক্ষোভ! এটি প্রকৃতপক্ষে মূল বিষয়ের সাথে সম্পর্কিত নয়। এটি একটি ক্লাসিক পেব্যাকাক ত্রুটি যেখানে আমি অনুলিপি / ভুল-আটকানো (বা আউটপুটটি পরিষ্কার করি। আমি ব্যাঘাতগুলি হ্রাস করতে এটি ঠিক করব। আপনাকে ধন্যবাদ, @ এনএক্সনেভ!
জেফ স্ক্যালার হলেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.