Fastjson 1.2.83 ডিফল্ট AutoType=false এর অধীনেও প্রাচীন gadget ছাড়াই রিমোট কোড এক্সিকিউশন ট্রিগার করতে পারে, যা JDK 8/17/21/25 + Spring Boot Loader আইসোলেশন পরিবেশে পুনরায় প্রতিটি করা হয়েছে।লেখক, উৎস: GCSA
সারাংশ
প্রাচীন Java ডিসিরিয়ালাইজেশন ভালনারেবিলিটি প্রতিরোধ ব্যবস্থায়, শিল্পে নিম্নলিখিত জ্ঞানের অভাব প্রচলিত: “অটোটাইপ ডিফল্টভাবে বন্ধ থাকলে নিরাপদ”, “parseObject-এর দ্বিতীয় প্যারামিটার (টপ-লেভেল টার্গেট টাইপ) স্থির করলে নিরাপদ”, “স্থানীয় Classpath থেকে ডিসিরিয়ালাইজেশন Gadget নির্ভরশীলতা সম্পূর্ণ অপসারণ করলে নিরাপদ”। তবে, সর্বশেষ প্রযুক্তিগত আক্রমণ-প্রতিরোধ বিকাশ এই আশা ভিত্তিক ধারণাগুলি সম্পূর্ণভাবে ভেঙে দিয়েছে।
GCSA গ্লোবাল সাইবার সুরক্ষা অ্যালায়েন্স আজ এই টেকনিক্যাল ইনসাইট রিপোর্টটি এককভাবে প্রকাশ করেছে। রিপোর্টটি Fastjson 1.2.83-এর ডিফল্ট AutoType=false অবস্থায়ও প্রাচীন Gadget-এর ওপর নির্ভর না করে রিমোট কোড এক্সিকিউশন (RCE) ট্রিগার করার মূল কারণটি বিশ্লেষণ করে। এই এক্সপ্লয়িট টেকনিকটি এখন JDK 8 / 17 / 21 / 25 এবং Spring Boot Loader আইসোলেশন পরিবেশে এন্ড-টু-এন্ড রিপ্রোডিউস করা হয়েছে। এই ভালনাটি প্রাচীন “ব্ল্যাকলিস্ট বাইপাস করে লোকাল Gadget খোঁজা” নয়, বরং Fastjson-এর নিজস্ব Class মেটাডেটা প্রোবিং লজিককে রিমোট ম্যালিশিয়াস Class-এর প্রাপ্তি এবং অনুমতির চ্যানেলে রূপান্তরিত করে। নিচে পাঠ্যটি:
প্রকাশক: GCSA গ্লোবাল সাইবার সিকিউরিটি অ্যালায়েন্স
রিপোর্ট টাইপ: এক্সক্লুসিভ টেকনিক্যাল ইনসাইট / ভালনারেবিলিটি ডিপ অ্যানালিসিস রিপোর্ট
রিপোর্ট তারিখ: 2026-07-21
রিপোর্ট স্ট্যাটাস: সোর্স কোড অডিট এবং আইসোলেটেড এনভায়রনমেন্টে পুনরাবৃত্তি সম্পন্ন
ভাগ্য নম্বর: অভ্যন্তরীণ গবেষণা নম্বর FJ-GETRESOURCE-RCE (প্রকাশিত CVE-এর সাথে মেলে না)
Fastjson 1.2.83 ডিফল্ট AutoType=false এর অধীনেও প্রাচীন gadget ছাড়াই রিমোট কোড এক্সিকিউশন ট্রিগার করতে পারে, যা JDK 8/17/21/25 + Spring Boot Loader ইসোলেশন পরিবেশে পুনরায় প্রতিটি করা হয়েছে। অবিলম্বে SafeMode সক্রিয় করার এবং Fastjson 2.x-এ স্থানান্তরের পরামর্শ দেওয়া হচ্ছে।
1. সারসংক্ষেপ
Fastjson 1.2.83-এর ParserConfig.checkAutoType ব্যবহারকারী-নিয়ন্ত্রিত @type মানকে class রিসোর্স নামে রূপান্তরিত করে এবং বর্তমান ClassLoader-এর getResourceAsStream-এ পাঠায়:

