31 декември 2012

Проблеми със сигурността на Microinvest Warehouse Open

Във Microinvest Warehouse Open има проблем със сигурността, който на няколко пъти съм повдигал. За мое съжаление, хората от Microinvest го неглижират. С настоящия си постинг бих искал да дам публичност на проблема, така че от една страна хората, които ползват продукта да преценят до колко той отговаря на техните разбирания за сигурност, а от друга да стимулирам хората от Microinvest да го отстранят.

Microinvest Warehouse Open, както и повечето складово счетоводни програми, принадлежат към класа програми, предоставящи интерфейс върху някаква база данни. С други думи казано съхранението, манипулирането и управлението на данните се извършва от някаква СУБД (в случая на Warehouse Open това е MySQL), а приложният софтуер ни предоставя по-удобен начин да се случва това (не ни се налага да пишем директно сложни SQL команди). Когато се налага да  се реализират някакви правила за достъп и промяна на данните сме изправени пред следната дилема – дали да ползваме функционалностите предоставени от СУБД или да направим нещо върху нея (ако е възможно), което да е реализирано в приложния софтуер.

Всяка себе уважаваща се СУБД предлага доста гъвкавост при управление на достъпа до данните. В повечето случаи не е трудно да се ограничи достъпа на потребителя до конкретна база данни, таблица, колони или редове в таблица, както и операциите, които може да прави върху дадени данни (да ги изтрива, променя по специфичен начин и т.н.). Имайки това в предвид, някак си съвсем естествено идва потребителите на приложния софтуер, да са потребители на СУБД. Разбира се, това може да наложи да се направят множество специфични изгледи на таблици или използването на stored procedures. Съответно, това усложнява структурата на базата данни и може би коства повече усилия да се реализира.

Другата възможност е сигурността да е реализирано в самия приложен софтуер. Най-често това става, като се съхранява таблица с потребители, информация за правата им за достъп и хешове на паролите им. Съответно, когато някой потребител се идентифицира в приложението, то проверява предоставената информация от съответната таблица. Ако всичко е успешно, то променя интерфейса си, съгласно зададените права за достъп. Предимството на този подход е че не се налага да се прави по сложна структура на базата данни и съответно времето за програмиране на приложението би било по-малко. Разбира се, това става на цената на редица недостатъци. За да може приложението да се закачи да СУБД, то трябва да използва потребител от СУБД. Този потребител, в термините на СУБД, трябва да има достъп за четене/промяна (поне) до данните, които управлява приложението. В частност и до таблицата с потребители на приложението. Основните рисковете, които крие тази реализация, са три:

  • Данните за идентифициране пред СУБД трябва да се пазят в тайна. Разбиването на паролата на този единствен потребител, компрометира най-малко данните на използваното приложение. В същото време тази информация трябва да съхранява някъде, така че когато някой потребител иска да влезе в приложението, то да може да се закачи до СУБД.
  • Ефективно всеки потребител на приложението има повече права, от колкото биха му били нужни за да си върши работата. Това от своя страна означава, че много по-лесно може да се използват грешки на самото приложение (sql injections, грешки в модела/интерфейса направата за достъп и т.н.).
  • При злонамерени опити за прихващане на комуникациите между приложението и СУБД, чисто статистически най-вероятно е да има успех при потребителите, които най-често ползват приложението. Обикновено тези потребители (от бизнес гледна точка) не би трябвало да имат значителни права за работа върху данните. Така че компрометирането на техните account-и, не би трябвало да нанесе сериозни щети, ако управлението на сигурността на данните на приложението се извършва от СУБД. Когато самото приложение има грижата да управлява правата за достъп, то рискът от компрометиране на системата е значително по-висок.
Подходът за реализиране на системата за сигурност в приложния софтуер се ползва най-често в web базираните приложения. Като цяло крайният потребител има достъп единствено до интерфейса на приложението, така че възможностите му да прочете файла, в който приложението съхранява информацията за достъп до СУБД или да предприеме атаки върху комуникацията между СУБД и приложението са значително ограничени. Съответно негативните ефекти от реализирането на този подход са силно смекчени.

За съжаление това не е така при stand-alone приложенията. Ако чрез инструментите на операционната система би могло да се ограничат възможностите за атака (от компютъра на който работи приложението) на комуникацията между приложния софтуер и СУБД, то не е толкова лесно да се ограничи достъпа до файла, който съхранява информацията за достъп до СУБД. Като цяло затвореният софтуер разчита на security through obscurity подхода. Информацията се пази криптирана и се разчита, че само приложението знае алгоритъма и ключа който се използва за декриптирането и. Разбира се, този подход не работи при приложенията с отворен код, тъй като всеки би могъл до види използвания алгоритъм и ключ. За мое най-голямо учудване Microinvest Warehouse Open използва именно този подход.

Лесно може да видите информацията касаеща връзката до СУБД чрез:
cat ~/.config/Microinvest/Warehouse\ Open/WarehouseOpen.exe.config |grep Db

Криптираната парола за достъп до MySQL се съхранява във value полето на DbPassword реда. Бърз поглед върху изходния код на Warehouse Open ни дава информация за използвания алгоритъм и ключ. Имайки тази информация, лесно може да видим паролата чрез тази команда:
cat  ~/.config/Microinvest/Warehouse\ Open/WarehouseOpen.exe.config |grep DbPassword | cut -f4 -d'"' | openssl enc -des-cbc -a -d -K 4d6963726f696e76 -iv 1234567890abcdef; echo

Мисля, че не е необходимо да обяснявам какви биха могли да бъдат последствията, ако паролата за достъп стане известна на злонамерен човек. Ако при инсталирането на Warehouse Open е използван административен потребител на MySQL, то рискът се пренася и върху другите приложения, които използват същия MySQL сървър.

Като цяло докато този проблем не бъде разрешен, не може да се разчита на правата за достъп на Warehouse Open. Съвсем тривиално е всеки да се сдобие с каквито права за достъп иска. Разбира се, това не добавя кой знае какъв допълнителен риск, ако всичко (приложен софтуер и СУБД) се върти на една машина, до която злонамерения потребител има физически достъп. В такава ситуация, макар и една идея по-трудно, могат да се случат доста неприятни неща. За съжаление, този проблем компрометира ситуации, в които машината, на която е разположена СУБД е добре физически и мрежово защитена.

30 декември 2012

RD Suite - край на играта

Последните 2-3 години не ми остава много време за RD Suite. Факторите за това са много и по всичко личи ще нещата ще изглеждат по същия начин и през следващите 2-3 години. За съжаление не можах да създам общност около проекта, така че няма кой да го движи, когато аз нямам възможност (разбира се, вината около това е изцяло моя). В тоя ред на мисли, смятам, че след 6 годишно публично съществуване е най-добре официално да сложа край на проекта. Ако някой все пак е решил да го продължи, мога да му прехвърля каквото сметне за необходимо. Хостингът е платен до средата на 2013.

Тези, които ползват в момента софтуера, могат при нужда да ми пишат. Далеч съм от мисълта да ги оставям да се оправят сами. Не изключвам възможността след 3 или 4 години да има remake (макар и под ново име). Разбира се, за да се случи това, проектът трябва да ми е основен източник на доходи, което означава, че и фокусът му ще е по-различен.

27 октомври 2012

ГЕРБ срещу майките

През последната седмица имаше протести на майки, които искаха нещо, което ГЕРБ им отне. Майчинството през втората година, да е поне колко МРЗ. От изказвания на разни фактори, се разбра, че това не може да стане, защото ще натовари бюджета с цели 15 млн.лв. на година(едно наистина непосилно бреме). В същото време правителството отпуска 1 млн. лв. за излъчване на родното първенство по телевизията. Нищо лошо, въпрос на приоритети. 

Шефът НОИ, цитиран от Дневник, загатна за основните идеи на социално-демографската политика на ГЕРБ.
 "Логиката да не се предвиди повишаване на помощите за отглеждане на деца през 2013 г. е, че децата на 1 навършена година трябвало да се социализират, а майките им да се върнат на работа, за да не се деквалифицират, обясни директорът на НОИ." 
