The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Обновление Git с устранением 8 уязвимостей

11.12.2019 09:54

Опубликованы корректирующие выпуски распределённой системы управления исходными текстами Git 2.24.1, 2.23.1, 2.22.2, 2.21.1, 2.20.2, 2.19.3, 2.18.2, 2.17.3, 2.16.6, 2.15.4 и 2.14.62.24.1, в которых устранены уязвимости, позволяющие атакующему переписать произвольные пути в файловой системе, организовать удалённый запуск кода или перезаписать файлы в каталоге ".git/". Большинство проблем выявлены сотрудниками Microsoft Security Response Center, пять из восьми уязвимостей специфичны для платформы Windows.

  • CVE-2019-1348 - потоковая команда "feature export-marks=path"позволяет записать метки в произвольные каталоги, что может использоваться для перезаписи произвольных путей в ФС при выполнении операции "git fast-import" с непроверенными входными данными.
  • CVE-2019-1350 - некорректное экранирование аргументов командной строки могло привести к удалённому выполнению кода атакующего при рекурсивном клонировании с использованием URL ssh://. В частности, некорректно обрабатывалось экранирование аргументов, оканчивающихся на обратный слеш (например, "test \"). В этом случае при обрамлении аргумента двойными кавычками, последняя кавычка оказывалась экранированной, что позволяло организовать подстановку своих опций в командной строке.
  • CVE-2019-1349 - при рекурсивном клонировании субмодулей ("clone --recurse-submodules") в окружении Windows при определённых условиях можно было инициировать использование одного git-каталога дважды (.git, git~1, git~2 и git~N в NTFS распознаётся как один каталог, но эта ситуация проверялась только для git~1), что могло применяться для организации записи в каталог ".git". Для организации выполнения своего кода атакующий, например, может подставить свой скрипт через обработчик post-checkout в файле .git/config.
  • CVE-2019-1351 - обработчик буквенных имён дисков в путях Windows при трансляции путей типа "C:\" был рассчитан только на замену однобуквенных латинских идентификаторов, но не учитывал возможность создания виртуальных дисков, назначаемых через "subst буква:путь". Такие пути обрабатывались не как абсолютные, а как относительные пути, что позволяло при клонировании вредоносного репозитория организовать запись в произвольный каталог за пределами рабочего дерева каталогов (например, при использовании цифр или unicode-символов в названии диска - "1:\what\the\hex.txt" или "ä:\tschibät.sch").
  • CVE-2019-1352 - при работе на платформе Windows применение альтернативных потоков данных в NTFS, создаваемых через добавление признака ":stream-name:stream-type" к имени файла, позволяло перезаписать файлы в каталоге ".git/" при клонировании вредоносного репозитория. Например, имя ".git::$INDEX_ALLOCATION" в NTFS обрабатывалось как корректная ссылка на каталог ".git".
  • CVE-2019-1353 - при использовании Git в окружении WSL (Windows Subsystem for Linux) при обращении к рабочему каталогу не применялась защита от манипуляции именами в NTFS (были возможны атаки через трансляцию имён FAT, например, к ".git" можно было обратиться через каталог "git~1").
  • CVE-2019-1354 - возможность записи в каталог ".git/" на платформе Windows при клонировании вредоносных репозиториев, содержащих файлы с обратным слешем в имени (например, "a\b"), который допустим в Unix/Linux, но воспринимается как часть пути в Windows.
  • CVE-2019-1387 - недостаточная проверка имён субмодулей могла использоваться для организации целевых атак, которые при рекурсивном клонировании потенциально могли привести к выполнению кода атакующего. Git не запрещал создавать каталог субмодуля в каталоге другого субмодуля, что в большинстве случаях лишь может привести к замешательству, но потенциально не исключает перезаписи содержимого другого модуля в процессе рекурсивного клонирования (например, каталоги субмодулей "hippo" и "hippo/hooks" размещаются как ".git/modules/hippo/" и ".git/modules/hippo/hooks/", а каталог hooks в hippo может отдельно использоваться для размещения запускаемых обработчиков.

Пользователям Windows рекомендуется срочно обновить версию Git, а до обновления воздержаться от клонирования непроверенных репозиториев. Если возможности срочно обновить версию Git пока нет, то для снижения риска атаки рекомендуется не запускать "git clone --recurse-submodules" и "git submodule update" с непроверенными репозиториями, не использовать "git fast-import" с непроверенными входными потоками и не клонировать репозитории в разделы на базе NTFS.

Для дополнительной защиты в новых выпусках также запрещено использование в .gitmodules конструкций в форме "submodule.{name}.update=!command". Для дистрибутивов проследить за выпуском обновлений пакетов можно на страницах Debian,Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, ALT, FreeBSD.

  1. Главная ссылка к новости (https://github.blog/2019-12-10...)
  2. OpenNews: GitHub запустил совместный проект для выявления уязвимостей в открытом ПО
  3. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.24
  4. OpenNews: Уязвимость в Git, Subversion и Mercurial, допускающая подстановку команд через URL ssh://
  5. OpenNews: Обновление Git с устранением уязвимостей
  6. OpenNews: В Git устранена уязвимость, которая может привести к выполнению кода атакующего
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52010-git
Ключевые слова: git
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (55) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:20, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –21 +/
    Писали бы на Расте, проблем и уязвимостей бы не было
     
     
  • 2.2, Аноним (1), 11:21, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +11 +/
    И как же Раст помгает экранировать символы и справляться с git~1
     
     
  • 3.4, Аноним (4), 11:31, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ну он же БЕЗОПАСНЫЙ. Значит всё по кайфу, братик. Всё обезопасит. Программисту думать не надо. А если не экранирует что-то, то получается, ты ставишь его главную фичу, безопасность, под сомнение? Тогда что, получается программисту всё же нужно следить за тем что он пишет? Значит у него нет преимуществ? Значит лучше использовать си, для максимального контроля?
     
     
  • 4.43, burjui (ok), 20:36, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Тогда что, получается программисту всё же нужно следить за тем что он пишет? Значит у него нет преимуществ?

    Нет, не значит. Значит, у Rust есть преимущества, но не настолько большие, чтобы можно было выключать мозг и кодить в спящем режиме. И вообще, задолбали уже пинать соломенное чучело. Никто не утверждает, что Rust полностью безопасен во всех смыслах этого слова. Демагоги.

     
  • 3.7, Аноним (7), 12:27, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тем, у кого нет чувства юмора - не поможет ничто
     
     
  • 4.8, Andrey Mitrofanov_N0 (??), 12:35, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Тем, у кого нет чувства юмора - не поможет ничто

    Пральна!  Мы-то знаем, что переписывать надо
    с питона на гоу (ESR @ reposurgeon), и
    с шела на Си (обиженные вин-сом [со-]авторы git-а).  </серьёзно 1>

     
  • 4.21, Michael Shigorin (ok), 14:34, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Даже не знаю, какое чувство юмора может помочь воспринимать идиотов как шутников.
     
     
  • 5.25, Аноним (7), 16:30, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Писали бы на Расте, проблем и уязвимостей бы не было" - разве такая уж ужасная шутка? Я и похуже видел
     
     
  • 6.42, yet another anonymous (?), 18:13, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это не шутка, а часть стратегии по продвижению: больше шума с контекстом "он безопаснее, надёжнее, etc."
     
     
  • 7.44, burjui (ok), 20:38, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Почитайте официальный сайт языка, найдите там спорные утверждения и приведите с аргументами.
     
     
  • 8.51, Аноним (51), 08:11, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Может еще на сайте Майкрософт поспорить с тем как офигенен виндоус ... текст свёрнут, показать
     
  • 7.50, Аноним (51), 08:11, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    С такой стратегией продвижения - он будет популярен у бывших дельфистов. Если они еще остались. Там тоже ЯП использовали на 99% только полные кретины.
     
  • 2.10, leap42 (ok), 12:48, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Писали бы на Расте, проблем и уязвимостей бы не было

    конечно бы не было, самого git тоже бы не было

    p.s. прежде чем минусовать почитайте лучше вот это: http://way-cooler.org/blog/2019/04/29/rewriting-way-cooler-in-c.html (адепт Rust взялся написать rust-обертку над wlroots, которая делает ничего (зато "бизапасна"). полтора года, >1000 коммитов, >11000 строк расто-кода, конца и края не видно, автор закрывает проект и пишет на Си)

     
     
  • 3.15, имя (ok), 14:08, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > A Wayland “output” is the resource that represents a display device. Commonly this means it handles a computer monitor. This resource could disappear at any time in the life cycle of the application. This is easy enough to imagine: all it takes is a yank of the display’s power cord and the monitor goes away.

    Много вы видели сишных библиотек, практикующих выбивание выделенных ресурсов прямо из-под ног программиста?

    В этой статье я пока вижу вырожденный случай, тем более что вся она — плач о трудности совокупления с одной большой библиотекой.

     
  • 3.18, Аноним (18), 14:20, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    В статье один конкретный человек не осилил сделать безопасную обертку над конкре... большой текст свёрнут, показать
     
     
  • 4.19, 1 (??), 14:30, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    erlang - идеален
     
     
  • 5.41, sudo (??), 17:17, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ктоме мелочей вида что каждая собака решила уже свой модульчи написать, в Cargo ад полный. Не один пакет нормально не выйдет для дистрибутивов пакетировать. Ад такой же как и с пакетами GO. Ниче что уязвимости и косяки есть в тех самых пакетак коих как на ноде собак нерезаных, ну да да конечно они все 100 качественные и не содержат эксплойтов. И ниче что синтаксис тот еще ад и содомия. Ниче что редахтор под него не подобрать нормально. Ну так чисто всего по мелочи туда сюда вот и получается что ненавидят и обожают.
     
  • 4.22, Michael Shigorin (ok), 14:36, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Что Rust лично сделал хейтерам на opennet?

    Не знаю, но они почему-то тянут его сюда к месту и не к месту -- как вот и в этой теме.

    Кто любит -- тот применяет, развивает и бережёт.  А кто ненавидит -- тот вместо того, чтоб сесть и попытаться переписать -- носится с жупелом и суёт его, как правило, ещё и не к месту.

    Странные люди.

     
     
  • 5.23, Ordu (ok), 15:34, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Этот тред был начат троллем, ты не видишь этого Шигорин? Совершенно точно не растоманом, потому что настолько идиотов не бывает в реальности.
     
     
  • 6.33, n1rdeks (ok), 22:44, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    растАманы "ни при чём".
     
  • 6.56, Аноним (-), 00:34, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Совершенно точно не растоманом, потому что настолько идиотов не бывает в реальности.

    По растоманам и не скажешь. Там вон в соседнем треде у какого-то растомана из аргументов было то что "это песня а не ЯП". Он с такими аргументами кто?

     
  • 4.37, Аноним (37), 08:09, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > с нормальной единой системой сборки

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

     
  • 4.46, leap42 (ok), 03:26, 13/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > В статье один конкретный человек не осилил сделать безопасную обертку над конкретным
    > небезопасным сишным кодом. Пользуясь этим фактом, вы тут же намекаете на
    > "нинужность" Rust. Вам не кажется, что такое называется софизмом?

    софистика - это ваши спекуляции, я ни на что не намекал, я прямо сказал: "продуктивность разработки на Rust так низка, что продуктов уровня Git на Rust не будет и через 40 лет (и не надо повторять эту мантру, мол язык молодой, а Си старый, сейчас за день кода больше пишется чем 40 лет назад за год)". нужность - ненужность, это категории тех кто не кодирует.

    > Что Rust лично сделал хейтерам на opennet? Такое ощущение, словно раст у
    > них последний кусок хлеба насильно отобрал.

    так у них и спросите. я не хейтор, я лишь указал анониму на абсурдность его коммента. с хорошим аргументом указал.

     
     
  • 5.47, Аноним (47), 12:34, 13/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так вы серьезно считаете это хорошим аргументом Вы, кстати, понимаете, что спор... большой текст свёрнут, показать
     
     
  • 6.48, Аноним (48), 00:50, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вот она гордость растокоммюнити Школьная поделка Ректалос 20 лет назад заводила... большой текст свёрнут, показать
     
     
  • 7.49, Аноним (49), 02:49, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Теперь вы срываетесь на откровенную агрессию и высмеивание, а ваша аргументация еще слабее прежней. Еще и на "ты" переходите, хотя я вроде никак не располагал к приятельским отношениям (если, конечно, я говорю с тем же человеком), да еще и "на слабо" берете. Детский сад какой-то.

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

     
  • 7.52, leap42 (ok), 15:55, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Кстати покажи свой код.

    на чем сами пишите?

     
  • 3.34, InuYasha (?), 23:53, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Из всех анонов процентов пять прочитали, из них такой же процент - поняли.
    Автор в последних абзацах чётко говорит главное - что _не надо переписывать что-то на раст только ради того чтобы оно было на раст_ - это не инжениринг, а пустая трата ресурсов.
     
  • 3.40, Аноним (37), 09:03, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В статье речь идёт об отказе от реализации функционала композитора на rust, с сохранением планов реализации на нём совместимого с awesome оконного менеджера.
    Но позже автор пошёл дальше и вообще весь раст выкинул из way-cooler, решив не велосипедить на нём awesome, а прикрутить имеющийся в качестве клиента подобно тому, как он прикручен к X11. Теперь way-cooler — первый wayland-композитор без функционала оконного менеджера, что возвращает экосистему wayland в юниксвейное русло.
     

  • 1.3, Аноним (3), 11:29, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    >некорректное экранирование аргументов командной строки

    Это не некорректное экранирование. Это грубейшие ошибки в проектировании - использовать для вызова своей программы CLI вместо разделения програмсы на библиотеку и CLI и внутри использования исключительно библиотеки.

     
     
  • 2.13, лютый жжжж (?), 13:18, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Это грубейшие ошибки в проектировании

    Её же великой Линус писал :) Вождь Красноглазых не ошибается

     
     
  • 3.55, Аноним (-), 00:32, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так у него в ОС таких проблем и не было никогда А в винде на эти 1 и прочие пр... большой текст свёрнут, показать
     
  • 2.16, Аноним (16), 14:14, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это юникс-вей, детка. А ошибка это ты
     
  • 2.20, nobody (??), 14:31, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слава Павершеллллллллллллллллл!!!!!!!!
     
     
  • 3.26, Аноним (26), 16:59, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, зачем вызывать какие-то стриемные консольные программы с какими-то стремными консольными параметрами, когда можно написать для всего этого библиотеки на божественном дотнете
     
     
  • 4.28, fske (?), 18:09, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я вот не пойму - сегодня разгуляся сарказм или идиотизм?
     
     
  • 5.31, Srx (?), 21:29, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А есть ли разница?
     
  • 3.35, InuYasha (?), 23:56, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ох, гад...
    Это тот Powder sHell, который тащит с собой .NOT и для показа своего окошка полминуты грузит 200 библятек? Иногда адвинов-вантузятников по-настоящему жалко.
     
     
  • 4.54, Анони (?), 00:23, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это ты его еще просто на виртуалке не пробовал запускать. Круто же когда оно 2 минуты хрустит диском чтобы ввести пару команд. А потом еще оказывается что у команд которые хотелось состыковать - не совпадают типы данных. Поэтому состыковать их невозможно или адски сложно.

    А рядом линуксоид запускает за 5 секунд, вводит пару команд, шелл ему не делает мозг и просто отрабатывает то что попросили. MS посмотрел на все это... и появился WSL :)

     
  • 2.38, Аноним (37), 08:21, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Это грубейшая ошибка в проектировании операционной системы — передавать аргументы программ не массивом строк, а единой строкой, из-за чего для её поддержки приходится лепить страшные костыли и огребать за это уязвимости.
     

  • 1.5, Аноним (3), 11:40, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >при работе на платформе Windows применение альтернативных потоков данных в NTFS, создаваемых через добавление признака ":stream-name:stream-type" к имени файла, позволяло перезаписать файлы в каталоге ".git/" при клонировании вредоносного репозитория. Например, имя ".git::$INDEX_ALLOCATION" в NTFS обрабатывалось как корректная ссылка на каталог ".git".

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

     
     
  • 2.11, Аноним (11), 13:01, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это для удобства граждан.
     

  • 1.6, Andrey Mitrofanov_N0 (??), 12:15, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    > Опубликованы корректирующие выпуски распределённой системы управления исходными текстами
    > файлы в каталоге ".git/". Большинство проблем выявлены сотрудниками...

    " Дары Микрософта и узник ретрита - II "
    http://www.opennet.ru/openforum/vsluhforumID3/112776.html#48

    ${PATH:+${PATH}:}http://www.opennet.ru/openforum/vsluhforumID3/111958.html#41
    || http://www.opennet.ru/openforum/vsluhforumID3/107331.html#6
    && http://www.opennet.ru/openforum/vsluhforumID3/107331.html#18

    —̶в̶и̶н̶д̶о̶у̶з̶ ̶н̶е̶ ̶т̶о̶р̶м̶о̶з̶и̶т— http://www.opennet.ru/openforum/vsluhforumID3/104920.html#17
    а, не.  не то.

    > выявлены сотрудниками...
    > сотрудниками выявлены...

    Майор! Тише-тише...

     
  • 1.9, KonstantinB (ok), 12:40, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Пользователям Windows рекомендуется не использовать Windows
     
  • 1.12, Аноним (-), 13:10, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Пользователям Windows рекомендуется

    Зачем в новостях это писать?

     
  • 1.14, Аноним (14), 14:00, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А после этого ещё кто-то удивляется, чего это в OpenBSD пилят свой got...
     
     
  • 2.17, имя (ok), 14:17, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не, они в первую очередь хотят привычный им workflow с git-хранилищем под капотом, а повышенная безопасность ожидается разве что в виде приятного бонуса.
     
     
  • 3.29, Аноним (29), 19:04, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да я знаю, это так, дружеский пинок. :)
     

  • 1.24, Дыщь (?), 15:46, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >2.14.62.24.1

    Какой-то совсем ядрёный корректирующий релиз в ветке 2.14 получился...

     
     
  • 2.36, InuYasha (?), 23:58, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    сперва мне показалось, что мне показалось, но теперь...
    им 4 циферок для версий уже не хватает? )
     
     
  • 3.39, Andrey Mitrofanov_N0 (??), 08:36, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > сперва мне показалось, что мне показалось, но теперь...
    > им 4 циферок для версий уже не хватает? )

    Тот, кто писал новость прифигел от этого в*ндо-бреда и
    ошибся при копи-пасте  https://lkml.org/lkml/2019/12/10/905
    по фрейду, ..  припомнив, видимо, версии кривопаков с чпуксов, аиксов и прочих атэитэ.

    Грустим, помним.

     

  • 1.27, Аноним (27), 17:21, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    пользователям Windows рекомендуеться не рекомендовать рекомендованое, пускай страдают
     
  • 1.30, Аноним (30), 19:23, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А будет нормальный SCCS работал нормально. А теперь понаписали всякой шняги с дырками
     
  • 1.32, Аноним (32), 22:27, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    голосование, кто юзает unix+git +1, кто windows+git -1
     
     
  • 2.45, burjui (ok), 20:41, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А если результат будет равен нулю, это значит, что никто не использует ничего, или что миллион тех и миллион этих?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру