CoolFace
Datasetpublic

fevziegeyurtsevenler/turkish-casefold-evasion

turkish-casefold-evasion from datasets import load_dataset ds = load_dataset("fevziegeyurtsevenler/turkish-casefold-evasion") "İGNORE".lower() is not "ignore". Python's str.lower() maps the Turkish dotted capital İ (U+0130) to i + a combining dot (U+0307), so prompt-injection filters that do text.lower() + substring matching silently miss Turkish-cased and Unicode-confusable triggers. This dataset pairs common injection trigger phrases with Turkish case-fold / confusable… See the full description on the dataset page: https://huggingface.co/datasets/fevziegeyurtsevenler/turkish-casefold-evasion.

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
Dataset Card

[image]

turkish-casefold-evasion

python
from datasets import load_dataset
ds = load_dataset("fevziegeyurtsevenler/turkish-casefold-evasion")

`"İGNORE".lower()` is not `"ignore"`. Python's str.lower() maps the Turkish dotted capital İ (U+0130) to i + a combining dot (U+0307), so prompt-injection filters that do text.lower() + substring matching silently miss Turkish-cased and Unicode-confusable triggers.

This dataset pairs common injection trigger phrases with Turkish case-fold / confusable evasions and records whether each bypassed a naive lower()+substring filter and whether the one-line NFKC-normalize fix caught it.

Finding

EvasionBypass rate vs naive filterCaught after fix
dotless-i91%100%
confusable (Cyrillic/Greek)100%100%
combining-mark91%100%
overall94.6%100%

Targets naive keyword/regex filters; ML guards are more robust (see the companion study).

Fields

trigger, evasion, evaded_text, original_caught_by_naive, evaded_caught_by_naive, evaded_caught_by_hardened, bypassed_naive_filter.

Code + the one-line fix

👉 [github.com/fevziegeyurtsevenler/turkish-casefold-evasion](https://github.com/fevziegeyurtsevenler/turkish-casefold-evasion)

Related

🏁 guardrail-arena · 🕵️ uncloak · 🌐 AltaySec

Apache-2.0 · by [AltaySec](https://altaysec.com.tr).