paint-brush
Да ли је ваш код генерисан вештачком интелигенцијом заиста безбедан?од стране@danielcrouch
Нова историја

Да ли је ваш код генерисан вештачком интелигенцијом заиста безбедан?

од стране Daniel7m2025/03/19
Read on Terminal Reader

Предуго; Читати

Код генерисан од вештачке интелигенције је водећи узрок 10 најбољих рањивости и скоро 40% кода има безбедносне грешке. АИ модели су обучени за сваки део информација доступних на интернету. Квалитет кода, поузданост, сигурност и још много тога могу се разликовати од оних које генеришу људски програмери.
featured image - Да ли је ваш код генерисан вештачком интелигенцијом заиста безбедан?
Daniel HackerNoon profile picture
0-item

Развој софтвера и програмирање, који су се некада сматрали подухватима који су захтевали дубоку стручност, сада могу да раде сви који користе природни језик. Функција за коју су некада били потребни дани или месеци да се развије сада се може развити за неколико минута или сати захваљујући коду из АИ модела. На пример, ОпенАИ Цодек и Гоогле БЕРТ су обучени за програмирање веб блогова, питања о преливу стека итд.


Ови интелигентни модели креирају код кроз математичке вероватноће, док је такође познато да халуцинирају и представљају лажне информације. Истраживање које је спровела академска заједница тврди да је генерисање АИ кода водећи узрок 10 највећих рањивости и да скоро 40% кода има безбедносне грешке . Многи од водећих играча, заједно са новим СааС провајдерима, користе вештачку интелигенцију како би своје понуде учинили паметнијим. СааС програмери такође морају имати више знања о СааС алатима заснованим на вештачкој интелигенцији.

Шта чини код генерисан вештачком интелигенцијом небезбедним?

Праћење стандарда програмирања и квалитета кода диктира сигурност софтвера. Али, АИ модели су обучени за сваки део информација доступних на интернету. Квалитет кода, поузданост, безбедност и још много тога могу се разликовати од оних које генеришу људски програмери. Модел обучен на примерима веб развоја може садржати лоше праксе валидације података, на пример. Овај недостатак валидације може довести до безбедносних проблема када модел генерише код који усваја исте лоше праксе.

5 индикатора који сугеришу да код садржи безбедносне слабости

Без обзира на величину (милион или милијарду параметара), познато је да модели халуцинирају и дају погрешна предвиђања. Када типични програмер види код који производи вештачка интелигенција, пропустиће суптилне, али озбиљне безбедносне пропусте. Међутим, за програмера који има потпуно знање о дизајну и обрасцима развоја, недостаци су далеко од откривања. Програмери могу да искористе ове обрасце како би открили рањивости и ускладили се са најбољим СааС безбедносним праксама .

1. Закључивање типа и валидације уноса се не примењују

Модерни оквири и библиотеке се у великој мери ослањају на интерфејс/енум за закључивање и валидацију. Ово гарантује да код тачно ради свој посао и намеће сигурност. Код генерисан од вештачке интелигенције неће закључити ако га не усмеримо. Чак и након израде пажљивог упита, неусклађеност типова и примена провере можда неће одговарати случају употребе. Да би лоцирали и изменили неподударности кода, програмери морају бити добро свесни домена и пословних захтева.


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

2. Нестандардно дељење стања и контекста између класа/објеката

Програми деле објекте на јавни/приватни/заштићени начин. Функције и класе вишег реда наслеђују стање објекта тако што директно приступају јавним/заштићеним варијаблама ради извођења прорачуна. Ако се нешто уради погрешно у имплементацији или извршењу, лако може доћи до уских грла у безбедности или перформансама. СааС програмери морају на одговарајући начин имплементирати своју логику управљања стањем и контекстом и прегледати је за исправну и безбедну употребу.


 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

3. Слаба имплементација техника руковања подацима и дељења

Услуге деле и примају информације преко мреже. Ових дана, безбедно повезивање и руковање подацима били су кључни за успех система заснованих на облаку. Када читате, обрађујете и делите осетљиве податке о организацијама путем дистрибуираних мрежа података, морају постојати јаки протоколи и безбедносне технике како би се спречило пресретање података . Користећи АИ, програмер СааС-а мора да имплементира сваки појединачни аспект архитектуре у пуноправне апликације.


 #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"})

4. Неадекватно руковање тајнама и аутентификацијом

У данашњем сајбер осетљивом свету, тесно Имплементација РБАЦ-а је неопходно за контролу приступа да би се обезбедио идентитет уз очување приватности и усклађености. Када је код генерисан од стране ЛЛМ-а, подразумевано ће постојати механизам који се повезује и аутентификује са провајдером аутентификације са основном имплементацијом. Једноставна решења нису довољна да останете безбедни са новим сајбер претњама. Док додају прилагођене функционалности, програмери морају темељно да тестирају како би осигурали да су безбедност и руковање аутентификацијом снажно примењени.


 # 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})

5. Застареле зависности са застарелим коришћењем функционалности

АИ програмирање усмеравају библиотеке и оквири направљени од стране заједнице и отвореног кода. Људи подржавају нову технологију користећи ове обећавајуће алате и креирајући нове. Подаци на којима су ови модели обучени нису ажурирани, а могућности модела су замрзнуте, као и њихово знање. Са развојем технологије, многе функције ће постати застареле и неке библиотеке неће бити релевантне за тренутне потребе. СааС програмер има задатак да прегледа и користи важеће зависности како би се обезбедила функционалност и безбедност.


 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. Укључите провере зависности и усаглашености у тестирање КПИ-ја.
  4. Усвојите архитектуру Зеро-Труст са статичким и динамичким алатима за тестирање безбедности.
  5. Искористите ДевСецОпс праксе и АИ у сенци.

Руковање небезбедним кодом генерисаним од вештачке интелигенције помоћу једноставне Гитхуб акције

Без обзира колико пажљиво прегледамо и ревидирамо код, шансе за људске грешке су увек присутне. Ослањање само на ручне ревизије није довољно јер морамо имати неке унапред дефинисане провере које могу тестирати и потврдити код чим уђе у систем контроле верзија. Каква боља провера од додавања Гитхуб акције која аутоматски покреће провере безбедности и квалитета када се подигне ПР.


 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”)

Закључак

Модели великих језика су прилично корисни алати за СааС програмере за генерисање кода и информација са природним захтевима. Међутим, они представљају безбедносне ризике и понекад испоручују неефикасан код који не одговара потребама предузећа. СааС програмери морају бити веома опрезни када користе ове алате и имплементирају код генерисан вештачком интелигенцијом за случајеве употребе у стварном животу. Овај практични водич се фокусира на факторе који настају и утичу на безбедносни став, док показује како да се превазиђу ови изазови.