The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Обновление libpng 1.6.27 с устранением уязвимости"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от opennews (??) on 30-Дек-16, 10:54 
В очередной серии обновлений библиотеки libpng (http://www.libpng.org/pub/png/libpng.html) 1.6.27, 1.5.28, 1.4.20, 1.2.57 и 1.0.67 устранена (http://openwall.com/lists/oss-security/2016/12/29/2) уязвимость, которая может привести к разыменованию нулевого указателя (в современных системах приводит к краху приложения), при определённых манипуляциях с PNG-изображениями. Примечательно, что вызывающая уязвимость ошибка присутствует в коде libpng более 20 лет, с  26 июня 1995 года.


Проблема вызвана разыменованием нулевого указателя и проявляется при использовании в программах функции png_set_text_2(), позволяющей манипулировать содержащимися в метаданных текстовыми блоками. Подобная функция не используется в firefox, imagemagick, graphicsmagick, pngcrush и  просмотрщиках изображений, и применяется только в некоторых графических редакторах. Более того, для эксплуатации уязвимости приложение должно загрузить блок текста в структуру PNG, задем удалить весь текст, а затем добавить другой блок текста в туже самую структуру, что делает атаку маловероятной.

URL: http://openwall.com/lists/oss-security/2016/12/29/2
Новость: http://www.opennet.ru/opennews/art.shtml?num=45786

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Обновление libpng 1.6.27 с устранением уязвимости"  +8 +/
Сообщение от Аноним (??) on 30-Дек-16, 10:54 
Какой смысл пять версий либы поддерживать?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Обновление libpng 1.6.27 с устранением уязвимости"  +4 +/
Сообщение от turbo2001 (ok) on 30-Дек-16, 11:13 
Популярность старых версий и несовместимость API
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

9. "Обновление libpng 1.6.27 с устранением уязвимости"  +2 +/
Сообщение от paulus (ok) on 30-Дек-16, 11:36 
> Популярность старых версий и несовместимость API

спасибо за ликбез.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

51. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 30-Дек-16, 22:45 
Мне кажется что поддерживают две, а для остальных выпустили обновление по особому случаю.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

77. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от pavlinux (ok) on 04-Янв-17, 20:51 
Купил iPhone 6, вышел iPhone 7, всех младше надо банить, нефиг на старье работать.  
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

78. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 06-Янв-17, 03:28 
Погодите пару лет и посмотрите как у Вас сначала аккуртненько не шлют обновления, а потом половина приложений не работает, а потом и во все откажет флеш память.
Ответить | Правка | ^ к родителю #77 | Наверх | Cообщить модератору

2. "Обновление libpng 1.6.27 с устранением уязвимости"  –12 +/
Сообщение от Аноним (??) on 30-Дек-16, 11:10 
Вот тебе и безопасный си...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Обновление libpng 1.6.27 с устранением уязвимости"  +16 +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 11:16 
> Вот тебе и безопасный си...

Опасная бритва -- это опасная бритва, если Вам её кто-то впаривал как безопасную -- с ним и разбирайтесь.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

7. "Обновление libpng 1.6.27 с устранением уязвимости"  –9 +/
Сообщение от Аноним (??) on 30-Дек-16, 11:18 
Нужно просто, чтобы был человек, который идеально обращается с опасной бритвой. И чтобы с бритвой работали только через него. Примерно как JVM безопасно работает с памятью, а все остальные только через него.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

10. "Обновление libpng 1.6.27 с устранением уязвимости"  +5 +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 11:39 
> Нужно просто, чтобы был человек, который идеально обращается с опасной бритвой.

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

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

14. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от Аноним (??) on 30-Дек-16, 12:07 
Специализация - это цивилизация. Отсутствие специализации было во времена жизни в пещерах.
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "Обновление libpng 1.6.27 с устранением уязвимости"  +4 +/
Сообщение от Куяврег on 30-Дек-16, 12:57 
нужно заметить что специализация и универсализация одновременно существуют. ну как анализ и синтез. и утверждать, что развитие зависит только от специализации, подобно как развитие зависит только от анализа - неверно
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

19. "Обновление libpng 1.6.27 с устранением уязвимости"  –3 +/
Сообщение от Аноним (??) on 30-Дек-16, 13:10 
Шигорин чутка позабыл о том, что весь UNIX построен на принципе специализации: пусть каждая программа делает только одну вещь, но делает это хорошо. То же самое можно сказать и о работе с памятью. Надежнее доверить это дело JVM.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

22. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Andrey Mitrofanov on 30-Дек-16, 13:17 
>весь UNIX

Не весь.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

23. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от Аноним (??) on 30-Дек-16, 13:19 
Согласен, 99.999% != 100%
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

24. "Обновление libpng 1.6.27 с устранением уязвимости"  +2 +/
Сообщение от Andrey Mitrofanov on 30-Дек-16, 13:46 
> Согласен, 99.999% != 100%

На каникулах возьми TAOUP и проштудируй на предмет помянутой выше универсализации. В след.раз, может, не будешь упёртым дураком выглядеть.

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

25. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Аноним (??) on 30-Дек-16, 14:08 
так я и включил его в 0.001%. Или вы сложение еще не проходили?
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

30. "Обновление libpng 1.6.27 с устранением уязвимости"  +7 +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 14:59 
> Шигорин чутка позабыл

...и тут же...

> пусть каждая программа делает только одну вещь, но делает это хорошо.
> То же самое можно сказать и о работе с памятью. Надежнее доверить это дело JVM.

А я и не знал, что JVM -- это такой менеджер памяти, и только.  Или что JVM "это дело" делает хорошо.

Ребятки, проверяйте свои доводы как следует -- меня на слове поймать можно, но для этого надо быть специалистом, а не демагогом.  Творческого времяпровождения в наступающем году :)