Посланието е съвсем ясно, в средно-срочен план втора година майчинство няма да има. В тази посока предполагам, че всякакви бивши „експерти“ на Световната банка ще изсипят едно кило аргументи как е по света и ще ги подкрепят с „регресии“ на благосъстояние срещу месеци майчинство.

В настоящия момент обаче намирам това изказване за силно неадекватно. Не знам как е по другите големи населени места, но в София положението с детските градини е зле. От тази статия на Дневник става ясно, че не достигат около 13 хиляди места. Не може да се отрече, че има прогрес по въпроса, но положението е зле. В същото време трябва да се отбележи, че дефицита с местата в яслените групи (за деца от 1 до 3 години) е доста по-сериозен. Предлагането е доста по-малко по чисто обективни причини – тези деца имат нужда от повече грижи. Поради тази причина местата за втора яслена (възраст от 2 до 3 години) група са 2-3 пъти по-малко от местата в градински групи, а тези в първа яслена (от 1 до 2 години) група са още 2 пъти по-малко. Съответно възниква въпросът, ако имаме дефицит на градински групи (деца над 3 години), около 5-6 пъти по-малко места за първа яслена група (деца от 1 до 2 години) и насилим майките да ходят на работа, кой ще гледа децата? 

Няколко възможни опции са както следва:
  • Бабите, ако са се измъкнали от пенсионните реформи. Принос към социализиране – нула. 
  • Частни детски градини. За възраст от 1 до 3 години пазарът хич не е развит, макар и да има търсене. Разходите започват от 400 лева нагоре, така че за да има финансова изгода за семейството, майката трябва да взима поне 700 лева брутна заплата. 
  • Бавачки. Сериозен разход (от 600 лева нагоре), никаква социализация, икономически изгодно, при заплати от 900 лева нагоре. 

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

Силно неадекватно ми се струва изказването и на социалния министър, че да има по-високи майчински през втората година, трябва да има увеличение на приходите, с намек към ставката. 
„Парите за майчински се осигуряват от вноските, които постъпват в НОИ за целта и за да се увеличат, трябва да се повишат тези вноски.„ 
През своя мандат ГЕРБ направиха две косвени стъпки в тази посока, но явно си затварят очите за тях: 
  • Увеличаването на минималната заплата и осигурителните прагове директно увеличават приходите в НОИ, но от това увеличение, нищо не отива към майчинските. 
  • ГЕРБ увеличиха периода, върху който се изчислява сумата за майчински от 12 на 24 месеца. Това увеличение директно намалява обезщетенията плащани през първата година (Нормално е заплатите да растат, съответно в края на периода да се по-високи спрямо началото на периода. Отделно, че част от майките може да не са работили две години), но няма компенсация за втората година. 
Не мога да разбера защо в контекста на задаващата се демографска криза ГЕРБ, в лицето на НОИ, води такава кампания срещу майките и раждаемостта. Само два примера в тази посока: 
  • Увеличаване на периода, върху който се изчислява сумата за майчински, при равни други условия води до отлагане на раждането на първо дете. Всеки може да се сети какви са последствията върху демографията. 
  • Поради други фактори, раждането на първо се отлага във времето, но то може да бъде компенсирано с по-скорошно раждане на второ дете. Но отново начина, по който се изчисляват обезщетенията действа демотивиращо. Освен ако не застъпите майчинствата, т.е две деца родени в по-малко от година и половина разлика (доста силно изживяване), трябва да изчакате поне две години, след като ви е приключило майчинството, за да може да получавате през първата година на второто ви майчинство обезщетения близки до заплатата ви. В тази връзка ниския размер на майчинските през втората година на първата бременност засилва допълнително проблема. 

Няма да коментирам неща от сорта на спиране на майчинските при записване в детска градина, което прави периодът на адаптация на детето изключително приятно занимание. (хем трябва да си на работа, хем трябва да вземеш детето на обяд и така в продължение на поне седмица). Разбира се, това се компенсира с отпуска (натрупана през годините майчинство), което също е трън в очите на управляващите. Преди известно време, за да си решат проблемите с натрупаните отпуски в администрацията, се прокрадваха идеи как при продължителни отсъствия от работа (по каквато и да е причина) да не се полага отпуска за съответния период. За щастие все още нереализирани.

11 октомври 2012

