Привет, Хабр! В этой статье я хотел бы рассказать о методе работы с WebSocket, который я часто применяю в своих разработках. Если кратко, WebSocket — это, пожалуй, самое частое, что я использую в своих проектах. Мне очень важно, чтобы сервер мог общаться с клиентом в двустороннем режиме, но использование обычного WebSocket не всегда комфортно. Для решения этой задачи я часто пишу какой-либо обработчик, и, суммируя суть того, что именно делает этот обработчик, я решил написать небольшую и очень простую библиотеку.
Пользователь
Эскалация привилегий при помощи polkit: как заполучить root-доступ в Linux, воспользовавшись семилетним багом
polkit – это системный сервис, по умолчанию устанавливаемый во многих дистрибутивах Linux. Он используется демоном systemd, поэтому в любом дистрибутиве Linux, где применяется system, также используется polkit. Автор этой статьи, входя в состав a GitHub Security Lab, работает над улучшением безопасности опенсорсного софта; он ищет уязвимости и докладывает о них. Именно он однажды нашел уязвимость в polkit, позволяющую злоумышленнику увеличить его привилегии. Раскрытие уязвимости было скоординировано с командой по поддержке polkit, а также с командой по обеспечению безопасности в компании Red Hat. О раскрытии этой уязвимости было объявлено публично, патч для нее был выпущен 3 июня 2021 года, и ей был присвоен код CVE-2021-3560.
Эта уязвимость позволяет непривилегированному пользователю, работающему на локальном ПК, получить root-доступ к командной оболочке системы. Такой эксплойт несложно осуществить при помощи нескольких стандартных инструментов командной строки, как показано в этом коротком видео. В данном посте будет объяснено, как устроен этот эксплойт, а также показано, где именно в исходном коде находится этот баг.
История уязвимости CVE-2021-3560 и какие дистрибутивы она затронула
Рассматриваемый баг достаточно старый. Он вкрался в код более восьми лет назад в коммите bfa5036 и впервые мог использоваться в версии 0.113 программы polkit. Однако, во многих популярных дистрибутивах Linux эта уязвимая версия не использовалась до относительно недавнего времени.
Немного специфической историей этот баг обладает в Debian и его производных (например, в Ubuntu), так как Debian использует форк polkit, в котором есть своя особенная схема нумерации версий. В форке Debian этот баг появился в коммите f81d021 и впервые попал в дистрибутив в версии 0.105-26. В стабильном релизе Debian 10 (“buster”) используется версия 0.105-25, таким образом, уязвимости в нем нет. Но некоторые производные Debian, в том числе, Ubuntu, основаны на нестабильной версии Debian, а она уязвима.
Unity: Небольшой скрипт = все ориентации экрана
Хватит блокировать вертикальную или горизонтальную ориентацию экрана в своих проектах на Unity! В этой статье мы рассмотрим небольшой скрипт, который я использовал в своем проекте.
Как пройти собеседование в немецкой компании
Германия находится в самом центре Европы, и поэтому на эту страну оказывает очень сильное влияние других европейских культур, а также стран-партнеров. Самое большое влияние имеют Англия и США, поэтому во многом культурные особенности и правила этикета в бизнес сфере будут схожи. Ниже мы расскажем, какие нюансы нужно учитывать при прохождении интервью в немецкой компании🇩🇪⬇
📌Перед интервью приготовьте как минимум 2-3 копии своего резюме и сопроводительных писем как на английским, так и немецком языках. Основательность и внимание - то, на что в первую очередь обращают внимание немецкие работодатели.
📌Если вам не удалось вовремя попасть на интервью, имейте ввиду - следующую встречу вам могут назначить только через 3-4 месяца. В немецких компаниях у HR-менеджеров очень высокая нагрузка и план встреч у них расписан на несколько месяцев назад. Приходите вовремя и будьте пунктуальны, тогда у вас будет шанс на трудоустройство.
📌Дресс-код: строгий и опрятный, должен соответствовать должности, на которую вы претендуете. Выбирайте пастельные тона одежды, избегайте излишних акцентов, украшений и парфюмерии. Важно одеться презентабельно, даже если интервью будет проходить по видеоконференции.
📌Когда вы уже пришли на встречу, вас встретит сотрудник отдела кадров - пару минут можно поговорить о погоде или о том, долго ли вы искали дорогу. Не везде в Германии принято рукопожатие, поэтому, поздоровашись, подождите, пока ваш собеседник первым не протянет руку.
Если вас встретил секретарь, будьте с ним вежливы - не стоит недооценивать его значимость, так как даже секретарь может оказать влияние на результат вашего собеседования.
Незаменимые бывают
— «Исправьте сей мир и живопись последует за вами», - так ответил Микеланджело на решение папы Павла IV внести изменения в изображение страшного суда, которое украшает альков Сикстинской капеллы.
Проверяем защищённость приложения на Go: с чего начать
Привет! Меня зовут Александра, я инженер по информационной безопасности в Delivery Club. Мы используем Go в качестве основного языка для разработки Web-API и представляем вашему вниманию краткое руководство по быстрой проверке сервиса на соответствие базовым требованиям безопасности. Представленную ниже информацию можно адаптировать под проекты, написанные и на других языках.
«Чтобы сразу как надо, не переделывая». Зачем мы учили дизайнеров проводить исследования, и к чему это привело
- в чем состоят плюсы и минусы каждого варианта;
- какие подводные камни ждут вас при смене модели;
- что делать, чтобы с минимальными потерями вырулить к новой «точке стабильности».
Российский космос в новых международных условиях
Отмечу сразу, что пока что мой оптимизм выкручен на минимум и выглядит как пессимизм, чем, впрочем, пока и является. Я очень надеюсь, что это просто дыхание момента, и опрометчивых движений будет сделано в итоге по минимуму. Но мне кажется, что разобрать по пунктам все наши риски очень даже стоит.
Пять книг, которые изменили мою карьеру программиста
"Читатель проживает тысячу жизней, прежде чем умрет.. Человек, который никогда не читает, проживает только одну "
- Джордж Р.Р. Мартин.
Методы организации DI и жизненного цикла приложения в GO
Есть несколько вещей, которыми можно заниматься вечно: смотреть на огонь, фиксить баги в легаси-коде и, конечно, говорить о DI — и всё равно нет-нет, да и будешь сталкиваться со странными зависимостями в очередном приложении.
В контексте языка GO, впрочем, ситуация чуть сложнее, поскольку явно выраженного и всеми поддерживаемого стандарта работы с зависимостями нет и каждый крутит педали своего собственного маленького самоката — а, значит, есть что обсудить и сравнить.
В данной статье я рассмотрю самые популярные инструменты и подходы для организации иерархии зависимостей в go, с их преимуществами и недостатками. В случае, если вы знаете теорию и аббревиатура DI не вызывает у вас вопросов (в том числе и необходимость применения этого подхода), то можете начинать читать статью с середины, в первую половине я объясню, что такое DI, зачем это нужно вообще и в частности в го.
Эти странные, тревожные фото говорят о том, что ИИ умнеет
ИИ учится генерировать изображения из подписей и начинает лучше понимать наш мир
Из всех моделей искусственного интеллекта именно GPT-3 разработки OpenAI сильнее всего поразила воображение публики. Она без особых подсказок может извергать стихотворения, короткие рассказы и песни, заставляя думать, что это работы человека. Но красноречие — всего лишь уловка, которую не стоит путать с реальным интеллектом.
Глубокое погружение в Linux namespaces, часть 2
Часть 1
Часть 2
Часть 3
Часть 4
В предыдущей части мы только окунули пальцы ног в воды namespace и при этом увидели, как это было просто — запустить процесс в изолированном UTS namespace. В этом посте мы осветим User namespace.
Среди прочих ресурсов, связанных с безопасностью, User namespaces изолирует идентификаторы пользователей и групп в системе. В этом посте мы сосредоточимся исключительно на ресурсах user и group ID (UID и GID соответственно), поскольку они играют фундаментальную роль в проведении проверок разрешений и других действий во всей системе, связанных с безопасностью.
В Linux эти ID — просто целые числа, которые идентифицируют пользователей и группы в системе. И каждому процессу назначаются какие-то из них, чтобы задать к каким операциями/ресурсам этот процесс может и не может получить доступ. Способность процесса нанести ущерб зависит от разрешений, связанных с назначенными ID.
Век живи — век учись. Часть 3. Дополнительное образование или век вечного студента
Сегодня мы поговорим, есть ли обучение после вуза, как меняется человек и его восприятие, что мотивирует и что демотивирует всех нас учиться, учиться и ещё раз учиться.
Три жизни в ИТ и не только
Директор Академических программ Parallels Антон Дяйкин поделился мнением о том, как связано повышение пенсионного возраста с дополнительным образованием и чему точно стоит научиться в ближайшие несколько лет. Далее рассказ от первого лица.
Разбираемся с интерфейсами в Go
В последние несколько месяцев я проводил исследование, в котором спрашивал людей, что им трудно понять в Go. И заметил, что в ответах регулярно упоминалась концепция интерфейсов. Go был первым языком с интерфейсами, который я использовал, и я помню, что в то время эта концепция казалась сильно запутанной. И в этом руководстве я хочу сделать вот что:
- Человеческим языком объяснить, что такое интерфейсы.
- Объяснить, чем они полезны и как вы можете использовать их в своём коде.
- Поговорить о том, что такое
interface{}
(пустой интерфейс). - И пройтись по нескольким полезным типам интерфейсов, которые вы можете найти в стандартной библиотеке.
Математическая модель игры Доббль
Уровни сложности чтения
Я слишком молод, чтобы думать
- Введение и правила игры
- Как они это делают?
- Матрица инцидентности для игры Доббль
- Каких двух карточек не хватает в комплекте игры?
- Почему в игре на 2 карточки меньше максимально возможного количества?
- Благодарности
Сделай мне умно
- Введение и правила игры
- Как они это делают?
- При чём тут карточки?
- Проективные плоскости малых порядков
- Матрица инцидентности для игры Доббль
- Каких двух карточек не хватает в комплекте игры?
- Почему в игре на 2 карточки меньше максимально возможного количества?
- Благодарности
Кошмар
- Введение и правила игры
- Как они это делают?
- Конечная геометрия для грудничков
- При чём тут карточки?
- Проективные плоскости малых порядков
- Как построить проективную плоскость?
- Матрица инцидентности для игры Доббль
- Каких двух карточек не хватает в комплекте игры?
- Почему в игре на 2 карточки меньше максимально возможного количества?
- Благодарности
Введение и правила игры
Несколько лет назад я купил игру Доббль (Dobble, оригинальное название “Spot It!”). Это очень простая, быстрая и весёлая игра, которую я считаю одной из лучших настольных игр вообще.
Возможно ли загрузить непроходимый уровень в Super Mario Maker?
О чём пойдёт речь
Поиск ошибок в ПО бывает очень разным. Я занимаюсь поиском ошибок в исходных кодах, в бинарных файлах, в больших комплексах программ и даже в каких-то железках. Но есть область, в которой я практически никогда ничем не занимался — поиск ошибок в компьютерных играх.
Люди тратят уйму времени, чтобы найти ошибки в играх. Это могут быть логические, математические и даже программистские ошибки. Кто-то делает это, чтобы посмотреть на игру под новым углом, а кто-то пытается пройти игру хоть на несколько секунд быстрее, чем любой другой игрок. Мне кажется именно сообщество спидранеров (людей, проходящих игры на скорость) внесло огромный вклад в дело поиска игровых глюков и ошибок. Но экономить время при прохождении мы будем в другой раз, сегодня просто рассказ о поиске ошибки в игровой логике.
В сентябре 2015 года компания Нинтендо выпустила Super Mario Maker — платформер про известного сантехника Марио. Одной из ключевых особенностей игры стала возможность пользователям самостоятельно создавать уровни (здесь они называются курсы) и делиться ими с другими игроками. Кто-то уровни создаёт, отслеживает процент успешных прохождений, а кто-то, собственно, проходит эти уровни. Именно в этот момент у игроков-исследователей зачесались руки — а можно ли опубликовать непроходимый уровень?
Рисовать что-то такое нет смысла, уровень хоть и действительно непроходимый, но и опубликовать мы его не сможем.
Как ты реализуешь аутентификацию, приятель?
Все знают о стандартной аутентификации пользователя в приложении. Это олдскульная процедура регистрации — пользователь вводит адрес почты, пароль и т. д., — а затем при входе мы сравниваем почту и/или пароль с сохранёнными данными. Если совпадает, даём доступ. Но времена изменились, и сегодня появилось много других методов аутентификации. Если хотите оставаться востребованным программистом/разработчиком в этом меняющемся, словно калейдоскоп, мире разработки ПО, то вы должны знать обо всех этих новых методах.
Нельзя отрицать, что в любых приложениях и ОС «аутентификация» — крайне важный элемент обеспечения сохранности пользовательских данных и регулирования доступа к информации. Чтобы понять, какой метод аутентификации для вас лучше, нужно разбираться в достоинствах и недостатках всех методов, а также неплохо представлять, как же они работают.
Здесь я постараюсь рассказать о большинстве распространённых сегодня методов аутентификации. Это не подробное техническое руководство, а лишь способ познакомить вас с ними. Хотя методы описаны с учётом применения в вебе, эти идеи можно реализовать и в других условиях.
Что почитать в выходные: 5 книг по практической информационной безопасности
Нас часто спрашивают, какие книги стоит почитать тем, кто делает первые шаги в сфере информационной безопасности? Наша команда экспертов по тестированию на проникновение составила подборку книг, которые помогут освоить практические вопросы ИБ.
Что почитать на новогодних праздниках
Информация
- В рейтинге
- 4 308-й
- Зарегистрирован
- Активность