The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в генераторе кода Swagger

25.06.2016 22:08

В генераторе кода 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)); /*",  



  1. Главная ссылка к новости (https://community.rapid7.com/c...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44670-swagger
Ключевые слова: swagger
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (15) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Буратино (?), 23:18, 25/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    >java.lang.Runtime.getRuntime().exec(...)

    Энтерпрайзненько.

     
     
  • 2.2, Аноним (-), 00:07, 26/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Воистину восхитительно, даже безо всякого хипстогенератора
     
  • 2.3, Crazy Alex (ok), 02:33, 26/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Напиши импорт - будет короче. В питоне то же самое.
     
     
  • 3.5, Аноним (-), 09:44, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не то же. В питоне импорт - отдельная запись в namespace.
    Как импортируешь, то и будет.
    Поэтому и есть разница между
    import os
    и
    from os import *
    Разница будет в том, как будет называться результирующая функция.
    В первом случае она будет находиться как os.<func_name>, а во втором случае - просто func_name.
     
     
  • 4.8, Аноним (-), 14:48, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Чем это отличается от import static? Вердикт: то же самое.

    http://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html

     
  • 3.10, тот самый виндотролль (?), 18:04, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Мне кажется восхитительно не это, а вызов утилиты ls из джава кода.

    Подобные приемчики смердят на любом языке, хоть питон, хоть джава.

     

  • 1.4, Pilat (ok), 14:10, 26/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    По аналогии с авторскими отчислениями с устройства, каждый компьютер должен предоставлять хакерам часть своих ресурсов.
     
  • 1.6, тОпор (?), 10:05, 27/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Swagger

    кто-то где-то пользует???

     
     
  • 2.7, azure (ok), 14:18, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Да
     
  • 2.9, сваггер (?), 16:03, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Какие более лучшие решения вам известны?
     
  • 2.11, auk (?), 18:44, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    swagger отменная вещь для написания документации по REST API.
    Особенно его свыше с gradle и asciidoc
     
  • 2.13, Аноним (-), 10:47, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    На пуре-джяве с io.netty рестсервис без всяких своггеров делается за 15 минут с перекурами и кофебрейком. Кому нафиг оно ваще надо?
     
     
  • 3.14, сваггер (?), 11:14, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Вы понимаете разницу между написанием (кодогенерацией) рест-сервиса и написанием документации к нему?
     
     
  • 4.15, Аноним (-), 12:27, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А! Так Вы написали новый javadoc? Ну так круто че. Есть вон еще писатели, которые Kotlin забацали. Вот только туда же - не надо. Че-нить типа спринга, если осилите - всегда велкам, а гламурные гаечные ключи - в сад.
     
     
  • 5.18, сваггер (?), 12:41, 02/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И вновь вы ничего не поняли. Почитайте, чем они отличаются, прежде чем открывать рот и озвучивать свое ценное мнение
     

  • 1.12, Аноним (-), 04:43, 28/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Все идет от излишнего за*тства. Зачем мужик вообще генерирует чего-то? Зачем все эти языки? Почему нельзя просто добавлять три типа списков в базу данных и не радоваться ситуации? Что за тотальный #*изм развели?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру