এপিআই নিরাপত্তা

এপিআই নিরাপত্তা একটি রানটাইম সমস্যা হয়ে দাঁড়িয়েছে। এমনটা হওয়ার কোনো প্রয়োজন নেই।

সুচিপত্র

অবশ্যই পঠনীয় পোস্ট

আগ্রহের সর্বশেষ পোস্টগুলি

প্রতি pull request একটি এন্ডপয়েন্ট যোগ করা বা পরিবর্তন করা হলে তা আপনার এপিআই অ্যাটাক সারফেসকে (API attack surface) পরিবর্তন করে দেয়। বেশিরভাগ এপিআই নিরাপত্তা টুল ততক্ষণ পর্যন্ত এটি লক্ষ্য করে না, যতক্ষণ না সেই এন্ডপয়েন্টটি লাইভ হয়ে যায় এবং ট্র্যাফিক পেতে শুরু করে। ততক্ষণে, এর সমাধান আর কোড রিভিউতে এক লাইনের পরিবর্তন থাকে না, বরং এটি একটি ইনসিডেন্ট রেসপন্স আলোচনায় পরিণত হয়।

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

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

একটি এপিআই পরীক্ষা করার চারটি উপায় এবং প্রতিটি কী উত্তর দেয়

অধিকাংশ উন্নত প্রোগ্রামেই এগুলোর একাধিক চালু থাকে:

  • স্থির পরীক্ষা ডেপ্লয়মেন্টের আগে সোর্স কোড এবং এপিআই স্পেসিফিকেশন বিশ্লেষণ করে। এটি এই প্রশ্নের উত্তর দেয় যে, “আমরা এইমাত্র কী প্রকাশ করলাম?” এই নিবন্ধটি এই পদ্ধতির উপরই আলোকপাত করে।
  • ডাইনামিক টেস্টিং (DAST) একটি চলমান এপিআই-তে আসল ট্র্যাফিক পাঠিয়ে তার প্রতিক্রিয়া পর্যবেক্ষণ করা হয়। এর মাধ্যমে এই প্রশ্নের উত্তর পাওয়া যায় যে, “এই মুহূর্তে আসলে কী কী পৌঁছানো এবং কাজে লাগানো সম্ভব?” 
  • ফাজিং ক্র্যাশ এবং এজ-কেস ব্যর্থতাগুলো চিহ্নিত করতে এটি এন্ডপয়েন্টগুলোতে ত্রুটিপূর্ণ বা অপ্রত্যাশিত ইনপুট পাঠায়। এটি এই প্রশ্নের উত্তর দেয় যে, “আমরা যা আশা করিনি, এমন ইনপুটের কারণে কী ভেঙে যায়?”
  • ম্যানুয়াল পেনিট্রেশন টেস্টিং স্বয়ংক্রিয় টুলগুলোর চোখ এড়িয়ে যাওয়া যৌক্তিক ত্রুটি খুঁজে বের করতে এটি মানবিক বিচারবুদ্ধি যোগ করে। এটি এই প্রশ্নের উত্তর দেয় যে, “একজন বুদ্ধিমান আক্রমণকারী কোন বিষয়গুলোকে একসাথে জুড়ে দেবে?”

এগুলোর কোনোটিই অন্যগুলোর বিকল্প নয়। এগুলো জীবনচক্রের বিভিন্ন পর্যায়ে ভিন্ন ভিন্ন প্রশ্নের উত্তর দেয়, এবং বেশিরভাগ প্রোগ্রামের যে ঘাটতিটি থাকে, তা হলো প্রথমটি।

কেন বেশিরভাগ এপিআই নিরাপত্তা সরঞ্জাম ঝুঁকিটি অনেক দেরিতে শনাক্ত করে

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

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

স্ট্যাটিক এপিআই নিরাপত্তা পরীক্ষা, ডেপ্লয়মেন্টের আগেই, যেখানে এন্ডপয়েন্ট সংজ্ঞায়িত করা হয়েছে—অর্থাৎ আপনার কোড এবং আপনার এপিআই স্পেসিফিকেশনে—সেখানে যাচাই করার মাধ্যমে উভয় ফাঁকই পূরণ করে। pull request যেটি একটি এন্ডপয়েন্ট চালু করে তা হল pull request যা এর ঝুঁকিকে প্রকাশ করে।

