The OpenNET Project / Index page

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

11.05.2017 22:35  Yandex опубликовал статический анализатор файлов конфигурации nginx

Компания Яндекс опубликовала исходные тексты проекта Gixy, в рамках которого развивается статический анализатор, предназначенный для выявления проблемных настроек в файлах конфигурации nginx, которые могут отрицательно повлиять на безопасность. Код написан на языке Python и распространяется под лицензией MPL 2.0.

В настоящее время Gixy включает следующие плагины, выявляющие различные классы проблем:

  • ssrf - выявляет уязвимость Server Side Request Forgery, позволяющую выполнять различного рода запросы от имени Nginx. Проблема возникает, когда атакующий может контролировать адрес проксируемого сервера (второй аргумент директивы proxy_pass);
  • http_splitting - выявляет уязвимость HTTP Splitting, возникающую из-за неправильной обработки входных данных. Уязвимость может применяться для атак на приложение стоящее за Nginx (HTTP Request Splitting) или на клиентов приложения (HTTP Response Splitting).
  • origins - выявляет проблемы с проверкой заголовка запроса Referer или Origin, обычно возникающие из-за некорректного составления регулярного выражения;
  • add_header_redefinition - выявляет проблемы с переопределением "вышестоящих" заголовков ответа директивой "add_header";
  • host_spoofing - определяет возможность подмены заголовка запроса Host;
  • valid_referers - выявляет проблемы при конфигурировании модуля ngx_http_referer_module, вызванные использованием "none" в качестве принимаемого значения заголовка Referer;
  • add_header_multiline - определяет факты использования многострочных заголовков ответа.


  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Компания Яндекс подготовила собственную прошивку на базе платформы Android
  3. OpenNews: Яндекс начал формирование коллекции своих открытых проектов
  4. OpenNews: Яндекс подготовил репозиторий пакетов для распространения своих Linux-программ
  5. OpenNews: Опубликованы исходные тексты Яндекс-клиента для мгновенного обмена сообщениями
  6. OpenNews: Yandex выпустил браузер на основе Chromium
