Защитная диагностика NLTK CrubadanCorpusReader по GHSA-cv22-g7mw-8v73: применимость, обратимый локальный control, измеримый verdict, критерий остановки и минимальный пакет данных для владельца системы.
Короткий ответ — NLTK Crubadan: проверка чтения внутри корня корпуса
Задача страницы — проверить, что CrubadanCorpusReader не читает файлы за пределами корня установленного корпуса. Сначала установите фактически загруженный NLTK CrubadanCorpusReader, package lock или image digest и границу «nltk: introduced 3.9.4, fixed 3.10.3». Advisory GHSA-cv22-g7mw-8v73 — сигнал для inventory, а не доказательство состояния вашей установки. Практический порядок: provenance, один benign control, один boundary-case, измеримый verdict и cleanup. Боль конкретна: строка из table.txt может направить чтение за границу каталога корпуса. Итогом должен стать журнал code / candidate path / normalized path / containment verdict / open counter, а не субъективное утверждение «вроде безопасно».
Граница решения в NLTK CrubadanCorpusReader
Разделите путь данных на переходы: table.txt → код языка → нормализованный путь → разрешённое чтение внутри corpus root. На каждом переходе запишите владельца значения, тип, допустимое состояние и запрещённый side effect. Проверяемая инварианта: каждый вычисленный путь остаётся дочерним для временного corpus root, а отклонённая метка не доходит до open. NOT_APPLICABLE допустим только если component/function доказанно отсутствует; неизвестные digest, версия или effective config дают UNKNOWN. Номер исправленного релиза без runtime readback не является PASS, а отсутствие инцидента не доказывает соблюдение границы.
Безопасный локальный стенд для NLTK CrubadanCorpusReader
Control выполняется только в disposable state: создать временный корпус с одной обычной строкой и одной синтетической пограничной меткой; перехватить вызовы opener без обращения к реальным файлам. Сеть, shell, production database, реальные bucket, broker, SMTP, файловые пути, токены и пользовательские данные замените spies, stubs или in-memory объектами. До запуска сохраните baseline hash, нулевые counters и лимит времени/памяти. Входы должны быть короткими синтетическими маркерами; цель — проверить ветвление и ownership, а не воспроизводить эксплуатацию или усиливать воздействие.
Control, boundary-case и наблюдения
Benign control подтверждает достижимость ожидаемой ветки. Boundary-case меняет ровно один признак, связанный с болью «строка из table.txt может направить чтение за границу каталога корпуса», и не выходит за минимальный тестовый масштаб. Сохраните журнал code / candidate path / normalized path / containment verdict / open counter, reason code, duration и counters до/после. Ключевое правило остаётся неизменным: каждый вычисленный путь остаётся дочерним для временного corpus root, а отклонённая метка не доходит до open. Если control не достигает целевой функции или точка наблюдения двусмысленна, verdict — UNKNOWN; добавлять более сильный вход ради красивого результата нельзя.
Как вынести PASS, FAIL и UNKNOWN
PASS требует подтверждённых provenance/version, успешного benign control, соблюдения инварианты «каждый вычисленный путь остаётся дочерним для временного corpus root, а отклонённая метка не доходит до open», нулевых запрещённых side effects и доказанного cleanup. FAIL — тот же provenance плюс наблюдаемое нарушение: перехватчик увидел попытку чтения вне временного корня. UNKNOWN означает, что нет digest, effective config, control, recorder либо возможности восстановить fixture. Запишите решение в журнал code / candidate path / normalized path / containment verdict / open counter; один HTTP status, отсутствие exception или факт установки новой версии по отдельности недостаточны.
Красная линия и восстановление
Немедленно прекратите проверку, если перехватчик увидел попытку чтения вне временного корня. Не увеличивайте объём, глубину, число повторов и не переносите эксперимент на чужую систему. Откатите fixture к baseline, убедитесь, что counters сети, файлов, процессов, очередей и persistent writes вернулись в ожидаемое состояние, затем один раз повторите benign control. Любой неожиданный side effect блокирует PASS даже тогда, когда основной parser или policy вернул правильный код.
Почему это отдельный поисковый intent
Отделяет проверку происхождения имени из таблицы корпуса от общего сканирования путей и архивов. Поэтому статья отвечает на самостоятельный запрос «проверить, что CrubadanCorpusReader не читает файлы за пределами корня установленного корпуса» и не создаётся как замена бренда, ОС или устройства. Её deliverable — журнал code / candidate path / normalized path / containment verdict / open counter, а измеримый stop-rule — перехватчик увидел попытку чтения вне временного корня. Если существующий URL уже покрывает ту же боль, ожидаемый ответ и дерево решения, нужен отдельный update/merge-контракт, а не новая соседняя страница.
Минимальный пакет для владельца системы
Передайте владельцу GHSA-cv22-g7mw-8v73, component digest, effective version/config, границу «nltk: introduced 3.9.4, fixed 3.10.3», описание перехода «table.txt → код языка → нормализованный путь → разрешённое чтение внутри corpus root», control/boundary rows, counters, verdict, stop reason и cleanup proof. Advisory опубликована 2026-08-22 и обновлена 2026-09-02; эти даты подтверждают свежесть источника, но не популярность запроса, не факт эксплуатации и не применимость к конкретному deployment. После обновления повторите тот же fixture без изменения масштаба и сравните журнал code / candidate path / normalized path / containment verdict / open counter.
Материал подготовлен редакцией VOne с помощью автоматизированного черновика; даты, версии и ссылки сверены по GitHub Advisory Database и первичному upstream-материалу. Текст самостоятельный, не копирует источники, не содержит эксплуатационных последовательностей и предназначен для безопасной локальной проверки.
Источники и проверка
- GitHub Advisory Database — GHSA-cv22-g7mw-8v73 проверено 2026-09-02
- Первичный upstream-материал — NLTK CrubadanCorpusReader проверено 2026-09-02
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.