স্ট্যাটিক এপিআই সিকিউরিটির প্রকৃত অর্থ কী

Xygeni দুটি উৎস থেকে আপনার API ইনভেন্টরি তৈরি করে: আপনার অ্যাপ্লিকেশনের সোর্স কোড এবং আপনার API স্পেসিফিকেশন, যার মধ্যে OpenAPI এবং Swagger অন্তর্ভুক্ত।

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

সেই মজুদই হলো ভিত্তি যার উপর বাকি সবকিছু গড়ে ওঠে:

  • মোট আবিষ্কৃত এপিআই, এবং একটি বেসলাইনের সাপেক্ষে পরিমাপকৃত ঝুঁকিতে থাকা সম্পদ।
  • HTTP পদ্ধতি অনুসারে বিভক্ত এন্ডপয়েন্টসমূহ
  • পরিষেবা অনুসারে শ্রেণীবদ্ধ সমস্যা
  • প্রতিটি এন্ডপয়েন্ট তার মেথড, পাথ, সার্ভিস, মডিউল, অথেনটিকেশন স্টেট এবং রিস্ক স্কোর সহ

আপনার ইঞ্জিনিয়ারিং প্রধানরা একটিও টিকিট না খুলেই আপনার এপিআই সারফেসের রূপরেখা দেখতে পান।

Xygeni দ্বারা খুঁজে পাওয়া প্রতিটি এন্ডপয়েন্ট, তার পদ্ধতি, প্রমাণীকরণ অবস্থা এবং ঝুঁকি স্কোর সহ, কোড এবং স্পেসিফিকেশন উভয় থেকেই তৈরি করা হয়েছে।

Production note যেকোনো API Security স্ক্রিনশট থেকে AI Triage প্যানেলটি ক্রপ করুন।

OWASP API Security Top 10-এর সাথে ম্যাপ করা হয়েছে

প্রাপ্ত ফলাফলগুলো আপনার নিরাপত্তা দল এবং নিরীক্ষকদের ব্যবহৃত কাঠামোকেই সমর্থন করে। Xygeni, OWASP API Security জুড়ে ঝুঁকি শনাক্ত করে। শীর্ষ 10 (2023):

OWASP ঝুঁকি অনুশীলনে এর অর্থ কী
API1 ভাঙা বস্তু স্তরের অনুমোদন একটি এন্ডপয়েন্ট অন্য কোনো ব্যবহারকারী বা টেন্যান্টের ডেটা ফেরত দেয় বা পরিবর্তন করে।
API2 অপ্রমাণিত এন্ডপয়েন্ট কোনো প্রমাণীকরণ ছাড়াই একটি রুটে পৌঁছানো যায়।
API3 অতিরিক্ত ডেটা এক্সপোজার একটি প্রতিক্রিয়া কলারের প্রয়োজনের চেয়ে বা তার দেখার কথা নয় এমন অতিরিক্ত ফিল্ড ফেরত দেয়।
API3 ব্যাপক নিয়োগ একটি এন্ডপয়েন্ট এমন ফিল্ড গ্রহণ ও প্রয়োগ করে যা গ্রহণ করার জন্য এটি তৈরিই হয়নি।
API3 / API10 প্রতিক্রিয়ায় সংবেদনশীল তথ্য PII, PCI বা PHI এমন একটি এন্ডপয়েন্ট থেকে ক্লায়েন্টের কাছে পৌঁছায়, যেখান থেকে তা পাঠানো উচিত নয়।
API4 অনুপস্থিত হারের সীমা একটি এন্ডপয়েন্টের অপব্যবহার বা ব্রুট-ফোর্স কলের বিরুদ্ধে কোনো সুরক্ষা নেই।
API5 ত্রুটিপূর্ণ ফাংশন স্তরের অনুমোদন একটি এন্ডপয়েন্ট কলারের অনুমতি আছে কিনা তা যাচাই না করেই একটি বিশেষাধিকারপ্রাপ্ত কাজ সম্পাদন করে।
API7 এসএসআরএফ এপিআই-কে ধোঁকা দিয়ে আক্রমণকারীর হয়ে অনুরোধ পাঠাতে বাধ্য করা যেতে পারে।
API8 JWT ভুল কনফিগারেশন টোকেন যাচাইকরণ, স্বাক্ষর বা মেয়াদোত্তীর্ণের বিষয়টি ভুলভাবে সেট করা হয়েছে।
API8 CORS ভুল কনফিগারেশন ক্রস-অরিজিন নিয়মগুলো এতটাই শিথিল যে সেগুলোর অপব্যবহার করা যেতে পারে।
API9 জম্বি এবং অনাথ এন্ডপয়েন্ট অপ্রচলিত বা বিস্মৃত রুট যা এখনও পৌঁছানো যায়, এবং এমন রুট যার মালিক কেউ নয়।