একটি ফ্যাট-জার ক্লাসলোডার পরিবেশে যেখানে পূর্ণাঙ্গ URL সংস্থানের নাম বিশ্লেষণ করা যায়, আক্রমণকারী ডট প্রতিস্থাপন ব্যবহার করে http:, jar:http: এবং jar:file: URL তৈরি করতে পারেন এবং @JSONType সহ একটি ক্ষতিকারক ক্লাস ডাউনলোড করতে পারেন। Fastjson এই অ্যানোটেশনটি শনাক্ত করলে loadClass কল করে এবং বিপজ্জনক বেস ক্লাস চেক এবং লক্ষ্য টাইপ সামঞ্জস্যতা চেকের আগেই সরাসরি সেই ক্লাসটি ফেরত দেয়। ক্লাসটি ইনস্ট্যান্সিয়েট এবং ইনিশিয়ালাইজ হওয়ার সময় যেকোনো কোড বাস্তবায়ন করা যায়।
এই দুর্বলতা লক্ষ্য classpath-এ ইতিমধ্যে উপস্থিত পারম্পরিক ডিসিরিয়ালাইজেশন গ্যাজেটের উপর নির্ভর করে না এবং Fastjson AutoType=false-এর ডিফল্ট অবস্থায়ও ট্রিগার করা যায়। JSON.parseObject-এর লক্ষ্য টাইপ নির্দিষ্ট করলেও বাস্তবায়ন বন্ধ করা যায় না; SafeMode সক্ষম করলে সংস্থান অ্যাক্সেসের আগেই সাধারণ দুর্বলতা পথ বন্ধ করা যায়।
এই রিপোর্টটি একই JSON payload ব্যবহার করে একটি আলাদা Linux কন্টেইনারে পুনরায় তৈরি করা হয়েছে:

2. ভেদের মূল্যায়ন

CVSS 9.8 একটি সাধারণীকৃত মান হিসেবে শুধুমাত্র কম্পোনেন্ট ভার্সনের উপর ভিত্তি করে প্রদান করা উচিত নয়: সাধারণ AppClassLoader একটি নেগেটিভ কন্ট্রোল হিসেবে কাজ করে, আধুনিক JDK এর পূর্ণ চেইন দুটি পরম JAR URL বিশ্লেষণ করতে পারে এমন loader এবং /proc/self/fd-এর উপর নির্ভরশীল। এই রিপোর্টের পজিটিভ পরিবেশের সাথে মেলে এমন অ্যাপ্লিকেশনগুলিতে, দুর্বলতার প্রভাব হলো অথেনটিকেশনহীন নেটওয়ার্ক RCE।
3. প্রভাবের পরিধি এবং পূর্বশর্ত
3.1 প্রমাণিত পরিসর
- রানটাইম নিশ্চিতকরণ: Fastjson 1.2.83
- JDK নিশ্চিতকরণ: 8, 17, 21, 25
- অপারেটিং সিস্টেম নিশ্চিতকরণ: Linux; macOS এ /dev/fd ব্যবহার করে JDK 17/21/25 পুনরুৎপাদন সম্পন্ন হয়েছে
- লোডার নিশ্চিতকরণ: স্প্রিং বুট 2.7.18 ক্লাসিক লোডার + JDK 8; স্প্রিং বুট 3.2.0 লোডার + JDK 17/21/25
- API নিশ্চিতকরণ: JSON.parse এবং স্থির টপ-লেভেল টাইপের JSON.parseObject
3.2 সংস্করণ পরিসর বর্ণনা
বাহ্যিক বর্ণনায় 1.2.68–1.2.83 এর পরিবর্তে 1.2.67 এবং 1.2.68 এ ইতিমধ্যেই নির্ণায়ক ক্লাস সম্পদ খোঁজার কোড বিদ্যমান থাকায়, এটি পরিচিত পরীক্ষার পরিসর হিসাবে বেশি উপযুক্ত। এই রিপোর্টটি শুধুমাত্র 1.2.83-এর জন্য সম্পূর্ণ JDK রানটাইম ব্যাপী যাচাইকরণ সম্পন্ন করেছে।
3.3 প্রয়োজনীয় শর্তগুলি ব্যবহার করুন
1. আক্রমণকারী ফাস্টজসনে প্রবেশ করা জেসন নিয়ন্ত্রণ করতে পারে, এবং ইনপুটের @type পার্স করা হয়।
2. সেফমোড সক্রিয় নয়।
3. ফাস্টজসনের ক্লাসলোডার তৈরি করা পূর্ণাঙ্গ সম্পদের নামকে URL হিসাবে ব্যাখ্যা করতে পারে।
4. প্রভাবিত প্রক্রিয়াটি আক্রমণকারীর HTTP সেবার সাথে সংযুক্ত হতে পারে।
5. আধুনিক Linux লিঙ্কের জন্য /proc/self/fd পড়া যাবে এবং লোডারটি বিশ্লেষণ করতে পারতে হবে
jar:file:/proc/self/fd/N!...।
1. JDK সাধারণ দূরবর্তী JAR অস্থায়ী ক্যাশে তৈরি করতে সক্ষম হতে হবে; এটি সাধারণত JVM অস্থায়ী ডিরেক্টরি লেখার যোগ্য বলে অর্থ।
আক্রমণকারীদের প্রয়োজন হয় না:
- টার্গেট ক্লাসপাথে ফাইল লিখুন
- লক্ষ্য classpath-এ পূর্বনির্ধারিতভাবে TemplatesImpl, JNDI, C3P0, Commons Collections ইত্যাদি gadget রয়েছে
- Fastjson AutoType চালু করুন
- JSON.parseObject-এর দ্বিতীয় প্যারামিটার নিয়ন্ত্রণ করুন
4. মূল কারণ বিশ্লেষণ
4.1 ব্যবহারকারীর ধরনের নামকে সম্পদ ইউআরএল হিসাবে ব্যবহার করা হয়
সোর্স কোড অবস্থান:

