আমি কীভাবে নিরাপদে একটি অবিশ্বস্ত টার ফাইল আনব?


30

আমি একটি টার ফাইলটি বের করতে সক্ষম হতে চাই, যেমন সমস্ত নিষ্কাশন করা ফাইলগুলি একটি নির্দিষ্ট উপসর্গের ডিরেক্টরিতে থাকে। বাইরের ডিরেক্টরিতে লেখার জন্য টার ফাইলগুলির যে কোনও প্রচেষ্টা নিষ্ক্রিয়করণ ব্যর্থ হওয়া উচিত।

আপনি যেমন কল্পনা করতে পারেন, এটি এমন যাতে আমি নিরাপদে একটি অবিশ্বস্ত টার ফাইল বের করতে পারি।

জিএনইউ দিয়ে আমি কীভাবে এটি করতে পারি tar?

আমি সাথে এসেছি:

tar --exclude='/*' --exclude='*/../*' --exclude='../*' -xvf untrusted_file.tar

তবে আমি নিশ্চিত নই যে এটি যথেষ্ট প্যারানয়েড।


2
এটি যথেষ্ট অচলতা নয়। আমি অতীতে এমন কিছু বাজে টারবল নির্মাণ করেছি যা এটি তৈরির প্রতীকী লিঙ্কগুলির মাধ্যমে আরোহণ করেছিল। আমি আমার নিজের টার তৈরি করেছি যা সেটআপড-রুট ছিল যাতে এটি ক্রুট ("।") চালাতে পারে এবং সুযোগ সুবিধাগুলি ছাড়তে পারে।
জোশুয়া

8
@ জোশুয়া তাই খুব বিস্তৃত-পরীক্ষিত ইউটিলিটিটিকে আরও সুরক্ষিত করার জন্য আপনার সমাধানটি কি আপনার নিজের সংস্করণ তৈরি এবং এটিকে মূল সুযোগগুলি দেওয়া ছিল?
মনিকা মনিকা বন্ধ করুন

4
@ ওরেঞ্জডগ: ইন্ট মেইন (ইন্ট আরজিসি, চর ** আরজিভি) ro ক্রুট ("।") || প্রস্থান (1); setuid (getuid ()); নিরীক্ষণ করা সহজ।
জোশুয়া

2
আপনি -tবিকল্পটি ব্যবহার করে ট্যারি ফাইলের ভিতরে কী আছে তাও পরীক্ষা করতে চাইতে পারেন ।
থমাস

উত্তর:


40

আপনার মোটেও প্যারানোয়ার দরকার নেই। জিএনইউ tar- এবং প্রকৃতপক্ষে বিগত 30 বছর বা তার বেশি সময় ধরে উত্পাদিত যে কোনও লিখিত tarপ্রোগ্রাম - ..ডিফল্টরূপে স্ল্যাশ দিয়ে শুরু হওয়া বা উপাদানগুলিতে থাকা টার্বলগুলিতে ফাইলগুলি বের করতে অস্বীকার করবে ।

আধুনিক tarপ্রোগ্রামগুলিকে এই জাতীয় সম্ভাব্য-দূষিত টার্বলগুলি নিষ্কাশন করতে বাধ্য করার জন্য আপনার পথ ছাড়তে হবে : জিএনইউ এবং বিএসডি উভয়েরই এই সুরক্ষাটি অক্ষম করার জন্য বিকল্পের tarপ্রয়োজন -P। জিএনইউ ট্যারি ম্যানুয়ালটিতে নিখুঁত ফাইল নাম বিভাগটি দেখুন ।

দ্য -Pপতাকা POSIX দ্বারা নির্দিষ্ট করা হয় না, ¹ যদিও, তাই অন্যান্য tarপ্রোগ্রাম এই সঙ্গে মোকাবেলা বিভিন্ন উপায় থাকতে পারে। উদাহরণস্বরূপ, শিলি সরঞ্জামগুলির starপ্রোগ্রামটি এই সুরক্ষাগুলি ব্যবহার করে -/এবং -..অক্ষম করে।

আপনি কেবল নির্লজ্জ tarকমান্ডে যুক্ত হওয়ার বিষয়টি বিবেচনা করতে পারেন তা হ'ল একটি -Cপতাকা এটি নিরাপদ অস্থায়ী ডিরেক্টরিতে জিনিসগুলি নিষ্কাশন করতে বাধ্য করার জন্য, তাই আপনাকে cdপ্রথমে সেখানে যেতে হবে না ।


