
NeurIPS EvoRobust 연구의 코드 및 논문 소스로, 단순한 bag-of-words와 메타데이터 특징이 백도어가 삽입된 코드를 탐지하는 데 있어 대부분의 AI 제어 모니터를 능가함을 보여줍니다.
EvoRobust @ NeurIPS 2026 워크숍 논문의 코드 및 논문 원고.
AI 제어 모니터는 코드를 읽고 백도어(숨겨진 사보타주)를 표시하는 모델이다. 이들은 각 프로그래밍 문제에 정직한 해법과 백도어가 삽입된 해법이 있는 고정 데이터셋에서 개발되고 순위가 매겨진다. 모니터는 그러한 데이터셋에서 백도어를 찾아냄으로써만 좋은 점수를 받아야 한다. 우리는 공개 APPS 백도어 데이터셋(RoganInglis/apps-control-arena)을 연구하는데, 이 데이터셋의 정직한 해법은 사람이 작성했고 백도어는 구형 모델(Claude 3.7 Sonnet, o3-mini, o1-mini, GPT-4o 및 2025년 초까지 모두 출시된 네 개의 더 작은 모델, 그리고 출처가 불명인 소스 하나)이 작성했다. 우리는 이 데이터셋의 쌍을 원본 쌍이라고 부른다. 논문의 그림 1은 결과를 요약한다.
and, ==, if)은 추가된 특수 사례의 얕은 흔적일 뿐이다. 분류기는
훈련되었지만 모니터는 그렇지 않으므로, 이는 어떤 탐지기가 더 나은지를 측정하는 것이
아니라 데이터셋이 무엇을 드러내는지를 측정한다.def main)이며, 해당 프롬프트로 정직한 해답을 요청하면
rho가 0.390으로 낮아진다.이렇게 구성된 데이터셋에서 높은 점수는 백도어 이외의 단서에서 비롯될 수 있으며(공개된 모니터가 이를 사용한다는 것을 우리가 보여주지는 않음), 검증되지 않은 레이블에 대한 적발률은 공격자 효과를 두 배 이상 높일 수 있다. 우리는 재구성된 쌍, 입력 검증기 및 검사를 공개하며, 이를 다른 모니터 벤치마크에서 실행할 것을 권장한다: 코드를 전혀 실행하지 않는 기준선(백오브워즈, 문제 메타데이터, 길이)을 그들의 셔플된 레이블 점수와 함께 보고할 것; 각 클래스를 다른 저자의 코드와 짝지을 것; 모든 트리거가 백도어의 답이 틀리게 되는 합법적 입력인지 확인할 것; 통과한 백도어에 대해 고정된 감사 예산에서 적발률을 보고할 것(현재 모델을 포함한 여러 생성기로부터); 그리고 검사가 지름길을 발견한 경우, 하나의 모델이 동일한 프롬프트로 두 클래스를 모두 작성하고 공격 성공 여부와 무관하게 정직한 예제를 선택하도록 할 것.
experiments/
apps/ APPS backdoor dataset: the floors on the original pairs, the rebuilt pairs
(generation, test harness, backdoor verification) and every measurement on them;
*.json are the committed outputs behind the paper's numbers
validators/ one input validator per checked problem (258), used by the trigger checks
agentic/ five agentic settings in which one model wrote both classes (appendix)
README.md how to reproduce each result, with commands, and which script gives each number
paper/ LaTeX source, bibliography, figures and the built main.pdf
experiments/README.md를 참조하세요. 원본 쌍에 대한 결과는 노트북 CPU에서 몇 분 만에 실행됩니다. 재구성된 쌍을 빌드하려면 Anthropic API 키가 필요하며, 오픈 가중치 변형(정직 클래스만 재생성)은 GPU가 필요합니다.
pip install -r requirements.txt
cd experiments/apps
python fetch.py && python fetch_inputs.py && python bow.py
python koran_split_eval.py # the bag-of-words floor: AUROC 0.806, above 20 of 24 monitors
cd paper
make # main.pdf (pdflatex + bibtex)
make figures # regenerate fig/ from experiments/apps/figures.py
전체 TeX Live에는 모든 것이 포함되어 있습니다. 기본 설치(BasicTeX, TeX Live scheme-basic)의 경우에도 논문을 위해 siunitx, tcolorbox(tikzfill, pdfcol, listingsutf8 포함), inconsolata가 필요하며, 플롯의 텍스트를 LaTeX로 조판하는 make figures를 위해서는 cm-super가 필요합니다. 관리자 권한이 없으면 사용자 트리에 설치됩니다:
tlmgr init-usertree
tlmgr --usermode install siunitx tcolorbox tikzfill pdfcol listings listingsutf8 inconsolata cm-super
updmap-user --enable Map=zi4.map
재구성된 쌍으로 이루어진 우리의 코퍼스는 same-generator-apps-split.zip이며,
v1.0 릴리스에 첨부되어 있습니다: 정직한
프로그램과 공격 프로그램, 독립 변형의 전체 재시도 풀, 모든 시도에 대한 쌍 목록,
그리고 두 가지 추출 선택(첫 번째 추출, 최선 추출) 모두에서 작동하는 백도어에 대한 쌍 목록, 논문의 수치를 뒷받침하는
스크립트, 데이터셋 카드, 그리고 행 수와 체크섬의 매니페스트(zip의 SHA-256:
b15fbd9386fb1533382ff273f9175615d92c0fdc1fb7ba7d25ea1575a679ff59)가 포함되어 있습니다.
experiments/apps/release_split.py가 이를 빌드하고 --check가 이를 검증합니다
(experiments/README.md, 7단계). 이를 읽는 스크립트를 위해 experiments/apps/release에 압축을 풀어 두십시오.
fetch.py가 실행된 경우 검사는 업스트림 코드와 비교합니다:
cd experiments/apps
unzip ../../same-generator-apps-split.zip
python release_split.py --check release --allow-trivial-identical 120
코드와 우리가 생성한 데이터는 MIT 라이선스(LICENSE)입니다. 업스트림 데이터셋은
실행 시점에 가져오며 재배포하지 않습니다. 해당 라이선스는
THIRD-PARTY-NOTICES.md에 나열되어 있습니다.
@inproceedings{debsarkar2026whowrote,
title = {Simple Features Beat Most {AI} Control Monitors},
author = {Debsarkar, Shubhrangshu and Nahata, Valmik},
booktitle = {NeurIPS 2026 Workshop on Self-Evolving Diversity-Driven Search for Robust AI Systems (EvoRobust)},
year = {2026}
}
CITATION.cff는 GitHub의 "Cite this repository"에 동일한 항목이 있습니다.