PS: разумеется, про "попенсорс" вещал и изрядно, как предполагаю, нагадил в соседних темах кто-то с того же самого адреса.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

35. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от С того же адреса on 30-Дек-16, 15:31 
Рассматривай JVM как coreutils. Отдельные компоненты JVM (как и coreutils) вполне себе делают только одну вещь.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

36. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 15:53 
> Рассматривай JVM как coreutils. Отдельные компоненты JVM (как и coreutils)
> вполне себе делают только одну вещь.

А какой именно из них отвечает в JVM только за работу с памятью?

PS re #37: *sigh*

Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

37. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Аноним (??) on 30-Дек-16, 15:57 
> А какой именно из них отвечает в JVM только за работу с памятью?

Тот, который отвечает только за работу с памятью. (А какой ты ожидал ответ? Название компонента? Название сипипишного класса в OpenJDK?)

Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

48. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 30-Дек-16, 22:08 
Да-да… ты это современным работодателям на территории exUSSR расскажи… а то ж они не знают, желая всё как один себе универсальных солдат за мизер денег.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

54. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Crazy Alex (ok) on 31-Дек-16, 01:18 
Где exUSSR и где цивилизация. Те, кто с Западом плотно работают - до тех доходит обычно. Ну, или разоряются.
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

55. "(offtopic) про цивилизации"  +/
Сообщение от Michael Shigorin email(ok) on 31-Дек-16, 02:31 
> Где exUSSR и где цивилизация. Те, кто с Западом плотно работают -

...вот те и знают, что там за "цивилизация": заикнулся, что денег впритык на жильё и дорогу, но не еду -- problem solved, подыскиваешь картонную коробку, а ехать уже никуда не надо...

Когда люди подстилаются под золотого тельца настолько, что начинают денежными циферками мерить всё -- они не то что цивилизацией стать не могут, они перестают быть людьми.

Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

64. "(offtopic) про цивилизации"  +1 +/
Сообщение от Crazy Alex (ok) on 31-Дек-16, 17:57 
Что за богатая фантазия? Но вообще - сюрприз - твой доход определяется твоей полезностью. И если персонаж настолько бесполезен, что на еду не хватает - ну, это повод ему и менять что-то. Рынок труда - это, в сущности, очень просто.

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

Из моих знакомых там проблемы только у одного человека - вызванные тем, что он уехал без подходящего образования и с некоторой обузой. Тому - да, приходится выкручиваться, не всегда легально. Остальные в норме - вероятно, потому что голову включали ещё до переезда и выключать не собираются.

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