পাশে :

  1. টেকনিক্যালি, tar পসিক্সের দ্বারা মোটেও নির্দিষ্ট করা হয়নি। তারা যে আমরা ব্যবহার করা উচিত ইউনিক্স কম্পিউটিং বিশ্বকে জানানোর জন্য চেষ্টা paxএখন পরিবর্তে tarএবং cpioকিন্তু কম্প্যুটার জগতে মূলত তাদের উপেক্ষা করা।

    এখানে উল্লেখ করার জন্য এটি প্রাসঙ্গিক যে এর জন্য পসিক্স স্পেসিফিকেশন paxএটি শীর্ষস্থানীয় স্ল্যাশ বা এম্বেড থাকা ..উপাদানগুলিকে কীভাবে পরিচালনা করতে হবে তা বলে না । বিএসডি-র--insecure জন্য একটি মানহীন পতাকা রয়েছেpaxএম্বেডড ..পাথ উপাদানগুলির বিরুদ্ধে সুরক্ষা দমন করতে রয়েছে, তবে শীর্ষস্থানীয় স্ল্যাশগুলির বিরুদ্ধে দৃশ্যত কোনও ডিফল্ট সুরক্ষা নেই; বিএসডি paxম্যান পেজ পরোক্ষভাবে -sপরম পথের ঝুঁকি মোকাবেলায় বিকল্পধারার বিধিগুলি লেখার সুপারিশ করে ।

    ডি-জুর স্ট্যান্ডার্ডটি বেশিরভাগ ক্ষেত্রে উপেক্ষা করা হয় যখন কোনও ডি-ফ্যাক্টো স্ট্যান্ডার্ড সক্রিয় ব্যবহারে থেকে যায় তখন এটি ঘটে যায় the


7
pax - portable archive interchangeAwww, কত সুন্দর, পসিক্স ভাবছেন এটি সম্ভবত বহুল ব্যবহৃত আর্কাইভ ফর্ম্যাটটি প্রতিস্থাপন করবে: পি
বিড়াল

1
@ ক্যাট ডিফল্ট সংরক্ষণাগার ফর্ম্যাটটি যুক্তিসঙ্গতভাবে বহুল সমর্থিত টার ভেরিয়েন্ট (এআইআইআইআই এটি সিপিও ফর্ম্যাটকে সমর্থন করারও কথা রয়েছে)। প্যাক্স বরং এই জাতীয় সংরক্ষণাগারগুলির সাথে কাজ করার জন্য কমান্ড ইন্টারফেসটি প্রতিস্থাপনের একটি প্রচেষ্টা , যেহেতু টারের কমান্ড আর্গুমেন্ট হ্যান্ডলিং ... উদ্দীপক।
র্যান্ডম 832

এলোমেলো দিকের নোট: আমি নিশ্চিত "ডি জুরে" এর বিপরীতে এটি "ডি ট্র্যাভ", অর্থাত ফরাসি শব্দ।
মনিকার লসুইট

7
পছন্দ করুন ডি জুরে লাতিন এবং বর্তমান পরিস্থিতির সাথে বিপরীত, অর্থাৎ ডি ফ্যাক্টো কী। ফরাসী ব্যাকরণ নিয়ম মেনে চলার জন্য ডি ভ্রমণও করা উচিত।
প্রধানমন্ত্রী

