با تکامل مدلهای زبانی بزرگ (LLMs) از چتباتهای ساده به عاملهای خودمختار قادر به اجرای وظایف پیچیده، مکانیسم فراخوانی ابزار (یا فراخوانی تابع) به پل حیاتی بین استنتاج و عمل تبدیل شده است. با این حال، این قدرت سطح حمله قابل توجهی ایجاد میکند. اگر یک LLM مورد نفوذ قرار گیرد، مهاجم میتواند ابزارهای دلخواه را فراخوانی کند که منجر به استخراج داده، تغییر سیستم یا تسخیر کامل سیستم میشود. این پست بهترین شیوهها برای ایمنسازی خطوط لوله فراخوانی ابزار را بررسی میکند و فراتر از مهندسی پرامپت پایه، به کنترلهای معماری قوی میپردازد.
مدل تهدید: چرا فراخوانی ابزار آسیبپذیر است
برخلاف کد استاتیک، LLMها احتمالاتی هستند. وقتی یک LLM ورودی کاربر را دریافت میکند، یک شیء JSON را تولید میکند که برای یک ابزار بکاند در نظر گرفته شده است. آسیبپذیری در مرزه اعتماد نهفته است: ما اغلب به خروجی LLM به صورت ضمنی اعتماد میکنیم. یک مهاجم با استفاده از تزریقی غیرمستقیم پرامپت میتواند مدل را دستکاری کند تا پارامترهای ابزار نامعتبر یا مخرب تولید کند. برای مثال، یک ایمیل مخرب میتواند حاوی متنی باشد که باعث شود LLM یک ابزار send_email را با آدرس مقصدی که توسط مهاجم کنترل میشود، فراخوانی کند.
اصل ۱: اعتبارسنجی طرحواره سختگیرانه
خط مقدم دفاع هرگز اعتماد مستقیم به خروجی LLM نیست. شما باید طرحوارههای سختگیرانه (مانند JSON Schema، Pydantic) را قبل از ارسال آرگومانها به هر تابع بکاند اعمال کنید. این اطمینان حاصل میکند که ورودیها از نوع، طول و قالب صحیح هستند و از تلاشهای تزریقی پایه و خطاهای اشتباه نوع جلوگیری میکند.
مثال زیر را با استفاده از Pydantic برای اعتبارسنجی در نظر بگیرید:
import json
from pydantic import BaseModel, field_validator
class TransferMoneySchema(BaseModel):
recipient: str
amount: float
currency: str
@field_validator('recipient')
def validate_recipient(cls, v):
# اطمینان حاصل کنید که گیرنده یک مسیر فایل مخرب یا دستور نیست
if ".." in v or "/" in v:
raise ValueError("Invalid recipient format")
return v
def execute_tool_call(raw_json: str):
try:
# مرحله ۱: تجزیه ایمن JSON
data = json.loads(raw_json)
# مرحله ۲: اعتبارسنجی بر اساس طرحواره
# این در صورت مخرب یا نامعتبر بودن دادهها، ValidationError ایجاد میکند
validated_data = TransferMoneySchema(**data)
# مرحله ۳: اجرا تنها در صورت عبور از اعتبارسنجی
process_transfer(validated_data.recipient, validated_data.amount)
except (json.JSONDecodeError, ValidationError) as e:
log_security_event(f"Rejected invalid tool call: {e}")
اصل ۲: حداقل امتیاز و مجوزها
دقیقاً مانند امنیت نرمافزار سنتی، عاملهای هوش مصنوعی باید با اصل حداقل امتیاز عمل کنند. اگر یک عامل نیاز به خواندن ایمیلهای کاربر دارد اما نه حذف آنها، توکن API زیرین یا دامنه تابع نباید مجوزهای حذف را اعطا کند. علاوه بر این، در نظر بگیرید که برای اقدامات با ریسک بالا (مانند تراکنشهای مالی، حذفهای غیرقابل بازگشت) درهای تأیید کاربر را پیادهسازی کنید.
اصل ۳: پاکسازی ورودی و خروجی
فراتر از اعتبارسنجی طرحواره، ورودیها را در لایه برنامه پاکسازی کنید. برای ابزارهایی که با پایگاههای داده یا سیستمهای فایل تعامل دارند، از پرسوجوهای پارامتری استفاده کنید و از تزریق دستور سیستم عامل جلوگیری نمایید. در سمت خروجی، اطمینان حاصل کنید که دادههای بازیابی شده توسط ابزارها به طور تصادفی اطلاعات حساس را به LLM نشت نمیدهند که سپس ممکن است در معرض کاربر قرار گیرد.
نتیجهگیری
فراخوانی ابزار ایمن یک پیکربندی یکباره نیست، بلکه فرآیندی پیوست است که نیاز به دفاعهای لایهای دارد. با ترکیب اعتبارسنجی طرحواره سختگیرانه، کنترلهای دسترسی حداقل امتیاز و پاکسازی دقیق، توسعهدهندگان میتوانند از قدرت عاملهای LLM بهرهمند شوند بدون اینکه زیرساخت خود را در معرض ریسک نامناسب قرار دهند. با تکامل منظر امنیت هوش مصنوعی، هوشیاری در برابر تکنیکهای تزریقی جدید و بهروزرسانی منطق اعتبارسنجی شما به طور متناوب برای حفظ اعتماد در سیستمهای هوش مصنوعی خودمختار ضروری خواهد بود.