И уж чего у тех же американцев напрочь нет - так это попыток найти "универсальных солдат". Наоборот - специализация, разделение зон ответственности и тому подобное. Если ты пишешь код - не твоя забота, кто и зачем ставил задачу именно так, хотя поинтересоваться не грех. И даже не твоя забота, чтобы твои резулььтаты куда-то попали - для этого есть специально обученные люди, у которых больше и информации, и навыков. Если ты QA - ты проверяешь соответствие поведения спецификации. Ты менеджер - определяешь на своём уровне что ты хочешь сделать, выясняешь у разработчиков, какие ресурсы для этого нужны и решаешь, что всё-таки делать.

Никогда менеджер не лезет в собственно разработку. Никогда вменяемый разработчки не пытается навязать что, по его мнению, должно попасть в продукт. Никогда не требуют "а сократите сроки разработки на X%" - вместо этого в случае нужды уточняют, какие фичи можно отложить и как помочь лучшей организацией работы (серверы, QA и т.д.)

Вот нет в exUSSR всего этого.

Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

69. "(offtopic) про цивилизации"  +1 +/
Сообщение от Аноним (??) on 01-Янв-17, 01:26 
> Когда люди подстилаются под золотого тельца настолько, что начинают денежными циферками
> мерить всё -- они не то что цивилизацией стать не могут,
> они перестают быть людьми.

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

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

Ответить | Правка | ^ к родителю #55 | Наверх | Cообщить модератору

67. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 31-Дек-16, 23:40 
> Специализация - это цивилизация. Отсутствие специализации было во времена жизни в пещерах.

А Valve почему-то нрвятся T-shaped people. Наверное специализация должна быть как-то так. А то не круто когда человек вроде бы хороший програмер но понятия не имеет как настроить почтарь. Да, видал такого - этот чудак цитировать нормально не мог и переписка с ним сильно клинила рабочие процессы остальным.

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

68. "Обновление libpng 1.6.27 с устранением уязвимости"  –3 +/
Сообщение от iZEN (ok) on 01-Янв-17, 00:39 
> Специализация - это цивилизация. Отсутствие специализации было во времена жизни в пещерах.

Любой человек должен уметь менять пелёнки, планировать вторжения, резать свиней, конструировать здания, управлять кораблём, писать сонеты, вести бухгалтерию, возводить стены, вправлять кости, облегчать смерть, исполнять приказы, отдавать приказы, сотрудничать, действовать самостоятельно, решать уравнения, анализировать новые проблемы, вносить удобрения, программировать, вкусно готовить, хорошо сражаться, умирать с достоинством. Специализация — удел насекомых.

Роберт Хайнлайн, «Достаточно времени для любви, или Жизни Лазаруса Лонга»

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

26. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Илья (??) on 30-Дек-16, 14:18 
> Это путь сперва специализации, а затем деградации

Ну не скажи. Бизнес-логику очень сложно мешать с низкоуровневыми вызовами. Да и не нужно.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

33. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 15:28 
>> Это путь сперва специализации, а затем деградации
> Ну не скажи. Бизнес-логику очень сложно мешать с низкоуровневыми вызовами.

Сперва да, а затем "у нас БУЗИНЕС, шо вы со своей безопасностью впёрлись!" (до поры).

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

70. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 01-Янв-17, 01:39 
> Сперва да, а затем "у нас БУЗИНЕС, шо вы со своей безопасностью
> впёрлись!" (до поры).

Бывает и другой полюс, как в том рассказе про хакера и столовую. Когда все ресурсы брошены на заякоривание солонок на супернадежные цепи. На остальное ресурсов не остается или остается мало. С понятным результатом. Безопасность - хорошо. Но если перебдеть то переклин на безопасности может застопорить вообще все работы. Потому что жить вредно и опасно. От этого умирают, гарантия 100%.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

29. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Comdiv (ok) on 30-Дек-16, 14:58 
> чтоб деграданты не засудили.

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

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

52. "Обновление libpng 1.6.27 с устранением уязвимости"  +1 +/
Сообщение от ы on 30-Дек-16, 23:48 
Ознакомься с основами явы, потом уже рот раскрывай.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

6. "Обновление libpng 1.6.27 с устранением уязвимости"  +6 +/
Сообщение от Отражение луны (ok) on 30-Дек-16, 11:17 
Безопасный язык программирования? Что дальше? Глютенфри микроволновка?
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

