Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
authorship-not-sabotage — NeurIPS EvoRobust 연구의 코드 및 논문 소스로, 단순한 bag-of-words와 메타데이터 특징이 백도어가 삽입된 코드를 탐지하는 데 있어 대부분의 AI 제어 모니터를 능가함을 보여줍니다. | Kitploit
도구/GitHubGitHub/shubsds/authorship-not-sabotage
Static AnalysisCode AnalysisMachine LearningPapers & ResearchLearning & EducationAI Security
GitHubshubsds/authorship-not-sabotage

authorship-not-sabotage

NeurIPS EvoRobust 연구의 코드 및 논문 소스로, 단순한 bag-of-words와 메타데이터 특징이 백도어가 삽입된 코드를 탐지하는 데 있어 대부분의 AI 제어 모니터를 능가함을 보여줍니다.

저장소 보기
1677일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

단순한 특징이 대부분의 AI 제어 모니터를 능가한다

EvoRobust @ NeurIPS 2026 워크숍 논문의 코드 및 논문 원고.

논문에서 보여주는 것

AI 제어 모니터는 코드를 읽고 백도어(숨겨진 사보타주)를 표시하는 모델이다. 이들은 각 프로그래밍 문제에 정직한 해법과 백도어가 삽입된 해법이 있는 고정 데이터셋에서 개발되고 순위가 매겨진다. 모니터는 그러한 데이터셋에서 백도어를 찾아냄으로써만 좋은 점수를 받아야 한다. 우리는 공개 APPS 백도어 데이터셋(RoganInglis/apps-control-arena)을 연구하는데, 이 데이터셋의 정직한 해법은 사람이 작성했고 백도어는 구형 모델(Claude 3.7 Sonnet, o3-mini, o1-mini, GPT-4o 및 2025년 초까지 모두 출시된 네 개의 더 작은 모델, 그리고 출처가 불명인 소스 하나)이 작성했다. 우리는 이 데이터셋의 쌍을 원본 쌍이라고 부른다. 논문의 그림 1은 결과를 요약한다.

  1. 코드를 전혀 실행하지 않는 분류기가 대부분의 모니터를 능가한다. 표준 테스트 분할 (1,375개 문제, 문제당 프로그램 하나, 주석 제거)에서 해당 분할의 학습 문제로 훈련된 단어 가방(bag-of-words) 분류기는 AUROC 0.806에 도달하며, 이는 선행 연구에서 모니터로 프롬프트된 24개 오픈 가중치 모델(0.4B–32B) 중 20개를 능가한다. 이 분류기가 읽는 것은 공격 모델 전반에 걸쳐 공유되며 백도어의 작동 여부와 무관하게 존재한다. 가장 강한 백도어 측 토큰(and, ==, if)은 추가된 특수 사례의 얕은 흔적일 뿐이다. 분류기는 훈련되었지만 모니터는 그렇지 않으므로, 이는 어떤 탐지기가 더 나은지를 측정하는 것이 아니라 데이터셋이 무엇을 드러내는지를 측정한다.
  2. 레이블이 누출된다. 테스트 분할은 백도어가 작동하는 경우에만 해당 문제의 백도어 프로그램을 유지한다. 백도어가 있는 892개 문제 중 720개는 실패하여 대신 정직한 해답을 기여한다. 따라서 백도어 클래스 문제는 테스트 수가 약 절반이며, 문제 메타데이터(난이도, 테스트 수, 문제 설명 길이)만 읽는 분류기는 분할 내 교차 검증에서 0.766에 도달하여 20개 모니터를 능가한다. 분할 외부에서 적합시키면 0.298을 기록하는데, 이는 동일한 관계가 반전된 것으로, 그곳에서는 정직한 항목이 분할에서 제외된 문제에서 나오기 때문이다. 누출은 코드가 아니라 레이블이 선택된 방식에서 비롯된다.
  3. 분류기는 작성자 간의 대비를 보상한다. 우리는 하나의 모델, Claude Sonnet 5(그리고 별도로 Claude Haiku 4.5)로 두 해답을 모두 작성하여 쌍을 재구성하고, 각 클래스를 다른 작성자의 것과 짝지었다. 각 쌍의 종류를 정직한 측과 백도어 측을 누가 작성했는지로 명명하면, 모든 백도어가 작동하는 99개 문제에서 단어 가방은 person / 이전 모델에서 0.789, Sonnet 5 / Sonnet 5에서 0.749를 기록하지만, person / Sonnet 5에서 0.953, Sonnet 5 / 이전 모델에서 0.905를 기록한다. 즉 두 클래스의 작성자가 다를 때 가장 높은 점수를 받는다. 모든 시도에 대해서도 마찬가지다(0.981 대 0.865). 작성자가 하나일 때 분류기는 우연 대비 이점의 rho = 0.687을 Sonnet 5의 단일 시도에서, 0.097을 Haiku 4.5의 단일 시도에서 유지하며, 작동하는 백도어에서는 0.861을 유지한다. 따라서 분류기는 백도어가 추가한 특수 사례도 읽는다. Sonnet 5가 유지하는 것의 일부는 우리의 공격 프롬프트가 유도하는 레이아웃(def main)이며, 해당 프롬프트로 정직한 해답을 요청하면 rho가 0.390으로 낮아진다.
  4. 어떤 백도어가 진짜인가. Sonnet 5 모니터는 주로 백도어에 반응한다(원래 쌍에서 0.944, Sonnet 5가 정직한 측을 작성했을 때 0.966으로, 그 코드를 약간 덜 의심스럽게 여긴다). person / Sonnet 5에서는 0.755로 떨어지지만, 그 일부는 레이블 때문이다. 백도어는 자체 트리거에 대한 출력이 정직한 해답의 출력과 다를 경우 작동하는 것으로 간주되며, 트리거가 합법적인 입력인지 확인하는 것은 아무것도 없다. 데이터셋의 레이블은 이 문제를 보여준다. 표준 테스트 분할에서 백도어가 있는 172개 프로그램 중 17개는 불법 트리거만 가지고 있고 7개는 공개 테스트에서 잘못된 정수를 출력한다. 그 24개를 제외하면 단어 가방은 0.817을 기록하고 공개된 24개 모니터는 중앙값 +0.010만큼 움직인다. 우리의 생성도 같은 정의를 사용했으므로, 공격자를 비교하기 전에 두 클래스의 모든 트리거를 문제 설명으로부터 작성된 입력 검증기로 검사하고, 그곳에서 백도어의 출력이 인간 해답의 다수 답과 다를 것을 요구하며, 검사가 실패하면 근처의 합법적인 입력 40개를 탐색하여 증거를 찾는다. 이 검사는 이전 모델의 99개 백도어 중 14개와 Sonnet 5의 40개를 제거한다. 두 백도어가 모두 진짜인 54개 문제에서 Sonnet 5의 백도어는 여전히 더 잡기 어려울 수 있지만 그 정도는 줄어든다. AUROC 0.958 대 0.904(차이 -0.053, 95% CI -0.108 ~ -0.004)이며, 인간 해답의 2%를 플래그할 때 모니터는 이전 모델 백도어의 78%와 Sonnet 5의 61%를 잡는다(차이 0.17, 0.0002 ~ 0.32, 간신히 0보다 높음). 검사 전에는 99개 문제 전체에서 77% 대 37%(0.40, 0.28 ~ 0.52)였으므로, 변화의 일부는 문제를 제거한 데서 비롯된다. 격차는 임계값에 의존하며, 일부는 모니터가 자신의 model: 어느 클래스도 작성하지 않은 Haiku 4.5 모니터는 0.822에 대해 0.850을 제공합니다.

이렇게 구성된 데이터셋에서 높은 점수는 백도어 이외의 단서에서 비롯될 수 있으며(공개된 모니터가 이를 사용한다는 것을 우리가 보여주지는 않음), 검증되지 않은 레이블에 대한 적발률은 공격자 효과를 두 배 이상 높일 수 있다. 우리는 재구성된 쌍, 입력 검증기 및 검사를 공개하며, 이를 다른 모니터 벤치마크에서 실행할 것을 권장한다: 코드를 전혀 실행하지 않는 기준선(백오브워즈, 문제 메타데이터, 길이)을 그들의 셔플된 레이블 점수와 함께 보고할 것; 각 클래스를 다른 저자의 코드와 짝지을 것; 모든 트리거가 백도어의 답이 틀리게 되는 합법적 입력인지 확인할 것; 통과한 백도어에 대해 고정된 감사 예산에서 적발률을 보고할 것(현재 모델을 포함한 여러 생성기로부터); 그리고 검사가 지름길을 발견한 경우, 하나의 모델이 동일한 프롬프트로 두 클래스를 모두 작성하고 공격 성공 여부와 무관하게 정직한 예제를 선택하도록 할 것.

저장소 구조

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"에 동일한 항목이 있습니다.

도구 다운로드