BUG: CodeChameleonConverter custom functions do not reach its identifier
Maintainer thường phản hồi trong vòng 2 ngày
@Ayoubhm07 đang làm issue này rồi.
Từ ngày 2/11/2026.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 38/100
Hướng nghiên cứu
Read codechameleon_converter.py, especially _build_identifier and the custom encryption/decryption handling at the referenced lines. Review the two strict xfail tests proposed in #3477 and settle whether identity should come from a caller-provided stable identifier or a fingerprint of the effective functions and rendered decrypt source. Done means converters using different custom functions have distinct identifiers, with tests covering the chosen behavior.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
With encrypt_type="custom", CodeChameleonConverter._build_identifier records only encrypt_type (codechameleon_converter.py:113). The encryption function decides the encoded prompt, and the decryption function's source is rendered into the prompt the model sees (source read at :150, rendered at :140-142), so converters built with different functions share one hash. As discussed in #3477, a qualified name is not enough either: two functions can share it with different code, closures or configuration.
Steps/Code to Reproduce
Run on main at 791e12c6e. Save as a file, since inspect.getsource needs one.
import asyncio
from pyrit.converter import CodeChameleonConverter
from pyrit.setup import IN_MEMORY, initialize_pyrit_async
def reverse_text(text):
return text[::-1]
def upper_text(text):
return text.upper()
async def main() -> None:
await initialize_pyrit_async(memory_db_type=IN_MEMORY, silent=True)
for function in (reverse_text, upper_text):
converter = CodeChameleonConverter(encrypt_type="custom", encrypt_function=function, decrypt_function=function)
result = await converter.convert_async(prompt="hello world")
line = next(line for line in result.output_text.splitlines() if "need to solve" in line)
print(line.strip(), converter.get_identifier().unique_name)
asyncio.run(main())
Expected Results
Different functions, different identifiers.
Actual Results
The encrypted_problem you need to solve is: dlrow olleh CodeChameleonConverter::505647f9
The encrypted_problem you need to solve is: HELLO WORLD CodeChameleonConverter::505647f9
Versions
- OS: Windows 11
- Python version: 3.12.0
- PyRIT version: source checkout of
mainat791e12c6e
System:
python: 3.12.0 (tags/v3.12.0:0fb18b0, Oct 2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)]
executable: C:\dev\pyr-main\Scripts\python.exe
machine: Windows-11-10.0.26300-SP0
Python dependencies:
pyrit: 1.2.0.dev0
Cython: None
numpy: 2.4.6
openai: 2.54.0
packaging: 26.3
pip: 23.2.1
scipy: 1.17.1
setuptools: 84.2.1
sqlite3: None
torch: None
transformers: 5.20.2
Possible directions from #3477: a stable identifier passed by the caller, or a fingerprint of the effective function and rendered decrypt source. The test proposed in #3477 marks both settings as strict xfail linked to this issue. I can take this one once the direction is settled.
- Ngôn ngữ chính
- Python
- Star
- 4.7k
- Fork
- 1k
- Merge trung bình
- 2 ngày 3 giờ
- Pull request đã merge (30 ngày)
- 465
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
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
-
Scenario objective previews can split supplementary Unicode during truncationCó thể đã có người làm @Aadithya-kl đã nhận hôm nay. Đang mởBug: triage help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
microsoft/PyRIT#3870 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
URLDataTypeSerializer treats mixed-case HTTP(S) schemes as local pathsCó thể đã có người làm @akhil9tiet đã nhận 1 ngày trước. Đang mởBug: triage help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
microsoft/PyRIT#3861 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Parameter required status is lost after wire round-tripCó thể đã có người làm @its-amann đã nhận hôm nay. Đang mởBug: triage help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
microsoft/PyRIT#3854 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersĐang mởBug: triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 2 ngày
-
BUG: SelfAskGeneral scorers leave their output keys out of the identifierCó thể đã có người làm @Hrushikesh-ramilla đã nhận 1 ngày trước. Đang mởBug: triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của microsoft/PyRIT
Issue tương tự
-
DBFS append mode silently overwrites existing filesCó thể đã có người làm @IlyaKhalafi đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
fsspec/filesystem_spec#2429 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
volcengine/OpenViking#7014 ·
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 68/100
fedora-copr/copr#4600 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
ansys/pydpf-core#3620 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày