paint-brush
আপনার এআই-জেনারেটেড কোড কি সত্যিই নিরাপদ?দ্বারা@danielcrouch
নতুন ইতিহাস

আপনার এআই-জেনারেটেড কোড কি সত্যিই নিরাপদ?

দ্বারা Daniel7m2025/03/19
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

এআই-জেনারেটেড কোড শীর্ষ ১০টি দুর্বলতার প্রধান কারণ এবং প্রায় ৪০% কোডে নিরাপত্তা বাগ রয়েছে। এআই মডেলগুলি ইন্টারনেটে উপলব্ধ প্রতিটি তথ্যের উপর প্রশিক্ষিত। কোডের মান, নির্ভরযোগ্যতা, সুরক্ষা এবং আরও অনেক কিছু মানব ডেভেলপারদের দ্বারা তৈরি কোডের থেকে আলাদা হতে পারে।
featured image - আপনার এআই-জেনারেটেড কোড কি সত্যিই নিরাপদ?
Daniel HackerNoon profile picture
0-item

সফটওয়্যার ডেভেলপমেন্ট এবং প্রোগ্রামিং, যা একসময় গভীর দক্ষতার প্রয়োজন ছিল, এখন প্রাকৃতিক ভাষা ব্যবহার করে যে কেউ তা করতে পারে। যে বৈশিষ্ট্যটি তৈরি করতে আগে দিন বা মাস সময় লাগত, এখন তা তৈরি করা সম্ভব হয় AI মডেলের কোডের মাধ্যমে। উদাহরণস্বরূপ, OpenAI Codex এবং Google BERT প্রোগ্রামিং ওয়েব ব্লগ, স্ট্যাক ওভারফ্লো প্রশ্ন ইত্যাদি বিষয়ে প্রশিক্ষণপ্রাপ্ত।


এই বুদ্ধিমান মডেলগুলি গাণিতিক সম্ভাব্যতার মাধ্যমে কোড তৈরি করে, একই সাথে তারা বিভ্রান্তি তৈরি করে এবং ভুল তথ্য উপস্থাপন করে। একাডেমিয়া কর্তৃক পরিচালিত একটি গবেষণায় দাবি করা হয়েছে যে AI কোড তৈরি শীর্ষ 10 দুর্বলতার প্রধান কারণ এবং প্রায় 40% কোডে সুরক্ষা বাগ রয়েছে । অনেক শীর্ষস্থানীয় খেলোয়াড়, নতুন SaaS সরবরাহকারীদের সাথে, তাদের অফারগুলিকে আরও স্মার্ট করার জন্য AI ব্যবহার করছে। SaaS প্রোগ্রামারদেরও AI-ভিত্তিক SaaS সরঞ্জাম সম্পর্কে আরও জ্ঞানী হতে হবে।

এআই-জেনারেটেড কোডকে কী অনিরাপদ করে তোলে?

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

৫টি সূচক যা কোডে নিরাপত্তা দুর্বলতা থাকার পরামর্শ দেয়

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

১. টাইপ ইনফারেন্স এবং ইনপুট ভ্যালিডেশন জোরদার করা হয় না

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


 def reciprocal(user_input): # Insecure implementation with no type inference or validation result = 100 / user_input return result

২. শ্রেণি/বস্তুর মধ্যে অ-মানক অবস্থা এবং প্রসঙ্গ ভাগাভাগি

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


 class InsecureClass: def __init__(self, owner, balance, password): self.owner = owner # Public attribute self._balance = balance # Protected attribute self.__password = password # Private attribute # Public def def get_balance(self): return self._balance # Protected def def _update_balance(self, amount): self._balance += amount # Private def def __validate_password(self, input_password): return self.__password == input_password # Insecure def exposing private data def insecure_password_exposure(self): return self.__password

৩. ডেটা হ্যান্ডলিং এবং শেয়ারিং কৌশলের দুর্বল বাস্তবায়ন

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


 #Insecure Data Sharing @app.route("/user/<int:user_id>", methods=["GET"]) def get_user(user_id): user = users.get(user_id) if user: return jsonify(user) # All user data exposed, including secrets # Insecure Data Handling @app.route("/update_email", methods=["POST"]) def update_email(): data = request.json() user_id = data.get("user_id") new_email = data.get("new_email") if user_id in users: users[user_id]["email"] = new_email # No validation of new_email return jsonify({"message": "Email updated successfully"})

৪. অপর্যাপ্ত গোপনীয়তা এবং অনুমোদন পরিচালনা

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


 # Insecure authentication @app.route("/login", methods=["POST"]) def login(): data = request.json() email = data.get("email") password = data.get("password") for user_id, user in users.items(): if user["email"] == email and user["password"] == password: return jsonify({"message": "Login successful", "user_id": user_id})

৫. অপ্রচলিত কার্যকারিতা ব্যবহারের সাথে পুরানো নির্ভরতা

