1. Куча / Говнокод #26447

    +2

    1. 1
    2. 2
    3. 3
    «Ростелеком», а с ним и кучка проводных операторов поменьше,
    внаглую редиректит *.js запросы на скрипты рекламной говноконторки,
    принадлежащей сыну министра МВД.

    https://habr.com/ru/post/489528/

    Запостил: gost, 24 Февраля 2020

    Комментарии (43) RSS

    • Тут у нас недавно было обсуждение на тему того, зачем на мелких сайтах-визитках-персональных страницах-стоках нужен «HTTPS».
      Так вот именно поэтому!
      В наш благословенный 2020 год, если владельца сайта хоть чуть-чуть волнуют проблемы посетителей — на сайте в обязательном порядке должен стоять «HTTPS» с «HSTS».
      Ответить
      • показать все, что скрытоvanished
        Ответить
      • Ошибка №1: экономить траффик хватая либы из левых CDNов. На локалке-то зачем?

        И урл на либы поставлен http.
        Ответить
        • С очень большой вероятностью на локалке он сайт разрабатывал.
          Ответить
          • Что мешало ему скачать нужную либу себе на машину?
            Ответить
            • Зачем, если на продакшене планируется её загрузка с «CDN»?

              К тому же, это не либа, а API «Карт». Загружать его с серверов «Гугла» — абсолютно естественно.
              Ответить
    • И Столлман прав.
      Надо проявлять м-м-м-максимум-м-м паранойи.

      Хотите запускать на моей машине минифицированные js?

      1. Публикуйте исходники, если js минифицирован.
      2. js должен быть подписан сертификатом, как любой другой исполняемый файл, скачиваемый из инета.
      3. Если предлагаемым js не швабодный GPL — идите нахуй со своим сайтом.

      А вообще js — зло. Потому я за «Lупх»
      Ответить
      • Зло, но куда большее зло — связка «пидорасы-провайдеры + HTTP». Увы, но в 2020-ом году всё, что должен отдавать веб-сервер с 80-го порта — это «301 Moved permanently».

        > Публикуйте исходники, если js минифицирован.
        Подтверждаю.

        > js должен быть подписан сертификатом, как любой другой исполняемый файл, скачиваемый из инета.
        Считаю избыточным. Если js скачивается с собственного сервера по «HTTPS» — он уже подписан сертификатом владельца сайта.
        Ответить
        • Разве майнер нельзя подхватить по HTTPS?

          Речь о том, что хочется подгружать со левых доменов и выполнять только те js которые апрувнуты коммьюнити или доверенной третьей стороной.
          Ответить
          • Можно, но только в том случае, если злоумышленник имеет доступ к хостингу сайта и может заменять там произвольные файлы. Но в этом случае сайт со всеми данными пользователей становится полностью скомпроментированным, и майнер биткоинов — самая меньшая из проблем его посетителей.


            А, ну так эта проблема решается чисто на клиенте: достаточно хранить списки хэшей скриптов, которые аппрувнуло коммьюнити/третья сторона, и проверять их простым расширением браузера.
            Ответить
            • Есть расширение noscript.

              Но оно работает по хостам: доверенный/нет. Даже такая простая проверка сильно сужает круг выполняемого говна.

              Правда надо часто руками добавлять в белый список.

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

              А настоящая паранойя это
              https://en.wikipedia.org/wiki/GNU_LibreJS

              >In general, most Google services require the execution of non-free JavaScript code. If you refuse to do so (for example, by running LibreJS), you will see that you will not be able to use these services.

              Кстати, то что гугл выполняет мегабайты, десятки мегабайт обфусцированного жс, по сути ничуть не лучше проприетарных программ мелкософта и эппла.
              Ответить
              • Расширение хорошее, но увы: в наш век смузи и «JavaScript» даже одностраничный сайт-визитка может без неюзабельным без «JS». Се ля ви.
                Кстати, ещё есть расширение «uMatrix», которое может блокировать кросс-доменные запросы для любых типов контента (скрипты, стили, айфреймы, изображения, etc) и вообще обладает массой плюшек (в частности, блочит богомерзкий «Referer»).

                > Рекламодатель в какой-то момент его проапдейтил решил помайнить.
                Да, это риски загрузки чужих скриптов. С другой стороны, если рекламодатель захочет — он вполне может, например, запустить заапрувленный майнер-скрипт, предназначенный для легального майнинга. Или вообще купить у «третьей стороны» сертификат на скрытный майнер, благо сейчас серьёзная малварь распространяется во вполне себе подписанных экзешниках — и всем похуй.

                Ну и да, списки хэшей эти проблемы эффективно решают.
                1. Они не требуют никаких действий от администраторов сайтов, что крайне сильно ускорит переход на такой стандарт (большинство админов — ленивые хуйлы, которые за столько лет даже на элементарный «HTTPS» перейти не могут).
                2. Они полностью прозрачны: список всегда доступен для изучения любому желающему. А какие сертификаты и кому выдаёт «третья сторона» — одной ей ведомо.
                3. Они легко редактируются. Из них можно по своему усмотрению убирать произвольные скрипты, можно организовывать пользовательские подсписки (например, список только из максимально тщательно проверенных скриптов для последователей Столлмана).
                4. Пользователь может в любой момент добавить проверенные им лично скрипты. Настраиваем такой список для любимого сайта — и вуаля, если какие-то байтики в его скриптах поменяются — пользователь об этом мгновенно узнает.
                Ответить
                • показать все, что скрытоvanished
                  Ответить
                  • > Subresource_Integrity
                    О, совсем забыл про неё. Крутая штука, на самом деле, и исключает кейс «рекламодателю захотелось помайнить» (хотя не факт, конечно, что рекламодатель будет отдавать статичный файл…).

                    Но вообще я имел в виду простой реестр запрещённых сайтов хешей скриптов, проверенных каким-либо сообществом. Если хэш загружаемого скрипта найден в реестре — он исполняется, если нет — блокируется/предлагается пользователю на рассмотрение.
                    Ответить
                  • > можно подробностей??
                    https://habr.com/post/350472/. От 2018-го года, правда.
                    Ответить
                    • показать все, что скрытоvanished
                      Ответить
                      • > как работают писочниыцы у антивирей
                        Насчёт антивирей — не знаю, а обычные песочницы (без эмулирования) драйвером перехватывают все опасные вызовы (см. https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/filter-drivers).

                        Я, кстати, как-то в приступе паранойи написал user-mode песочницу, на старте процесса внедряющую в него свою дллку и перехватывающую все файловые функции из ntdll. В результате запущенный процесс, не наученный обходить такие вещи (а это легко, на самом деле — просто надо дёргать сисколлы… или прочитать ntdll.dll и восстановить исходные мышиные коды перехваченных функций), видит просто диск C, на котором кроме папки «Windows» (и ещё парочки системных) больше ровным счётом ничего нет. Причём я там ещё сделал гибкую настройку каталогов и разрешения а-ля прыщи: на чтение, на запись и на выполнение.
                        Самая лулзная часть была в коде внедрения дллки в дочерние процессы, создаваемые «подпесочным» процессом. С учётом того, что это могут быть исполняемые файлы любой разрядности (x64 запускает x32, x32 запускает x64, etc. — для каждой пары своё поведение), мне там пришлось говнокодить универсальный шеллкод, лол.
                        Ответить
                        • Твоя песочница опенсорсная или closed source?
                          Ответить
                          • Личная с зокрытыми исходниками, во всяком случае пока. В принципе, публиковать её смысла мало — от реальных примеров малвари, которая про неё знает, она не защитит в силу принципиальной невозможности сделать это из user-mode.
                            Ответить
                        • показать все, что скрытоvanished
                          Ответить
              • Более того: в случае с «NoScript» ты добавляешь в белый список целый сайт, после чего тебе с него может загрузиться любое говно. В случае со списком хэшей ты добавляешь только то, что лично проверил. Администратор скурвился и решил помайнить — ты об этом узнаешь.
                Ответить
              • А как они отличают свободный js от несвободного? В шапке должно быть GPL?
                Ответить
                • Вроде там просто эвристика чекающая минифицированность и обфусцированность.
                  Ответить
                  • Ну это же легко обойти - нагенерить вореций вместо имён и не мумифицировать.
                    Ответить
      • показать все, что скрытоvanished
        Ответить
        • >нужно все собирать в бандл вебпаком и отдавать со своего сайта с перманентным кешироанием и гзип сжатием по https

          >вот блядь еще засталвять пользователя качать 100500 файлов с левых сайтов
          +100500

          Я и грю что хуйня какая-то нищебродская, для экономии траффика.
          Вдруг cdn сайт запрещён прокси.
          Украина хуйнула яндекс, а кто-то jquery оттуда таскал.
          Или админ в сети поставил лочку на развлекушные сайты, и случайно задел CDN.
          Ответить
          • Да, соглашусь, скрипты всё же лучше отдавать только со своего сервера.

            А вот если хочется отдавать много статики (видео, много фото), или делать это быстро — тут-то «CDN» и нужен.
            Ответить
          • показать все, что скрытоvanished
            Ответить
          • А может быть, позитивный программист поставил http://c.d.n/pitux.latest.js. В случае с хранением на своём сайте этот latest будет ровно той версии, которую автор явно положил, и сайт будет продолжать работать (как ГК).
            Ответить
            • Да, pitux.latest.js —— это реальный пример проблемы. Глубокой ночью, пока все имеющие доступ к серверу спят, CDN может обновить версию питухскрипта на несовместимую, и сайт перестанет работать.
              Ответить
            • и я так однажды с unpkg.com проебался, когда пилил внутреннюю микроадминку (
              Ответить
        • >> нужно все собирать в бандл вебпаком

          Я для этой цели даже форкнул и допилил «bundle-phu» (всё руки не дойдут выложить свой форк на «Гитхаб»), который в свою очередь является портом с «Руби» на «PHP» пакета «bundle-fu»:
          https://github.com/hobodave/bundle-phu

          Одним мумифицированным пакетом пользователь получает быстрее, чем в виде 100500 отдельных CSS и JS.

          Кстати, «bundle-phu»/«bundle-fu» в настройках можно скормить препроцессор типа «LESS»/«SASS» или «babel» или какой-нибудь «autoprefixer».
          Ответить
      • > Публикуйте исходники
        > швабодный
        Питушня. Никто не будет читать швабодные ишходники.
        Надо укреплять песочницу и читать её исходники.
        И чтоб в песочнице можно было грабить корованы давать разрешение на порчу не только своих папок, но и подставных (такой питушни очень не хватает в ведроиде. можно только дать поганить реальные питушни, но нельзя подсунуть фейковые).
        Ответить
        • >Надо укреплять песочницу
          А потом в CPU найдут очередной Milfdown и выяснится что песочница построена из песка.

          >Никто не будет читать швабодные ишходники.
          99.9% не будут. А кто-то может заинтересуется и забьёт тревогу.
          Ответить
          • Укрепить одну питушочницу проще, чем следить за бесконечным количеством скриптов. В крайнем случае, можно сделать билифоны (если есть кто из Билайна - берите на заметку) - как наш российский телефон: джва экрана, джве внутренних питушни, соединены через тонкую очередь сообщений. Можно послать URL на вторую половину телефона, где питушня откроется на отдельном устройстве.
            Ответить
        • Песочница никак не поможет в случае с майнерами, например. Ну и защититься от фингерпринтинга песочницей крайне сложно.
          Ответить
          • От майнеров можно ограничивать мощность. Скажем, делать программный аналог турбобуста. Всплески производительности разрешить, а длительную питушню без разрешения не включать.
            А то в текущей реализации в почте тормозит старая анимация конвертика и на видеопитухе - разворот на полный экран. Если не ставить адблок, производительность жрут флешки с рекламой.
            Оно всё жрёт, а ты никак не можешь ограничить. Смартфон быстро сдыхает, ноутбук раскаляется, пека греет комнату.

            Фингерпринты правильная пейсочница может подпортить.

            В любом случае, пейсочница будет более выгодным вариантом, чем просмотр исходников, а в идеале нужно их скобенировать. Чаще всего, если сайт обещает что-то полезное, его скрипты выполнят (как сейчас отключают антивирус и выполняют какую-то питушню). Песочница позволит снизить риск.
            Ответить
            • Вообще, конечно, надо просто запретить сайтам выполнять JS в фоне без явного разрешения пользователя. А то это пиздец какой-то — каждый второй говновебмастер хочет, чтобы его говноскрипты с говнорекламой и говноаналитикой выполнялись всегда. Зацени, кстати: https://developer.mozilla.org/ru/docs/DOM/Using_web_workers.
              Ограничения мощности — это полумеры, да ещё и могущие затормозить какие-нибудь «Гуглопочты» (которые говно).

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

              Но да, в любом случае пейсочница нужна и важна. Просто панацеей она не является.
              Ответить
              • > просто запретить сайтам выполнять JS в фоне без явного разрешения пользователя
                > Ограничения мощности — это полумеры, да ещё и могущие затормозить какие-нибудь «Гуглопочты» (которые говно)
                Запретить/разрешить - дело хорошее, но не очень удобно.
                Я уже писал про то, как в андроиде (а параллельно - в хромофоксах) можно либо дать разрешение на питушню, либо не дать. И нет варианта "разрешить срать в подставной песочнице" или "разрешить чуть-чуть подсирать". И это очень мешает. Если приложению нужно читать твои личные файлы и папки, почему бы не отдать ему пустую подставную, или если ему нужно крутить питушню в процессоре, почему бы не дать ему 10% мощности одного ядра?

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

                Ещё хорошо бы и трафик ограничивать и т.п.
                Ответить
              • > да ещё и могущие затормозить какие-нибудь «Гуглопочты» (которые говно)
                Ну и гуй с ними.
                Там же есть html-версия.

                >надо просто запретить сайтам выполнять JS [...] без явного разрешения пользователя.
                fixed
                Ответить
    • Именно поэтому я за "PHP"
      Ответить
    • тото у меня адблок уже пол года блочит jquery
      Ответить
    • > какой-то плагин для хрома
      > какой-то плагин
      > плагин
      Какой вебмакак )))
      Ответить

    Добавить комментарий