Лицензия: CC-BY
Тип: Программы
Ключевые слова: nginx
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Andrey_Karpov, 23:18, 11/05/2017 [ответить] [смотреть все]
  • –4 +/
    Статический анализ, статический анализ везде Методология растёт и ширится И... весь текст скрыт [показать]
     
     
  • 2.4, Анонистый калий, 23:27, 11/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    А вы почему раньше Яндекса ничего не сделали?
     
     
  • 3.6, Sw00p aka Jerom, 02:04, 12/05/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Потому-что внимательно читает документацию по настройке нгинкса И описанные аля... весь текст скрыт [показать]
     
     
  • 4.14, Аноним, 07:15, 12/05/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Yandex распался несколько лет назад Многие крутые дяди и тети , которые там ра... весь текст скрыт [показать]
     
     
  • 5.17, тигар, 09:05, 12/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    ну потому там и мигрировали на бунту - ... весь текст скрыт [показать]
     
     
  • 6.20, Аноним, 09:36, 12/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    У тебя комплекс неполноценности.
     
     
  • 7.22, тигар, 09:47, 12/05/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    > У тебя комплекс неполноценности.

    обоснуй;)

     
  • 6.31, Аноним, 18:33, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Ну да, а во фрю коммитят чисто из альтруистических соображений code commit fe... весь текст скрыт [показать]
     
     
  • 7.32, тигар, 18:53, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    >> ну потому там и мигрировали на *бунту ;-)
    > Ну да, а во фрю коммитят чисто из альтруистических соображений:
    > [code]
    > commit fed97f3094ee0c71bc2ae864dce888257108122c
    > Author: ae <ae@FreeBSD.org>

    ..
    > [/code]

    ну не нужно путать NOCов и проектных админов. Вменяемые проектные закончились - набрали убунтоголовых и как-то живут.
    Закончится ae@ (и еще 1 товарищ) в ноках - наймут цискоголовых убунтоводов - мигрируют и там.
    p.s. до этого еще melifaro@ был там же где и ae@. был.

     
     
  • 8.35, пох, 19:55, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    если присмотреться к патчам - там далеко не один ae@ - просто не всем дано напрямую комитить (или не у всех есть столько лишнего времени).

    Кстати, недавно случилось чудо: https://svnweb.freebsd.org/base?view=revision&revision=316770 - кто в теме, оценит
    - это ж сколько, лет десять уже, наверное?

     
     
  • 9.36, тигар, 21:37, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > если присмотреться к патчам - там далеко не один ae@ - просто
    > не всем дано напрямую комитить (или не у всех есть столько
    > лишнего времени).

    речь выше шла о конкретной компании. и там реально мало кого осталось с коммит-битом в порты/src фри. а раньше ребята из поиска были, давно:)
    > Кстати, недавно случилось чудо: https://svnweb.freebsd.org/base?view=revision&revision=316770
    > - кто в теме, оценит
    > - это ж сколько, лет десять уже, наверное?

    не скажу, что прямо капец как в теме, но от момента обсуждения бага в рассылке uafug и до того коммита прошло с недельку, примерно, включая стадии "у меня не работает вот так" "а попробуй вот так" "о, работает" и "попробуй патч (от ae@)" "ага. так тоже все работает!"
    багу, то, может и Х лет, но где же Ваш забытый багрепорт о нем?

     
     
  • 10.42, пох, 00:22, 14/05/2017 [^] [ответить] [смотреть все]  
  • +/
    работать приходится, да, а не развивать опенсорсе в рабочее время, кризис гово... весь текст скрыт [показать]
     
  • 4.19, пох, 09:35, 12/05/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    чтение документации совершенно не помогает от ошибок и с недефолтным тоже Это ... весь текст скрыт [показать]
     
     
  • 5.24, PnDx, 13:56, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    "анализатор конфигов asterisk"
    Если Вы про диалплан, то рассматривать/работать с ним, как с конфигом — фатальная ошибка. Последствия которой я изредка разбираю, делая терпилам разбор слива через какой-нибудь freepbx|asterisknow.
    У себя в профильной конторе я делал по этому поводу ORM, открытая часть выложена в районе https://github.com/ds-voix/VX-PBX/tree/master/UPSERT https://github.com/ds-voix/VX-PBX/tree/master/VX
    ("Закрытая" часть содержит ряд известных ошибок и (до их исправления) на github публиковаться не будет.)
     
     
  • 6.26, пох, 14:15, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > "анализатор конфигов asterisk"
    > Если Вы про диалплан, то рассматривать/работать с ним, как с конфигом —
    > фатальная ошибка.

    если работать как с программой на нечеловеческом языке, не уверен что анализатор от этого проще станет писать.

    > У себя в профильной конторе я делал по этому поводу ORM, открытая

    ну, может для профильной конторы это и метод (а кто будет писать анализатор уже теперь исходного формата? ;-)

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

     
  • 5.30, Sw00p aka Jerom, 17:20, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    >>чтение документации совершенно не помогает от ошибок.

    http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_set_header

    Внимательное чтение этого уже защитит от спуфинга Host заголовка

    >>то очень быстро превращается в очень запутанный ком спагетти.

    какой ком ? какой спагетти код ? программировать на конфигах нгинкса не нужно, не нужна на нём никакая логика вынесенная из контроллеров приложения.

     
     
  • 6.33, пох, 19:39, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > Внимательное чтение этого уже защитит от спуфинга Host заголовка

    осспди... вы вообще конфиги нетривиальных систем-то видели хоть по телевизору?
    (я уж молчу, что "от спуфинга хост заголовка" в принципе ничего не защитит, не надо ему доверять вообще, если ты его не сам только что установил - но это генитальным программистам еще надо суметь разжевать)

    >>>то очень быстро превращается в очень запутанный ком спагетти.
    > какой ком ? какой спагетти код ? программировать на конфигах нгинкса не

    в общем, админ локалхоста детeктед.

    > нужно, не нужна на нём никакая логика вынесенная из контроллеров приложения.

    вас не будут в яндексе спрашивать, что нужно, а что не нужно. И ни в одном более-менее крупном проекте тоже не будут, это не яндекс такой плохой. Некоторые, не будем показывать пальцем, еще и на lua туда писают.

    P.S. интересно, среди чудо-скриптов есть скрипт проверки на "квадратик" ?

     
     
  • 7.37, Аноним, 22:26, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Я другой аноним не видел Можете показать примерчик, чтоб понимать, о чём речь... весь текст скрыт [показать]
     
     
  • 8.40, Sw00p aka Jerom, 01:00, 13/05/2017 [^] [ответить] [смотреть все]  
  • +/
    >> вы вообще конфиги нетривиальных систем-то видели
    > Я (другой аноним) не видел. Можете показать примерчик, чтоб понимать, о чём
    > речь?

    список рассылки нгинкса вам в помощь )) там куча нетривиальных конфигов, иногда ржачных

     
     
  • 9.45, пох, 10:24, 14/05/2017 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    я что-то очень сомневаюсь, что вы там увидите хоть один кусок конфига крупных пр... весь текст скрыт [показать]
     
  • 8.43, пох, 00:41, 14/05/2017 [^] [ответить] [смотреть все]  
  • +/
    не, не могу - даже если б унес на память, там потроха конкурента яндекса, унылые... весь текст скрыт [показать]
     
  • 7.39, Sw00p aka Jerom, 00:54, 13/05/2017 [^] [ответить] [смотреть все]  
  • +/
    хех с основания нгинкса вижу ток они не содержат логику приложений в принципе... весь текст скрыт [показать]
     
  • 3.18, anonymous, 09:24, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Потому что опенсорс живёт по принципу DIY do it yourself Вот новичок боится з... весь текст скрыт [показать]
     
  • 2.12, Vkni, 06:05, 12/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –5 +/
    Только использовать для этого Питон - это надо себя сильно не любить У вас там ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.41, Sw00p aka Jerom, 01:04, 13/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > Только использовать для этого Питон - это надо себя сильно не любить.
    > У вас там ведь весь код анализатора, скорее всего, сплошь из
    > ветвлений. На Питоне их нужно все проверять. :-)

    так говорю же эт тока ИБ-ещники так любят питон, вот и накалякали анализатор на коленке )

     
  • 1.2, kai3341, 23:21, 11/05/2017 [ответить] [смотреть все]  
  • +2 +/
    ммм, NGINX-Studio
     
     
  • 2.3, Andrey_Karpov, 23:26, 11/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Между прочим, масса ниш ещё не занято Выбирай и делай И анализаторы потихоньку... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.5, kai3341, 23:39, 11/05/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Техническая сингулярность всё ближе Вокруг куча способов прострелить себе ногу ... весь текст скрыт [показать]
     
     
  • 4.8, Аноним, 05:17, 12/05/2017 [^] [ответить] [смотреть все]  
  • –3 +/
    Да еще вспомнити npm leftpad...
     
  • 3.13, Vkni, 06:08, 12/05/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Да Только сложно, извините, поляну не испоганить В науке, к которой OSS по сво... весь текст скрыт [показать]
     
  • 1.7, Аноним, 02:22, 12/05/2017 [ответить] [смотреть все]  
  • +/
    хорошо было бы вдобавок выпустить анализатор кода анализатора файлов конфигураци... весь текст скрыт [показать]
     
  • 1.10, Аноним, 05:59, 12/05/2017 [ответить] [смотреть все]  
  • +/
    Проверил. Ошибок нет. Непонятно, то ли конфиги хорошие, то ли тулза плохая...
     
     
  • 2.16, Аноним, 09:02, 12/05/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Просто тулза - не панацея В статье описано, что она проверяет Неправильно скон... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.21, пох, 09:40, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    зависит от того, что такое неправильный Не так заполняет переменные - не выяв... весь текст скрыт [показать]
     
     
  • 4.23, Аноним, 13:49, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Ты каждый раз, когда тебе нужны регексы, пишешь свой парсер ... весь текст скрыт [показать]
     
     
  • 5.25, пох, 14:01, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > Ты каждый раз, когда тебе нужны регексы, пишешь свой парсер?

    Тебе в данном случае нужны не регексы в общем виде, а _проверка_ что написанное совпадает с желаемым (и с учетом остального конфига). Так что да, придется именно свой - regex предназначена чтоб скрыть от разработчика ненужные детали, а тебе их наоборот анализировать надо.

    Занятие представляющееся мне унылым до чрезвычайности.

     
     
  • 6.27, Аноним, 14:58, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    libpcre libastral решат проблему Правда лицензия на libastral дороговата, но ... весь текст скрыт [показать]
     
     
  • 7.28, пох, 16:34, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    еще раз, медленно: pcre не помогает анализировать регексы, совсем.
    Так же как си-компилятор не помогает анализировать сишный код.

    Наоборот - по сути компилятор ты и будешь писать - только производящий не код, а паттерны для анализа.

     
     
  • 8.29, Аноним, 16:41, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    А что в них анализировать-то, в регексах Ну, допустим, можно отсеять регексы, к... весь текст скрыт [показать]
     
     
  • 9.34, пох, 19:48, 12/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > А что в них анализировать-то, в регексах?

    для начала, как обычно - typical human error, когда написано одно, а подразумевалось другое.
    Сложнее - когда у тебя их пачка, в экран, даже большой, не умещаются, и где-то кто-то когда-то вляпал нечто, что вроде бы работает, а на самом деле ему достается паттерн, предназначенный другому regexp.
    В принципе, даже более-менее понятно, как второе автоматизировать, но, слава тебе, Г-ди, что я не девоп.

     
     
  • 10.38, Аноним, 00:21, 13/05/2017 [^] [ответить] [смотреть все]  
  • +/
    Вот я и спрашиваю, что это за ошибки такие могут быть, что их можно отловить без... весь текст скрыт [показать]
     
     
  • 11.44, пох, 00:59, 14/05/2017 [^] [ответить] [смотреть все]  
  • +/
    > Вот я и спрашиваю, что это за ошибки такие могут быть, что

    я ж говорю - я, слава Аллаху, не девоп, мои ошибки могут быть нереферрентными. Надо брать статистику с большого проекта, и ловить типичные для него.

    > их можно отловить без libastral? Регулярки — не C, в них
    > мало конструкций, которые однозначно можно идентифицировать как некорректные.

    если бы в си была однозначность - не были бы нужны монстроидальные анализаторы, просто комплиятор выдал бы ошибку.

    Кстати, из свеженького личного - банальный копипаст, когда из трех скопированных блоков один исправить забыли. Пресловутый pvs вон вполне такое отлавливает, тут даже разбирать содержание не шибко надо.

     

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


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor TopList