Как стать автором
Обновить

PostgreSQL, TCL и другие: Критическая ошибка в RE engine. Возможная уязвимость

Информационная безопасность *PostgreSQL *Регулярные выражения *
Хочу обратить внимание хабрасообщества на возможную «уязвимость» в TCL, PostgreSQL и теоретически в некоторых других системах, использующих модули ругулярных выражений или NFA утилиты, изначально написаные самим Генри Спенсором (Henry Spencer). Измененных исходников можно найти добрую сотню (у того же Sun Microsystems, UUNET и т.д.). И хотя, я не думаю, что баг существует изначально с далеких 90-х, хотя бы потому, что кода где возникает эта ошибка я у Генри, в старых его источниках, не нашел, проверить ваши системы все-таки стоит.

И так ошибка: это busyloop на стадии компиляции регулярного выражения вида (((((x)*)*)*)*)*. Причем именно не исполнения, а компиляции, т.е. если есть проверка валидности регулярки и она базируется на том же коде NFA — имеем тот же безконечный цикл + 100% cpu usage.

Ошибку нашли коллеги по opensource проекту TCL, во всех его актуальных версиях (включая develop). Зная, что Postgres использует похожее API, нетрудно было выяснить, что скармливание этого регулярного выражения Postgres приводит к полному зависанию потока (процесса), отрабатывающего запрос.

Ошибка возникает при таком группировании только в пятом и более порядке вложенности — т.е. четыре вложеных группы корректно компилируются и исполняются.
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 4.7K
Комментарии 18

Создаем свой RSS канал с помощью Google Apps Script

Google App Engine *Google API *
Recovery mode
Tutorial
Есть такой замечательный wiki ресурс по языку Tcl/Tk как wiki.tcl.tk. Есть у этого ресурса RSS лента последних изменений. Но вот беда — лента изменений самая минимальная. Там указано только кем, когда и какая страница редактировалась. Нет полных изменений и нет GUID у элементов ленты, поэтому некоторые RSS клиенты (например, Google Reader) не показывают большую часть новостей, считая их одинаковыми.
Как сделать свою RSS ленту
Всего голосов 9: ↑7 и ↓2 +5
Просмотры 12K
Комментарии 2

Системы контроля версий: Fossil, часть I

Системы управления версиями *
Tutorial
Приветствую вас, коллеги!

Относительно недавно здесь публиковался опрос по используемым системам контроля версий. Как и ожидалось, с большим отрывом победил Git, а Fossil даже не был включен в список, только в комментариях пару раз промелькнул. Поиск по Хабру показал, что здесь о Fossil практически ничего не писали. Поэтому я и решил опубликовать эту статью — тем более, что русскоязычная информация о Fossil крайне скудна и однообразна.
Читать дальше →
Всего голосов 50: ↑45 и ↓5 +40
Просмотры 37K
Комментарии 77

Пишем голосовое IVR меню на языке TCL, с использованием Cisco IVR API

Разработка систем связи *
Recovery mode
Из песочницы
Tutorial
Сегодня речь о голосовом меню (IVR) для маршрутизаторов Cisco, которое мы будем писать на языке TCL, и подключать на Cisco 3845.

Итак, для начала давайте разберемся в азах


Cisco начиная с версии IOS 12 поддерживает как VXML так и TCL скрипты для работы с голосовым меню. Однако, в отличии от VXML, скрипты на TCL имеют гораздо больше возможностей взаимодействия с Cisco IVR API. Так же существует возможность подключать гибридные IVR скрипты, со встроенными кусками VXML кода внутри TCL скрипта.

Все документы, связанные с IVR от Cisco, которые мне довелось получить можно скачать здесь.

FSM


Первое это FSM переходы.
Finite-State Machines — абстрактный автомат, число возможных внутренних состояний которого конечно.
Выглядит это примерно так:
set ivr_fsm(CALLCOMES,ev_setup_indication) "act_Setup same_state"

Переходов таких может быть сколько угодно, и расположены они в конце TCL скрипта.

Давайте разберемся, что это вообще такое.
Общий синтаксис этой команды таков:
set array(CURRSTATE, curr_event) “act_proc NEXTSTATE”

где:
array – это имя FSM массива.
CURRSTATE – имя текущего состояния, при котором получено событие curr_event.
act_proc – имя функции, которую необходимо выполнить при поступлении события curr_event.
NEXTSTATE – имя состояния, которое установится после выполнения act_proc.

Другими словами, FSM это маркер, по которому Cisco сравнивает полученное от API событие с curr_event и текущий статус с CURRSTATE, если в каком либо FSM переходе они описаны, вызывается процедура act_proc и состояние изменяется на NEXTSTATE.

Самое главное в этом — это то, что текущее событие и состояние сравниваются со всеми описанными FSM переходами одновременно. Т.е. для Cisco не имеет значения порядок, в котором расположены FSM переходы, все они обрабатываются асинхронно.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 12K
Комментарии 2

Реализация автосекретаря на базе решений компании Cisco

Блог компании CBS Разработка систем связи *


При звонке практически в любую компанию мы обычно слышим приятный или не очень голос, напоминающий нам, куда мы дозвонились и предлагающий выполнить какие-то действия. Мы попали… попали на автосекретаря. Автосекретарь (англ. Auto Attendant/AA) — это, как правило, простейший случай Интерактивного Голосового Меню (англ. Interactive Voice Response/IVR), позволяющий при звонке в компанию донабрать номер внутреннего абонента, отправить голосовое сообщение или факс, связаться с секретарем.

В этой статье я предлагаю ознакомиться с вариантами реализации автосекретаря на базе решений компании Cisco. Их как минимум четыре и при внедрении решений унифицированных коммуникаций Cisco, нам нередко задают вопрос, на чём именно реализовать данный функционал. Давайте рассмотрим плюсы и минусы каждого из них.
Читать дальше →
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 16K
Комментарии 0

Использование TCL в разработке на FPGA

Высокая производительность *Алгоритмы *Функциональное программирование *FPGA *Программирование микроконтроллеров *
Всем привет! Давно не писал статьи на любимую тематику и наконец-то созрел на что-то более-менее приличное и стоящее. В этой статье речь пойдет об очень интересной задаче, с которой инженер-разработчик сталкивается чуть ли не каждый день. Предлагаю вам посмотреть, каким образом можно использовать всю мощь и простоту TCL скриптов для проектирования на FPGA. В данной статье описание базируется на ПЛИС фирмы Xilinx, но это не отменяет возможностей TCL скриптов для кристаллов ПЛИС других производителей.


Интересно? Поехали…
Читать дальше →
Всего голосов 28: ↑26 и ↓2 +24
Просмотры 29K
Комментарии 27

Visual Tcl. Разработка графического пользовательского интерфейса для утилит командной строки (Продолжение)

Криптография *Open source *Тестирование IT-систем *Программирование *Графические оболочки *
В предыдущей статье в качестве инструментария для создания графического интерфейса для утилит командной строки на базе Tcl/Tk был рассмотрен конструктор tkBuilder. Конструктор хорош, но как было отмечено в статье обладает и рядом недостатков, главным из которых является отсутствие поддержки UTF-8, а следовательно, и русского алфавита. Еще один недостаток был отмечен пользователем merlin-vrn. Это поддержка на сегодняшний день только Tcl/Tk версии 8.4.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 8.7K
Комментарии 7

Python и графический интерфейс для утилит командной строки Network Security Services

Информационная безопасность *Криптография *Python *Графические оболочки *IT-стандарты *
imageПакет Network Security Services (NSS) представляет собой набор библиотек, используемых при кроссплатформенной разработке защищенных клиентских и серверных приложений. Приложения построенные с использование NSS могут использовать TLS от v1.0 до TLS v1.3, PKCS #5, PKCS #7, CMS, PKCS #11, PKCS #12, S/MIME, сертификаты X.509 v3, OCSP и другие стандарты обеспечения безопасности. По своей функциональной мощности в области криптографии и PKI с NSS может сравниться разве что OpenSSL. Но при этом пакет NSS имеет одно неоспоримое преимущество перед OpenSSL, а именно имеет хранилище, в котором хранятся корневые сертификаты, сертификаты сторонних пользователей, информация о подключенных аппаратных ускорителях, токенах, смарткартах с интерфейсом PKCS#11.

В настоящее время пакет NSS поддерживает стандарт PKCS#11 v.2.40.
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Просмотры 15K
Комментарии 5

Есть ли OpenVPN GUI для Linux?

Информационная безопасность *Open source *Python *Графические оболочки *Разработка под Linux *
Название статьи подсказала тема на одном из форумов. Несмотря на то, что с момента возникновения вопроса прошло шесть лет, в этом направлении мало что изменилось. А поскольку в последнее время у меня на слуху постоянно был OpenVPN, то было решено исправить данную ситуацию. Так родилась графическая утилита VpnGUI для создания, редактирования, запуска и контроля выполнения утилиты openvpn.

После запуска утилиты VpnGUI в трее появится иконка (квадрат разбитый на четыре сине-красных квадратика) утилиты:
Читать дальше →
Всего голосов 18: ↑14 и ↓4 +10
Просмотры 49K
Комментарии 55

Tcl/Tk. Тематические виджеты TTK и дизайнер TKproE-2.20

Тестирование IT-систем *Python *Графические оболочки *IT-стандарты *Графический дизайн *
imageПросматривая свои заметки по проектированию GUI с использованием виджетов Tk, я почувствовал какую-то неудовлетворенность. А дело оказалось в том, что я фактически упустил работу с тематическими виджетами ttk (themed tk). Они в скользь были задействованы при рассмотрении пакета Tkinter для Python и использовании дизайнера Page . Там речь шла о виджете TNotebook (блокнот, записная книжка) из пакета ttk.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 6.5K
Комментарии 6

Разработка приложений на языках C/C++ с использованием Tcl/Tk

Open source *C++ *Графические оболочки *Интерфейсы *C *
image Мощный функционал скриптового языка Tcl в сочетании с виджетами Tk/TTK позволяет создавать в этой среде серьезные приложения. Этому способствует также его кросплатформенность и прекрасная интеграция с языками программирования C/C++.
Читать дальше →
Всего голосов 15: ↑12 и ↓3 +9
Просмотры 13K
Комментарии 30

Tcl/Tk – создание расширений/пакетов на базе динамических библиотек

Криптография *Open source *Графические оболочки *Интерфейсы *C *
В одной из наших заметок было высказано намерение написать графические оболочки для пакетов OpenSSL и NSS (Network Security Services). GUI для NSS было написано:
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3.1K
Комментарии 4

Конструктор GUI Visual Tcl с поддержкой тематических виджетов

Open source *Python *Графические оболочки *Интерфейсы *IT-стандарты *
imageПоследняя версия конструктора GUI Visual Tcl опирается на использование пакета Tcl/Tk версии 8.6. Этот пакет включает в себя как классические Tk-виджеты, так и тематические виджеты (Themed Widgets) TTK. Тем удивительнее, что конструктор vTcl поддерживает только классические tk-виджеты. Отчасти это можно объяснить поддержкой в vTcl виджетов BWidget, которые исторически включают в себя виджеты для создания «записных книжек» (Notebook), combobox-ов и т.д.:

image


Имея в своем распоряжении виджеты BWidget, теоретически можно обойтись и без тематических виджетов notebook, combobox и т.п.
Читать дальше →
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 7.5K
Комментарии 0

Инфраструктура открытых ключей: утилита генерации запросов на квалифицированный сертификат

Информационная безопасность *Криптография *IT-инфраструктура *IT-стандарты *C *
Из песочницы
image Одним из центральных объектом инфраструктуры открытых ключей (Public Key Infrastructure — PKI/ИОК) наряду с ключевой парой является сертификат, который сегодня фактически является аналогом гражданского паспорта.
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 6.9K
Комментарии 9

Инфраструктура открытых ключей (продолжение): удостоверяющий центр на базе утилиты OpenSSL и SQLite3

Информационная безопасность *Криптография *Open source *IT-инфраструктура *SQLite *
imageЕсли одним из главных объектов инфраструктуры открытых ключей (ИОК) являются сертификаты X509, то центральным субъектом ИОК являются Удостоверяющие Центры (УЦ). Именно УЦ выпускают сертификаты, прекращают их действие (отзыв сертификата), подтверждают их валидность. На страницах Хабрахабр можно найти различные публикации на тему выпуска цифровых сертификатов с использованием OpenSSL.
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 9.4K
Комментарии 18

Инфраструктура открытых ключей: Удостоверяющий Центр на базе утилиты OpenSSL и SQLite3 (Посткриптум)

Информационная безопасность *Криптография *Open source *IT-инфраструктура *SQLite *
В одном из комментариев, присланным участником garex, в ответ на заявление:
Но сегодня в стандартной версии openssl отсутствует поддержка как ГОСТ Р 34.11-2012, так и ГОСТ Р 34.10-2012. Более того в версии 1.1 поддержка криптографии ГОСТ исключена из стандартной поставки («The GOST engine was out of date and therefore it has been removed.»)
было сказано:
Чем не устраивает вот эта, которую «убрали?» github.com/gost-engine/engine
Пример билда: github.com/rnixik/docker-openssl-gost/blob/master/Dockerfile
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 15K
Комментарии 0

