Отправить #1012810: DeepPavlov up to 1.7.0 (commit 5f9fbed0c7191466bc7621e604b810f66f254c03, code still present in master) Code InjectionИнформация

НазваниеDeepPavlov up to 1.7.0 (commit 5f9fbed0c7191466bc7621e604b810f66f254c03, code still present in master) Code Injection
ОписаниеA vulnerability was found in DeepPavlov up to 1.7.0 and classified as high 8.8. Affected is the function resolve() of the config reference resolver component in deeppavlov/core/common/params.py. The manipulation of the argument reference expression (a config string value starting with #) leads to code injection through the unrestricted use of eval(). It is possible to launch the attack remotely. User interaction is required because a crafted model configuration file must be processed by a DeepPavlov command that builds a model (predict, train, interact, riseapi or risesocket). Technical Details - Affected file/function: deeppavlov/core/common/params.py / resolve(), reached from from_params() and build_model() - Vulnerable parameter: any string config value starting with # (component reference expression), e.g. an ordinary component parameter in the chainer pipe - Attack vector: Network - Privileges required: None - Trigger condition: the victim builds a model from a crafted configuration file; the expression after the # prefix is re-joined and passed to eval(), so a payload such as #tok.__init__.__globals__['__builtins__']['__import__']('pathlib')... executes at build time. The expression can return a plain boolean so inference proceeds normally and the execution stays silent. No custom code file or pickle inside the model package is required. Impact - Confidentiality: High (arbitrary read through embedded __import__) - Integrity: High (arbitrary file write demonstrated by the PoC) - Availability: High (arbitrary code can terminate or destabilize the process) CVSS v3.1 Score: 8.8 (High) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H Timeline - Discovered: [unknown] - Vendor notified: [pending] - Patch released: [pending] (code still present in master as of 2026-10-02) - Public disclosure: [pending] Countermeasure Replace eval() in resolve() with a strictly validated attribute walk: validate the reference expression against a dotted-identifier grammar and resolve it with repeated getattr() only; reject subscripts and calls with ConfigError. Until a fix is released, do not build models from configuration files obtained from untrusted sources.
Источник⚠️ https://github.com/deeppavlov/DeepPavlov/issues/1713
Пользователь
 Dem0000000 (UID 98743)
Представление03.10.2026 16:52 (23 дни назад)
Модерация18.10.2026 19:17 (15 days later)
Статуспринято
Запись VulDB421933 [DeepPavlov до 1.7.0 Config Reference Resolver params.py resolve эскалация привилегий]
Баллы20

Might our Artificial Intelligence support you?

Check our Alexa App!