The OpenNET Project / Index page

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

19.03.2017 11:23  Ошибка в GCC привела к игнорированию режима выявления проблем с форматированием строк

Разработчики Fedora Linux столкнулись с заслуживающей внимания проблемой, связанной с ненадлежащей работой предоставляемых в GCC дополнительных проверок для блокирования проблем, вызванных ошибками форматирования строки. Начиная с Fedora 21 пакеты в дистрибутиве собираются с опцией "-Werror=format-security", которая приводит к выводу ошибки в случае выявления компилятором GCC проблем с форматированием строк, которые потенциально могут привести к появлению уязвимостей.

В процессе тестирования новой ветки Fedora, в которой будет задействован GCC 7 (релиз GCC 7 ожидается в апреле), разработчики столкнулись с ошибкой, вызванной тем, что флаг "-Werror=format-security" игнорировался при определённом стечении обстоятельств. В итоге возникла ситуация когда массовая пересборка всех пакетов проходила без ошибок, но фактически сборка ряда пакетов должна была завершиться ошибкой, чего не произошло, и проблемы с форматированием строк в данных пакетах оставались незамеченными.

Проблема всплыла только после внесения в GCC 7 изменения, исправляющего ошибку разбора параметров командной строки (одновременное указание "-Werror=format-security" и "-Wall" или "-Wformat" приводило к игнорированию "-Werror=format-security"). Ошибка присутствует достаточно давно и проявлялась как минимум в ветке GCC 4. При обновлении GCC 7 некоторые пакеты в Fedora перестали собираться и уполномоченным разработчикам пришлось в экстренном порядке вносить правки (как правило замена printf(variable) на printf("%s", variable)), не дожидаясь реакции мэйнтейнеров.

