Пользователь
57,4
рейтинг
4 марта 2012 в 23:48

Разработка → Егор, прекрати взламывать Github!

Несколько часов назад программист из Санкт-Петербурга Егор Хомяков сделал коммит в мастер-бранч Ruby on Rails (скриншот)



В личном блоге Егор написал, что обнаруженная им уязвимость позволяет делать pull/commit/push в любом репозитории на Github. Свой поступок он объяснил раздражением от того, что мейнтейнеры Rails игнорировали баг, о котором он сообщил, и поэтому Егор теперь решил протестировать его на первом попавшемся проекте.

P.S. В связи с этими событиями Github сегодня внёс изменения в политику безопасности сайта, добавив туда раздел Responsible Disclosure of Security Vulnerabilities.
Анатолий Ализар @alizar
карма
751,5
рейтинг 57,4
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (166)

  • +95
    Среди комментов к коммиту по ссылке ржака:
    Since you can commit to master, you could just fix the vulnerability :)
    Also, Rails is open source — you get it for free, why not make it better for free as well?
    • 0
      Мейнтейнеры все же решили, что стоит включить по умолчанию защиту от mass_assignment.

      github.com/rails/rails/commit/06a3a8a458e70c1b6531ac53c57a302b162fd736
    • +8
      Парень сегодня на работу не вышел. Позвонил админу, сказал, что всю ночь не спал. Да уж, поднял волну =)
      Егор, возвращайся скорее. Мы тебя ждем.
  • +3
    Chikey — вроде это он, комменты посмотрите.
    • +85
      yep. тег «егор хомаков» — зачем тег то делать?) Алсо я хомЯков.
      • +1
        Исправил, извините, Егор.
      • +14
        Ну а что — у Вас теперь есть собственный тег на Хабре!:) Вообще Вам респект, а разрабам минус в карму. Сами виноваты. Надеюсь, Вас разбанят (если это был основной акк).
        • –19
          *разрабам* — это от слова раб?
          • –6
            разбабам
      • –10
        «Как возмужал наш кобелек» (с)
        А ведь совсем не так давно… А, ладно. Левел ап.
        • +7
          привет. что недавно?) норм же работали :)
          • +1
            А не так давно на PHP писали и думать не думали :)
            • –5
              Эх, нельзя на хабре негативно отзываться о PHP, разве Вы ещё этого не поняли :)?
              • +2
                Это не негативный отзыв. Егор — мой давний коллега. Просто ностальгия накатила.
              • +7
                Такс, проверим вашу теорию… PHP фигня
                • –6
                  PHP Это есть хорошо!
                  • +4
                    PHP не надо есть.
                    • 0
                      Зато теория была опровергнута )
                      • 0
                        Что-то я сомневаюсь в чистоте вашего эксперимента ;))) Хабрапользователи могли из вредности её опровергнуть ) где-то был эпичный пример этого на хабре…
        • +30
          Вы еще про питьевые фонтанчике в Ницце расскажите
      • –7
        > Алсо я хомЯков.
        homAkov.blogspot.com — оно и видно…
  • –27
    Да-да, я вот тоже например хочу, чтобы Youtube, LiveJournal и Яндекс.Деньги заплатили мне за секьюрити аудит.
    Егор не позорься.
    • +29
      Судя по реакции, Егор сделал всё правильно :)
      • +13
        я жаст киддин. за бесплатный аудит меня только забанили и обещали в суд подать =)
        • +2
          У гитхаба замечательный саппорт. Можно было и туда обратиться.
          • +25
            непонятно, чем этот саппорт такой замечательный, если за классический «хакерский» способ указания уязвимостей чувака забанили. Законодатели мод на «социальный кодинг» не знают традиций «социального кодинга»?
            • –9
              по-моему классический способ указания уязвимостей это написание письма в саппорт с подробным описанием что и как, а не вываливание бага на всеобщее обозрение?
              • +10
                не спортивно =) и на такое любят отвечать «этого не может быть потому что этого не может быть никогда» =)
              • +12
                Егор указал на уязвимость. Разве этого недостаточно для начала принятия мер? Почему он должен был тратить кучу времени на написание подробных писем? Это не его сервис чтобы уделять ему особенное внимание.
            • 0
              вряд ли стоило поступать таким классическим способом применительно к одному из наиболее популярных репозиториев в ГХ, тем самым провоцируя менее окрепшие умы на всякие гадости с использованием данной уязвимости.
              • +7
                Зато это хороший пинок, уязвимость реактивно исправится
        • 0
          Главное чтобы не в британский
        • НЛО прилетело и опубликовало эту надпись здесь
          • +14
            общак же, не по понятиям :)
  • 0
    И к закрытым репозиториям доступ есть?
    • +6
      я хотел написать подробней но хабр послал нафик. технически доступ есть ко всему — вебморда может и закрыта но имея дропнутый паб-ки можно было бы дергать и приватные. не пробывал — мне тут law весь hackernewys грозится.
      • +1
        Вроде можете писать :)
  • +2
    судя по комментариям баг уже пофиксили, а автора забанили на гитхабе. непонятно только был ли багрепорт на гитхаб до того как демонстрировать уязвимость публично?
    • 0
      туча шороха была наведена перед этим. этот малюсеньких хак был сделал наибезобиднейшим способом. шалость
    • 0
      • +1
        да, это относится к уязвимости в рельсах. я имею в виду, был ри репорт непосредственно в службу безопасности гитхаба?
        • 0
          увы, я не знаю
  • +5
    На самом деле в Rails багов хватает (вот пример еще один: баг rails), не стоило конечно так подло комитить в rails в обход pull request. Но ребята на github должны по-мойму сказать ему спасибо, а не банить.
  • +1
    Упс, баг на забре — ссылка «баг rails» не сработала ;) Вставляю копи-пастом: ka8725.tk/2012/03/02/do-not-give-name-test-for-your-models/
    • +16
      Это называется не «баг на забре», а «Хабрахабр не разрешает употребление HTML обладателям отрицательной кармы».
      • +1
        Спасибо, буду знать
    • 0
      Чудеснейшим образом у меня домен ka8725.tk отобрали регистраторы. Пока не знаю почему, буду знать — отпишу в чем там дело было. Если кому интересно что было по ссылке, то ее содержание доступно по здесь
  • +3
    О как карма вверх пошла.
    А ведь еще пару часов назад все поскупились и отвернулись:
    habrahabr.ru/blogs/open_source/139376/#comment_4657234
  • +64
    Егор, прекрати взламывать Github! Саша, не трогай Skype, а то сломаешь! Что за детский сад.
    • +7
      made my day. спасибо, дал мозгу отдохнуть :3
  • +1
    Всё правильно.
  • +102
    image
    • 0
      +1000
    • 0
      Как хорошо, что я обновил комментарии. Отличный мем, связанный с данной ситуацией :)
  • +30
    То есть известные любому новичку грабли под названием register_globals из мира php не предотвратили повторение этой ошибки в современности? Забавно, однако.
  • +17
    Уязвимость же не совсем в рельсах, а в скаффолдере: он генерирует код с

    @

    Соответственно, можно легко обновить все аттрибуты модели, если юзер имеет право на обновление модели и результат пройдет валидацию. Хоть рельсовики и будут говорить, мол, надо читать мануал, использовать всякие схемы защиты аттрибутов, но давайте будем честными — а кто читает мануалы от корки до корки? да никто не читает. Разработчики фреймворков и языков программирования должны ориентироваться на пользователей-идиотов, а не профессоров, которые тщательно прочтут 10 томов документации, прежде чем написать первую строчку.

    Точно также, безответственно было у нас в PHP не встроить простое средство для плейсхолдеров, а дать людям mysql_query() — в итоге почти любая открытая наугад книга по PHP содержит пример типа:

    mysql_query(«SELECT * FROM user WHERE id = $id»)

    и мутное примечание про безопасность и фильтрацию данных (которую начинающий с вероятностью 99% пропустит — ведь код и так работает). Точно также безответственно в PHP-шаблонах выводити сырые значения перемнных — надо было по дефолту встроить контекстный escaping, как например делает в своем шаблонизаторе Гугл.

    Ну что, приятно, и Рубивские фреймворки не блещут идеалом, будет чем упрекнуть рубиста.
    • –4
      Как люди до сих пор продолжают называть это уязвимостью? (я про rails и mass_assignment) Уязвимости не фиксятся одной строчкой в конфиге. Просто такое поведение по умолчанию.
      А если разработчик не удосужился почитать про это — это целиком его вина. В конце концов, он может так же случайно допустить и кучи других security багов.
      • +2
        Про SQL-inj тоже везде написано как её не допустить, тоже одной строчкой в конфиге (хотя недавно удалили её), но почему-то многие на PHP наезжают за то, что он позволяет писать приложения с такой уязвимостью.
        • +1
          На рельсах тоже можно писать запросы вида «SELECT * FROM users WHERE users.name LIKE %#{name}». И об этом написано в книжке про рельсы. И точно так же написано, что так делать очень нехорошо.

          То, что теперь по умолчанию эта уязвимость не работает — это хорошо. Я согласен с разработчиками, пришедшими к такому выводу.
          Но никто не помешает программистам просто отключить это, либо, что еще вероятнее, писать «безопасный» код, запихивая в attr_accessible все поля в модельках. Причем это не голословное утверждение, я сам видел такой код :)
          • +4
            Теперь им по крайней мере надо поля туда запихивать руками, они не самозапихнутся. Одному индийскому программисту из десяти миллионов в момент оного деяния придет в голову поискать в гугле, почему так, и научиться делать правильно.

            Писать кривой код можно на любом языке и с любым фреймворком, тут я полностью согласен. Показательно другое. Разработчики GitHub совсем не новички, не впервые работают с руби и рельсами — если даже они годами не знали про этот баг, наверное, с ним правда что-то не так (и это не совсем то же самое, что "SELECT WHERE %#{name}").
            • 0
              Вон Posterous тоже, судя по всему, не знают про это. (Смотреть на комментарий, который датирован «almost 8 years ago», в самом низу страницы.)
              • +1
                Таки да, как написали в той же статье «не думаете же вы, что в GitHub не читали как следует документацию?»

                GitHub и Posterous — пара major старпапов, которыми так славится rails нынче, и которые сами по себе весьма на слуху. То, что они оба дырявые (а особенно ГитХаб, который без вариантов заставляет тебя работать с паблик/прайват ключами — ведь логин/пассворд аля SVN например для них не секьюрно и не серьёзно), это много о чём говорит.

                Предлагаю сделать список 10-15 подобных старптапов (tumblr-ы всякие и иже с ними), и попробовать уязвимость на них, пока не подфиксали — уверен, еще минимум парочка дырявых попадётся.
                • 0
                  по https можно с паролем работать с гитхабом
    • +2
      Вижу, все и так поняли, какой код генерирует скаффолд :) Он по дефолту генерирует где-то в контроллере действие update, которое передает пришедшие POST-параметры в метод модели update_attributes(), соответственно, если есть право на обновление модели (например, обновление своего профиля или своего поста), и нет защищенных аттрибутов или дополнительных проверок (а в автогенерированном коде их нет), можно обновить себе аттрибут is_admin или что-нибудь в этом роде.

      Есди подумать, этот тип бага не только в RoR может встретиться, но и в другом идеологически схожем MVC фреймворке, не обязательно на Руби, но и на PHP тоже.
  • +39
    Какие к чёрту итоги выборов! — вот здесь события, вот здесь кипит настоящая живая жизнь!
    • +9
      товарищъ мицгол. regards:
      If I were @homakov, I'd decline. The only GitHub's office is in San Francisco, and I guess he'd remember the United States v. ElcomSoft and Sklyarov case. And the fact that Robert S. Mueller is currently Director of the FBI.

      Right now any IRL step on U. S. soil probably means @homakov jailed. He probably should also avoid proximity to U. S. vessels, diplomatic missions and other more or less exterritorial objects within his home city.

      чуть подробней? Не светиться на улицах?
      не соглашаться ни на какие офферы из асашай? Ты серьезно или шанс мал?
      • +32
        Склярова помнишь? Бедняга просто приехал в Штаты на конференцию по безопасности рассказать, как хряпнул продукт Адобе. Его потащили в тюрьму, причём, хотя заявление Адобе было отозвано, держали в тюрьме по настоянию федерального прокурора Мюллера (потенциальное уголовное дело «Адобе против Элкомсофт и Склярова» просто стало делом «Соединённые Штаты Америки против Элкомсофт и Склярова»), пока он не согласился дать показания против «Элкомсофта». Затем выпустили под залог без права возврата в Россию и общения с родными до суда.

        Этот самый Мюллер сейчас возглавляет штатовское ФБР. Директор ФБР с такими замашками по отношению к программистам, работающим в области взлома программного обеспечения — это не хухры-мухры. Поэтому ещё раз (на сей раз русским языком) рекомендую избегать любых приглашений на работу или на конференции или для лечения или по любым другим поводам в Штаты, избегать в порту Петербурга (и в зарубежных поездках в третьи страны) судов под штатовским флагом, самолётов штатовской принадлежности, дипломатических представительств Штатов (посольств, консульств) и других экстерриториальных объектов, где могут явиться агенты ФБР и возможен арест. Я бы шугался и тех третьих стран, которые преспокойно могут арестовать человека для выдачи в Штаты — на этом Виктор Бут погорел, как поговаривают.

        (Сейчас наверняка явится какой-нибудь сторонник произношения «Эдоуби» вместо «Адобе»; ему заранее блогозапись c сайта «Словомания» предлагаю.)
        • 0
          В штатах прецендентное право, а Склярова вроде бы оправдали:

          Protests ensued, coordinated from the website freesklyarov.org. The US government agreed to drop all charges filed against Sklyarov, provided that he testify at the trial of his company. He was permitted to return to Russia.

          On 17 December 2002, after a two-week trial, a federal jury found ElcomSoft not guilty of all four charges under the DMCA.

          Так что больше похоже на страшилки.
          • +3
            Для оправдательного приговора нужно решение суда, а для решения суда человека сначала неплохо арестовать и отвезти в Штаты по конвоем, а там продолжать держать под арестом ну или встретить в аэропорту и арестовать. Неплохой способ съездить в Штаты и провести там время.
            • 0
              Не думаю что будут связываться, если понятно что дело безперспективное. Ради чего?
          • 0
            >В штатах прецендентное право, а Склярова вроде бы оправдали

            Правильно. И Егора оправдают. Правда, для того, чтобы оправдать, его сначала арестуют и посадят за решётку на время следствия, которое будет длиться несколько месяцев (улики, экспертизы, всё такое), после чего наконец-то будет суд, на котором его (ура!) оправдают. Вопрос: кому оно такое надо?
          • +2
            Чёрным же по белому написано: Склярова выпустили, потому что он пошёл на сделку со следствием, согласившись дать показания против «Элкомсофта».

            Внимание, вопрос: против кого может дать показания Хомяков, если он сам собою ломал GitHub? Может ли ФБР быть вообще заинтересованным в его показаниях против кого-нибудь? Вряд ли, если только не углубиться в область дутой контрразведки и не требовать от него показаний о том, что он русский шпион и что работает на кровавую гэбню. А раз вряд ли, то сидеть ему дольше, чем Рузвельт был президентом.
            • 0
              Далее тем же черным цветом по белому написано что Элкомсофт признали невиновным по всем обвинениям DMCA.

              Юристам наверное виднее, но по мне так страшилка не слишком вероятная.
  • +10
    Дополните пост тем что Github в своем блоге сообщили о том что разбанили товарища Хомякова, и более того — дополнили свои правила новым пунктом в связи с этими событиями.
    Ну и там есть еще некоторые непонятно откуда взявшиеся подробности =)
  • +6
    О Боги, хабр, куда ты катишься?

    Мы имеем: парня, который вовсе и не багу в rails нашёл, а ожидаемое поведение, которое по тупости своей или по пьяни не учли в GitHub.com. И вместо того, чтобы написать патчи и в тех-поддержку гитхабу, он решил наговнять сразу всем. И что? За 10 часов он стал вашим национальным героем, и вы ему накидываете +70 кармы?

    Стыд и позор вам всем.
    • –3
      Согласен, это lurkmore.to/Attention_whore.
      • +21
        yes i am
        • +9
          of course you are
      • –3
        +1
        как верно отмечали в комментах к блогозаписи гитхаба, почему нельзя было сделать отдельный аккаунт и отдельный реп для тестирования, а надо было именно срать в самый наблюдаемый реп гитхаба?..
        • +27
          4 lulz, не?
          • +16
            Да молодец! не слушай этих морализаторов =)
          • –15
            4lulz? вырасти, мальчик! здесь люди работают!
            • +38
              На Хабре-то?
          • +9
            Всё правильно сделал.
            • +1
              Абсолютно согласен. Не просто получил преимущество, но и реализовал его на 100%
          • +7
            LOL принудительно запостить в рельсы патч 8)
            Респект
        • +7
          иначе бы забили и хрен исправили бы
          • –4
            если бы забили, тогда уже и орать на весь мир. читай 0-day vulnerability.
    • +14
      Безобидный коммит — это не наговнять сразу всем.
      • +1
        twitter.com/#!/tenderlove/status/176376463170342914
        вот, что о нём думают разработчики rails.
        • +8
          Да какая разница что они думают. Если его коммит ничего не поломал — зачем делать трагедию? Наговнять — взять и нарушить работу разработчиков rails, а то, что он сделал — безобидный коммит.
        • +12
          Что о нём думают разработчики rails, и что они думают о репортах об уязвимостях было ясно еще после того, как они закрыли и проигнорировали изначальный репорт.
          • +2
            какой к чёрту «репорт»? я не знаю, как сейчас учатся рельсам, но 4 года назад, когда я на них садился, параграф про attr_accessible шёл в самом начале знакомства с моделями в любом учебнике. сейчас я на уровне рефлексов добавляю его во все модели, которые модифицируются через контроллеры, и это «нововведение» сломает кучу моего старого кода, который не содержит этой уязвимости. и нововведение это обусловлено а) среднестатистическим отуплением разработчиков на Rails, не знающих об attr_accessible б) багой в одном-единственном github, качество кода которого в общем-то никогда и не было каким-то заоблачным или из ряда вон выходящим.

            и я сам в принципе не против этого нововведения. и большинство в rails core team тоже. парень молодец, что нашёл эту багу. отвращение вызывает то, КАК он обратил на неё внимание. и как десяток новостных сайтов по всеобщей истерии начали это называть «багой в Rails».
            • +20
              А как еще он должен был обратить на нее внимание? Рапорт рельсовикам — проигнорирован. Рапорт гитхабу — проигнорирован.
              Или он должен был молча сидеть и ждать, пока до этого додумается кто-нибудь еще и использует себе на пользу?
              Даже гитхаб уже признал и простил, а вы все кипятитесь.
              • НЛО прилетело и опубликовало эту надпись здесь
                • +6
                  Рапорт гитхабу был письменным. Уязвимостью он воспользовался спустя два дня после этого, это даже в блоге гитхаба написано. После чего за час дыра была закрыта.
              • +1
                эта тема не в первый раз поднималась в сообществе. и всегда были и остаются контр-аргументы против дефолтного attr_accessible. почему его решили включить на этот раз? потому что толпа умственноотсталых хомячков, таких же как 99% читающих эту статью набежало и начало ныть. упираться дальше было бессмысленно, т.к. в такой аудитории трудно аппелировать к здравому смыслу.

                извините за грубость, уже накипело.
                • 0
                  не извиняйся. у меня теже чувства. я не хотел чтобы коры в попыхах что то там фиксили. Рельсы и в правду вообще не причем. Yahuda мне сказал что это все еще в процессе обсуждения но у них небыло выбора — хомячков было слишком много.
            • 0
              вот и я не понимаю, как вполне документированное поведение моделей можно считать уязвимостью
              • +1
                Потому что в данном топике рассматривается не модель, а система в целом (в данном случае — система под названием GitHub). И для этой системы такое поведение (когда любой пользователь может коммитить в любой репозиторий) — ни хрена не документированное и ни хрена не ожидаемое. Поэтому для системы это — уязвимость.
                • 0
                  Не знаю про какие модели вы, но в статье упоминается что это уязвимость Rails. Но это косяк конкретного проекта, и печально что из за этого изменили код рельс. Более развернуто уже объяснили выше, можете найти по словам «умственно отсталых» и «хомячков».
                  • 0
                    >Не знаю про какие модели вы

                    Я — ни про какие. Модели появились в вашем предыдущем сообщении, я лишь отвечал на него.

                    >… но в статье упоминается что это уязвимость Rails

                    В статьях, бывает, упоминается столько всего, что волосы дыбом становятся :)

                    >Но это косяк конкретного проекта

                    А я не то же самое сказал? Могу перефразировать для понятности: документированное и предсказуемое поведение модели привело к уязвимости системы (проекта GitHub). Потому что разработчики системы не учли такое поведение.

                    >… печально что из за этого изменили код рельс

                    Разумеется, реальный фикс должен быть в коде гитхаба. Однако фикс, внесённый в код Рельс, решает намного больше, чем одну эту проблему: он избавляет от подобных уязвимостей многие существующие (и многие будущие) проекты, а это дорогого стоит. Другими словами, теперь дефолтное поведение Рельс более безопасное для систем, которые строятся на их основе.
                    Мыслите глобальнее.
                    • 0
                      Могу перефразировать для понятности: документированное и предсказуемое поведение модели привело к уязвимости системы (проекта GitHub).

                      Спасибо что перефразировали, очень понятно. Ответ: нет, к уязвимости привело головотяпство, и заметили его только потому что здесь фигурирует GitHub. Mass assignment был в рельсах всегда и потенциальную опасность от его безумного использования никто от разработчиков не скрывал, и многие проекты на Rails из-за этого нововведения будут требовать доработки для использования с новой версией.

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

                      • 0
                        >Ответ: нет, к уязвимости привело головотяпство

                        Если бы вы процитировали абзац полностью, а не только первое его предложение, то этого «ответа» не понадобилось бы, т.к. он уже содержится в том абзаце:
                        Потому что разработчики системы (в данном контексте — проекта GitHub) не учли такое поведение


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

                        Permission granted.
                        • 0
                          Что-то не клеится с вами диалог. Суть моей мысли в том что рельсы под эту ерунду патчить не надо было, потому что эта ошибка пустяковая. Что вы мне хотите доказать?
                          • 0
                            Я — вам? Да ничего, собственно. Взгляните на мой первый ответ на ваш комментарий в этой ветке: в нём говорится лишь о том, что рассматриваемая в топике ситуация, когда любой пользователь может коммитить в любой репозиторий, является уязвимостью в одном известном Rails-приложении под названием GitHub.

                            Причина — документированное и предсказуемое поведение моделей, помноженное на головотяпство разработчиков. Возможных решений два:
                            1) изменить дефолтное поведение моделей
                            2) пофиксить головы всем разработчикам приложений на Rails, не учитывающим это поведение (или даже банально не подозревающим об этом), коих, смею предположить, большинство (буду счастлив ошибиться, однако это не только моё мнение).

                            Второе — правильнее, первое — проще и эффективнее.
                            Хорошая цитата из одного из комментариев сверху:
                            Разработчики фреймворков и языков программирования должны ориентироваться на пользователей-идиотов, а не профессоров, которые тщательно прочтут 10 томов документации, прежде чем написать первую строчку.

                            Я не согласен с ним дословно (ибо никто никому ничего не должен), но если разработчики хотят, чтобы их языком/фреймворком пользовался как можно более широкий круг разработчиков, им придётся снижать порог вхождения и самим заботиться обо многих вещах (и безопасность — первая из них).
                            • –1
                              ок. я уже высказал свое мнение о том что нужно фиксить головы и привел доводы против изменений в ActiveRecord. Дальше есть о чем спорить?
                              • +1
                                Я тоже высказал своё мнение и тоже привёл свои доводы.

                                >Дальше есть о чем спорить?

                                Спорить изначально было не о чем — разработчики уже давно приняли решение руководствуясь своим мнением и своими доводами. Кстати, каким бы ни было их решение, всё равно остались бы недовольные :)
                  • 0
                    >… но в статье упоминается что это уязвимость Rails

                    Кстати, текст коммита: «another showcase of rails apps vulnerability». Перевод: «ещё одна иллюстрация уязвимости Rails-приложений».
                    Приложений, а не самих Rails.
        • +1
          классика батхерта:)
        • +6
          >вот, что о нём думают разработчики rails

          Да срать на их мнение.
          Репорт по-человечески — не нравится. Натыкали носом — опять не нравится. Вместо того, чтобы признать откровенный проёб с их стороны — пытаются обосрать человека, вскрывшего охрененного размера проблему (и не воспользовавшегося ею в деструктивных или корыстных целях).
          Мудаки, что ещё сказать.
          • –1
            Что значит проигнорировали?

            Егор спросил: «Как заставить разработчиков всегда объявлять attr_accessible?»
            Ему сразу же ответили: «Используй config.active_record.whitelist_attributes, Люк»

            Это игнор? Это проёб?

            А вот показать в воскресенье всем серьезную уязвимость на сервисе, которому стольким многие разработчики обязаны — это как минимум очень некрасиво.
          • 0
            Это не проеб конкретно рельс. Это проеб разработчиков, забывших о mass assignment и attr_accessible.
            • 0
              Действительно, претензия пошла не по адресу.
              Заочно прошу прощения у разработчиков Рельс за заочное же оскорбление (хоть я всё равно с ними и не согласен — способ репорта об ошибке вполне зачётный: действенный, и в то же время не деструктивный).
              Лучи RTFM-а разработчикам ГитХаба.
    • –2
      А мне почему-то кажется, что кое кто ему просто завидует.
      • +2
        а мне почему-то кажется, что кому-то не стоит проецировать свои эмоции на всех окружающих
        • 0
          Я то как раз и не завидую, между прочим.
  • –65
    А мы Егора собеседовали полгода назад… Не взяли, когда узнали, сколько лет. Глядишь, служил бы его гений мирным целям.
    • +46
      А скольких не приняли из-за того, что их любимый цвет с вашим не совпал?
    • +62
      И правильно! Ведь самое главное в работнике — это подходящий возраст! А что он там умеет — это пустяки.

      Бесят такие «работадатели».
    • +2
      По договору подряда можно было его взять.
    • НЛО прилетело и опубликовало эту надпись здесь
    • +24
      Это Вы просто ну капец как подставились этим комментарием.
    • +32
      Да у вас просто гениальная корпоративная политика. Полагаю, у вас говно, а не фирма.
    • +36
      ребята. я перестал с вами разговаривать когда узнал что это вообще то java вакансия и я зря потратил время.

      а меня то оказывается не взяли…
      • –8
        В описании вакансии была java. Тем не менее компиляторной компании нужен был и ruby программист. А ещё там был переезд в Москву. Федотов решил не брать на себя ответственность за то, что потащит школьника в другой город без жилья.

        Хотя, конечно, было бы лучше жевать, чем говорить, а то уже всю карму убили. :-)
        • +3
          Ну тут посты про непрофессионализм HR снимают килоплюсы, и тут ваш комментарий. Все закономерно. А еще айтишники все гордые и предпочитают выбирать человека, который будет им платить деньги за работу, а не «наниматься» :) Сам такой.
        • +9
          bq. Хотя, конечно, было бы лучше жевать, чем говорить, а то уже всю карму убили. :-)

          Лучше грязное белье при себе держать, а не вываливать на Хабру.

          ИМХО ваши действия противоречат бизнес этике — почему, из-за чего и при каких обстоятельствах не взяли человека на работу, это информация которую должны знать только работодатель и соискатель, даже если соискатель оказался наиглупейшим человеком.
          • 0
            Егор, к слову, один из немногих, кто прошёл тест.
            • 0
              Из спортивного интереса решил задачку. Как я понял, там может быть несколько решений, хотелось бы найти наиболее отпимальное. У меня получился такой вариант:

              ^(?:(?:..)*[^a]a)*[^a]*$

              Интересно, у ваших спецов такое же решение, или другое?

              P.S. В условии задачи забыли указать, что имеется в виду диалект регулярных выражений, используюшийся в JS.
              • 0
                Вообще забавная задача. Можно просто глянуть тесты в коде:
                var tests = ['a', 'b', 'aa', 'ba', 'babab', 'babdca', 'bba', 'baa', 'bacadaeafagaeahija']
                var results = [0, 1, 0, 1, 1, 1, 0, 0, 1]

                и захардкодить ответы :)
                • 0
                  посмотрел логи почты

                  ^([^a][^a])*a([^a]([^a][^a])*a)*[^a]*$
                  зааксептили это решение. я правда потом помнится получше находил, раза в два кароче. В q&a его тут публиковал — там и всплыла вакансия
                  • 0
                    Странно что это решение зааксептили, так как, к сожалению, оно неверно. И даже на сайте с задачей этот регексп не проходит проверку. Например сразу видно, что этот регексп не будет корректно работать на строках, в которых вообще нет символа 'a'. Да и остальные простые варианты типа 'ba' и т.д. не сработают корректно.
                  • +1
                    А, стоп, я разобрался. Это у Вас вариант для четного числа символов перед каждым 'a', хотя и не работающий, если строка не содержит 'a'. Я решал для нечетного, как это на данный момент указано в задаче на сайте (возможно, с тех пор задание на сайте изменилось, мало ли).
            • 0
              Вот улучшенный вариант для НЕчётного числа символов перед 'a':

              ^(?:[^a].)*[^a]?$
        • +3
          >Хотя, конечно, было бы лучше жевать, чем говорить

          Ну или хотя бы думать перед тем, как говорить.
    • +16
      Посмотрел на ваш профиль… Коммент вполне подходит шестилетней девочке :-) Вы берёте на работу только учеников начальных классов? Все кто старше — не могут играть в вашей песочнице?
  • +10
    Так как этот коммит безобиднее известного «rm / usr», можно отнести его к разряду шутки.
    Некоторые люди имеют завышенное ЧСВ и чувство юмора у них отсутствует.
  • +8
    программист из Санкт-Петербурга Егор Хомяков

    Он из Саранска. Местный webdev гордится тобой, Егор)
    • +2
      Не только он, но и Испания с Тарифой. ;)
  • 0
    отлично!
  • –2
    о_О почему нельзя было не сделать этот тролль-коммит под анонимусом — проблем захотелось?
    • 0
      Я, конечно же, понимаю, что под анонимусом коммитить нельзя (а то минусующие могут неправильно понять). Имеется в виду анонимный выход в Интернет и левый акк. Назидательный пинок Гитхабу вышел бы точно такой же, но IRL проблем бы у автора не было. Ну да, ЧСВ бы своё потешить не удалось, это некоторым важно.
  • +26
    А все началось с безобидной шутки 3 дня назад.

  • +10
    еще коммент с гитхаба



    отсюда
    github.com/blog/1069-responsible-disclosure-policy
    • +9
      [sarcasm] Ну да, ничего не делают это бездари, лентяи, один Хомяков нормальный пацан, наш русский, за всех буржуев работу делает. [/sarcasm]
  • +2
    Немного неэтично Егор поступил, но понимание этого придет с возрастом. В частности, денег просить за найденный дефект в открытом софте не стоит, конечно, если авторы софта сами за это денег не предлагают. На этом же и базируется опенсорс — каждый может этот софт улучшить. А то выглядит как вымогательство, что, в случае, если с той стороны окажется э… прямолинейный человек, может и проблемы вызвать.

    Ну а пока что следует отметить, что Егор реально крут для своих лет в техническом плане. Я завидую такому уровню и такому потенциалу, по-доброму завидую, конечно. Молодец!
    • 0
      Не понимаю, почему Ваш комментарий минусуют. Строить из себя почти вымогателя — пускай и в шутку, как многие, подумав, осознали — это единственная ошибка Хомякова в этой затее.
      • 0
        Она то единственная, но вот для самого Егора очень уж юридически опасная.
  • +3
    Эм. Как я понял, уязвимость в том, что забывают пользоваться attr_accessible?
    • +7
      Именно. Кто-то из разработчиков гитхаба допустил ошибку, о которой предостерегают всех начинающих рельсовиков, неправильно использовав стандартное, задуманное поведение. Кто-то другой решил поиграть в хацкера. В результате рунет пестрит жёлтыми заголовками и комментариями людей не в теме, типа «АААААААА РЕЛЬСЫ ДЫРЯВЫЕ ВСЕМ КОНЕЦ КАК ЭТО ПАТЧИТЬ», а начинающий хацкер пожинает плоды славы.
      • 0
        Интересно, если даже ГитХаб пишут девы, которые хуже нубов, отчего в Постероус тот же баг?
      • 0
        Как-то фигово предостерегают. Генератор даже комментария в модели не оставляет.
  • –4
    Выборы и Егор позорят страну!
    • +6
      Сделайте тогда что-нибудь, что бы ею гордились!
  • 0
    github.com/toastdriven/django-haystack
    github.com/django-extensions/django-extensions
    github.com/ask/django-celery
    github.com/ericflo/django-pagination
    github.com/maraujop/django-crispy-forms
    github.com/tilgovi/gunicorn/
    github.com/dcramer/sentry
    github.com/dcramer/raven

    не полный список приложений из одного проекта. как теперь все это в продакшн вываливать? :( спасибо, распиздяиразработчики гитхаба!

    • 0
      стапэ. там везде этот баг или что? мне сказали у django с этим проблем нет т.к. формы наследуются
      • 0
        Я к тому, что много кода с гитхаба используется в проектах. Теперь гарантии нет, что в него не накоммитили бекдоров.

        У джанги — да, подобных проблем быть не должно, при правильном использовании, данные без валидации в БД не попадают.
    • 0
      Использую все вами написанные кроме gunicorn(предпочитаю uwsgi) в своих проектах.
    • +1
      А вам не кажется что это спасибо Егору, за то что он выкатил публично данные о не исправленной уязвимости. Не нужно тут говорить что его игнорировали только, 2 дня ждал и не выдержал, бедняга.
      • 0
        А сколько надо было ждать?
        • +1
          Сколько нужно чтобы закрыли баг. Баги бывают у всех
    • 0
      Тащить с PyPI, надеясь, что там стабильная версия.
  • –1
    chrisacky.posterous.com/github-you-have-let-us-all-down

    «So what should the next person do who discovers a vulnerability?

    > As soon as we detected the attack we expunged the unauthorized key and suspended the user.

    GitHub, make it sound like @homakov was being seriously malicious.

    Well GitHub, This is a shocking portrayal of the actual occurrences.
    You make it sound like you were always a step ahead and had everything always under control.
    You didn't really „detect“ anything. You were informed. It also wasn't an attack. If it was an attack, you wouldn't have seen it coming, or in the very least more damage would have been done.

    As far as attacks go, this was probably the „whitest“ of white that has ever gone down. Not only did the „attacker“ not do any actual damage, but he was continually ignored.
    This is a shameful handling of the actual events, more so that he was suspended as a result of drawing attention this devastating attack.»

    ППКС
    Егора в президенты, Рельсы и ГитХаб фтопку.
  • 0
    Осторожнее с такими заголовками. Сколько Егоров вздрогнуло, не дочитав до конца?

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