1
এটি একটি দুর্ভাগ্যজনক মিথ্যা জ্ঞানের ঘটনা। ফরাসি "ডু ভ্রমণ" ("দিনের" ") দেখতে অনেকটা লাতিন" দে জুর "(" আইনের ") মত মনে হচ্ছে এখানে" ডি ফ্যাক্টো "(" সত্য ") এর বিপরীতে রয়েছে। যে কেউ যুক্তি দিতে পারে যে প্যাক্স হ'ল "মাসের স্ট্যান্ডার্ড" বা "স্ট্যান্ডার্ড ডু যাত্রা" কীভাবে নতুন স্ট্যান্ডার্ডগুলি প্রায়শই প্রস্তাব করা হয় তা মজা করার জন্য, যখন ব্যবহারকারীদের বিশাল অংশটি কেবল তাদের জন্য কী কাজ করে (ডি ফ্যাক্টো স্ট্যান্ডার্ড), (রূপকভাবে) তাদের উপেক্ষা করার জন্য আগামীকাল সেখানে একটি নতুন মান থাকবে knowing
মন্টি হার্ডার

19

জিএনইউ টারের সাথে, এটি সহজভাবে

tar -xvf untrusted_file.tar

একটি খালি ডিরেক্টরিতে। /অপসারণের সময় জিএনইউ টার স্বয়ংক্রিয়ভাবে শীর্ষস্থানীয় সদস্যের নামগুলি কেটে ফেলবে, যদি না অন্যথায় --absolute-namesবিকল্পের সাথে স্পষ্টভাবে না বলা হয় । গনুহ আলকাতরা এছাড়াও সনাক্ত করে যখন ব্যবহার ../একটি ফাইল toplevel ডিরেক্টরি ও toplevel ডিরেক্টরির পরিবর্তে, যেমন একটি উপাদান রাখে ঐ ফাইল বের করা বাইরে কারণ হবে foo/../../bar/quxযেমন নিষ্কাশিত করা হবে bar/quxtoplevel ডিরেক্টরির মধ্যে বদলে bar/quxtoplevel সংকলনের অভিভাবক মধ্যে । গনুহ আলকাতরা এছাড়াও toplevel ডিরেক্টরির যেমন বাহিরে প্রতি নির্দেশ সিম্বলিক লিংক যত্ন নেয় foo -> ../..এবং foo/barকারণ হবে না bartoplevel ডিরেক্টরির বাহিরে নিষ্কাশিত হতে পারে।

নোট করুন যে এটি কেবলমাত্র জিএনইউ টারের (পর্যাপ্ত সাম্প্রতিক সংস্করণগুলির) জন্য প্রযোজ্য (পাশাপাশি কিছু অন্যান্য বাস্তবায়ন, যেমন * বিএসডি টার এবং ব্যাসিবক্স টার)। অন্য কয়েকটি বাস্তবায়নের তেমন কোনও সুরক্ষা নেই।

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

মনে রাখবেন যে আপনি যদি ইতিমধ্যে প্রতীকী লিঙ্কগুলি অন্তর্ভুক্ত কোনও ডিরেক্টরিতে সন্ধান করছেন তবে গ্যারান্টিটি আর থাকতে পারে না।


6

কয়েকটি পয়েন্টটি coverাকতে অন্য উত্তরগুলির কাছে নেই:

  1. প্রথমে ফাইলটি কী কী তা বের করার আগে দেখুন:

    tar -tvf untrusted_tar_file.tar
    

    যদি সেখানে কিছু থাকে তবে আপনি বিশ্বাস করেন না বা উত্তোলন করতে চান না, টারবালটি বের করবেন না।

  2. দ্বিতীয়ত, টারবালটিকে একটি অ-রুট ব্যবহারকারী হিসাবে নিষ্কাশন করুন যার মধ্যে কেবল টারবালটি আপনি যে ডিরেক্টরিতে বের করছেন সেটিতে কেবল লেখার অ্যাক্সেস রয়েছে। উদাহরণস্বরূপ, নন-রুট ব্যবহারকারীর হোম ডিরেক্টরি থেকে টারবালটি বের করুন।

4
1. এটি ব্যাচের ক্রিয়াকলাপের জন্য ব্যবহারিক নয়। ২. আপনি যদি কাস্টম সেটআপটি চালনা না করেন তবে নির্দিষ্ট অবস্থানগুলি সমস্ত ব্যবহারকারী লিখে রাখতে পারবেন, উল্লেখযোগ্যভাবে / tmp /
পাইপ

@ পাইপ একটি ডিরেক্টরি এবং একটি নতুন ব্যবহারকারী তৈরি করতে পারে এবং কেবলমাত্র সেই ব্যবহারকারীর কেবল সেই ডিরেক্টরিতে অ্যাক্সেস থাকে, তারপরে কমান্ডটি চালান। আমি আমার হোম ডিরেক্টরি বেশ পছন্দ করি, আপনাকে ধন্যবাদ।
বিড়াল

2
@ পাইপ কেন bশ্বরের ভাল পৃথিবীতে আপনি কখনও ব্যাচ অপারেশনের মাধ্যমে অবিশ্বস্ত ডেটা পাস করবেন ? আপনি এটা বিশ্বাস করতে পারি না থাকে, তাহলে আপনি না এটা সঙ্গিহীন চালানো।
অ্যান্ড্রু হেনেল

6
@ অ্যান্ড্রুহেনেল উহম, ঠিক আছে আপনি কীভাবে মনে করেন যে ইন্টারনেটের প্রতিটি সার্ভার কাজ করে? আপনি কি মনে করেন স্ট্যাকএক্সচেঞ্জের কোনও লোক স্বয়ংক্রিয়ভাবে অপারেশনটি পর্যবেক্ষণ করার সময় তাদের ডাটাবেস এবং মার্কআপ সিস্টেমের মাধ্যমে এই মন্তব্যটি চালাচ্ছেন? কারণ এই ইনপুটটি ব্যাচের ক্রিয়াকলাপের মাধ্যমে অবিশ্বস্ত ডেটা।
পাইপ

আমি কোনও হোম ডিরেক্টরিতে কোনও অবিশ্বস্ত ফাইল সরাসরি তোলার পরামর্শ দেব না। আপনি চান না যে এটি আপনাকে .bashrc এবং অন্যান্য .config / ফাইলগুলিতে ওভাররাইট করা উচিত, তাই না?
হুগাল 31
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.