BUG: case insensitive keyword selection returns a shifted range when lowercasing expands a character
Mantenedores costumam responder em até 2 dias
@ManoharPaturi já está trabalhando nisso.
Desde 27/10/2026.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
Direção de pesquisa
Encontre KeywordSelectionStrategy.select_range, mencionado na issue, e examine como ele mapeia uma correspondência sem diferenciar maiúsculas de minúsculas de volta para o texto original. Reproduza o caso com keyword="secret" e text="İsecret"; considera-se concluído quando o intervalo retornado seleciona a palavra-chave inteira no texto original, apesar da expansão ao converter para minúsculas. O payload não especifica um arquivo de teste, então localize ou adicione cobertura para essa reprodução.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Description
KeywordSelectionStrategy.select_range locates the keyword with text.lower().find(keyword.lower()) in case insensitive mode and then applies that index to the original, unlowered text. str.lower() is not length preserving for every character: a dotted capital I (İ, U+0130) lowercases to two code points, so every such character before the match shifts the returned range.
With keyword="secret" and case_sensitive=False on the text İsecret, the strategy returns the range (2, 7), which slices to ecret: the leading s of the keyword is left out. A SelectiveTextConverter built on this strategy then converts the wrong characters and the actual secret stays in the clear.
Expected Behavior
The selected range must slice to the keyword (plus any requested context) on the original text, whatever lowercase expansion occurs earlier in the string.
Reproduction Steps
- Build
KeywordSelectionStrategy(keyword="secret", case_sensitive=False). - Call
select_range(text="İsecret"). - The returned range slices to
ecreton main.
Minimal Reproduction
strategy = KeywordSelectionStrategy(keyword="secret", case_sensitive=False)
start, end = strategy.select_range(text="İsecret")
"İsecret"[start:end] # "ecret" on main
Environment
PyRIT main. Python 3.11.
- Linguagem predominante
- Python
- Estrelas
- 4.7k
- Forks
- 980
- Merge médio
- 2d 6h
- PRs com merge (30d)
- 447
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de microsoft/PyRIT
-
BUG: CredentialLeakScorer misses postgresql://, mongodb+srv://, rediss:// and amqps:// connection stringsTalvez já em andamento @ShivamSharma43 assumiu há 1 dia. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
Mantenedores costumam responder em até 2 dias
-
Conversation drawer shows the previous attack's conversations after switching attacksTalvez já em andamento @ManoharPaturi assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
microsoft/PyRIT#3575 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
Conversation draft turns permanently dirty when applied conversions match no pieceTalvez já em andamento @ManoharPaturi assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
microsoft/PyRIT#3573 · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
New finding dialog loses a severity only edit without an unsaved changes warningTalvez já em andamento @ManoharPaturi assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
microsoft/PyRIT#3569 · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
BUG: within word punctuation insertion can never land at the last two positions of the promptTalvez já em andamento @ManoharPaturi assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
microsoft/PyRIT#3565 · 3 comentários · 1 responsável ·
Mantenedores costumam responder em até 2 dias
Todas as issues de microsoft/PyRIT
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
vllm-project/vllm#64845 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
dekobon/big-code-analysis#1729 ·
Mantenedores costumam responder em até 1 dia
-
Add `openai_safety_identifier`, the replacement for the `user` field that `openai_user` sendsAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
pydantic/pydantic-ai#12091 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100