
프롬프트 인젝션 공격에 대응하기 위한 오픈 웨이트 LLM과 학습/평가 코드, 그리고 에이전트 도구 호출 및 명령 수행 보안을 위한 벤치마크.
Sizhe Chen*, Arman Zharmagambetov, David Wagner, Chuan Guo* (* 동등한 기술적 기여)
🔥 Meta-SecAlign 모델은 이 코드베이스가 비상업적 용도로만 라이선스되었음에도 불구하고, 이제 Llama 커뮤니티 라이선스에 따라 상업적 사용이 허가되었습니다.
Meta-SecAlign-70B는 프롬프트 인젝션 방어 기능이 내장된 최초의 완전 오픈소스 상용 등급 LLM으로, 에이전트(도구/웹) 보안 측면에서 gpt-5 및 gemini-3-pro에 필적합니다. 우리의 SoTA 학습 레시피는 지금까지 가장 포괄적인 평가를 기준으로 다양한 유틸리티 점수에서 눈에 띄는 하락을 초래하지 않습니다.
git clone --recurse-submodules https://github.com/facebookresearch/Meta_SecAlign.git
cd Meta_SecAlign
uv venv metasecalign --python 3.13
source metasecalign/bin/activate
uv pip install -r requirements.txt
uv pip install torchtune==0.6.0 --index-url https://download.pytorch.org/whl/cu126
python setup.py
data/openai_configs.yaml에 OpenAI 키(유틸리티 평가에 사용)를 설정합니다. 해당 파일에는 AzureOpenAI를 통해 OpenAI API에 접근하는 예시가 포함되어 있습니다. 더 자세한 예시는 여기에서 확인할 수 있습니다.data/gemini_configs.yaml에 Gemini 키를 설정합니다.demo.py에는 두 Meta-SecAlign 모델을 사용하기 위한 최소한의 코드가 포함되어 있습니다. 새로운 샘플과 프롬프트 인젝션을 자유롭게 시도하거나, 여러분의 코드베이스에서 모델을 테스트해 보세요:python demo.py
run_tests.py에는 논문에서 보고된 평가 결과를 재현하기 위한 명령이 포함되어 있습니다. 이 스크립트는 tests.py, test_lm_eval.py, test_agentdojo.py, test_injecagent.py를 순차적으로 호출합니다. 결과는 [model_path]/summary.tsv에 기록됩니다.python run_tests.py -m [model_path] --lora_alpha [lora_alpha]
model_path는 테스트할 모델의 경로입니다. 다음을 지원합니다:
meta-llama/Llama-3.1-8B-Instruct_SecAlign (setup.py로 다운로드되는 Meta-SecAlign-8B): 최첨단 프롬프트 인젝션 방어 기능을 갖춘 최초의 완전 오픈 모델meta-llama/Llama-3.3-70B-Instruct_SecAlign (setup.py로 다운로드되는 Meta-SecAlign-70B): 최첨단 프롬프트 인젝션 방어 기능을 갖춘 최초의 완전 오픈 모델meta-llama/Llama-3.1-8B-Instructmeta-llama/Llama-3.3-70B-Instructgpt-4o-mini: 명령 계층 프롬프트 인젝션 방어 기능을 갖춘 최초의 상용 모델.gpt-4o: 프롬프트 인젝션 방어 기능도 갖춘 후속 플래그십 모델.gpt-5: 우리 평가에서 가장 최신이자 가장 안전한 상용 모델로, --gpt5_reasoning_effort를 지정하여 추론 수준을 변경할 수 있습니다(기본값은 high).gemini-2.0-flash: 프롬프트 인젝션 방어를 주장하는 Google 상용 모델gemini-2.5-flash: 프롬프트 인젝션 방어를 주장하는 Google 상용 모델gemini-2.0-pro: Google 플래그십 모델(프롬프트 인젝션 방어 기능이 포함되었다고 주장하지 않음)gemini-2.5-pro: Google 플래그십 모델(프롬프트 인젝션 방어 기능이 포함되었다고 주장하지 않음)gemini-3-pro-preview: 강력한 프롬프트 인젝션 방어 기능을 갖춘 최첨단 Google 모델lora_alpha는 Meta-SecAlign 모델의 테스트 시점 하이퍼파라미터입니다. 기본값은 8이며, 이는 학습된 그대로의 정확한 Meta-SecAlign 모델을 사용합니다. 0과 8 사이의 lora_alpha 값은 방어되지 않은 모델과 우리의 방어된 모델 사이를 보간하여 유연한 유틸리티-보안 트레이드오프를 가능하게 합니다. lora_alpha를 8 이상으로 외삽하는 것도 가능하지만 테스트되지 않았습니다.meta-llama/Meta-Llama-3-8B-Instruct의 참조 응답과 비교하기 위해 AlpacaEval2 프롬프팅을 사용합니다)secalign_plus_plus.py는 우리의 학습 레시피인 SecAlign++를 사용하여 meta-llama/Llama-3.1-8B-Instruct(기본값) 또는 meta-llama/Llama-3.3-70B-Instruct(파인튜닝하려면 해당 줄의 주석을 해제)를 견고한 LoRA 모델로 방어적 파인튜닝하기 위한 명령을 제공합니다.python secalign_plus_plus.py
SecAlign에서 크게 개선되었으며, Meta-SecAlign 코드의 대부분은 CC-BY-NC에 따라 라이선스됩니다. 프로젝트의 일부는 별도의 라이선스 조건으로 제공됩니다: AgentDojo, TaskTracker, lm-evaluation-harness는 MIT에 따라 라이선스됩니다. 다른 저장소의 코드에는 AgentDojo(agentdojo), TaskTracker(setup.py), lm_eval_harness(lm_eval_config)가 포함됩니다. 이 소프트웨어 및/또는 데이터는 2025년에 BAIR Open Research Commons 저장소에 기탁되었습니다.