👋.



Сегодня я хотел бы поделиться с вами ещё одним методом Prompt_Injection(OWASP LLM01:2023) который был обнаружен Riley Goodside (x/twitter). Метод работает в Dalle3 и ChatGpt (в Midjourney генерируется содержимое, которое не соответствует инструкции :(( ).



Суть в том, что мы создаём промпт с скрытым текстом(который будет иметь любое содержание позитивное/негативное или вашу инструкцию).



Для его реализации нам потребуется:



- Символы Unicode, имеющие реализацию "без привязки к тегу"(подробнее в tr.51).

- Python3.

- Наш промпт, который мы хотим скрыть.



Для начала берём PoC на python3, который был любезно предоставлен Джозефом Такером:



import pyperclip



def convert_to_tag_chars(input_string):

return ''.join(chr(0xE0000 + ord(ch)) for ch in input_string)



# Пример использования:

user_input = input("Enter a string to convert to tag characters: ")

tagged_output = convert_to_tag_chars(user_input)

print("Tagged output:", tagged_output)

pyperclip.copy(tagged_output)




Перед запуском не забываем установить pyperclip и запускаем скрипт.



На самом деле есть вариант проще - ASCII Smuggler, который может сделать помимо кодирования нагрузки в unicode символы - декодирование(чтобы обнаружить такое "скрытое послание").



И вауля - мы получаем payload, который сразу скопирован в буфер обмена. Идём тестировать в chatgpt.



Но опять же попробовав много раз - могу сказать что не всегда он выполняет нашу инструкцию, однако метод интересный, согласны ?



Whunderwuzzi однажды сказал : Такие "скрытые послания" могут быть распространены как на веб-сайтах так и в PDF-ках. И кроме того, такая техника позволяет скрытно осуществлять подмену данных буквально у всех на виду.