AI প্রোগ্রামিং পরিচালিত হচ্ছে লাইব্রেরি এবং সম্প্রদায় এবং ওপেন-সোর্স দ্বারা তৈরি ফ্রেমওয়ার্ক দ্বারা। মানুষ এই প্রতিশ্রুতিশীল সরঞ্জামগুলি ব্যবহার করে এবং নতুন তৈরি করে নতুন প্রযুক্তি সমর্থন করে। এই মডেলগুলিকে যে ডেটার উপর প্রশিক্ষণ দেওয়া হয়েছিল তা হালনাগাদ নয় এবং মডেলের ক্ষমতা হিমায়িত হয়ে গেছে, এবং তাদের জ্ঞানও। প্রযুক্তির বিকাশের সাথে সাথে, অনেক বৈশিষ্ট্য অপ্রচলিত হয়ে যাবে এবং কিছু লাইব্রেরি বর্তমান চাহিদার সাথে প্রাসঙ্গিক হবে না। কার্যকারিতা এবং সুরক্ষা নিশ্চিত করার জন্য একজন SaaS ডেভেলপারকে বৈধ নির্ভরতা পর্যালোচনা এবং ব্যবহারের দায়িত্ব দেওয়া হয়।


 import md5 # Outdated library def insecure_hash_password(password): # Insecure password hashing done using the deprecated MD5 algorithm. return md5.new(password).hexdigest()

এআই-জেনারেটেড কোড ব্যবহারের জন্য নিরাপদ করার টিপস

লার্জ ল্যাঙ্গুয়েজ মডেলগুলির উন্নত কোডিং ক্ষমতা তাদের বিস্তৃত গাণিতিক গণনার কারণে। এটিকে সুরক্ষা এবং প্রোগ্রামিং মানগুলির সাথে সঙ্গতিপূর্ণ করার জন্য কোনও অভিনব কৌশলের প্রয়োজন হয় না। এআই-জেনারেটেড কোডকে নিরাপদ এবং মানগুলির সাথে সঙ্গতিপূর্ণ করতে আমরা এই সহজ পরীক্ষাগুলি ব্যবহার করতে পারি:


  1. নিরাপত্তা এবং স্থাপত্য দলের সাথে কোড পর্যালোচনা আপনার জীবনচক্রের একটি আদর্শ অংশ হওয়া উচিত।
  2. সংস্করণ নিয়ন্ত্রণ সরঞ্জামগুলিতে স্বয়ংক্রিয় সুরক্ষা পরীক্ষা এবং বৈধতা পদক্ষেপগুলি একীভূত করুন।
  3. KPI পরীক্ষায় নির্ভরতা এবং সম্মতি পরীক্ষা অন্তর্ভুক্ত করুন।
  4. স্ট্যাটিক এবং ডায়নামিক সিকিউরিটি টেস্টিং টুল সহ জিরো-ট্রাস্ট আর্কিটেকচার গ্রহণ করুন।
  5. DevSecOps অনুশীলন এবং ছায়া AI ব্যবহার করুন।

একটি সহজ গিথুব অ্যাকশনের মাধ্যমে অনিরাপদ এআই-জেনারেটেড কোড পরিচালনা করা

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


 name: Simple Security Checks for AI generated Code on: push: branches: - main pull_request: branches: - main jobs: security-and-quality-check: runs-on: ubuntu-latest Steps: - name: Repository checkout uses: actions/checkout@v3 - name: Python setup uses: actions/setup-python@v4 with: python-version: ">=3.9" - name: Dependency installation run: | python -m pip install --upgrade pip pip install bandit pytest - name: Identifying insecure libraries and patterns run: | echo "Checking for insecure patterns..." if grep -r "md5.new(" .; then echo "ERROR: Insecure MD5 hashing detected. Use hashlib.sha256 or bcrypt instead." exit 1 fi echo "No insecure patterns detected." - name: Scanning for security vulnerabilities run: | echo "Running Bandit security scanner..." bandit -r . - name: Running unit tests run: | echo "Running unit tests..." pytest test/unit --cmodopt=local - name: Notifying on failure if: failure() run: | send_slack_notification(“Unsafe code merge detected, fix immediately”)

উপসংহার

SaaS ডেভেলপারদের জন্য প্রাকৃতিক প্রম্পট সহ কোড এবং তথ্য তৈরি করার জন্য বৃহৎ ভাষা মডেলগুলি বেশ কার্যকর সরঞ্জাম। তবে, তারা সুরক্ষা ঝুঁকি তৈরি করে এবং কখনও কখনও অ-কার্যকর কোড সরবরাহ করে যা এন্টারপ্রাইজের চাহিদা পূরণ করে না। SaaS ডেভেলপারদের এই সরঞ্জামগুলি ব্যবহার করার সময় এবং বাস্তব জীবনের ব্যবহারের ক্ষেত্রে AI-উত্পাদিত কোড বাস্তবায়নের সময় খুব সতর্ক থাকতে হবে। এই ব্যবহারিক নির্দেশিকাটি কীভাবে এই চ্যালেঞ্জগুলি কাটিয়ে উঠতে হয় তা দেখানোর সময় নিরাপত্তার অবস্থানকে প্রভাবিত করে এবং উদ্ভূত কারণগুলির উপর আলোকপাত করে।