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

    +119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    > Наша фирма разрабатывает серьезный софт на CL, Scheme и
    некоторых других языках. Но в последнее время в нашей продукции
    часто стали находить эксплоиты (что-бы не пугать наших клиентов -
    подробнее не скажу). Нам для LISP-подобных языков необходима
    DEP (Data Execution Prevention). Есть ли подобные наработки в этой области?
    Пока ничего побобного для языков этого семейства мы не находили и очень
    расстроены сложившимися обстоятельствами.

    Не мог ни запостить.

    Запостил: HaskellGovno, 27 Августа 2012

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

    • Да, я знаю, что пора заводить LispGovno, но он забанен.
      Ответить
      • Только утром его разбанил, так он уже успел насрать.
        Ответить
    • Ссылку в студию!
      Ответить
    • Сраный лисп скатился до уровня пхп. Пора переписать emacs на небыдло-хаскелле
      Ответить
    • > Но в последнее время в нашей продукции часто стали находить эксплоиты
      Хм, так в их продукции стали находить эксплойты, а не уязвимости... Ну да, тут бы я на месте клиентов послал их куда подальше. Нашли чего в программы встраивать.
      Ответить
      • По моему создатели "серьёзных приложений" путают эксплойты и уязвимости.
        Ответить
    • Проблема в том, что LISP позволяет выполнять данные (даже введенные пользователем), как программу. Видимо в этом и суть проблемы топикстартера. Даже пользователь может ввести список, который будет содержать ключевое слово defun и поэтому представлять собой функцию и затем выполнить её.
      Ответить
      • Вот так?
        http://govnokod.ru/11658
        Ответить
      • Все языки, в которых есть eval позволяют это делать. Вот только зачем прогонять нефильтрованные данные через него?

        P.S. Еще в лиспе была какая-то уязвимость связанная с функцией (read), но я ее если честно уже не помню.
        Ответить
        • Немного погуглил. Вот такая прелестная уязвимость заключена в (read):

          http://ideone.com/9GMbL
          Ответить
          • Это не уязвимость. Это нормальное поведение.
            Чтобы просто считать пользовательский ввод есть
            read-sequence http://ideone.com/PfLXi
            и read-line http://ideone.com/sKOHT
            Ответить
            • > Это не уязвимость. Это нормальное поведение.
              В общем то да. Оно даже документированное.

              Но, будучи использованным в серьезном софте, это нормальное поведение волшебным образом превращается в уязвимость.
              Ответить
              • Вообще как софт может быть серьёзным, если в нем используют read? Консольные приложения обычно не серьёзны. Или я не прав?
                Ответить
                • (read) не только с консоли читает. Ему можно передать поток.

                  Вероятно в серьезном софте данный код используется как скриптовый двиг для расширения функциональности.
                  Ответить
                  • Можно, например, потоки от сокетов или HTTP? Или в лиспе интерфейсов потоков не полиморфный?
                    Ответить
                    • ЕМНИП он не совсем полиморфный - т.е. стандартные сокеты да файлы можно, а свой самодельный стрим - нет.
                      Ответить
          • ввод:
            #.(progn (format t "Oh, exploitable!~%") '(+ 2 2))

            Что это означает? Почему это вообще работает?
            Ответить
            • Код совершенно безобидный:
              (setf b (read))
              (princ b)
              Ответить
              • Код не безобидный. Как выше написал @guest, нужно использовать другие функции для ввода пользовательских данных.
                Ответить
            • Для себя любимого:
              Sharpsign-Dot (#.) говорит, что сразу после чтения (read) формы произойдет ее вычисление (eval) и его результат будет возвращен.
              В данном случае вычисление заключается в выводе "Oh, exploitable!" на стандартный вывод и построении списка (+ 2 2)
              Ответить
        • А всё потому, что read предназначен для чтения лисп-форм из проверенных источников (собственно, это первая фаза read-eval), а вовсе не ввода пользователя. Ридер же должен понимать свои макросы.
          Ответить
    • >Пока ничего побобного для языков
      >побобного
      Ответить
      • обобрено бобрами
        Ответить
        • обобнено бобами
          Ответить
          • удобрено добрами
            Ответить
            • обагрено баграми
              Ответить
              • бобра с ослом
                Ответить
                • Анонимус, не обращай внимания в этой ветке отписываются все жаждущие внимания плюсиков. (Не забудь меня плюсануть).
                  Ответить
                  • А кстати в последнее время появилась эта плохая тенденция: что не зайдешь в тред - всё сплошь и рядом заплюсовано. Раньше такого не было.

                    А минусуют-то в основном очевидную тупость и посты гумна.
                    Что святая модерация с людьми -то делает?
                    Ответить
                    • > Что святая модерация с людьми -то делает?
                      Какой багор )))
                      Ответить
                    • Нам обещали карму, поэтому гумно регает новые аккаунты, чтобы не сильно уйти в минуса, а другие друг-дружке ставят взаимные кресты.
                      Ответить
                    • >Что святая модерация с людьми -то делает?
                      На самом деле никто не знает кто из нас модератор, но всем доподленно известно, что это не гумно. Сразу станет ясна правильная тактика, чтобы втереться в доверие модератору.
                      Ответить
                      • >но всем доподленно известно, что это не гумно
                        Спасибо кеп. Понятно что модератор - это вам не гумно собачье.
                        Хотя почему-то тебя еще ни разу не банили.
                        Ответить
                        • > модератор
                          > Хотя почему-то тебя еще ни разу не банили.
                          Очень хорошая догадка (:
                          Ответить
                      • > На самом деле никто не знает кто из нас модератор
                        Агата Кристи. "10 негритят".
                        Ответить
                        • Вот раньше как-то и говнокод был активнее по вечерам. А с приходом модераторов начал загибаться. Кармодрочество и уменьшение посещаемости - верные признаки.
                          Ответить
                          • Ну я надеюсь, что это просто из-за лета, и через пару месяцев посещаемость восстановится...
                            Ответить
                        • >На самом деле никто не знает кто из нас модератор
                          Ладно. Чтобы вы не терзались догадками открою страшную тайну.
                          Только никому не рассказывайте:
                          Модератор - это Я!
                          Ответить

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