В генераторе кода Swagger, применяемом для создания RESTful web-сервисов, соответствующих спецификации OpenAPI, выявлена
уязвимость (CVE-2016-5641), которая может привести к выполнению кода на стороне сервера или клиента, через подстановку специальных параметров в документы Swagger, на основе которых производится динамическая генерация обработчиков API.
Проблема затрагивает RESTful-обработчики, созданные с использованием кода, автоматически сгенерированного при помощи Swagger. В том числе обработчики, сгенерированные для языков JavaScript/Node.JS, PHP, Ruby и Java (важно отметить, что вопреки заявлениям некоторых СМИ, проблема не затрагивает непосредственно Node.JS, PHP, Ruby и Java, а касается только проектов на данных языках, применяющих swagger-codegen для генерации кода RESTful API на основе непроверенных документов Swagger).
Например, код на Java и PHP, который будет выполнен при вызове динамически сгенерированного обработчика, можно внедрить в документ Swagger следующим образом:
"paths": {
"/a\"; try{java.lang.Runtime.getRuntime().exec(\"ls\");}catch(Exception e){} \"":
"definitions": {
"d": {
"type": "object",
"description": "*/ echo system(chr(0x6c).chr(0x73)); /*",
|