BUG: CodeChameleonConverter custom functions do not reach its identifier

Đang mở
#3,761 0 bình luận 0 reaction 1 người được giao Xem trên GitHub

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
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
python
Lĩnh vực
security

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ả

Bug: triage
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 main at 791e12c6e
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

Mở trong Codespaces

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

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của microsoft/PyRIT

Tất cả issue của microsoft/PyRIT

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.