কোর কোড:

এই যুক্তি ধরে নেয় যে resource শুধুমাত্র সাধারণ classpath পথ, কিন্তু এর প্রোটোকল, পরম পথ বৈশিষ্ট্য বা উৎসকে সীমাবদ্ধ করে না। নির্দিষ্ট fat-jar লোডারের জন্য, নিম্নলিখিত ইনপুটগুলি প্রতিস্থাপনের পরে পরম URL-এ পরিণত হবে:

অতএব getResourceAsStream স্থানীয় মেটাডেটা থেকে পরিসর বাইরের আক্রমণকারী নিয়ন্ত্রিত নেটওয়ার্ক সম্পদ লোড করে।
4.2 রিমোট ক্লাসের @JSONType কে অনুমোদনের ভিত্তি হিসাবে বিবেচনা করা হয়
Fastjson নিজস্ব ASM ClassReader ব্যবহার করে রিসোর্স কনটেন্ট পার্স করে:

আক্রমণকারী শুধুমাত্র দূরবর্তী ক্লাসে Fastjson-এর @JSONType অ্যানোটেশন যোগ করলেই jsonType-কে true হিসাবে সেট করতে পারে। এখানে যা চেক করা হয় তা হল আক্রমণকারী দ্বারা প্রদানকৃত বাইট, একটি বিশ্বস্ত classpath দ্বারা লোড করা ক্লাস নয়।
4.3 jsonType বাস্তব ক্লাস লোডিং ট্রিগার করে
সোর্স কোড অবস্থান:
TypeUtils.loadClass প্রথমে স্পষ্ট লোডার, তারপর থ্রেড কনটেক্সট লোডার এবং শেষে Class.forName ব্যবহার করে চেষ্টা করে। পজিটিভ পরিবেশে, থ্রেড কনটেক্সট লোডার একই পূর্ণাঙ্গ সম্পদের নাম আবার পার্স করে, class ডাউনলোড করে এবং defineClass এক্সিকিউট করে।
4.4 @JSONType পরবর্তী সুরক্ষা পরীক্ষা এড়ানোর জন্য প্রাথমিক ফিরতে
সোর্স কোড অবস্থান:
- ঝুঁকিপূর্ণ বেস ক্লাস চেক করা হবে না
- expectClass.isAssignableFrom(clazz) কার্যকর হবে না
- ফিক্সড ডেটা বাইন্ডিং টাইপ ক্লাস ইনিশিয়ালাইজেশনের আগে এক্সিকিউশন বন্ধ করতে পারে না
4.5 ব্যতিক্রম/ত্রুটি পরিশেষে সফট চ্যানেল তৈরি ব্যর্থ হয়েছে
সোর্স কোড অবস্থান:
4.6 সেফমোডের অবস্থান
সেফমোড চেকটি সম্পদ অ্যাক্সেসের আগে অবস্থিত:
5. লিঙ্ক ব্যবহারের বিস্তারিত ব্যাখ্যা
5.1 JDK 8: সরাসরি রিমোট ক্লাস লোডিং
সংক্ষিপ্ত ফর্ম:
JDK 17+ একইভাবে নেটওয়ার্ক অনুরোধ সম্পন্ন করবে, কিন্তু অভ্যন্তরীণ নামে খালি পথ অংশগুলিকে অস্বীকার করবে,
5.2 আধুনিক JDK প্রথম পর্যায়: রিমোট JAR ডাউনলোড করুন
প্রথম অ্যারে উপাদানটি:
JDK 17+ পরবর্তীতে প্রথম পর্যায়ের jar:http://... অভ্যন্তরীণ নাম প্রত্যাখ্যান করে, কিন্তু Fastjson ব্যতিক্রম পরিশেষে অ্যারেটি বিশ্লেষণ করে।
5.3 আধুনিক JDK দ্বিতীয় পর্যায়: ক্যাশে FD পুনরায় খোলা
পরবর্তী প্রার্থী উপাদান:
JDK 17-এর class-load লগে প্রথম মিল হল:
5.4 কেন একটি payload একসাথে JDK 8 এবং আধুনিক JDK-এর সাথে সামঞ্জস্যপূর্ণ
- JDK 8 সরাসরি প্রথম পর্যায়ের jar:http://... class গ্রহণ করে এবং বাস্তবায়ন করে
- প্রথম পর্যায়ের class কমান্ড বাস্তবায়নের পর ইচ্ছাকৃতভাবে RuntimeException("stage-one-stop") ফেলে দেয়, যাতে JDK 8 অপ্রাসঙ্গিক socket/pipe FD চেষ্টা করতে না পারে।
- JDK 17+ প্রথম পর্যায়ে অবৈধ নামের কারণে ক্লাস ইনিশিয়ালাইজেশনের আগেই ব্যর্থ হয়, এরপর ব্যতিক্রমের মাধ্যমে ফ্লেক্সিবল ডিসকভারি এনুমারেশন পর্যায়ে প্রবেশ করে।
6. পুনরুৎপাদন পরিবেশ এবং প্রমাণ
6.1 পরীক্ষিত উপাদানের হ্যাশ
6.2 একক ক্লিকে পুনরাবৃত্তি

