.рубик
866 subscribers
68 photos
64 links
Канал о всяком, от CTF до разработки OC с примесью кеков от @Rubikoid

Чат - https://xn--r1a.website/joinchat/3KSEUg7bfqE0N2Ey
Мета: t.me/dotrubic_meta
Мемы: t.me/dotrubic_memes
Бложик: t.me/+_C-pl_lH5tlhMjhi
Download Telegram
При сборке OpenSSH с двумя свежими версиями liblzma (5.6.0 и 5.6.1) можно получить себе веселый бэкдор в сервак.

Передаю привет роллинг релизам и советую бежать всем админам проверять версии софта

https://opennet.ru/60877/

UPD: пишут, что openssh не везде линукетяся с liblzma.
В общем, смотрите у себя в дистрибутивах.

Проверяем версию liblzma: lzma --version.
Если меньше 5.6.0 - всё +- норм, если больше - обновляйтесь (откатывайтесь)

Проверяем, собран ли sshd с liblzma: ldd $(command -v sshd) | grep lzma
UPDx3: похоже, это не важно.
Автор ресерча пишет, что
Openssh does not directly use liblzma. However debian and several other
distributions patch openssh to support systemd notification, and libsystemd
does depend on lzma.

UPDx4: у меня к сожалению нет пока живой системы, где можно посмотреть на уязвимый сетап.
Похоже, что проверка через ldd всё же имеет смысл)

UPDx2: ещё пишут, что автор бэкдора уже два года пишет патчи для xz, и кроме того, вовлечен в разработку ещё нескольких проектов, в том числе связанных с xz.
Так что веселье только начинается ;)
😁6😱3🤯2😢2👏1🤔1🎉1🌚1
Очень простой вопрос от санитара для senior-программистов на C:

Что выведет следующая программа?
#include <string.h>;
#include <stdio.h>;
int main() {
printf("%d\n", strlen("\x01c"));
}


cc test.c && ./a.out

(перед голосованием не читайте комменты, а то так не интересно))
🔥6
Забавный неожиданный факт особенность, которую я обнаружил в механизме работы WSL2:

Скорее всего, generic user второго весла с ней не столкнётся, ведь он связан с использованием больше двух дистрибутивов одновременно, однако! на это может повлиять, например, установка официального Docker Desktop (никогда так не делайте, это ужасный софт).

Так вот: все "дистрибутивы" второго весла запускаются на одном и том же ядре Linux'а, в одной и той же виртуальный машине, и изолируются друг от друга через линуксовые неймспейсы.
Я, если честно, раньше думал, что они в разных VMках крутят, аннет.

У этой особенности есть особенность:
Изоляция не полная.
Некоторые неймспейсы между дистрибутиво-контейнерами шерятся, и иногда это может привести к странным результатам.
Среди таких общих неймспейсов - сетевой.
Все контейнеры имеют одинаковый набор сетевых интерфейсов, и для внешнего мира выглядят, как одна ВМка.
Отсюда могут вылезти неожиданные проблемы с пробросом портов в том же докере - пакет на определенный порт должен попасть в какой-то один из контейнеров.

В моем же случае я немного офигел, когда обнаружил tun-адаптер yggdrasil в системе, куда я не ставил ygg.

Подробней можно почитать вот в этом ответе на stackexchange.
🤯13💩6😁4👍2
Сидел я сегодня такой, развлекался с Nix'ом и внезапно обнаружил, что конструкции вида nix shell nixpkgs#hello -c bash в шебанге и Linux и MacOS отрабатывают совершенно по-разному.

Краткая справка: Шебанг (shebang) - это конструкция вида #!interpreter [args] (#! обязателен), расположенная строго в начале файла, и говорящая операционной системе запустить interpreter [args] [original file] [original args].
Была придумана, чтобы не писать руками python script.py, а сделать ./script.py, условный.

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

Спасибо эплу, некоторым лицензиям, и неизвестному самаритянину (насколько я знаю, это неофициальное зеркало) - у нас есть код XNU (ядро MacOS) на гитхабе.

Непродолжительные поиски действительно привели меня к строке, в которой определяется условие конец шебанга, где концом строки считается либо #, либо \n.
Окей, теперь я знаю, что у меня нет шизофрении (на самом деле есть), и это действительно ядро ведет себя так странно.
Встает следующий вопрос: а почему оно так себя ведет?

Если посмотреть на путь к файлу kern_exec.c, можно увидеть, что он начинается с папки bsd.
Так возможно это не у apple что-то с головой, а они просто бэкпортировали какое-то странное изменение из ядра *BSD? (Да, XNU основан во многом на BSD)

Быстро пробежавшись по старым *BSD ядрам (4.3BSD, FreeBSD версий 2-3) я ничего полезного не нашел, там этой особенности не было.

Дальше я решил вернуться обратно к blame'у сорцов XNU. К сожалению, текстов коммитов нет (разве что где-то в недрах Apple), поэтому остается довольствовать описаниями версий, в которых что-то меняли.
Таким образом я узнал, что это добавили в XNU-517.

Быстрый гуглеж по XNU-517 shebang наконец-то привел меня к цели всего поста: шедевральной страничке https://www.in-ulm.de/~mascheck/various/shebang/, содержащей огромный и очень информативный текст (я не шучу, сходите сами почитайте!) про историю шебангов.

Конкретно про обработку второй # - тут.
Как оказалось, я смотрел слишком ранние версии FreeBSD - это действительно внесли именно в ней, в 4.0 ветке, а потом убрали в 6.0.
XNU бэкпортировали это к себе, но так и не убрали, только рефакторя код год за годом (стало кстати объективно лучше, тоже забавное наблюдение).

Итак. Изначальной причиной появления такого способа обработки # в шебангах была...
Рекомендация в документации к perl'у писать шебанг следующим образом:

#!/bin/sh -- # -*- perl -*- -p

чтобы избегать каких-то странных кроссплатформенных проблем (да, утилиту env тогда ещё не придумали).

Зайдите ещё в комменты, там есть парочка мемов, которые не влезли в пост =)
❤‍🔥15👍8🤯41😁1
Тут на гитхабе разворачивается очередная дРаМа.

Если вкратце: есть в экосистеме питона такой проект, nose.
Это такие батарейки для unittest либы из стандартного питона, упрощающие написание тестов.
Либа старая, ещё от 2.7 питона.

В какой-то момент пришел некий товарищ mdmintz, утащил 2/3 кода nose, назвал это pynose, поменял лицензию и выложил на гитхаб.

На этот проект завязалась ещё несколько проектов, и вот 31 января какой-то чувак обнаружил, что mdmintz, когда утаскивал код потерял забыл про лицензию - у оригинального проекта это LGPL, а у товарища - почему-то MIT.

Там оно недельку поварилось, и mdmintz закрыл issue.

Три дня назад какой-то ещё чувак это внезапно обнаружил и поднял бучу - у нас в репах дистрибутивов лежит пакет с проблемами с лицензированием - а это нехорошо.

В конце концов это привело к тому, что pynose начали выпиливать из дистрибутивов, в частности, из nix'а (bleeding edge, все дела ;)).

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

Собственно, за ним сейчас можно наблюдать практически в прямом эфире.
🤯15😁12🤡6👏5👍41
В конце августа мы сделали силами нашей команды CTF для Островка!, а потом вместе с @greg0r0 сходили по этому поводу на подкаст к двум Иванам.

Я раньше в подкастах никогда не участвовал, было немного непривычно, но очень бодро.
Прикольно, в общем, как-нибудь стоит повторить)

В яме его послушать можно тут (если яндекс не алё, есть mave со ссылками на все остальные стриминги)
🔥8👍3❤‍🔥1💩1🤡1
У меня тут произошел инцидент: какой-то хмырь скопировал мой профиль и стучался к людям в личку с просьбой скинуть денег)

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

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

Чел даже премиумом заморочился, поразительно.
🤯21😁5🐳41👍1👎1
Your friendly telegram changelog here!

Дуров опять придумал всратую херню! Повод выйти из сумрака...
А именно, в телегу добавили "Сообщества".
Это как папки, только не папки не надо добавляться в каждый из каналов, чтобы читать его.
А ещё туда можно запихать ботов и чаты)
Людей, кажется, нельзя.

Наресерченные за полчаса факты:
1. Если снести все каналы внутри сообщества, само сообщество не удаляется.

2. Баны в сообществах не работают, кажется )))

3. Для добавления канала в сообщества надо быть подписанным на любой из каналов, которые уже есть в сообществе.

4. На TDesktop единственный способ узнать все сообщества, которые ты видишь - это попытаться в них добавить что-нибудь свое

5. По дефолту стоит галочка "кто угодно может добавлять каналы в сообщества", если её не снять, сообщество быстро превратится в мусорку)

6. С папками работает супервсрато.

7. Пока нельзя добавлять в сообщества каналы на 10к+ людей

8. Реджект заявки канала в сообщество нигде никак не отображается

9. При подаче заявки канала в сообщество видно, кто её подал, прям полноценным аккаунтом! Деанон!! Но это если стоит галка на одобрение. Если не стоит, вроде бы нет, но в tdlib где-то может быть прикопано.

10. Если попытаться добавить канал в сообщество второй раз, телега высрет CHANNEL_ALREADY_LINKED и дезинтегрирует заявку

11. На iOS клиент пишет, что добавление приватного канала это некомильфо, мол он приватный

12. Но при этом, если его всё же добавить, участники сообщества могут зайти в канал _мимо_ _любых_ инвайт ссылок. Они просто появятся в канале. Логов не будет))

13. Если добавить бота, администратор автоматом откроет с ним диалог со смешным сообщением "%AdminName% добавил группу в сообщество %name%". Полудеанон, из UI аккаунт не тыкается, что там в mtproto непонятно пока. У старых юзеров бота это сообщение не появляется.

14. Если, будучи овнером, добавить канал в сообщество, выйти из канала, а потом каким-то образом обратно до него добраться (через другой канал, например) - в него можно зайти назад и остаться овнером
🔥157🤯7🤔1💩1