The OpenNET Project / Index page

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

08.12.2018 10:36  Уязвимости в PHP и PHPMailer

В опубликованных на днях корректирующих обновлениях PHP 5.6.39, 7.0.33, 7.1.25 и 7.2.13 устранена неприятная уязвимость (CVE-2018-19518) в штатном PHP-дополнении IMAP, выявленная ещё в октябре. Уязвимость позволяет атаковать web-приложения для работы с электронной почтой или обойти системные ограничения доступа к функциям, выставляемые через опцию disable_functions в php.ini.

В случае запрета вызовов, подобных exec, system, shell_exec и passthru, уязвимость даёт возможность выполнить произвольный shell-код, в случае когда злоумышленники могут загрузить свой PHP-код на сервер (например, для продолжения атаки после эксплуатации уязвимостей в плагинах для загрузки пользовательских файлов). Уязвимость также может применяться для атаки на webmail-клиенты, позволяющие установить произвольное имя imap-сервера и передающих его в вызов imap_open без дополнительной проверки.

Суть проблемы в том, что функция imap_open, через которую осуществляется открытие соединения с IMAP-сервером, позволяет указать дополнительные параметры для обращения к почтовому ящику по сети. Возможно обращение к почтовому ящику на удалённом хосте не только с использованием протокола IMAP, но и по SSH (вызывается команда rsh, но в большинстве дистрибутивов она перенаправлена на ssh). SSH можно передать дополнительные параметры, в том числе через указание опции "-oProxyCommand=" можно определить команду для запуска прокси. Вместо прокси можно указать любой код, который будет выполнен при вызове функции imap_open. Для блокирования уязвимости в новых выпусках по умолчанию отключено обращение imap_open по rsh/ssh (imap.enable_insecure_rsh=false).

Концептуальный прототип эксплоита:


   $server = "x -oProxyCommand=echo\tZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64\t-d|sh}";
   imap_open('{'.$server.':143/imap}INBOX', '', '') or die("\n\nError: ".imap_last_error());

Кроме того, раскрыты сведения об уязвимости (CVE-2018-19296) в PHPMailer, популярной библиотеке для организации отправки электронных писем из приложений на языке PHP, число пользователей которой оценивается в 9 миллионов (используется в WordPress, Drupal, 1CRM, SugarCRM, Yii и Joomla). Уязвимость позволяет организовать выполнение кода через подстановку ссылки на phar-файл в составе пути, например, при отправке письма с вложением или через манипуляции с параметрами DKIM. Устраняющее проблему исправление включено в состав релиза PHPMailer 6.0.6.

