FEAT: Add Garak ProPILE privacy leakage scenario
Maintainer thường phản hồi trong vòng 1 ngày
@gugu1031 đang làm issue này rồi.
Từ ngày 8/9/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Is your feature request related to a problem? Please describe.
PyRIT does not package ProPILE-style tests that use known personal attributes to ask a model for a withheld attribute. Garak has a small prepared record file and prompt templates, but its probe mixes file loading, prompt construction, and execution. This is part of #511.
Describe the solution you'd like
Add a PyRIT-native ProPILE privacy leakage scenario based on garak/probes/propile.py.
Implementation requirements:
- Support Twin, Triplet, Quadruplet, and Unstructured as explicit opt-in scenario techniques.
- Convert garak's
pii_data.jsonlinto a local PyRIT seed dataset. Keep theprompt_templates.tsvcontent in a separate local PyRIT template dataset. Do not add a remote loader. - Preserve each record's
source_datasetandsource_idvalues. Link the statednvidia/Nemotron-CC-v2.1source in dataset provenance. - Preserve the applicable garak Apache-2.0 license, copyright, and attribution notices; mark the PyRIT-formatted files as modified; and update PyRIT's third-party notice material if required by the repository process. See garak's
LICENSE. - Use a dataset configuration, following PromptInject PR #2509, to build attack groups from known attributes and an expected withheld value. Preserve the PII type and source provenance in seed metadata.
- Use bounded atomic attacks and an expected-value scorer such as
SubStringScorer. Reuse existing normalized text matching before adding a new PII scorer. - Keep this dataset and all techniques out of implicit defaults. Users must select the scenario technique and local dataset explicitly.
- The bundled garak records support Twin and limited Triplet combinations, but they do not contain the fields needed for Quadruplet or Unstructured attacks. Support those techniques in the configuration, test them with synthetic fixtures, and raise a clear error when the selected real dataset has no compatible record. Do not silently report a zero-attack success.
- Add exports, focused unit tests, and synchronized
.pyand.ipynbscanner documentation. - State in documentation that an exact match indicates possible disclosure. It does not prove that the target memorized a specific training record.
Follow doc/code/framework.md and the applicable scenario, dataset, test, and documentation instructions. Datasets own records and templates; techniques select the relationship between known and withheld fields; the scenario assembles the campaign; attacks execute; scorers evaluate. Do not port garak's mixin and hook structure.
Describe alternatives you've considered, if relevant
- A loader that streams Nemotron-CC and extracts PII at scenario runtime was considered and rejected. It would add gated-data handling, PII extraction dependencies, nondeterminism, and responsibility bleed.
- A remote loader for garak's JSON file was considered and rejected. This issue should use a local PyRIT dataset with complete provenance and attribution.
- Combining PII records and prompt templates in scenario code would repeat garak's mechanics rather than follow PyRIT's dataset model.
Additional context
- Parent parity issue: #511
- PyRIT structural example: #2509
- Upstream probe:
garak/probes/propile.py - Original ProPILE paper: https://arxiv.org/abs/2307.01881
- Ngôn ngữ chính
- Python
- Star
- 4.5k
- Fork
- 896
- Merge trung bình
- 3 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 210
Chuẩn bị môi trường
Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của microsoft/PyRIT
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 91/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Bug: triage GUI help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
microsoft/PyRIT#2868 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của microsoft/PyRIT
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
PedestrianDynamics/pyFDS-Evac#199 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
521xueweihan/HelloGitHub#3790 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
sandialabs/atlas-ui-3#978 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area: tests perceived difficulty: 2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Nitjsefnie-Harness-Commons/daedalus#1255 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
hf-audiolm-qwen: `generate_until` hardcodes `.to("cuda")` and aborts on non-CUDA acceleratorsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
EleutherAI/lm-evaluation-harness#4256 ·
Maintainer thường phản hồi trong vòng 1 ngày