12. "Обновление libpng 1.6.27 с устранением уязвимости"  +1 +/
Сообщение от Аноним (??) on 30-Дек-16, 11:51 
Вот тебе и безопасная Java...
Вот тебе и безопасный C#...
Вот тебе и безопасный Python...

Бот, уйди.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

13. "Обновление libpng 1.6.27 с устранением уязвимости"  +3 +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 12:00 
> Бот, уйди.

Это вряд ли бот -- скорее человек, который купился на тыканье в проблемы (вполне реальные) языков с ручным управлением памятью и рекламу (обычно лукавую) языков с автоматическим управлением памятью.

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

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

32. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от Comdiv (ok) on 30-Дек-16, 15:02 
> рекламу (обычно лукавую) языков с автоматическим управлением памятью.

Можете чуть конкретней рассказать про лукавую рекламу? Где её видели, когда и как оценивали объём отностительно нелукавой рекламы?

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

34. "Обновление libpng 1.6.27 с устранением уязвимости"  +1 +/
Сообщение от Michael Shigorin email(ok) on 30-Дек-16, 15:29 
>> рекламу (обычно лукавую) языков с автоматическим управлением памятью.
> Можете чуть конкретней рассказать про лукавую рекламу?

Например, когда играют на предположениях и "логичных" выводах; когда рассказывают о решаемых проблемах, но умалчивают о создаваемых взамен.

> Где её видели, когда и как оценивали объём отностительно нелукавой рекламы?

Много где, и здесь нередко; на глазок, благо пристрелямши.

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

27. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Аноним (??) on 30-Дек-16, 14:22 
Пример небольшого ошибочного кода:

int x;
printf("Введите первое число: ");
scanf("%d", &x);
int y;
printf("Введите второе число: ");
scanf("%d", &y);
printf("Сумма двух чисел: %d\n", x + y);

Здесь 3 серьёзные ошибки. Кто-нибудь сможет найти все 3? Две, думаю, найдёт большинство знающих Си.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

28. "Обновление libpng 1.6.27 с устранением уязвимости"  +1 +/
Сообщение от Crazy Alex (ok) on 30-Дек-16, 14:52 
Отсутствие обработки ошибок scanf (в частности, кривого ввода), интовое переполнение при сложении и UB при слишком большом введенном числе. Причём последнее не лечится.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

39. "Обновление libpng 1.6.27 с устранением уязвимости"  +1 +/
Сообщение от Аноним (??) on 30-Дек-16, 17:15 
Слишком большое введённое число - это частный случай обработки ошибок (ERANGE):
https://www.securecoding.cert.org/confluence/display/c/INT05...

Лечить здесь нечего, нужно просто проинформировать человека о превышении допустимых границ значений. В качестве альтернативы можно написать собственный scanf и использовать библиотеку для работы с длинными числами. Тоже несложно реализуется.

Ответить | Правка | ^ к родителю #28 | Наверх | Cообщить модератору

44. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Crazy Alex (ok) on 30-Дек-16, 19:50 
Да. Что это я, в самом деле. Но тогда не представляю, какая там третья ошибка.
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

46. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Crazy Alex (ok) on 30-Дек-16, 20:11 
> Да. Что это я, в самом деле. Но тогда не представляю, какая
> там третья ошибка.

Решил таки проверить - а вот таки есть подвох, не зря мне мерещилось.
Вот это:

r = scanf("%d", &x);
printf("r=%d\n", r);

радостно печатает единичку при  вводе чего-то аски длинного вроде 11111111111111111111111111 (что означает, что один элемент был успешно распарсен), при этом в x попадает -1.

Если делать как положено:

errno = 0;
r = scanf("%d", &x);
err = errno;
printf("r=%d, errno=%d\n", r, err);

то ERANGE ловится отлично.

Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

58. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 31-Дек-16, 09:34 
Насчёт трёх ошибок Вы правильно определили. Да, их всего там было 3. Пропущено две обработки ошибок и нет проверки на переполнение. Подразумевалось, что ввод слишком большого числа - это частный случай обработки ошибок, поэтому отдельной ошибкой его считать бессмысленно.
Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

60. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 31-Дек-16, 09:44 
> errno = 0;
> r = scanf("%d", &x);

Кстати, устанавливать errno в данном случае в 0 было абсолютно бессмысленно, т.к. он выставляется только при возвращении функцией значения -1. Достаточно проверять возвращаемое значение.

Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

65. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Crazy Alex (ok) on 31-Дек-16, 18:08 

#include <stdio.h>
#include <errno.h>

int main(void)
{

<-->int x, r, err;
<-->printf("Please enter x: ");
<-->errno=11;
<-->r = scanf("%d", &x);
<-->err = errno;
<-->printf("r=%d, x=%d, err=%d", r, x, err);

return 0;
}


Вот это при вводе 9999999999999999999999999999999999999999 возвращает 1, устанавливая x в 2147483647 и errno в ERANGE.

Оно же при вводе 2147483647 возвращает 1, устанавливая x в 2147483647 и НЕ МЕНЯЯ errno.

Когда вы хотите проверять errno - устанавливайте его в 0, если не хотите сюрпризов. Масса функций меняет его только в случае ошибки.

Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

66. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 31-Дек-16, 19:08 
Да, действительно, прошу прощения, не прочёл документацию до конца, этой функцией я почти никогда не пользовался. Значит эта функция, на мой взгляд, тоже подпадает под разряд небезопасных, увы. Особенно, если считывается одновременно несколько значений (определение, к какому из них относится ошибка).

Чаще всего функции возвращают -1 (syscalls), многие к этому привыкли, реже сам код ошибки (pthreads).

Ответить | Правка | ^ к родителю #65 | Наверх | Cообщить модератору

31. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Crazy Alex (ok) on 30-Дек-16, 14:59 
Но вообще все давно в курсе, что scanf - не идеал ни разу, и обычно лучше применять отдельное строки и strtoX()
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

40. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 30-Дек-16, 17:29 
> Но вообще все давно в курсе, что scanf - не идеал ни
> разу, и обычно лучше применять отдельное строки и strtoX()

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

Для strtoX прийдётся так или иначе реализовывать чтение данных с потока ввода (но уже своими силами), но это мало что даёт. Мало того, при использовании strtoX можно столкнуться с большой проблемой. С одной стороны всё равно нужно анализировать errno на ошибки, а с другой errno выставляется при значении, равном 0. Но откуда мы знаем, что errno в этом случае был выставлен именно нашим вызовом, а а не вызовом из сторонней библиотеки, в код которой мы даже не заглядывали. А может быть он вообще остался в том же значении ещё с прошлого вызова нашей же функции, а пользователь просто ввёл 0.

Увы, я уже видел достаточно примером кода, где ошибки игнорируют, используют небезопасные функции, либо используют стиль обработки ошибок lazy (assert по любой ошибке). А основной причиной является стандартизация небезопасных функций, которые просто исторически используются и от которых уже невозможно отказаться без потери обратной совместимности.

Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

45. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Crazy Alex (ok) on 30-Дек-16, 20:01 
Разумеется - читаем в буфер, токенизируем (а то и полноценный разбор), потому преобразования. Ситуации, когда это не нужно - экзотика, в общем-то.

Насчёт errno - вообще чушь, простите. Устанавливайте его в 0 непосредственно до вызова функции, проверйте сразу после - и всё отловите.

Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

59. "Обновление libpng 1.6.27 с устранением уязвимости"  +2 +/
Сообщение от Аноним (??) on 31-Дек-16, 09:41 
> Насчёт errno - вообще чушь, простите. Устанавливайте его в 0 непосредственно до
> вызова функции, проверйте сразу после - и всё отловите.

Вот в этом то и вся суть. Об этой особенности мало кто знает. Подобные ситуации и ведут за собой код с ошибками. Поэтому считаю, что необходимо популяризовать подобные примеры ошибочного кода с объяснениями. Т.к. новость про уязвимость в библиотеке на языке Си, с большой вероятностью сюда могут заходить люди знающие язык Си на достаточно хорошем уровне. Возможно, кто-то узнает для себя что-либо полезное.

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

61. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Michael Shigorin email(ok) on 31-Дек-16, 14:40 
> считаю, что необходимо популяризовать подобные примеры ошибочного кода с объяснениями

Может, попробовать в рамках http://rosettacode.org ?  Примеры там уже есть, остаётся предложить рубрику контрпримеров.

PS: пришлось добавить пробел, автолинкер захватил лишнего.

PPS: надо же, читаю тут http://odnako.su/hi-tech/pc-hardware/-483565-obzor-i-sravnit.../ и вижу на перекликающуюся тему:

---
Также можно использовать примеры из коллекции SAMATE американского института NIST.
---

Ответить | Правка | ^ к родителю #59 | Наверх | Cообщить модератору

62. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 31-Дек-16, 15:34 
> Может, попробовать в рамках http://rosettacode.org ?  Примеры там уже есть, остаётся предложить рубрику контрпримеров.

Я лишь подаю идеи, моего энтузиазма и свободного времени хватает пока только на opensource-разработку. Но по факту все возможные ситуации расписаны на сайте CERT (там не только язык Си).  Любому считающему себя профессиональным программистом CERT обязателен к прочтению. Я мог бы привести примеры посложнее, ответ в которых предсказать правильно смогут немногие. Одну из придуманных задачек давал своим ребятам, никто не смог правильно ответить на результат простого выражения.

> PPS: надо же, читаю тут http://odnako.su/hi-tech/pc-hardware/-483565-obzor-i-sravnit.../ и вижу на перекликающуюся тему:

Спасибо за ссылку, почитаю на досуге.

Ответить | Правка | ^ к родителю #61 | Наверх | Cообщить модератору

63. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 31-Дек-16, 17:41 
Интересные советы там даются по написанию кода под Эльбрус. Из них можно сделать вывод, что с приложениями, написанными под x86, будут большие проблемы в производительности. Особенно большие будут по части межкомпьютерного протокольного обмена. Там используются невыровненные типы данных и упакованные структуры. А вот рекомендации по использованию static inline очень удивили. Я привык к обратному, использовать static inline только как замену большим макросам, т.к. упрощает процесс разработки и читабельность кода. В остальном же выгоднее использовать функции, если они часто вызываются, т.к. постоянное использование static inline будет просто напросто забивать будет TLB, из-за чего будет падать производительность.
Ответить | Правка | ^ к родителю #61 | Наверх | Cообщить модератору

43. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от Аноним (??) on 30-Дек-16, 19:13 
> Вот тебе и безопасный си...

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

А так вон в вебне ломают и без всяких сей. WormPress даже обозвали характерно. За это самое.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

47. "Обновление libpng 1.6.27 с устранением уязвимости"  +4 +/
Сообщение от Аноним (??) on 30-Дек-16, 21:05 
>> Вот тебе и безопасный си...
> Ну, понимаешь, "либы" на бидоне

Казалось бы, причем тут бидоны, но ... кто о чем, а подгорающий о своем, о неосиленном^W наболевшем.

> Хотя-бы потому что кроме
> как из бидона ниоткуда и не вызываются.

И откуда вы такие, ыкспертные знатоки всего и вся, беретесь только?

#include <Python.h>

int
main(int argc, char *argv[])
{
  Py_SetProgramName(argv[0]);  
  Py_Initialize();
  PyRun_SimpleString("import SimpleHTTPServer\n"
                     "import SocketServer\n"
                     "PORT = 8000\n"
                     "Handler = SimpleHTTPServer.SimpleHTTPRequestHandler\n"
                     "httpd = SocketServer.TCPServer(('localhost', PORT), Handler)\n"
                     "print \"serving at port\", PORT\n"
                     "httpd.serve_forever()\n"
  );
  Py_Finalize();
  return 0;
}



% gcc pytest.c $(pkg-config --cflags --libs python2)

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

53. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Crazy Alex (ok) on 31-Дек-16, 00:54 
Предлагаешь на любой чих таскать за собой питон и бороться с его версиями?
Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

71. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от Аноним (??) on 01-Янв-17, 01:43 
> Казалось бы, причем тут бидоны, но ... кто о чем, а подгорающий
> о своем, о неосиленном^W наболевшем.

Судя по вашему коменту - вам виднее.

> И откуда вы такие, ыкспертные знатоки всего и вся, беретесь только?
>

#include <Python.h> 

И все бы это замечательно, но это - не сишная либа. А если уж HTTP сервер из сей хочется - так есть lwan, без горбатой питонятины с ее версиепроблемами и прочими радостями. И быстрый как понос к тому же.

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

73. "Обновление libpng 1.6.27 с устранением уязвимости"  +4 +/
Сообщение от Аноним (??) on 01-Янв-17, 04:47 
>>> "либы" на бидоне спросом не пользуются. Хотя-бы потому что кроме как из бидона ниоткуда и не вызываются.
> И все бы это замечательно, но это - не сишная либа.