একটি বিভাগ ইচ্ছাকৃতভাবে অনুপস্থিত রাখা হয়েছে। এপিআই৬ (API6), অর্থাৎ সংবেদনশীল ব্যবসায়িক প্রবাহে অবাধ প্রবেশাধিকার, এর জন্য একটি ব্যবসায়িক প্রক্রিয়া কী অনুমোদন করার কথা, তা বোঝা প্রয়োজন, এবং কোনো স্ট্যাটিক অ্যানালাইজারই তা নির্ভরযোগ্যভাবে শনাক্ত করতে পারে না। এর বিপরীত দাবি করা যেকোনো বিক্রেতা আপনাকে একটি চেকবক্স বিক্রি করছে। এই বিভাগটি আপনার থ্রেট মডেলিং এবং পেনিট্রেশন টেস্টারদের হাতেই থেকে যায়।

সব ফলাফল সমান নয়: ডেটার সংবেদনশীলতা এবং বিষাক্ত সংমিশ্রণ

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

Xygeni প্রতিটি এন্ডপয়েন্ট দ্বারা পরিচালিত ডেটাকে শ্রেণীবদ্ধ করে, অনুরোধের প্যারামিটার এবং প্রতিক্রিয়ায় PII, PCI এবং PHI চিহ্নিত করে এবং সেটিকে এন্ডপয়েন্টের প্রমাণীকরণ অবস্থার সাথে যুক্ত করে।

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

জম্বি এবং অনাথ এন্ডপয়েন্ট: কোড এবং স্পেসিফিকেশনের মধ্যে ব্যবধান

যেহেতু Xygeni আপনার কোড এবং API স্পেসিফিকেশন পাশাপাশি পড়ে, তাই এটি দেখতে পায় যে তাদের মধ্যে কোথায় অমিল রয়েছে। এই পার্থক্যটি তিনটি শনাক্তযোগ্য প্যাটার্ন হিসাবে প্রকাশ পায়:

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

এগুলোর কোনোটিই শুধুমাত্র স্পেক-এর ইনভেন্টরিতে দেখা যায় না, কারণ স্পেকটিতেই এগুলো অনুপস্থিত।

এমন প্রমাণ যার ভিত্তিতে ব্যবস্থা নেওয়া যায়, তদন্ত করার অনুমতিপত্র নয়।

প্রতিটি ফাইন্ডিং ঠিক দায়ী হ্যান্ডলারটিকে নির্দেশ করে: ফাইল, ক্লাস, মেথড এবং যে নির্দিষ্ট লাইনটি ত্রুটিটি সৃষ্টি করেছে, তার পাশাপাশি আপত্তিকর কোডটিও রেন্ডার করা থাকে। এছাড়াও প্রতিটির সাথে এর তীব্রতা, OWASP API Security Top 10 ক্যাটাগরি, CWE, এন্ডপয়েন্টের অথেনটিকেশন স্টেট এবং সংশ্লিষ্ট ডেটার সেন্সিটিভিটি ক্লাসিফিকেশন উল্লেখ থাকে।

এমন কোনো ফাইন্ডিং যা শুধু একটি এন্ডপয়েন্টের নাম উল্লেখ করে, তা একজন ডেভেলপারকে কোনো কিছু ঠিক করা শুরু করার আগেই কোডবেসের মধ্যে খোঁজাখুঁজি করতে বাধ্য করে। অন্যদিকে, এমন ফাইন্ডিং যা লাইনের নাম উল্লেখ করে, তা ডেভেলপারকে সঙ্গে সঙ্গে সমাধানে পৌঁছে দেয়।

ফলাফলগুলো JSON, CSV, Markdown এবং SARIF 2.1.0 হিসেবে এক্সপোর্ট হয়, ফলে সেগুলো t-তে চলে আসে।আপনার দলগুলো ইতিমধ্যে যে সরঞ্জামগুলিতে কাজ করে। 