প্রত্যাশিত আউটপুট:স্ক্রিপ্টটি করবে:
- Compile the victim fat jar;
- এফডি স্পেসিফিক ক্লাস সহ আক্রমণ JAR তৈরি করুন;
- একটি JSON অ্যারে পেলোড তৈরি করুন;
- ডকার নেটওয়ার্ক আইসোলেটেড অবস্থায় আক্রমণকারীর HTTP সার্ভিস শুরু করুন;
- JDK 8/17/21/25-এর জন্য আলাদাভাবে কন্টেইনার শুরু করুন;
- /টেম্প/ফাস্টজসন-গেটরিসোর্স-আরসিই প্রতিটি কন্টেইনার ম্যাপিং চেক করুন।
6.3 হাতে তৈরি করা আক্রমণ JAR এবং payload
6.4 বার্প সুইটের মাধ্যমে প্রেরণ করুন
বার্প শুধুমাত্র ফাস্টজসন পার্সিং পয়েন্ট সহ পীড়িত ইন্টারফেসে জেসন পাঠায়; জেএআর আক্রমণের জন্য আক্রমণকারীর HTTP সার্ভিস দ্বারা প্রদান করা হয়।
অনুরোধ টেমপ্লেট:
যদি অ্যাপ্লিকেশনটি ফিক্সড টপ-লেভেল টাইপ ব্যবহার করে, তবে ফিল্ড স্ট্রাকচার অনুযায়ী অ্যারেকে ওয়াপ করা যেতে পারে, যেমন:
এই পরীক্ষাটি JSON.parseObject(json, BoundEnvelope.class) ব্যবহার করে উপরের এনভেলপ বিশ্লেষণ করে, ফলাফল এখনও RCE-OK এবং BoundEnvelope সঠিকভাবে ফেরত দেওয়া হয়।
6.5 কীভাবে সীমানা পরীক্ষা