За данъка върху лихвите

С въвеждането на данък върху лихвите от депозити ГЕРБ са на път да свършат една от най-големите глупости в своето управление. Като се има предвид, колко много глупости направиха, това е сериозно признание. Аргументите за въвеждането му обаче къртят всякакви мивки: 

  • Изравнявал се режима на облагане на физически и юридически лица. Дрън-дрън глупости. Просто физическите лица ще се пренасочват към друг тип спестовни инструменти. Най-вероятно банките ще им помогнат в избора.
  • Данъкът ще стимулира инвестициите. Трябва да си много тъп, за да застанеш зад такова твърдение. По-плашещото в него е, че неявно стои целенасочено желания да се изтеглят пари от банките при положение, че банковите кредити са основен източник за финансиране на инвестиции. Таман банковата статистика се оправи от глупостите, които БНБ натвори преди няколко години и сега отново ще почнат да хвърчат едни странни потоци.
  • Така било и в другите страни. Много хубав аргумент, но когато тръгнеш да го използваш, не трябва да се ограничаваш само до този данък. Хубаво е да се напомни на управляващите, че в повечето страни има диференцирана ставка по ДДС и доста неща от първа необходимост или насърчаващи развитието на хората са с нулеви или доста ниски ставки.

09 май 2012

Песимистичните прогнози за икономическия растеж на България през 2012

Доста се чудя на хората, които очакват силно забавяне на растежа България през тази година, че даже и да предричат и евентуален спад. Вярно, че има доста несигурност в европейските икономики и съответно българският износ няма да се развива толкова успешно както през предходните две години (честно казано и в добри времена ще е трудно да се повторят тези растежи), но в крайна сметка икономиката не се движи само от износ.

Три фактора повлияха на силният спад на икономиката през 2009г.:
  1. На всички бе ясно, че моделът на растеж преди това не беше устойчив и съответно трябваше да се случат някакви корекции. В крайна сметка трудно се поддържа дял на инвестициите от 40% от БВП и дефицити по текущата сметка от 25%. Предвид нуждата от корекции, ефектът върху вътрешното търсене нямаше как да не е огромен.
  2. Паниката в световен мащаб нямаше как да не се отрази на износа на България, но беше ясно, че това е временен проблем.
  3. „Адекватната“ политика на ГЕРБ вместо да смекчи ефектите от кризата, ги позасили. Най-светъл пример в това отношение е спирането на разплащанията от страна на бюджета.
В годините след кризата износът беше основен двигател на растежа. Това не беше учудващо, тъй като имаше доста за възстановяване след спада, както и потенциал за допълнително нарастване. В същото време чистенето на дисбаланси доведе до спад на вътрешното търсене, а политиката на ГЕРБ до допълнителното му свиване. В резултат, растежите на икономиката бяха символични. В момента макар и износът да се развива доста зле, процесите свързани с чистене на дисбаланси са приключили. В крайна сметка миналата година завършихме с положителна текуща сметка и дота по-приемливи нива на инвестиции. Това от своя страна означава, че корекциите са приключили и негативният им ефект върху вътрешното търсене  и растежа на БВП е изчерпан. Съответно това би компенсирало забавянето на износа. Нещо повече, вече са налице индикации за развитие в тази посока. Салдото по текущата сметка взе да се влошава. Ако инстинктивното обяснение е, че това се случва заради износа, то интерпретацията през баланса спестяване-инвестиции води до следните заключение:
  1. или спестяванията в икономиката намаляват, съответно потреблението расте
  2. или инвестициите нарастват
  3. или някаква комбинация от двете
С други думи вътрешното търсене се възстановява. Аз лично очаквам растежът за тази година, да не е по-лош от миналогодишния.

Разбира се, всеки ще се вгледа във flash оценките, които излизат след седмица. Те няма да са добри по отношение на БВП-то, което ще подкрепи тезата на всички песимисти. В момента моите очаквания са за номинално нарастване на БВП между 2 и 3%. Съответно реалният растеж би бил някъде около нулата. Най-вероятно фокусът ще падне върху динамиката на износа и сигналите по линия на потреблението и инвестициите ще бъдат игнорирани.

05 май 2012

