Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

BUG: case insensitive keyword selection returns a shifted range when lowercasing expands a character

Aberta Para iniciantes
#3,563 0 comentários 0 reações 1 responsável Ver no GitHub

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
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
ai, security

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

  1. Build KeywordSelectionStrategy(keyword="secret", case_sensitive=False).
  2. Call select_range(text="İsecret").
  3. The returned range slices to ecret on 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

Abrir no Codespaces

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

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de microsoft/PyRIT

Todas as issues de microsoft/PyRIT

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.