Дополнительно можно отметить решение отложить альфа-выпуск Fedora 26 на одну неделю в связи с невыполнением критериев качества. В частности, в репозитории остаются неисправленными 4 проблемы, которые отнесены к категории блокирующих выпуск: проблемы с настройкой ssh-ключей в cloud-init, сбой в запуске gnome-initial-setup, если в инсталляторе не был добавлен пользователь, крах пакета с ядром на Allwinner SoC, проблемы с настройкой FreeIPA в инсталляторе. В качестве новой даты релиза Fedora 26 названо 20 июня, вместо изначально запланированного 6 июня. Напомним, что начиная с Fedora 27 подготовка альфа-выпуска будет упразднена.

  1. Главная ссылка к новости (https://lists.fedoraproject.or...)
  2. OpenNews: В DNS-сервере BIND устранен серьёзный сбой, возникший из-за изменений в оптимизаторе GCC
  3. OpenNews: Разработчики Mozilla столкнулись с проблемой производительности в GCC 4.5
  4. OpenNews: Линус Торвальдс выступил с резкой критикой GCC 4.9.0
  5. OpenNews: Оптимизация кода компилятором может привести к появлению проблем безопасности в приложениях
  6. OpenNews: Дэниэл Бернштейн выступил с инициативой создания Си-компилятора для защищённого ПО
Лицензия: CC-BY
Тип: Обобщение
Ключевые слова: gcc
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 11:43, 19/03/2017 [ответить] [смотреть все]
  • +/
    А почему не на puts(variable)?
     
     
  • 2.6, фывфыв, 12:17, 19/03/2017 [^] [ответить] [смотреть все] [показать ветку]
  • +10 +/
    Потому-что puts() добавляет '\n' в конце.
     
     
  • 3.25, ytrewq, 19:07, 19/03/2017 [^] [ответить] [смотреть все]
  • –7 +/
    не заблуждай, почитай ман вначале
     
     
  • 4.31, фывфыв, 22:39, 19/03/2017 [^] [ответить] [смотреть все]
  • +3 +/
    Не тупи, прочитай стандарт http www open-std org jtc1 sc22 wg14 www docs n154... весь текст скрыт [показать]
     
  • 2.28, Sabakwaka, 20:26, 19/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    >> А почему не на puts(variable)

    Потому, что строковая строка?

     
  • 2.30, Я, 22:01, 19/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –4 +/
    Потому что компилятор сам заменит printf() на puts()
     
     
  • 3.42, Мальчикдевопс, 10:17, 20/03/2017 [^] [ответить] [смотреть все]  
  • +/
    но только если в конце printf есть '\n'
     
  • 1.5, Аноним, 12:13, 19/03/2017 [ответить] [смотреть все]  
  • –12 +/
    у gcc вообще основная фича, в том что они косячут и годами эти ошибки не хотят и... весь текст скрыт [показать]
     
     
  • 2.7, freehck, 12:20, 19/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Ммм, как интересно А может быть проблема в том, что Fedora, которая испытательн... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.10, нонанон, 12:33, 19/03/2017 [^] [ответить] [смотреть все]  
  • +5 +/
    Ну сказано же ну Ошибка присутствует достаточно давно и проявлялась как миниму... весь текст скрыт [показать]
     
     
  • 4.15, freehck, 13:25, 19/03/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    На то он и тестируемая ветвь компилятора, чтобы выявлять вот такие вот баги Да,... весь текст скрыт [показать]
     
     
  • 5.16, Аноним, 13:46, 19/03/2017 [^] [ответить] [смотреть все]  
  • +/
    Короче, мы вас поняли, все версии gcc с 4 по 7 - тестовый полигон, косяки в них ... весь текст скрыт [показать]
     
  • 4.19, Аноним, 14:16, 19/03/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Ошибка в том что компилировалось, хотя не должно было А в GCC 7 исправили И те... весь текст скрыт [показать]
     
     
  • 5.44, Michael Shigorin, 11:07, 20/03/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Как там было у Немет если программа собралась с первого раза -- позовите систе... весь текст скрыт [показать]
     
  • 4.20, Аноним, 14:31, 19/03/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    До этой части что не позволило дочитать ... весь текст скрыт [показать]
     
     ....нить скрыта, показать (7)

  • 1.23, Аноним, 15:19, 19/03/2017 [ответить] [смотреть все]  
  • –3 +/
    Я правильно понял взяли сырой билд и надулись, что он не работает как стабильны... весь текст скрыт [показать]
     
     
  • 2.24, axredneck, 16:45, 19/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    С gcc 4, 5, 6 та же проблема
     
  • 2.26, Аноним, 19:20, 19/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Наоборот, в GCC 7 поправили древний баг и после этого в Fedora перестала собират... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, Аноним, 20:06, 19/03/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    Руководи Линус разработкой gcc, он бы откатил этот патч, как это было сделано не... весь текст скрыт [показать]
     
     
  • 4.33, Аноним, 23:46, 19/03/2017 [^] [ответить] [смотреть все]  
  • +/
    Эти пакеты не должны были собираться с опцией -Werror format-security , так как... весь текст скрыт [показать]
     
     
  • 5.43, Аноним, 10:36, 20/03/2017 [^] [ответить] [смотреть все]  
  • +/
    https linux slashdot org story 09 07 29 1925224 alan-cox-quits-as-linux-tty-ma... весь текст скрыт [показать]
     
  • 3.29, RobotsCantPoop, 21:09, 19/03/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    А если в GCC исправить все баги, то перестанет собираться вообще всё?
     
     
  • 4.39, nobody, 09:47, 20/03/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    Не исключено - В мире GNU во всяком случае Ну а вообще в MS VC всё ещё хуже... весь текст скрыт [показать]
     
     
  • 5.51, Аноним, 15:35, 20/03/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Зачем MS какие-то стандарты? Они сами - стандарт!
     
     
  • 6.56, nobody, 09:59, 21/03/2017 [^] [ответить] [смотреть все]  
  • +/
    Вот слава Аллаху, что эти времена проходят Сейчас осталось только две программн... весь текст скрыт [показать]
     
  • 5.55, Led, 00:46, 21/03/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Вендузятник должен не поглядеть, а страдать ... весь текст скрыт [показать]
     
  • 3.49, анонимус вульгарис, 14:27, 20/03/2017 [^] [ответить] [смотреть все]  
  • +/
    Нет, поправили древний баг, после чего стала собираться кучка пакетов с дырявым ... весь текст скрыт [показать]
     
  • 1.34, Аноним, 04:26, 20/03/2017 [ответить] [смотреть все]  
  • –1 +/
    Что за адский хардкодер лабает такие вещи ... весь текст скрыт [показать]
     
     
  • 2.35, Аноним, 05:37, 20/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Больше чем ты думаешь Такое даже в sudo находили кажется было в отладочных соо... весь текст скрыт [показать] [показать ветку]
     
  • 1.40, nobody, 09:50, 20/03/2017 [ответить] [смотреть все]  
  • –3 +/
    То есть больше 10 лет баги никто не видел, с ними выпускали релизы, а тут вдруг ... весь текст скрыт [показать]
     
  • 1.41, anonymous, 09:53, 20/03/2017 [ответить] [смотреть все]  
  • –3 +/
    а так же стопятьсот избыточных, повторяющихся и взаимно-противоречивых опций, ко... весь текст скрыт [показать]
     
  • 1.45, snmp agent, 13:04, 20/03/2017 [ответить] [смотреть все]  
  • –2 +/
    Интересно, я один не врубался, о каких "проблемах с форматированием строк" речь, пока не посмотрел в man gcc?
     
     
  • 2.50, анонимус вульгарис, 14:32, 20/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Рекомендую почитать https www securecoding cert org confluence display c FIO3... весь текст скрыт [показать] [показать ветку]
     
  • 2.53, Аноним, 18:42, 20/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Нет, вас таких много https www cvedetails com google-search-results php q for... весь текст скрыт [показать] [показать ветку]
     
  • 1.48, Аноним, 14:04, 20/03/2017 [ответить] [смотреть все]  
  • –1 +/
    Уж сколько лет известно об printf format string уязвимостях, а люди упорно испол... весь текст скрыт [показать]
     
     
  • 2.54, freehck, 21:39, 20/03/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ну так уязвимости форматных строк - сродни XSS в браузерах Не давайте пользоват... весь текст скрыт [показать] [показать ветку]
     

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


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