За емисията на външен дълг

Четейки следната статия от Капитал, усещам че ще има напрегнато дългово лято. От една страна ще ни залеят какви ли не журналистически анализи, в които няма да се прави разлика между доходност и лихвени плащания. От друга страна ще почнат какви ли не PR акции какви ниски лихвени плащания ще имаме и добре че е ГЕРБ да ги договори. Съответно на заден план ще остане, че високите лихвени плащания, които имаме в момента, са резултат от преструктуриране на главница в лихви, с което НДСВ успя да намали в не малка степен външния дълг по време на тяхното управление. Едва ли някой ще тръгне да прави сравнения по доходността на двете емисии. Вярно, че технически е трудно, но и резултатите едва ли ще са удобни за сегашните управляващи. Сигурно и заради това новата емисия ще е за 5 , вместо за 10 години.

Положителното в цялата новина е че най-накрая Дянков се хвана да прави това, което трябваше да направи преди доста време, вместо да върши глупости и тарикатлъци на дребно. Добре, че беше ЕЦБ, да му издърпа ушите.

03 януари 2012

За намалението на ДДС ставката

Четейки анонса за намаляване на ДДС ставката с 1-2 процентни пункта в бъдеше неопределено, все повече се убеждавам, че ГЕРБ и идея си нямат от какво е това фискална политика. По принцип не е важен толкова размера на ставките, колкото структурата на данъците (преки срещу косвени данъци, структура на преките и структура на косвените данъци). Чрез структурата на данъците правителството би могло много ефективно да насочва икономиката към едно или друго поведение. От своя страна размерът на ставките е важен дотолкова доколкото приходите в бюджета успяват да финансират разходната му част.

Очевидно е, че тази ДДС промяна не води до голяма промяна в структурата на данъците (въвеждане на диференцирани ставки би имало по-голям ефект), но в същото време ще има голям ефект върху приходната част на бюджета и почти никакъв върху инфлацията (каквото и да си говорим, цените трудно отиват надолу). Тоест от гледна точка на стимули към икономиката не може да се очаква нищо. Това от своя страна навежда на мисълта, че намалението на ставката се прави, защото разни оптимизации на разходите позволява това да се случи. Само по-себе си това е хубаво, само че силно контрастира с предишните послания относно спасяване на фискалната устойчивост, чрез прецакване пенсионери, хора в пред пенсионна възраст и бъдещи майки.

По отношение на пенсионерите това е доста радикална промяна на курса следван от предходните правителства. С пенсионната реформа започната от правителството на Костов се въведоха трита стълба на социалното осигуряване. Съответно бяха положени основите за минаване към частно осигуряване. Към онзи момент бюджетът на НОИ беше на минимален дефицит, а и икономиката не беше в някакъв кой знае какъв подем, така че това да се държи на циклични фактори. Едно от основните предизвикателства е как да се премина от солидарна към капиталова пенсионна система, без цената за това да се плати само от настоящите пенсионери. Очевидно бе, че без трансфер от централния бюджет не може да се мине. По време на управлението на правителствата на НДСВ и на БСП се наложи разбирането, че фондовете на НОИ не трябва да имат балансиран бюджет и дефицитите ще се финансират от приходи от данъци. За съжаление вместо този ресурс да се използва за повишаване на дела на капиталовия принцип в пенсионната система, бе опукан основно за намаляване на осигуровките. Разбиранията на разни либерални „икономисти“, които влияеха върху политиката на правителствата, бяха че осигуровките могат да паднат до 10% (нищо, че по съвсем групи сметки се показва, че ако си осигуряваш на под 15% в капиталова система, може да си умреш от глад с пенсията, която би взимал при пенсиониране) и траекторията, която трябва да се следва е първо да се стигне сумарната ставка и след това да се променят пропорциите на стълбовете.

Очевидно разбиранията на ГЕРБ са, че разходите на НОИ трябва да се финансират само от приходи от осигуровки. Разбира се, това не може да стане веднага, но пътят на постигането му минава не само през затягане на разходите за пенсии (увеличаване на годините за пенсиониране и никакви индексации), но и на стопирана на засилването на капиталовия принцип. Както се казва на печелившите честито.