То либа на бидоне кроме как из бидона ниоткуда не вызывается, то это вдруг уже не сишная либа.  
> А если уж HTTP сервер из сей хочется - так есть lwan,

В общем, зачетный юлеж.


Ответить | Правка | ^ к родителю #71 | Наверх | Cообщить модератору

74. "Обновление libpng 1.6.27 с устранением уязвимости"  –1 +/
Сообщение от Аноним (??) on 01-Янв-17, 14:38 
> То либа на бидоне кроме как из бидона ниоткуда не вызывается, то
> это вдруг уже не сишная либа.

Я не знаю как еще понятнее тебе объяснить что сишники такой "либой" пользоваться не будут. Эти гады натурально смеют быть недовольны соломенной хижиной и выбирают кирпичи и бетон. Даже если ваша соломенная хижина и строится быстрее, ее эксплуатационные качества потом оставляют желать. И если либа на сях достаточно тривиально цепляется потом куда угодно и создает миниум проблем, то питона все это совершенно не касается. Наверное при сильном желании можно аналог libpng и на питоне накорябать. И даже потом изъ...ться вызвать это из какого-нибудь ruby. Но это будет редкостная порнография, в отличие от.

> В общем, зачетный юлеж.

Так не юли. Твои кривые эрзацы типа-либ мало кому нужны. Тем более что твой пример не показал собственно создание библиотечного реюзабельного компонента, если ты вдруг не заметил.

Ответить | Правка | ^ к родителю #73 | Наверх | Cообщить модератору

75. "Обновление libpng 1.6.27 с устранением уязвимости"  +1 +/
Сообщение от Аноним (??) on 01-Янв-17, 16:25 
>> То либа на бидоне кроме как из бидона ниоткуда не вызывается, то
>> это вдруг уже не сишная либа.
> Я не знаю как еще понятнее тебе объяснить что сишники такой "либой"
> пользоваться не будут.

Видишь ли, о великий знаток всего и вся, "не будут" и "не смогут" - две большие разницы.
https://docs.python.org/3/extending/embedding.html

>> В общем, зачетный юлеж.
> Так не юли. Твои кривые эрзацы типа-либ мало кому нужны.

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

Ответить | Правка | ^ к родителю #74 | Наверх | Cообщить модератору

8. "Обновление libpng 1.6.27 с устранением уязвимости"  +2 +/
Сообщение от Аноним (??) on 30-Дек-16, 11:34 
какая то странная "уязвимость", больше похоже на "баг"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Ящ (ok) on 30-Дек-16, 11:41 
Круто. Как нашли баг?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Обновление libpng 1.6.27 с устранением уязвимости"  +4 +/
Сообщение от Куяврег on 30-Дек-16, 12:59 
> Миллионы пар попенсорц-глаз 20 лет искали уязвимость.

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

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

20. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 30-Дек-16, 13:11 
21

> The current public release, libpng 1.6.27, fixes a 21-year-old null- pointer dereference (see warning below) and includes some minor build tweaks.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

21. "Обновление libpng 1.6.27 с устранением уязвимости"  +7 +/
Сообщение от anonimous on 30-Дек-16, 13:14 
А libpng, кстати, и этой вашей проприетарной pvs-studio проверяли, и как-то упустили сию уязвимость.
Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

18. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Аноним (??) on 30-Дек-16, 13:08 
Когда ждать deb'ы для Trusty 14.04 LTS? (поддержка же вроде бы до 2019 года должна быть)
https://launchpad.net/libpng/+packages
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

38. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от iZEN email(ok) on 30-Дек-16, 17:10 
На FreeBSD вчера обновили - http://www.freshports.org/graphics/png/
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

49. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Я. Р. Ош on 30-Дек-16, 22:42 
И че? В генту тоже вчера.
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

50. "Обновление libpng 1.6.27 с устранением уязвимости"  –2 +/
Сообщение от iZEN (ok) on 30-Дек-16, 22:45 
> И че? В генту тоже вчера.

А где посмотреть список последних обновлений?


Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

56. "Обновление libpng 1.6.27 с устранением уязвимости"  +/
Сообщение от Черный Властелин on 31-Дек-16, 03:40 
Не поверишь, eix-diff
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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