7. সংশোধন এবং প্রতিকারের পরামর্শ7.1 প্রাথমিক: Fastjson 1.x থেকে স্থানান্তরিত হন
ফাস্টজসন 2.x-এর মেইনটেনেন্স মোডে প্রাধান্য দিন এবং সমস্ত পলিমরফিক টাইপ, অটোটাইপ এবং কম্প্যাটিবিলিটি মোড কনফিগারেশন পুনরায় যাচাই করুন। রিগ্রেশন টেস্ট ছাড়া শুধুমাত্র JAR প্রতিস্থাপন করবেন না।
7.2 সেফমোড তাত্ক্ষণিকভাবে সক্রিয় করুন
কোড কনফিগারেশন:
JVM প্যারামিটার:
দ্রষ্টব্য: যদি অ্যাপ্লিকেশনটি AutoTypeCheckHandler রেজিস্টার করে থাকে, তবে এটিকে SafeMode চেকের আগেই এক্সিকিউট হওয়ার কারণে এটিকে সিঙ্ক্রোনাইজড অডিট বা সরিয়ে ফেলা উচিত।
7.3 ডিসিরিয়ালাইজেশন এন্ট্রি সীমাবদ্ধ করুন
- অবিশ্বস্ত অনুরোধকে সরাসরি JSON.parse/JSON.parseObject এর কাছে দিও না
- গেটওয়ে বা অ্যাপ এন্ট্রির মাধ্যমে কোনো ধরনের বিশেষ মেটাডেটা অস্বীকার করুন
- শুধু ফিক্সড টপ-লেভেল জাভা টাইপ পর্যাপ্ত প্রতিরোধ নয়, কারণ নেস্টেড অবজেক্টগুলি এখনও @type প্রসেস করতে পারে এবং এই ভুলের jsonType পূর্বে রিটার্ন করে কম্প্যাটিবিলিটি চেক বাইপাস করে।
7.4 ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল/গেটওয়ে অস্থায়ী নিয়ম
@type এর সমান হওয়া টেম্পোরারি ব্লক করুন JSON কী ডিকোড করার পর, এবং URL প্যারামিটার, রিকোয়েস্ট বডি এবং নেস্টেড অবজেক্ট ওভাররাইট করুন। শুধুমাত্র প্লেইন টেক্সট "@type" খুঁজে বেড়ানো যাবে না, Fastjson lexer ফিল্ড নাম প্রথমে ডিকোড করে, উদাহরণস্বরূপ:
WAF নিয়ম কেবলমাত্র হ্রাসের জন্য ব্যবহার করা উচিত, কম্পোনেন্ট আপগ্রেড এবং SafeMode-এর বিকল্প হিসাবে নয়।
7.5 আউটগোয়িং এবং রানটাইম সুরক্ষা
- অপ্রয়োজনীয় বাহ্যিক ঠিকানার দিকে JVM থেকে HTTP/HTTPS কানেকশন বন্ধ করুন।
- অ্যাপ্লিকেশন কন্টেইনারগুলির জন্য ন্যূনতম নেটওয়ার্ক নীতি প্রয়োগ করুন।
- যখন সামঞ্জস্যতা অনুমতি দেয়, তখন /proc/self/fd প্রকাশ সীমিত করুন বা আরও কঠোর কন্টেইনার স্যান্ডবক্স ব্যবহার করুন।
- অডিট করুন যে ClassLoader পরম URL সম্পদের নামের প্রক্রিয়াকরণ করে কিনা, http:, https:, jar:, file: ইত্যাদি প্রোটোকল ফরম্যাটকে অস্বীকার করে।
- জেভিএম অস্থায়ী ডিরেক্টরিতে অস্বাভাবিক jar_cache* কার্যক্রম নিয়ন্ত্রণ করুন।
8. সুপারিশ এবং IOC শনাক্ত করুন
8.1 অনুরোধ পাশের বৈশিষ্ট্য
ডিকোড করা @type মানগুলিতে অন্তর্ভুক্ত রয়েছে:
কেবল একটি ব্যতিক্রম দেখানো যথেষ্ট নয়, এটিকে প্রোটোকল ফরম্যাট, @type এবং অ্যারের মধ্যে ক্রমাগত FD প্রার্থীদের সাথে সম্পর্কিত বিশ্লেষণের সাথে যুক্ত করা উচিত।
8.2 নেটওয়ার্ক সাইড ফিচার
- JVM একটি অস্বাভাবিক হোস্টের কাছ থেকে এক্সটেনশন ছাড়া JAR বা .class ফাইল চায়
- একই বিশ্লেষণ অনুরোধের মধ্যে 1–3 বার পুনরাবৃত্ত GET/HEAD দেখা গেছে
- অনুরোধ পথে /x, /a.class বা হামলাকারীর প্রতিস্থাপিত পথ থাকতে পারে
8.3 হোস্ট সাইড ফিচার
- JVM অস্থায়ী ডিরেক্টরিতে jar_cache* তৈরি করুন
- Java প্রক্রিয়াটি /proc/self/fd/N এর মাধ্যমে নিজের ফাইলটি পুনরায় খোলে
- class-load লগে এমন কিছু দেখা যাচ্ছে:
৯. সিদ্ধান্ত
এই ভাঙ্গনটি প্রচলিত “ব্ল্যাকলিস্ট বাইপাস করে লোকাল গ্যাজেট খোঁজা” নয়, বরং এটি Fastjson-এর নিজস্ব class মেটাডেটা প্রোবিং লজিককে রিমোট class প্রাপ্তি এবং অনুমতি চ্যানেলে রূপান্তরিত করে। @JSONType-এর প্রাক্কালীন রিটার্ন এটি সক্ষম করে যে আক্রমণকারী প্রদত্ত class-টি বিপজ্জনক বেস ক্লাস এবং টাইপ বাইন্ডিং চেকের আগেই গৃহীত হয়; Exception-এর সফট ফেইল চ্যানেল এবং JDK jar:http: টেম্পোরারি ক্যাশে JDK 8-এর ডাইরেক্ট লোডিং প্রিমিটিভগুলিকে JDK 17/21/25-এ প্রসারিত করে।
অতএব নিম্নলিখিত সাধারণ বিচারগুলি প্রযোজ্য নয়:
- "অটোটাইপ ডিফল্টরূপে বন্ধ থাকে, তাই নিরাপদ" — এটি সত্য নয়
- "প্যারামিটার দুটি স্থির রাখার কারণে নিরাপদ" — এটি সত্য নয়
- "ক্লাসপাথে কোনো পরিচিত গ্যাজেট নেই, তাই নিরাপদ" — এটি সত্য নয়
- “JKD 17+ এইচটিটিপি:// অন্তর্নিহিত নামকে অস্বীকার করে, তাই সর্বোচ্চ SSRF মাত্র” — এটি ভুল
যে ডিপ্লয়মেন্টে যাচাইকৃত লোডার, নেটওয়ার্ক এবং ফাইল ডেসক্রিপ্টরের শর্তগুলি পূরণ হয়, সেখানে এই সমস্যাটি একটি অনাক্ষমিত JSON অনুরোধ থেকে বাস্তব দূরবর্তী কোড বাস্তবায়নে পরিণত হতে পারে। Fastjson 2.x-এ স্থানান্তর করা এবং তাৎক্ষণিকভাবে SafeMode সক্রিয় করা, আউটগোয়িং এবং ClassLoader রিসোর্স পার্সিং বৌন্ডারি কঠোরভাবে সীমাবদ্ধ করা প্রয়োজন।
10. সংযুক্তি এবং প্রমাণের পথ
পুনঃপ্রকাশ এবং কপিরাইট বিবৃতি: এই রিপোর্ট এবং সংশ্লিষ্ট প্রযুক্তিগত বিশ্লেষণ GCSA গ্লোবাল সাইবার সুরক্ষা অ্যালায়েন্স দ্বারা একচেটিয়াভাবে প্রকাশিত। পুনঃপ্রকাশের জন্য GCSA অফিসিয়াল উৎস এবং মূল লিঙ্কটি সম্পূর্ণভাবে রাখুন এবং রিপোর্টের মূল দৃষ্টিভঙ্গির বিরুদ্ধে কোনো দুর্নীতিপূর্ণ পরিবর্তন করবেন না।
উৎস: GCSA গ্লোবাল সাইবার নিরাপত্তা জোট
ওয়েবসাইট: www.gcsa.org
