В этой статье я поделюсь с вами долгой историей, которая начинается с op.read()
opendalЧитать полностью »
Рубрика «glibc»
std fs в Rust медленнее, чем Python? Нет, это аппаратный баг
2023-12-02 в 10:53, admin, рубрики: amd, glibc, jemalloc, malloc, pymalloc, аппаратные проблемы40 лет GNU
2023-10-17 в 8:01, admin, рубрики: Ansible, BSD, drupal, FSF, gcc, glibc, GNU, GPL, linux, timeweb_статьи, ОС, открытый исходный код, ПО, принтер, ричард столлманОперационные системы имеют основополагающее значение для Интернета, каким мы его знаем сегодня, поскольку в настоящее время они обеспечивают работу миллионов серверов, компьютеров и других встроенных вычислительных устройств. Отдельное почётное место среди этого занимает ОС Linux (или GNU/Linux), используемая миллиардами человек во всём мире.
GNU — Unix-подобная ОС с открытым исходным кодом, созданная 40 лет назад в 1983 году Ричардом Столлманом. GNU поддерживается Фондом свободного программного обеспечения (FSF), который первоначально был основан вокруг этого проекта, хотя позже он расширился и стал поддерживать другие проекты свободного ПО.
Если посмотреть на зарождение движения за свободное ПО — оно начинается с GNU. Система GNU — это не просто наиболее широко используемая ОС, основанная на свободном ПО. GNU также лежит в основе философии, которая направляла движение за свободное ПО на протяжении сорока лет.
А всё началось с плохо работающего принтера…
Читать полностью »
Пасхалки в DNS
2022-08-10 в 9:00, admin, рубрики: BIND, bind9, DNS, glibc, linux, ruvds_статьи, Блог компании RUVDS.com, Пасхалки, Сетевые технологии, Стандарты связи
Figure 1. Комикс xkcd на злобу дня
Всё это в полной мере относится к подсистеме разрешения имён, aka name resolving, и DNS, как современной и наиболее полноценной реализации этой ключевой технологии. В качестве такового DNS пережил разнообразных саблезубых тигров и археоптериксов вроде YP/NIS/NIS+ эпохи накопления битов, вследствие чего в нём набралось немало артефактов и пасхальных яиц. Иногда их обнаруживают случайно при раскопках с помощью dig
, но есть также и новые, нестандартные применения старого механизма.Читать полностью »
История двух стандартных библиотек Си
2020-09-28 в 7:50, admin, рубрики: glibc, musl, musl-vs-glibc, Анализ и проектирование систем, безумие отладки, ненормальное программирование, Программирование, Си, системное программирование, стандартная библиотекаСегодня мне пришел баг-репорт от пользователя Debian, который скормил какую-то ерунду в утилиту scdoc и получил SIGSEGV
. Исследование проблемы позволило мне провести отличное сравнение между musl libc
и glibc
. Для начала посмотрим на стектрейс:
==26267==ERROR: AddressSanitizer: SEGV on unknown address 0x7f9925764184
(pc 0x0000004c5d4d bp 0x000000000002 sp 0x7ffe7f8574d0 T0)
==26267==The signal is caused by a READ memory access.
0 0x4c5d4d in parse_text /scdoc/src/main.c:223:61
1 0x4c476c in parse_document /scdoc/src/main.c
2 0x4c3544 in main /scdoc/src/main.c:763:2
3 0x7f99252ab0b2 in __libc_start_main
/build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
4 0x41b3fd in _start (/scdoc/scdoc+0x41b3fd)
В исходниках на данной строчке написано вот что:
if (!isalnum(last) || ((p->flags & FORMAT_UNDERLINE) && !isalnum(next))) {
Подсказка: p
— это корректный, ненулевой указатель. Переменные last
и next
имеют тип uint32_t
. Сегфолт случается на втором вызове функции isalnum
. И, самое важное: воспроизводится только при использовании glibc, но не musl libc. Если вам пришлось перечитать код несколько раз, вы не одиноки: тут попросту нечему вызывать сегфолт.Читать полностью »
Как Linux’овский sort сортирует строки
2020-05-26 в 16:27, admin, рубрики: glibc, linux, Программирование, Разработка под Linux, сортировкаВведение
Всё началось с короткого скрипта, который должен был объединить информацию об адресах e-mail сотрудников, полученных из списка пользователей почтовой рассылки, с должностями сотрудников, полученными из базы отдела кадров. Оба списка были экспортированы в текстовые файлы в кодировке Юникод UTF-8 и сохранены с юниксовскими концами строк.
Содержимое mail.txt
Иванов Андрей;ia@example.com
Содержимое buhg.txt
Иванова Алла;маляр
Ёлкина Элла;крановщица
Иванов Андрей;слесарь
Абаканов Михаил;маляр
Для объединения файлы были отсортированы юниксовской командой sort и поданы на вход юниксовской программе join, которая неожиданно завершилась с ошибкой:
$> sort buhg.txt > buhg.srt
$> sort mail.txt > mail.srt
$> join buhg.srt mail.srt > result
join: buhg.srt:4: is not sorted: Иванов Андрей;слесарь
Просмотр результата сортировки глазами показал, что в целом сортировка правильная, но в случае совпадений мужских и женских фамилий, женские идут перед мужскими:
$> sort buhg.txt
Абаканов Михаил;маляр
Ёлкина Элла;крановщица
Иванова Алла;маляр
Иванов Андрей;слесарь
Выглядит как глюк сортировки в Юникоде или как проявление феминизма в алгоритме сортировки. Первое, конечно, правдоподобнее.
Resolve IP адресов в Linux: понятное и детальное описание
2018-03-29 в 7:28, admin, рубрики: devops, getaddrinfo, glibc, hosts, IPv4, IPv6, linux, network, nss, resolve, Разработка под Linux, Серверное администрированиеНастройка сетевого взаимодействия сервисов не самая простая задача и часто осуществляется без глубокого понимания как требуется настраивать систему и какие настройки на что влияют. После миграции сервисов в docker контейнерах с centos 6 на centos 7 я столкнулся со странным поведением вебсервера: он пытался присоединиться к сервису по IPv6, а сервис же слушал только IPv4 адрес. Стандартный совет в такой ситуации — отключить поддержку IPv6. Но это не поможет в ряде случаев. Каких? В этой статье я задался целью собрать и детально объяснить как приложения resolve
'ят адреса.
Тернистый путь Hello World
2017-10-12 в 9:55, admin, рубрики: abi, C, c++, glibc, startup, Разработка под LinuxВдохновение на написание данной статьи было получено после прочтения похожей публикации для архитектуры x86 [1].
Данный материал поможет тем, кто хочет понять, как устроены программы изнутри, что происходит до входа в main и для чего всё это делается. Также я покажу как можно использовать некоторые особенности библиотеки glibc. И в конце, как и в оригинальной статье [1] будет визуально представлен пройденный путь. В большинстве своём статья представляет собой разбор библиотеки glibc.
Итак, начнём наш поход. Будем использовать Linux x86-64, а в качестве инструмента отладки — lldb. Также иногда будем дизассемблировать программу при помощи objdump.
Исходным текстом будет обычный Hello, world (hello.cpp):
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
}
Security Week 51-52: Нестандартный топ новостей 2016
2016-12-23 в 3:48, admin, рубрики: apple против фбр, glibc, keyring, klsw, oauth, Блог компании «Лаборатория Касперского», информационная безопасность, итоги года, случайные числаНу вот опять, никто не ожидал, а год внезапно закончился. Пора подводить итоги, и уже третий год подряд я предпочитаю делать это нестандартно. Единственным критерием для отбора новости в топ является ее популярность на новостном сайте Threatpost. Да, это не самый объективный способ оценки важности того или иного события. Но и не самый плохой: аудитория Threatpost обычно игнорирует откровенную политоту и уделяет немало внимания событиям, на которые нужно реагировать либо вот прямо сейчас, либо тем, что стоит запомнить на будущее.
Напомню, в обзоре за 2015 год у нас были уязвимости в интернете вещей (ну ладно, в роутерах), шифрование данных, серьезная уязвимость Stagefright в Android и дыра в GLIBC, а также сложносочиненные атаки — Carbanak и The Equation. В 2014-м: уязвимость POODLE в SSLv3, Shellshock и Heartbleed и, внезапно, стеганография PNG-картинками.
В этом году «пятерка» популярных новостей выглядит отчасти похоже: дело Apple против ФБР, дыры в GLIBC (опять!) и в ядре Linux, проблемы с OAuth и вопросы генерации надежных случайных чисел из ненадежных источников.
Читать полностью »
Security Week 07: Apple против ФБР, глобальная уязвимость в glibc, криптолокеры и медицина
2016-02-20 в 13:53, admin, рубрики: all writs, apple, fbi, glibc, klsw, ransomware, Блог компании «Лаборатория Касперского», информационная безопасностьНеделя с лишним рабочим днем выдалась насыщенной и сбалансированной. События вокруг спора между Apple и американскими госорганами в лице ФБР и Минюста продолжают развиваться, но уже сейчас ясно, что они серьезно повлияют на развитие индустрии безопасности в части защиты личной информации. В отличие от этой чисто политической истории, критическая уязвимость в библиотеке glibc представляет собой новость абсолютно техническую, но, прямо или косвенно, тоже затрагивает всех.
Хочется сказать, что на этой неделе активизировался спор за возможность влиять на развитие технологий: между, так сказать, технарями и гуманитариямиполитиками. Первые руководствуются возможностью реализовать ту или иную функциональность в софте и железе, вторые — необходимостью договариваться с различными заинтересованными сторонами. На самом деле спорят не об этом. Технологии всегда развиваются независимо от того, согласны ли с этим окружающие или нет. Выводя свой спор с ФБР в общественное пространство, Apple борется за то, чтобы оставаться в авангарде этого самого технического развития. Иными словами, если Apple проиграет, и реальная (а то и воображаемая!) защищенность устройств компании каким-то образом пострадает, это не значит, что за всеми нами обязательно будет следить большой брат. Это значит, что условный вымпел с надписью «самый безопасный смартфон» перехватит какая-то другая компания.
Впрочем, это только гипотеза. Не исключено, что пока мы все бурно обсуждаем взлом зашифрованных данных, кто-то где-то копает очередную критическую дыру в очередной glibc, и когда докопает — все остальное по теме безопасности станет вообще неактуально. Рассмотрим оба случая подробнее. Все выпуски дайджеста доступны по тегу.
Читать полностью »
Критическая уязвимость библиотеки glibc позволяет осуществлять удаленное выполнение кода
2016-02-17 в 7:31, admin, рубрики: glibc, linux, rce, Блог компании Positive Technologies, информационная безопасность, Разработка под Linux, уязвимости
Исследователи Google обнаружили критическую уязвимость в библиотеке glibc (GNU C Library). В функции getaddrinfo()
, которая отвечает за разбор доменных имен, происходит переполнение буфера — ошибка позволяет злоумышленникам осуществлять удаленное выполнение кода.
Эксплуатация уязвимости, получившей обозначение CVE-2015-7547, возможна в случаях, когда уязвимые устройства или приложения отправляют запросы контролируем хакерами доменам и серверам, а также в случае проведения атаки типа man-in-the-middle. Читать полностью »