Пишем GUI к 1С RAC, или снова о Tcl/Tk

Системное администрирование *Программирование *Функциональное программирование *
По мере вникания в тему работы 1С-овских продуктов в среде linux, обнаружился один недостаток — отсутствие удобного графического мультиплатформенного инструмента для управления кластером серверов 1С. И решено было этот недостаток исправить, путём написания GUI для консольной утилиты rac. Языком для разработки был выбран tcl/tk как, на мой взгляд, наиболее подходящий для этой задачи. И вот, некоторые интересные аспекты решения хочу представить в данном материале.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 11K
Комментарии 5

LLTR Часть 1: Первые шаги в OMNeT++ и INET

Open source *Eclipse *Системное программирование *Сетевые технологии *Mesh-сети *
Tutorial

OMNeT++ (Objective Modular Network Testbed in C++) Discrete Event Simulator – это модульная, компонентно‑ориентированная C++ библиотека и фреймворк для дискретно‑событийного моделирования, используемая прежде всего для создания симуляторов сетей. Попросту говоря это “симулятор дискретных событий”, включающий: IDE для создания моделей, и сам симулятор (GUI).


INET Framework – “библиотека” сетевых моделей для OMNeT++.


КДПВ: LLTR Часть 1 – OMNeT++ 5 the Open Simulator :: LLTR Model :: for freedom use


Полная версия GIF (15.7 MiB)


В предыдущих частях…


0. Автоматическое определение топологии сети и неуправляемые коммутаторы. Миссия невыполнима? (+ classic Habrahabr UserCSS)


В этой части:


  • создадим “свой первый” протокол (на примере LLTR Basic);
  • выберем подходящий симулятор сити для отладки протокола (и создания его модели);
  • познаем тонкости настройки окружения для симулятора и его IDE (конфигурирование, компиляция, линковка, тюнинг, патчинг, игнорирование устаревшей документации; и другие англицизмы в большом количестве);
  • столкнемся со всем, с чем можно столкнуться, при создании своей первой модели своего первого протокола в не своем незнакомом симуляторе сети;
  • пройдем весь путь вместе:
    • от счастья, принесенного успешной (наконец!) компиляции первого проекта с пустой сетью,
    • до полного погружения в эксперименты с функционирующей моделью протокола;
  • tutorial, все описано в виде tutorial – мы будем учиться на ошибках – будем совершать их, и будем понимать их (природу), дабы элегантно/эффективно с ними справится;
  • репозиторий (git ), в коммитах и тегах которого сохранены все шаги (“Add …”, “Fix …”, “Fix …”, “Modify …”, “Correct …”, …), от начала и до конца.


Note: дополнительная информация для читателей хаба “Mesh-сети”.


{ объем изображений: 2.2+(2.1) MiB; текста: 484 KiB; смайликов: 22 шт. }

Читать дальше →
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 8.8K
Комментарии 3

Инфраструктура открытых ключей. Цепочка корневых сертификатов X509 v.3

Информационная безопасность *Python *IT-инфраструктура **nix *Оболочки *
Неумолимо приближается час «Ч»: «использование схемы подписи ГОСТ Р 34.10-2001 для формирования подписи после 31 декабря 2018 года не допускается!».
Читать дальше →
Всего голосов 16: ↑14 и ↓2 +12
Просмотры 6.6K
Комментарии 44

Использование механизмов криптографических токенов PKCS#11 в скриптовых языках

Криптография *Python *Графические оболочки *IT-стандарты *Разработка под Linux *
В своих комментариях к статье «Англоязычная кроссплатформенная утилита для просмотра российских квалифицированных сертификатов x509» пользователь Pas очень правильно заметил про токены PKCS#11, что они «сами все умеют считать». Да, токены фактически являются криптографическими компьютерами. И естественным является желанием использовать эти компьютеры в скриптовых языках будь то Python, Perl или Ruby. Мы уже так или иначе рассматривали использование токенов PKCS#11 с поддержкой российской криптографии в Python для подписания и шифрования документов, для создания запроса на сертификат:
Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 4.4K
Комментарии 3
1