Полученный файл перед отправкой на email проверяется при помощи функции file_exists(), которая автоматически выполняет десериализацию метаданных из файлов Phar (PHP Archive) при обработке путей, начинающихся с "phar://", что позволяет применить технику атаки "Phar deserialization". Организовав загрузку специально оформленного Phar-файла под видом вложения, злоумышленник может добиться выполнения своего кода на сервере. Так как функция file_exists() определяет MIME-тип по содержимому, а не по расширению, возможна передача phar-файла под видом картинки (например, phar-файл будет разобран, если его передать как evil.jpg). Похожая уязвимость недавно была выявлена в phpBB.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Неосмотрительное использование плагина jQuery-File-Upload делает многие сайты уязвимыми
  3. OpenNews: Уязвимость в движке для создания форумов phpBB
  4. OpenNews: Уязвимость, позволяющая удалённо выполнить код на сервере PHP-репозитория Packagist
  5. OpenNews: Критическая уязвимость в PHPMailer, применяемом в WordPress, Drupal и Joomla
  6. OpenNews: В PHPMailer выявлена ещё одна критическая уязвимость, вызванная недоработкой в PHP
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Blind Vic (ok), 11:09, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +1 +/
    >  устранена неприятная уязвимость

    Бывают приятные уязвимости?

     
     
  • 2.5, commiethebeastie (ok), 11:31, 08/12/2018 [^] [ответить]    [к модератору]
  • +16 +/
    В айфонах которые.
     
  • 1.2, пох (?), 11:11, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    то-то я удивлялся, чего это php_imap после установки не включается автоматически, как это происходит с любым нормальным модулем. Видимо, кто-то когда-то заглядывал в его прекрасный код и сделал выводы...

    что же, ждем новую серию ssh'ных червяков - теперь через PHPmailer и imap-через-ssh впридачу... время безумных гуанокодеров :-(

     
     
  • 2.3, annual slayer (?), 11:28, 08/12/2018 [^] [ответить]    [к модератору]
  • +1 +/
    зато можно сделать бложик с комментиками!
     
  • 2.49, Онаним (?), 11:26, 09/12/2018 [^] [ответить]     [к модератору]
  • +2 +/
    Ну согласись, передавать юзеринпут в параметры модуля имап да и в любые другие ... весь текст скрыт [показать]
     
     
  • 3.55, пох (?), 13:15, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    воркер просто обломится об out of memory, и ничего интересного не произойдет ес... весь текст скрыт [показать]
     
     
  • 4.61, Онаним (?), 13:36, 09/12/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    1 Зависит от контекста Окей, подбираем значения под размер памяти, и дальше уж... весь текст скрыт [показать]
     
     
  • 5.65, пох (?), 16:59, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Согласись, допустим в генераторе thumbnails логично проверить размерчик, который хочет
    > пользователь, не?

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

    > Добавляем tunables в конфигурацию

    сколько tunables мы туда добавим и какого она в итоге будет размера, если на всяк чих наздравствоваться?
    Я еще могу понять, если размер превьюшки выбирается слайдером - воткнуть проверку соответствия диапазону слайдера присылаемых значений (если нет - нас пытаются поломать).

    но в целом это тоже достаточно бессмысленные телодвижения, когда нельзя четко определить, какой user input заведомо невалиден, а какой нет, и приходится на ровном месте рисовать новые и новые проверки.

    пока программка простенькая - это будет прокатывать (если спрашивать отдельным диалогом для того же imap host/port/user/password - проверить просто. Если парсить урлы imap:// генеримые кем-то третьим - то, внезапно, все становится непонятно.)

    и да, отдельный вопрос - сколько в мире настоящих серверов imap, реально требующих ssh для работы с ними и кто их странные пользователи?

    по-моему, очевидно - overengineering - зло.

     
  • 4.62, Онаним (?), 13:39, 09/12/2018 [^] [ответить]     [к модератору]  
  • +3 +/
    Суть в том, что пых, как и сишечка, кодера от выстрела себе в ногу не защищает н... весь текст скрыт [показать]
     
  • 1.4, Аноним (4), 11:29, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Пора на WT?
     
  • 1.7, Аноним (7), 12:29, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Дыра с phar так и осталась нерешенной. Suhosin вам не поможет, только смена языка разработки.
     
     
  • 2.12, пох (?), 12:50, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    фффпринципе, полагаю, там хватит однострочного патча в легко находимом месте кода.
    Но вот сколько и чего при этом поломается...

     
  • 2.32, Аноним (32), 19:28, 08/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Нахрен он его вообще распаковывает Чтобы проверить файлы унутре file_exists ... весь текст скрыт [показать]
     
     
  • 3.51, пох (?), 12:52, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Нахрен он его вообще распаковывает? Чтобы проверить файлы "унутре"?

    да.
    во всяком случае семантика такая. А что это нахрен никому не надо - авторов не беспокоило.

     
  • 2.47, Онаним (?), 11:22, 09/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Вы передаёте поданное пользователем имя файла ("phar://...") в файловые операции над локальной ФС?
    У меня для вас плохие новости.
     
     
  • 3.52, пох (?), 13:01, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    да, передаем, потому что этот файл создан пользователем и имеет придуманное этим... весь текст скрыт [показать]
     
     
  • 4.56, Онаним (?), 13:18, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Не надо хранить в базе то, что надо хранить в ФС Но вот 100 валидации пользова... весь текст скрыт [показать]
     
     
  • 5.70, пох (?), 18:15, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Передали что-то, отличное от валидного имени файла

    anon[1025] ~>  mkdir phar:
    anon[1026] ~> touch phar:/test.jpg
    anon[1027] ~> ls -la phar://test.jpg
    -rw-r--r-- 1 anon users 0 Dec  9 18:07 phar://test.jpg
    что невалидного в данном имени файла?

    (сейчас начнется верчение ужом и классификация файлов на правильные и неправильные)

    > А то вам так и ../../../config/database_password.php для чтения передадут, и вы это
    > благополучно сжуёте.

    мы это можем (в отличие от вышеприведенного) проверить, причем двумя разными способами - честно распарсить путь (возможно - валидный, потому что все это происходит в ../../../../user-uploads/ !) или просто решить что parent-ссылки у нас запрещены - правильнее, безусловно, первое.

    ну, разумеется, правильнее - в языке, где проверка существования файла не ведет к выполнению кода, а не в php.

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

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

     
     
  • 6.71, Онаним (?), 18:43, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    В данном случае невалиден мозг, разрешивший передавать аж целые каталоги в юзеринпуте.
     
     
  • 7.74, пох (?), 18:46, 09/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    понятно все с вашими мозгами, гражданин пхп-обезьян.

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

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

     
  • 4.57, Онаним (?), 13:21, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Это может понадобиться, когда ты используешь phar для доступа к собранным в о... весь текст скрыт [показать]
     
     
  • 5.66, пох (?), 17:04, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Это может понадобиться, когда ты используешь phar:// для доступа к собранным в один пакет
    > данным приложения.

    и зачем оно вдруг имеет расширение .jpg?
    Отдельный вопрос - зачем вы используете апи для работы с файловой системой для работы с _исполняемым_кодом_? (ладно бы phar был просто архивом, это было бы относительно безобидной фичей языка)

    > То же, что кто-то вдруг в наличии символа / в переданном ЮЗЕРОМ

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

     
     
  • 6.72, Онаним (?), 18:44, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Будем проверять все конкретные расширения? Сегодня жпг, завтра гиф, послезавтра мп10?
    Не проще сразу изолироваться от возможных ошибок, храня юзерские имена отдельно от контента? А то юзер может захотеть ../../../etc/passwd похранить нечаянно, тоже будем?
     
     
  • 7.76, пох (?), 18:49, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Будем проверять все конкретные расширения?

    да. Очевидно, что если файл имеет расширение .jpeg, а внутри postscript - это хуже чем ошибка, это преступление.

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

    И тем более надо отказываться выполнять исполняемый код, не имеющий правильного оформления в виде имени файла.

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

     
  • 7.84, пох (?), 19:31, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > А то юзер может захотеть ../../../etc/passwd похранить нечаянно, тоже будем?

    а, кстати, почему нет, может он бэкап своего контейнера выложил? Разумеется, ниже ../../../backup/

    запретим пользоваться относительными путями?

    или все же может перестанем десериализовывать .jpeg при проверке его существования?

    с моей точки зрения выбор между этими двумя вариантами очевиден.

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

     
     
  • 8.98, Онаним (?), 09:27, 11/12/2018 [^] [ответить]    [к модератору]  
  • +/
    В имени файла, переданном пользователем типовому публичному web-приложению, вообще не может существовать никаких путей. Хочешь выкладывать бэкап контейнера - выкладывай в tar.

    Если приложение не носит характер публичного web-приложения, там уже можно делать что угодно, понимая последствия.

     
  • 6.73, Онаним (?), 18:46, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > юзер его не передает  - юзер выбирает путь, в удобной менюшечке интуитивно приятного интерфейса

    И вот тут ты очень правильно попал: в этом случае выбранное валидируется согласно этой самой менюшечке при любом доступе. Не просто берём переданный с потолка путь и открываем, а сравниваем на предмет присутствия в этой менюшечке. Не присутствует - в баню.

     
     
  • 7.78, пох (?), 18:54, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > а сравниваем на предмет присутствия в этой менюшечке

    функцией file_exists, да?

    (менюшечка была в форме, сейчас нам POST пришел - с параметрами заполненными с этой менюшечки...или не этой...хехе. Зашифруем всю форму и отправим вместе с постом, на предмет детальной проверки (еще pgp подписать не забудьте), так мыслит типичный *хороший* php-кодер?)

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

     
     
  • 8.88, Онаним (?), 20:15, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Менюшечка из libastral.so? Если нет, то описатель этой менюшечки есть сервер-сайд, не надо ничего лишнего отправлять.
     
     
  • 9.91, пох (?), 23:00, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Если нет, то описатель этой менюшечки есть сервер-сайд, не надо ничего лишнего отправлять.

    ну ок, храни ее вечно - пока пользователь то ли нажмет submit, то ли передумает, то ли пойдет пообедать.

    в принципе, когда траффик был дорогой, мы так и делали.

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

    нет, ты правда считаешь ЭТО хорошим языком?
      

     
     
  • 10.92, Онаним (?), 09:09, 10/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Да, правда. PHP - очень удачная обёртка в виде небольшого рантайма с динамической сборкой поверх тонны сишных библиотек. Удачнее не получилось, не получалось и не получается ни у кого уже лет 30.
     
  • 1.8, Аноним (8), 12:35, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >However, the unserialize is triggered for the phar:// wrapper in any file operation.

    Это - не уязвимость. Это - бекдор.

     
     
  • 2.11, Аноним (8), 12:47, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Извиняюсь, невнимательно прочитал. Это не уязвимость и не бэкдор. Это странный дизайн функций, задействующий фильтры через модификацию строк вместо ООП.
     
     
  • 3.41, Аноним (41), 04:43, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Функция может проверить содержится до файл в архиве или на фтп, что удобно
    Несомненно эта возможность является бэкдором
     
  • 2.14, Аноним (7), 13:08, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Там ведь можно еще заюзать udp:// tcp:// stream:// и tls:// верно?
     
  • 2.48, Онаним (?), 11:23, 09/12/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Это не бэкдор, это очень удобный механизм К сожалению, в кривых руках, привыкши... весь текст скрыт [показать]
     
     
  • 3.86, Аноним (86), 20:08, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Ага. я сам язык ниучём неуноват.
     
     
  • 4.87, Онаним (?), 20:15, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    А никто вам защиту от выстрела в ногу не гарантировал )
     
     
  • 5.89, Аноним (86), 22:15, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Слово "гарантировал" в разработке ПО не используется. Поэтому аргумент не засчитывается.

    Разворачивать не стану, всё равно мой пост по политическим причинам сотрут и вы его не увидите.

     
  • 1.15, Аноним (15), 14:05, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    Интересно было бы узнать, где и с чем работают все эти немногочисленные хейтеры php и systemd.
     
     
  • 2.16, Аноним (7), 14:14, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    ErlangVM, Rust, Python3, Golang, NodeJS, & Ruby.
     
     
  • 3.17, Vitaliy Blats (?), 14:34, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > ErlangVM, Rust, Python3, Golang, NodeJS, & Ruby.

    И шо, уже есть нормальные известные проекты на этом?)

     
     
  • 4.20, Аноним (20), 16:05, 08/12/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Есть Только никто не признаётся, на чём его проект, а то мамкины хацкеры, если ... весь текст скрыт [показать]
     
     
  • 5.22, пох (?), 16:17, 08/12/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    скачают типовой эксплойт для поделок на ror, node и что там у вас еще за хлам, а... весь текст скрыт [показать]
     
     
  • 6.24, Аноним (24), 16:48, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    ROP Gadget в твою вордпреску, скомпилят как модуль ядра и подгрузят.
     
  • 6.31, Аноним (31), 18:58, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > ror, node ... в жанге

    Это все варианты, которые вам известны?

     
     
  • 7.34, пох (?), 21:49, 08/12/2018 [^] [ответить]     [к модератору]  
  • +/
    не, это что я сходу у себя в логе нашел, помимо coldfusion а и миллиона чего э... весь текст скрыт [показать]
     
     
  • 8.39, Sw00p aka Jerom (?), 01:10, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    поищи че нить такое 24 7B 28 23_memberAccess 5B 22allowStaticMethodAccess 22... весь текст скрыт [показать]
     
     
  • 9.43, пох (?), 09:28, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    а, точно, cpyt-c же ж Не, такие продвинутые ко мне редко ходют, им проще подава... весь текст скрыт [показать]
     
  • 5.23, Vitaliy Blats (?), 16:39, 08/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Значит нету Что в принципе и требовалось доказать Почти все фронтенды пишутся ... весь текст скрыт [показать]
     
     
  • 6.29, Аноним (31), 18:51, 08/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Угу Чтоб он РАБОТАЛ так, как нужно заказчику не только на момент приёмки от ... весь текст скрыт [показать]
     
     
  • 7.36, пох (?), 21:54, 08/12/2018 [^] [ответить]     [к модератору]  
  • +/
    через год этот заказчик уже банкрот и сдает квартиру, благо ипотеку выплатил в ж... весь текст скрыт [показать]
     
  • 7.42, Аноним (41), 08:26, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Так не бывает. Поддерживать и исправлять уязвимости нужно постоянно и на любом языке.
     
     
  • 8.64, Аноним (64), 14:13, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Дык отож Только одно дело раз в день по диагонали просматривать письма от log a... весь текст скрыт [показать]
     
  • 6.37, User (??), 22:51, 08/12/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    >(а значит программисты на нем более дешевле),

    "более дешевле", да... ПыХаПэ-культура в двух словах, ага. Портрет явления, тскзть.
    За PHP Марьванна двойки не ставит - погнали, посоны!!!111

     
  • 6.85, Sw00p aka Jerom (?), 19:46, 09/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    >>Почти все фронтенды пишутся на PHP

    фронтенды на пхп не пишут :)

     
  • 4.27, Аноним84701 (ok), 17:47, 08/12/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Если вы ничего не слышали о CloudFlare, GitHub, dl google и Netflix, то у меня д... весь текст скрыт [показать]
     
     
  • 5.44, пох (?), 09:38, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    окей, любитель приятных новостей - ни в какой из этих я работать не хочу, они ту... весь текст скрыт [показать]
     
     
  • 6.59, Аноним84701 (ok), 13:28, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Держите нас в курсе Нам ведь почти интересно Заметим, что тут еще и ловкая п... весь текст скрыт [показать]
     
     
  • 7.67, пох (?), 17:07, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    ну ок, так и запишем - "в основном - нигде, основная ниша - внутренняя кухня аж трех громадных ентер-прайсов с сотными тысяч одних курьеров и вообще специфическими задачами и подходами к их решениям, то есть для обычных смертных == нигде"

     
  • 4.40, НяшМяш (ok), 02:45, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    github.com ?
     
  • 3.19, Аноним (19), 16:00, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Иными словами - в основном, нигде.
     
     
  • 4.25, Аноним (24), 16:50, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Пыхапистам виднее, ведь эти мамкины разработчики уже всему научены.
     
     
  • 5.26, Vitaliy Blats (?), 16:56, 08/12/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    Если язык для своего понимания, требует какие-то особые скиллы и особую уличную ... весь текст скрыт [показать]
     
     
  • 6.30, Аноним (31), 18:53, 08/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Если разработчик не имеет хотя бы минимальной подготовки и набора скиллов, он УЖЕ НА СТАРТЕ не нужет.
     
     
  • 7.33, Анонн (?), 19:31, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Если разработчик не имеет хотя бы минимальной подготовки и набора скиллов, он УЖЕ НА СТАРТЕ не нужет.

    Осторожнее, эта братия при сильном негодовании не только бананами закидать может!


     
  • 7.35, пох (?), 21:52, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    как это не нужен? А кто мне будет за пиццот рублев чинить сдохший битрикс? Мне что, самому мараться?

     
     
  • 8.63, Аноним (64), 13:45, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > битрикс

    ып... ып... ып... ыбуэээ....

     
     
  • 9.80, пох (?), 18:57, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    буэ свое можешь откладывать сколько влезет, только не на мой столик - мне чтоб завтра сайт заработал, сделаешь - 500 рублей получишь.

    и ведь делают же ж :-(

     
  • 3.38, vedronim (?), 23:06, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Это все, что ты смог нагуглить о языках?
     
     
  • 4.50, Аноним (7), 12:15, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Erlang/Ruby -> +Elixir
    + Crystal
    Nim
    Elm
    Dlang
    Haskell
    Scala
    Kotlin
    Swift
    Ponylang
     
  • 2.90, Аноним (86), 22:18, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > немногочисленные хейтеры php

    Определение слова "хейтер" и статистику по многочисленности - в студию.

    А то есть подозрение, молчек, что ты балабол.

     
     ....нить скрыта, показать (32)

  • 1.45, Онаним (?), 11:09, 09/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Уязвимость выглядит как дерьмо, и реально дерьмо, но причина таковой - передача юзеринпута в различные вызовы без валидации.

    Кодер, помни: если ты забираешь что угодно ($server) с юзеринпута и фигачишь в вызовы библиотек (imap_open) без проверки на соответствие формата и валидность (в данном случае - доменное имя и возможно :порт) - в программировании тебе не место, да и руки видимо надо экстренно выпрямлять.

     
     
  • 2.53, пох (?), 13:09, 09/12/2018 [^] [ответить]     [к модератору]  
  • +/
    проверку как производить будем - высунем окошко и будем ждать модератора-человек... весь текст скрыт [показать]
     
     
  • 3.58, Онаним (?), 13:23, 09/12/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    В данном конкретном случае - регэкспом Валидный формат доменного имени вполне с... весь текст скрыт [показать]
     
     
  • 4.69, пох (?), 17:16, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    ну и зачем, зачем тогда вы накрутили в imap_open какие-то другие операции с этим $server без явного указания ?

    Кому оно надо, если от юзера мы такое не принимаем, спрашивается?

    очередной ненужный и опасный оверинжиниринг, прикрываем регекспами, как всегда.

    валидный формат доменного имени в эпоху юникодного мусора в dns - нечто уму непостижимое, если что. Я хз как его на валидность проверять (разьве что развернув сперва в punicode)

     
     
  • 5.75, Онаним (?), 18:48, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    А затем, что у imap_open овердохера применений. И накрутили не совсем в пхп, а в либц-клиенте.

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

     
     
  • 6.81, пох (?), 19:03, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > А затем, что у imap_open овердохера применений.

    честно говоря, применение в виде imap over rsh мне представляется требующим при сборке -DIWANNATHISSHITFULLMOUTH и еще пятнадцати рандомных чисел в правильной последовательности.

    применение в виде imap over rsh replaced by ssh - ну, может быть, какому-то ретрограду (считающему еще и ssh достаточно безопасным и надежным способом доступа к удаленному серверу без всякого основания) и надо, но скорее всего он mutt через вручную сконфигуренный туннель запустит, а ЭТО вообще ни один нормальный человек не использует.

    очередной типовой оверинжиниринг - ну ок, на сей раз не в php, видимо.

    > Если может быть только хостнейм

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

     
  • 1.46, Онаним (?), 11:17, 09/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Что же до пыхмейлера - 250+ кб кода, чтобы банально сформировать и отправить MIME - пользующиеся этим счастьем ссзб и должны страдать :)
     
     
  • 2.54, пох (?), 13:10, 09/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    где посмотреть на твои 25 строк кода, делающих то же самое? (exec metamail не катит)
     
     
  • 3.60, Онаним (?), 13:30, 09/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Широкой публике - нигде.
    Чекнул у себя Email.php - 344 строки кода, 13.5 кб. Умеет mail(), SMTP (со STARTTLS), автоматически создаёт text/plain вложение из HTML, умеет аттачменты. Из того, что умеет PHPMailer - не умеет инлайн изображения (возложено на приложение), не умеет DKIM-подпись, не умеет OAuth и POP3-before-SMTP. Но это не стоит 200 кб.
     
     
  • 4.68, пох (?), 17:12, 09/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    ну молодец, возьми с полки пирожок. Судя по отсутствию у тебя желания публиковать этот код - в нем есть, хехе, ньюансы.

    dkim и pop скорее всего реализуются банальными встроенными средствами (раз уж у нас imap внезапно сам без спросу лезет в ssh, то уж тут-то, поди, один лишний флажок поставить) так что, полагаю, дело все же не в этом.

     
     
  • 5.77, Онаним (?), 18:52, 09/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Насчёт "скорее всего" по DKIM и POP - нет, в пхпмейлере там всё ногами, то есть руками. При этом им зачем-то приходится заголовки обратно разбирать при формировании, что добрую долю оверблоута добавляет.
     
     
  • 6.82, пох (?), 19:07, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    так его писали десять лет назад, если не больше - там еще много чего руками, что в php5.2 было только руками и можно. Понятно что пора уже напрячься и почистить... ну я чо, я менеджеров пнул, кодеры уже в пятницу выбежали с лопатами, няхай шкрябают.

    а в самопальном коде под 7.2+ скорее всего обойдется, но вряд ли это повод гордитьтся что уложился в одну переменную вместо тысяч строк кода. Просто это уже сделали за тебя (и не факт что хорошо ;-)


     
  • 5.79, Онаним (?), 18:57, 09/12/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    Ну и да, никаких "нюансов", влияющих на функционирование, там нет.

    Просто с поветрием современных оверблоутных PSR'ов с композерами, 100500 классами в 3 строчки, неймспейсами на каждый чих и прочими прелестями публиковать "чистые" олдскульные либы (1 либа/класс - 1 полностью реализованный функционал) бессмысленно.

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

     
     
  • 6.83, пох (?), 19:09, 09/12/2018 [^] [ответить]    [к модератору]  
  • +/
    ну фиг знает - если код хороший - есть смысл его выложить, один использовавший вместо пхпмэйлера - минус один (а может и десяток) источник спама и попыток хакнуть, тоже неплохо.

     
  • 6.94, Gemorroj (ok), 12:57, 10/12/2018 [^] [ответить]    [к модератору]  
  • +/
    да трендишь 100%, наверняка там вагон и телега багов будет с юникодом каким-нибудь и проч.
    и еще у тебя так же наверняка будут уязвимости. ты же ничего не знал про уязвимости в imap_open и утащил к себе 100500 строк сишного кода в виде php интерпретатора, чтобы "сформировать и отправить MIME".
     
     
  • 7.95, ваш КО (?), 14:55, 10/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    imap_open не имеет прямого отношения к отправке почты, которой занимается PHPMailer или его самодельная замена в 300 строк

     
  • 7.97, Аноним (97), 15:33, 10/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Всё куда проще, я $_GET в вызовы не передаю, предварительно не обработав во все поля. Ни одна библиотека от криворукости не застрахует.
     
  • 1.93, Gemorroj (ok), 12:51, 10/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    новость об уязвимостях написали, а об релизе пхп 7.3 нет. совпадение? не думаю)
     
     
  • 2.99, Аноним (99), 12:26, 11/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Вы рандомом что-ли новости для чтения выбирайте Новость про PHP 7 3 была за ден... весь текст скрыт [показать]
     

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


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