হ্যান্ডলার, লাইন এবং যে কোডটি এই ত্রুটিটি ঘটিয়েছে। এটি তদন্ত করার মতো কোনো টিকিট নয়।

কেন এটি একটি প্ল্যাটফর্মে থাকে, অন্য কনসোলে নয়

জাইজেনি এপিআই সিকিউরিটি পরিচালনা করে পাশাপাশি SAST, SCA, গোপনীয়তা নিরাপত্তা, IaC এবং ডাস্ট একটি একক প্ল্যাটফর্মের ভিতরে, এর মাধ্যমে সম্পর্কিত ASPMএটিকে নিজস্ব একটি পৃথক টুল হিসেবে পাঠানোর পরিবর্তে login এবং এর নিজস্ব জমে থাকা কাজ।

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

সেটাকে দুটি কনসোলে ভাগ করে দিলে, পারস্পরিক সম্পর্কযুক্ত ঝুঁকি দুটি সম্পর্কহীন ব্যাকলগে পরিণত হয়। কেউ সেগুলোর সমাধান করে না, এবং যে এন্ডপয়েন্টটি নথিভুক্ত নয় ও প্রমাণীকৃত নয়, সেটি কোনো কিউতেই থাকে না।

আপনার প্রকৃত এপিআই আক্রমণের ক্ষেত্রটি দেখুন। এপিআই নিরাপত্তা একটি হিসেবে উপলব্ধ Enterprise এটি Xygeni প্ল্যাটফর্মের একটি অ্যাড-অন, এবং এর মাধ্যমে আপনার নিজস্ব পরিকাঠামোর ভেতরে থাকা আপনার নিজের রিপোজিটরিগুলোর ওপর একটি স্ক্যান চালানো হয়।

FAQ

এটি কি বলতে পারে কোন এন্ডপয়েন্টগুলো সংবেদনশীল ডেটা পরিচালনা করে?

হ্যাঁ। জাইজেনি এন্ডপয়েন্ট প্যারামিটার এবং রেসপন্সগুলিতে PII, PCI এবং PHI চিহ্নিত করে এবং সেই শ্রেণিবিন্যাস ব্যবহার করে প্রকৃত এক্সপোজারের ভিত্তিতে ফাইন্ডিংগুলিকে র‍্যাঙ্ক করে।

এটা কি সবগুলোতে চলতে পারে? pull request?

হ্যাঁ। ইনক্রিমেন্টাল স্ক্যানিং শুধুমাত্র পরিবর্তিত এন্ডপয়েন্টগুলো বিশ্লেষণ করে, এবং এর দ্বারা উৎপাদিত ম্যানিফেস্ট পরবর্তী DAST স্ক্যানকে সেই একই এন্ডপয়েন্টগুলোর উপর কেন্দ্রীভূত করতে পারে, ফলে স্ট্যাটিক এবং রানটাইম টেস্টিং প্রকৃতপক্ষে যা পরিবর্তিত হয়েছে তার সাথে সামঞ্জস্যপূর্ণ থাকে।

আমার কোড কি আমার পরিবেশের বাইরে চলে যায়?

না। স্ক্যানগুলো আপনার নিজস্ব পরিকাঠামোতেই চলে। শুধুমাত্র ফলাফলগুলো আপলোড করা হয়, যা স্থানান্তরের সময় এবং সংরক্ষিত অবস্থায় সুরক্ষিত থাকে।

আমি কীভাবে এপিআই নিরাপত্তা পেতে পারি?

এপিআই নিরাপত্তা একটি হিসেবে উপলব্ধ Enterprise অ্যাড-অন। একটি PoC (প্রুফ অফ কনসেপ্ট) এর জন্য অনুরোধ করুন এবং আপনার সাথে এর পরিধি নির্ধারণ করা হবে।

sca-tools-software-composition-analysis-tools
আপনার সফটওয়্যারের ঝুঁকিগুলোকে অগ্রাধিকার দিন, প্রতিকার করুন এবং সুরক্ষিত করুন।
আপনার বিনামূল্যে অ্যাকাউন্টটি নিন।
কোন ক্রেডিট কার্ড প্রয়োজন নেই

আপনার সফটওয়্যার উন্নয়ন ও বিতরণ সুরক্ষিত করুন

Xygeni প্রোডাক্ট স্যুটের সাথে