Это старая песня — зайдите и посмотрите, ага. И я даже не буду просить у вас конкретных примеров, ибо знаю их — тут забыли, тут не в том порядке освободили, и так далее. Но это все не про «секреты правильного управления», это как раз подтверждает мои слова — управлять памятью в Си просто, но тяжело, требует внимания. В плюсах произошел рост сложности управления с одновременным облегчением этого самого управления в бизнес-логике — и наверное вы не будете спорить, что в плюсах стрелять в ногу стало несравненно интереснее. Проводя современные аналогии — в Си вы работаете в тубдиспансере, все время ходите в маске и моете руки раствором хлорки, и если забыли что-то из этого — то заболеете. И вас можно проверить на количество использованной хлорки, чтобы поймать вашу ошибку — хотя для этого опять же нужен отдельный линтер человек. В плюсах у вас нет с собой раствора хлорки, потому что Александр Степанов приделал к каждой двери автоматический распрыскиватель, но если вдруг вы нажали ручку двери не с тем ускорением — распрыскиватель как будто бы работает, но на самом деле нет, и вы об этом никогда не узнаете, либо увидите такое сообщение, что просто не поймете его достаточно хорошо и попробуете выйти в другую дверь (а там лежат туберкулезники с Эболой, но об этом вы узнаете потом может быть).
Продолжая аналогию — в Расте вы скорее всего вообще не сможете зайти в тубдиспансер. Хотя если вы очень опытный доктор и пять месяцев были на курсах повышения квалификации… То сможете иногда заходить )))
Это был эзотерический язык с неизвестным способом хранения данных в памяти? Или банальный Си? Если второе, то вот честно — какие были с этим сложности? Я в свое время преподавал ряд предметов программистского курса, и не припомню ни единого случая, чтобы кто-то не понял мое объяснение формата хранения двумерных массивов в Си.
Но вот по сути ценностного предложения я вижу некоторые манипуляции. Когда-то очень-очень давно я делал приложение, которое делало буквально почти то же самое — скачивание данных с сокета (от АСУТП) и отправку в постгрес-базу. Я крайне плохо помню детали (даже не могу вспомнить, как визуально код выглядел), но это был C++ Builder 6.0, графическое приложение, сокеты виндовые, какие-то несложные поисковые запросы к базе с выдачей на форму и сохранением в файл. И это вместе с встроенными в исполняемый файл либами Билдера занимало единицы мегабайт, как и все мелкие софтинки, которые я тогда писал в Билдере. И хотя, возможно, у вас все же было больше функционала, но тем не менее есть ощущение, что с учетом моего примера противопоставление Раста конгломерату адских сущностей выглядит несколько однобоким.
Мммм, а вы могли бы пояснить? Потому что, да, управлять памятью в Си — в бесконечное число раз проще чем вообще где-либо еще. Да, конечно _тяжелее_, чем в плюсах например, но при этом _проще_.
А за этим вот «правильно — неправильно» обычно прячется маркетинг, нет?
Я все же настаиваю — это все теоретические возможности. Вам не «документация на поезда», прости Господи, будет нужна, чтобы все это сделать. В этом РЖД ничем не отличается от любой другой крупной конторы — снаружи, одними логическими выводами, нельзя понять очень многое о действиях людей.
Вот, я и говорю — если вы знаете что-то про какое-то конкретное масло, то давайте разберем этот конкретный пример. Вести разговор «например, в общем, про масло» — бессмысленно, мы переходим в плоскость «можно сделать в принципе что угодно».
Нет нет нет, просто «сидеть в сети» — не поможет. Вы же про какие-то материалы пишете? Кажется здесь требуется другая компетенция. Не стоит огульно преувеличивать возможности кулхацкера только потому, что ранее кто-то был склонен их недооценивать.
Мммм, заменят материалы? Вы можете привести конкретный пример того, как это будет сделано, по шагам, или высказываете гипотетическую возможность? Просто гипотетических возможностей очень много… Стоит обсуждать вполне конкретные user stories.
Спецсвязь? Вы о чем? Полагаю, речь идет про физканалы ТЧ. Надо было просто убегать, да и все, поезда и так под приказ поехали бы. Шутка само собой.
Касаемо оптики — ой вэй… Десять лет назад находились люди, которые тем же самым трактором ее выдирали, обнаруживали отсутствие меди, и тут же бросали все. У нас даже был походный сварочный прибор на этот случай (хотя это так-то проблема РЦС, а не СЦБ).
Господи, да какой сетевой взлом охраны? Я уже писал в комментах к исходной статье — входи и ломай что хочешь. Хотя это не везде так, но на Московской — повсеместно. Нет там ни замков итальянских, ни ВОХРы на вертолетах. То есть вопрос безопасности в целом там не решен, и его решить в принципе очень сложно и дорого.
Отличная статья, автору большое спасибо и (без шуток) счастья в личной жизни. К таким проблемам надо привлекать внимание, и делать это по возможности так, чтобы тебя не сделали крайним. Кажется заява в транспортную прокуратуру — едва ли не лучший способ продолжения банкета, и делать это надо срочно (пока заяву не накатали на вас). Рынок поставки оборудования в РЖД исчисляется триллионами рублей, и на некоторых вещах делается серьезная маржа, так что можно легко наступить людям на хвост, а они в ответ наступят на горло. Впрочем пока что, как я вижу, все решилось благодаря какому-то неравнодушному человеку.
Под катом некоторые дополнительные подробности (не понаслышке, правда это опыт десятилетней давности):
0) Общефилософское утверждение, проверенное жизненным опытом — абсолютно всегда где-то на свете есть кто-то, кто умеет делать твою работу лучше тебя, и он легко найдет дыры в твоей безопасности, UB в твоем коде, косяки на твоей плате и так далее. Данный пост он как раз об этом — прийти в большую контору, где «от пионеров до пенсионеров», и потыкать носом в косяки. У автора в принципе не было никаких шансов не найти ни одного косяка, в этом смысле пост не интригующий. Хотя безусловно это нужно делать, более того — конторы сами должны быть заинтересованы в похожих аудитах.
1) Как на дороге, так и на дорогу (в коммерческих конторах, работающих с РЖД) работают за весьма скромные деньги чрезвычайно трудолюбивые люди. Когда это машинисты, путейцы, кто-то еще отрасле-специфичный — можно смело сказать, что это не только трудолюбивые люди, но и лучшие специалисты в своем роде. Но когда это что-то общепромышленное (электронщики, программисты, сетевики и т.д.), то зачастую это отнюдь не самые лучшие специалисты — потому только самые идейные готовы годами работать на зарплате ниже рынка (а там надо работать именно годами, чтобы успеть сделать хоть что-то), вместо того, чтобы уйти куда-то еще. К высказанному выше общефилософскому утверждению это только добавляет бульона. Тем более должно было быть много косяков именно в РЖД. Думаю ничуть не меньше можно было бы налутить в каком-нить секретном НИИ.
2) Железная дорога де-факто является объектом критической инфраструктуры не вся целиком (включая АСУ «Экспресс», туалеты и видеокамеры), а только в наиболее значимой своей части. А она, в свою очередь, может при необходимости существовать даже без напольных устройств СЦБ, так что рассказы про мамкиных террористов, которые поставили раком какой-нибудь ход — скорее из области фантастики. Неудобства создать можно, да и то не Бог весть какие.
3) Урежем осетра дальше — мне трудно сказать, что там за ИБП на скриншоте и кого они питают (но вряд ли это общее питание какого-нибудь блок-поста), но вот это вот "Ужас, там SCADA, сейчас пущу поезд под откос" точно не в кассу. Во-первых, если мне не изменяет память и зрение, то на скриншоте показан АРМ АПК-ДК (аппаратно-программный комплекс диспетчерского контроля), с него вы особо не поуправляете станцией. Во-вторых, даже получив прямой доступ к не в пример более «опасным» АРМ ДНЦ (поездного диспетчера) или АРМ ДСП (дежурного по станции) вы не сможете так вот легко отправить под откос поезд (то есть что-то, следующее поездным маршрутом). Вот начудить с маневрами на некоторых станциях уже будет можно, хотя это редко имеет серъезные последствия. Еще знатоки темы вспомнят про сбросовые стрелки и разрывы маршрутов, но они в основном не так просто управляются (а при местном управлении — вообще только с пультом КОК). В данном случае устройства автоматики и телемеханики выручат как в случае непреднамеренных ошибок и отказов оборудования, так и в случае злонамеренных действий… хотя с этим уже сложнее (см. п. 5).
4) Почти основной способ обеспечения безопасности (которая не safety, а security) на многих объектах критической инфраструктуры, и железная дорога тут не исключение — security through obscurity. Разделение сетей, запрет (банальный, на уровне локальных политик) на выполнение каких-то действий на ПК, имеющих связь с критическими элементами, закрытость протоколов связи между микропроцессорными элементами ЖАТ, сложность ТРА станций, и т.д. и т.п. Конечно мы и тут видим нарушения, как на том же скрине с АПК-ДК — возможно какой-нибудь начальник у себя на рабочем компе запустил АРМ ШЧД (диспетчера дистанции СЦБ), и это плохо, либо с АРМ ШЧД был организован несанкционированный доступ в интернет, что еще хуже. Но это скорее исключительная ситуация, в целом, не обладая нужными знаниями, вы тем более никакой поезд под откос не пустите.
5) Известно, что брак первой категории, авария или крушение гарантируется только сочетанием трех факторов: неисправности оборудования, поездной обстановки и человеческого фактора. В данном посте рассматривается раздувание человеческого фактора до масштаба диверсии, причем столь серьезной, чтобы обойтись лишь одним этим фактором. Однако для такого уровня не нужны никакие сетевые уязвимости. Уверен, что я и сейчас легко смогу проникнуть почти в любую релейку (просто зная, что для этого нужно). Дальше при наличии знаний можно сделать многое, гораздо больше, чем через эти ваши энторнеты. И еще, и еще, и еще много всего, и даже можно в релейку не заходить на самом деле! И с этим либо вообще ничего нельзя сделать, либо просто нерентабельно.
Из вышесказанного заключаем следующее — безусловно увиденное ужасно. Безусловно можно лишить РЖД всего видеонаблюдения (правда оно небось и не РЖД принадлежит, ха-ха, но не суть). Причем продавцы его будут только рады, можете не сомневаться (а ФСБ все равно придет за вами, а не в те кабинеты). Особенно все это вызывает возмущение именно у айтишной публики, так что внимание к посту понятно. Но — опасности и возможности такого взлома сильно преувеличены, это с одной стороны, а с другой стороны все на самом деле гораздо хуже. Причин, как и всегда, две — некомпетентность исполнителей и незаинтересованность руководителей. Причем я и к исполнителям не готов предъявить ни одной претензии (в большинстве случаев у них воистину собачья работа), и к руководителями тоже — невозможно расти над собой в отсутствие конкуренции. ЧСХ конкуренция компаний в таких отраслях также нечасто обречена на успех, а конкуренция персоналий в текущей общественно-политической модели не работает.
Нет, обождите, я же выше специально указал, что есть разные ниши. И соваться в прочно стоящую на ногах нишу с совершенно новым синтаксисом — опасно (особенно когда и семантика поменялась совершенно). Вы привели в этот смысле нерелевантные примеры, Си вовсе не претендовал попасть туда, где «живут» АПЛ и Кобол. На самом деле и Фортрану он в конкуренты не набивался, хотя и по сей день им иногда приходится конкурировать в сфере высокопроизводительных вычислений. Си разрабатывался заведомо «ближе к аппаратуре», как язык системного программирования, он не мог составлять конкуренции Коболу так же, как Кобол не составлял конкуренции различным ассемблерам.
Уже говорил, повторюсь — если про язык периодически возникают обсуждения в духе «как наконец перестать ненавидеть его синтаксис и все остальное в нем», то значит синтаксис и правда плох, и оправдываться тут нечего (даже если кому-то он зашел). Выше 0xd34df00d упоминал Агду — вротмненоги же, да? Почему же там никто не воет? Да потому что там другая парадигма совершенно, отсюда другая публика, там это нормально. А вот Раст пытается пролезть туда, где люди пишут в основном на С/С++, и он на них критически не похож, несмотря на заверения. Так что этот пост и ему подобные недалеко ушли от анекдота про интимные отношения в семье сотрудника Майкрософт.
Мммм, загадка… Интересно было бы найти концы, потому что в целом это забота лишь компоновщика, и ничья более. Я только не понял, вы исполняли код только в отладчике, или на железе тоже?
Segger? А почему он кучу создает? Впрочем неважно, куча всегда создается в одном и том же месте, ваша задача — корректно рассчитать ее параметры, и отработать все сценарии выделения памяти. Повторюсь, иногда никак без выделения, вот освобождать — табу. Поэтому динамика в полном смысле слова невозможна/нежелательна. Ну а в Qt вы не то что вовсю пользуетесь, вы там ей просто _не можете_ не пользоваться ))
линтерчеловек. В плюсах у вас нет с собой раствора хлорки, потому что Александр Степанов приделал к каждой двери автоматический распрыскиватель, но если вдруг вы нажали ручку двери не с тем ускорением — распрыскиватель как будто бы работает, но на самом деле нет, и вы об этом никогда не узнаете, либо увидите такое сообщение, что просто не поймете его достаточно хорошо и попробуете выйти в другую дверь (а там лежат туберкулезники с Эболой, но об этом вы узнаете потом может быть).Продолжая аналогию — в Расте вы скорее всего вообще не сможете зайти в тубдиспансер. Хотя если вы очень опытный доктор и пять месяцев были на курсах повышения квалификации… То сможете иногда заходить )))
Но вот по сути ценностного предложения я вижу некоторые манипуляции. Когда-то очень-очень давно я делал приложение, которое делало буквально почти то же самое — скачивание данных с сокета (от АСУТП) и отправку в постгрес-базу. Я крайне плохо помню детали (даже не могу вспомнить, как визуально код выглядел), но это был C++ Builder 6.0, графическое приложение, сокеты виндовые, какие-то несложные поисковые запросы к базе с выдачей на форму и сохранением в файл. И это вместе с встроенными в исполняемый файл либами Билдера занимало единицы мегабайт, как и все мелкие софтинки, которые я тогда писал в Билдере. И хотя, возможно, у вас все же было больше функционала, но тем не менее есть ощущение, что с учетом моего примера противопоставление Раста конгломерату адских сущностей выглядит несколько однобоким.
А за этим вот «правильно — неправильно» обычно прячется маркетинг, нет?
Поведу себя грубо и скажу, что это _преувеличение_ для красного словца.
Касаемо оптики — ой вэй… Десять лет назад находились люди, которые тем же самым трактором ее выдирали, обнаруживали отсутствие меди, и тут же бросали все. У нас даже был походный сварочный прибор на этот случай (хотя это так-то проблема РЦС, а не СЦБ).
1) Как на дороге, так и на дорогу (в коммерческих конторах, работающих с РЖД) работают за весьма скромные деньги чрезвычайно трудолюбивые люди. Когда это машинисты, путейцы, кто-то еще отрасле-специфичный — можно смело сказать, что это не только трудолюбивые люди, но и лучшие специалисты в своем роде. Но когда это что-то общепромышленное (электронщики, программисты, сетевики и т.д.), то зачастую это отнюдь не самые лучшие специалисты — потому только самые идейные готовы годами работать на зарплате ниже рынка (а там надо работать именно годами, чтобы успеть сделать хоть что-то), вместо того, чтобы уйти куда-то еще. К высказанному выше общефилософскому утверждению это только добавляет бульона. Тем более должно было быть много косяков именно в РЖД. Думаю ничуть не меньше можно было бы налутить в каком-нить секретном НИИ.
2) Железная дорога де-факто является объектом критической инфраструктуры не вся целиком (включая АСУ «Экспресс», туалеты и видеокамеры), а только в наиболее значимой своей части. А она, в свою очередь, может при необходимости существовать даже без напольных устройств СЦБ, так что рассказы про мамкиных террористов, которые поставили раком какой-нибудь ход — скорее из области фантастики. Неудобства создать можно, да и то не Бог весть какие.
3) Урежем осетра дальше — мне трудно сказать, что там за ИБП на скриншоте и кого они питают (но вряд ли это общее питание какого-нибудь блок-поста), но вот это вот "Ужас, там SCADA, сейчас пущу поезд под откос" точно не в кассу. Во-первых, если мне не изменяет память и зрение, то на скриншоте показан АРМ АПК-ДК (аппаратно-программный комплекс диспетчерского контроля), с него вы особо не поуправляете станцией. Во-вторых, даже получив прямой доступ к не в пример более «опасным» АРМ ДНЦ (поездного диспетчера) или АРМ ДСП (дежурного по станции) вы не сможете так вот легко отправить под откос поезд (то есть что-то, следующее поездным маршрутом). Вот начудить с маневрами на некоторых станциях уже будет можно, хотя это редко имеет серъезные последствия. Еще знатоки темы вспомнят про сбросовые стрелки и разрывы маршрутов, но они в основном не так просто управляются (а при местном управлении — вообще только с пультом КОК). В данном случае устройства автоматики и телемеханики выручат как в случае непреднамеренных ошибок и отказов оборудования, так и в случае злонамеренных действий… хотя с этим уже сложнее (см. п. 5).
4) Почти основной способ обеспечения безопасности (которая не safety, а security) на многих объектах критической инфраструктуры, и железная дорога тут не исключение — security through obscurity. Разделение сетей, запрет (банальный, на уровне локальных политик) на выполнение каких-то действий на ПК, имеющих связь с критическими элементами, закрытость протоколов связи между микропроцессорными элементами ЖАТ, сложность ТРА станций, и т.д. и т.п. Конечно мы и тут видим нарушения, как на том же скрине с АПК-ДК — возможно какой-нибудь начальник у себя на рабочем компе запустил АРМ ШЧД (диспетчера дистанции СЦБ), и это плохо, либо с АРМ ШЧД был организован несанкционированный доступ в интернет, что еще хуже. Но это скорее исключительная ситуация, в целом, не обладая нужными знаниями, вы тем более никакой поезд под откос не пустите.
5) Известно, что брак первой категории, авария или крушение гарантируется только сочетанием трех факторов: неисправности оборудования, поездной обстановки и человеческого фактора. В данном посте рассматривается раздувание человеческого фактора до масштаба диверсии, причем столь серьезной, чтобы обойтись лишь одним этим фактором. Однако для такого уровня не нужны никакие сетевые уязвимости. Уверен, что я и сейчас легко смогу проникнуть почти в любую релейку (просто зная, что для этого нужно). Дальше при наличии знаний можно сделать многое, гораздо больше, чем через эти ваши энторнеты. И еще, и еще, и еще много всего, и даже можно в релейку не заходить на самом деле! И с этим либо вообще ничего нельзя сделать, либо просто нерентабельно.
Из вышесказанного заключаем следующее — безусловно увиденное ужасно. Безусловно можно лишить РЖД всего видеонаблюдения (правда оно небось и не РЖД принадлежит, ха-ха, но не суть). Причем продавцы его будут только рады, можете не сомневаться (а ФСБ все равно придет за вами, а не в те кабинеты). Особенно все это вызывает возмущение именно у айтишной публики, так что внимание к посту понятно. Но — опасности и возможности такого взлома сильно преувеличены, это с одной стороны, а с другой стороны все на самом деле гораздо хуже. Причин, как и всегда, две — некомпетентность исполнителей и незаинтересованность руководителей. Причем я и к исполнителям не готов предъявить ни одной претензии (в большинстве случаев у них воистину собачья работа), и к руководителями тоже — невозможно расти над собой в отсутствие конкуренции. ЧСХ конкуренция компаний в таких отраслях также нечасто обречена на успех, а конкуренция персоналий в текущей общественно-политической модели не работает.
Но для знакогенерации — самое оно! Ну и ниже привели классический пример построения барьера синхронизации на регистрах.
Даже жалко, что эта эпоха ушла… Гори она огнем конечно, но решения порой были оригинальные ))
и все остальное в нем», то значит синтаксис и правда плох, и оправдываться тут нечего (даже если кому-то он зашел). Выше 0xd34df00d упоминал Агду — вротмненоги же, да? Почему же там никто не воет? Да потому что там другая парадигма совершенно, отсюда другая публика, там это нормально. А вот Раст пытается пролезть туда, где люди пишут в основном на С/С++, и он на них критически не похож, несмотря на заверения. Так что этот пост и ему подобные недалеко ушли от анекдота про интимные отношения в семье сотрудника Майкрософт.Извините, но все ваше сообщение состоит по сути из одной этой идеи, если не вдаваться в подробности. А откуда эта мысль вообще взялась?