The OpenNET Project / Index page

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

15 уязвимостей в USB-драйверах, поставляемых в ядре Linux

04.12.2019 08:53

Андрей Коновалов из компании Google опубликовал отчёт о выявлении очередных 15 уязвимостей (CVE-2019-19523 - CVE-2019-19537) в USB-драйверах, предлагаемых в ядре Linux. Это третья порция проблем, найденных при проведении fuzzing-тестирования USB-стека в пакете syzkaller - ранее данный исследователь уже сообщал о наличии 29 уязвимостей.

На этот раз в списке включены только уязвимости, вызванные обращением к уже освобождённым областям памяти (use-after-free) или приводящие к утечке данных из памяти ядра. Проблемы, которые могут использоваться для отказа в обслуживании в отчёт не включены. Уязвимости потенциально могут быть эксплуатируемы при подключении к компьютеру специально подготовленных USB-устройств. Исправления для всех упомянутых в отчёте проблем уже включены в состав ядра, но некоторые не вошедшие в отчёт ошибки пока остаются неисправленными.

Наиболее опасные уязвимости класса "use-after-free", которые могут привести к выполнению кода атакующего, устранены в драйверах adutux, ff-memless, ieee802154, pn533, hiddev, iowarrior, mcba_usb и yurex. Под CVE-2019-19532 дополнительно сведены 14 уязвимостей в HID-драйверах, вызванные ошибками, допускающими запись за пределы границы буфера (out-of-bounds write). В драйверах ttusb_dec, pcan_usb_fd и pcan_usb_pro найдены проблемы, приводящие к утечке данных из памяти ядра. В коде USB-стека для работы с символьными устройствами выявлена проблема (CVE-2019-19537), вызванная состоянием гонки (race condition).

Также можно отметить выявление четырёх уязвимостей (CVE-2019-14895, CVE-2019-14896, CVE-2019-14897, CVE-2019-14901) в драйвере для беспроводных чипов Marvell, которые могут привести к переполнению буфера. Атака может быть совершена удалённо через отправку определённым образом оформленных кадров при соединении с беспроводной точкой доступа злоумышленника. В качестве наиболее вероятной угрозы отмечается удалённый отказ в обслуживании (крах ядра), но не исключается и возможность выполнения кода в системе.

  1. Главная ссылка к новости (https://www.openwall.com/lists...)
  2. OpenNews: Intel подготовил начальную реализацию драйвера USB 4.0 для ядра Linux
  3. OpenNews: В USB-драйверах из состава ядра Linux выявлено 15 уязвимостей
  4. OpenNews: Атака на заблокированный ПК через USB
  5. OpenNews: В USB-стеке ядра Linux выявлено 14 уязвимостей
  6. OpenNews: Представлена техника атаки, позволяющая шпионить за соседними USB-устройствами
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: usb, kernel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (75) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Zenitur (ok), 09:07, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Дело PVS Studio живёт и здравствует? Или Андрею - всеобщие почёт и уважение, ведь он же в Google работает, а не в каком-то там PVS?
     
     
  • 2.14, Аноним (14), 10:07, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    pvs - это статический анализ.
     
     
  • 3.25, Andrew (??), 11:21, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И то и то можно использовать для поиска уязвимостей. Статический анализатор кода PVS-Studio как защита от уязвимостей нулевого дня - https://www.viva64.com/ru/b/0689/
     
  • 2.18, Sluggard (ok), 10:42, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    А Андрей тоже проводил статический анализ кода проприетарной неизвестно сколько стоящей балалайкой, с последующим размещением рекламы везде, где только можно? Да вроде нет...
     
     
  • 3.51, Andrey_Karpov (ok), 21:47, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Как будто в этом есть что-то плохое :).

    Мир открытых проектов стал лучше, избавившись за эти годы как минимум от 13000 найденных нами ошибок: https://www.viva64.com/ru/examples/

    Большое количество открытые проекты имеют возможность бесплатно использовать анализатор: https://www.viva64.com/ru/b/0600/

    Все счастливы.

     
     
  • 4.52, Sluggard (ok), 21:52, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Все обо всём знают и помнят, можно обойтись без повторений и ссылок, г-н Карпов. )
     
     
  • 5.60, Аноним (60), 10:26, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А я забыл, что за дискриминация?
     
  • 4.56, kai3341 (ok), 23:36, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    haters gonna hate. Андрей, спасибо, что делаете мир лучше
     
     
  • 5.59, ыы (?), 08:42, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Навязчивая реклама не работает, а совсем наоборот, продукт может и хороший, но я лично его даже  пробовать не стану, чтобы не мараться, думаю я не один такой. Кстати у вас там в офисе отдельный штат минусить критиков? Или вам сверхурочную платят?
     
     
  • 6.67, kai3341 (ok), 12:42, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Минусовать? За критику? Ну для школьника нормально, наверное
     
  • 4.61, InuYasha (?), 11:36, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пытался пару лет его присобачить к 2010-ой студии, но так они друг друга и не заметили: ПВС не видит код, студия не видит ПВС... Обидно было. :(
     
     
  • 5.66, Andrey_Karpov (ok), 11:54, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что-то пошло не так... Как гипотиза, VS была community edition, которая не поддерживала плагины. В подобных случаях прошу писать в поддержку.
     
     
  • 6.69, InuYasha (?), 14:37, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Что-то пошло не так... Как гипотиза, VS была community edition, которая не
    > поддерживала плагины. В подобных случаях прошу писать в поддержку.

    Ентерпрайз она во все дыры. Даже патчи ставил. И, если честно, мануал у ПВС (был?) вообще никакой. Не было getting started и пр. Т.е. я _догадывался_ что _наверное_ где-то в студии должна появиться жирная кнопка _запустить рповерку и сделать всё хорошо_, но в итоге облазил всё и в мануале даже не нашёл, что где и куда. Был там какой-то свой гуй вообще непонятного назначения, т.е. не для открывания проекта. if (failtimes >= 2) break; uninstall(); return 1;
    Повторюсь, это было давно (около 4+ лет назад), может, стало лучше. Но воспоминания жуткие. Хотя, в целом я ваш проект очень уважаю.

     
     
  • 7.70, InuYasha (?), 14:43, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Что-то пошло не так... Как гипотиза, VS была community edition, которая не
    >> поддерживала плагины. В подобных случаях прошу писать в поддержку.

    Я пользовался бесплатной версией (опенсорц и сплошные убытки от кода :D ), не надеялся что поддержка отвечает триальщикам.

     
     
  • 8.73, Andrey_Karpov (ok), 15:29, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    1 Попробуйте ещё раз 4 года, это много 2 Отвечаем ... текст свёрнут, показать
     
  • 2.40, Аноним (-), 17:28, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Пивас-Студия Хабр загадила. Спасите Хабр!
     
  • 2.58, ыы (?), 08:38, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну и зачем ты вызвал демонов?
     

  • 1.2, Аноним (2), 09:20, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Типичные такие C-проблемы
     
  • 1.3, Аноним (3), 09:20, 04/12/2019 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • +2 +/
     
     
  • 2.4, Аноним (4), 09:24, 04/12/2019 Скрыто модератором
  • +1 +/
     
     
  • 3.5, Аноним (4), 09:25, 04/12/2019 Скрыто модератором
  • +2 +/
     
  • 2.6, qetui (?), 09:27, 04/12/2019 Скрыто модератором
  • +2 +/
     

     ....ответы скрыты модератором (3)

  • 1.8, Аноним (8), 09:37, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Типичные новости сишников.
     
     
  • 2.19, i (??), 10:54, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    откуда вы повыползали такие не типичные, или нетрадиционные точнее..
     
     
  • 3.30, Anonn (?), 11:48, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –3 +/
    А что не так? Все верно и регулярно.
     
     
  • 4.41, Аноним (41), 18:31, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    undefined, и не говори
     
     
  • 5.81, Аноним (81), 14:19, 06/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    И не говори (null)
     

  • 1.9, Аноним (9), 09:39, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Уязвимости потенциально могут быть эксплуатируемы при подключении к компьютеру специально подготовленных USB-устройств.

    https://wiki.gentoo.org/wiki/Allow_only_known_usb_devices

     
     
  • 2.13, хотел спросить (?), 10:05, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А не для этого разве пилится USB Guard?
     
     
  • 3.15, Аноним (14), 10:07, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    usbauth должен быть лучше, но для него гуя нет.
     
     
  • 4.31, Аноним (31), 12:10, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Вариантов защиты от чужих USB устройств есть очень много, например еще этот: https://wiki.gentoo.org/wiki/Silk_Guardian

    Варианты описанные в: https://wiki.gentoo.org/wiki/Allow_only_known_usb_devices самые лучшие.

    Для серверов хватает опций ядра:
    CONFIG_GRKERNSEC_DENYUSB
    CONFIG_GRKERNSEC_DENYUSB_FORCE

    Для рабочих станций используется штатный механизм eudev (udev) который блокирует чужие USB устройства на уровне ядра в sysfs. Никаких левых прог устанавливать не надо.

     
     
  • 5.48, Аноним (48), 20:01, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > in our case we will allow and disallow USB devices based on their identifying strings.

    Что мешает во взломщике подделать identifying strings и притвориться легальным устройством?

     
     
  • 6.62, InuYasha (?), 11:38, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    То, что ему этот ID надо будет сначала как-то подсмотреть.
     
  • 4.32, Аноним (32), 12:10, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тонко. Зачот.
     
  • 3.33, Аноним (31), 12:23, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У https://usbguard.github.io тот же принцип блокировки авторизации чужих USB, что используется eudev/udev:
    https://www.kernel.org/doc/Documentation/usb/authorization.txt

    Только в этой доке: https://wiki.gentoo.org/wiki/Allow_only_known_usb_devices используется стандартный язык правил eudev/udev и не надо чего-то дополнительного устанавливать.

     
  • 2.38, Аноним (38), 16:41, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А поможет ли это?
    Например, если эксплоит срабатывает раньше чем дело доходит до кода eudev?
     

  • 1.10, Аноним (10), 09:57, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    зато не на хипстерском языке! как деды завещали!
     
     
  • 2.11, Zenitur (ok), 09:59, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Зато работает даже на микроконт... ой, то есть одноплатных компьютерах, на роутерах, и на десктопах Pentium-133 и 32 Мб ОЗУ. А ваш Rust так умеет?
     
     
  • 3.12, Аноним (10), 10:01, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ты про жирные бинарники что ли? это фиксится
     
  • 3.20, burjui (ok), 10:57, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Умеет. На тех же Cortex-M3, например, заводится без проблем (я на STM32F1 и STM32F4 проверял). На старом пеньке - тем более. Вообще-то, Rust по производительности - на уровне C. На нём можно даже писать в сишном стиле, если сильно нужно (unsafe): с сырыми указателями и соответствующими рисками. Но даже в этом случае язык удобнее и безопаснее.
     
     
  • 4.39, burjui (ok), 17:02, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сомневающимся:
    https://github.com/japaric-archived/rust-on-openwrt
     
     
  • 5.75, Аноним (75), 10:39, 06/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы предпочёл d-on-openwrt.
     
  • 4.49, Аноним (48), 20:03, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Но даже в этом случае язык удобнее и безопаснее.

    За счёт чего?

     
     
  • 5.54, burjui (ok), 23:21, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что разрешает unsafe:
    * Dereference a raw pointer
    * Call an unsafe function or method
    * Access or modify a mutable static variable
    * Implement an unsafe trait
    * Access fields of unions

    При этом, остальной язык никуда не девается. По поводу безопасности, по-прежнему для ссылок работает borrow checker, поэтому имеет смысл пользоваться ими, пока возможно. К слову, создавать сырые указатели можно и без unsafe, последний нужен только чтобы разыменовывать их. Нет неявного приведения численных типов, работают проверки границ массивов. Что до удобства - это всё, чего нет в C или что сделано лучше: ADT (enum), pattern matching, трейты, слайсы, строки, AST макросы и всяческие атрибуты и фичи для условной компиляции вместо препроцессора, приклеенного к языку сбоку, безопасный printf и вообще форматирование, стандартная библиотека и т.д. Да даже нормальный синтаксис тех же указателей на функции.

    Короче, я не знаю, почему здесь так не любят Rust. Несколько лет назад я бы ещё понял эту неприязнь, т.к. язык был сыроват, borrow checker местами реально бесил, т.к. был тупее и не жрал многие правильные программы, библиотек было мало, стандартная была бедновата. Но после 1.0, и, тем более сейчас, я просто не вижу причин использовать C вообще, т.к. Rust линкуется с ним, и на нём можно писать ровно то же самое, но лучше. Разве что для проектов, которые принципиально не собираются уходить от C - например, Linux.

     
     
  • 6.55, Аноним (55), 23:26, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Короче, я не знаю, почему здесь так не любят Rust

    это из-за приколистов, которые по приколу подкалывают сишников. это как с джава и котлин. сам пишу на джава и котлин не люблю, но потроллить джавистов не откажусь

     
  • 6.57, лютый жжжжжжж (?), 05:21, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Короче, я не знаю, почему здесь так не любят Rust

    А что здесь любят? Си поносят, js поносят, жабу так вообще. Школьники-с....

     
  • 6.65, InuYasha (?), 11:50, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>Короче, я не знаю, почему здесь так не любят Rust.

    Потому что довольно велосипедно-костыльный синтаксис?
    Потому что rust-о-маны затрахали трубить о нём с каждого комментария?

     
     
  • 7.71, Michael Shigorin (ok), 14:51, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Короче, я не знаю, почему здесь так не любят Rust.
    > Потому что rust-о-маны затрахали трубить о нём с каждого комментария?

    Кстати, забавно будет, если вдруг окажется, что PVS выше вон тоже растоманы топят. :))

     
  • 7.74, burjui (ok), 17:33, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Во-первых, синтаксис не велосипедно-костыльный, а большей частью заимствован из языков семейства ML - Standard ML, Ocaml, Haskell. По всей видимости, вы не знакомы с этими языками, существующими десятки лет, и это делает для вас синтаксис велосипедным. Но это проблемы вашего узкого кругозора, а не языка. После школьных Pascal и BASIC другие языки тоже покажутся велосипедными. Что вы подразумеваете под "костыльностью", я не знаю.

    Во-вторых, в новостях о Rust каждый второй комментарий - про то, что Rust не нужен, потому что есть православный C++, и потому что синтаксис другой (можно подумать, синтаксис C++ является эталоном изящества). Тоже, знаете ли, затрахали. Так что странный упрёк, все не без греха, если уж на то пошло, и типичный "растаман" ничем не хуже любого другого опеннетовского диванного эксперта, который в каждой дырке - затычка.

     
  • 4.50, Урри (?), 20:06, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    не сказал бы что удобнее. всякого специфического синтаксического сахара мама не горюй.
     
     
  • 5.53, burjui (ok), 22:49, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    С каких пор синтаксический сахар не является удобством? Наверное, вы неправильно понимаете термин и имели ввиду что-то другое.
     
  • 3.34, Аноним (34), 13:24, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    https://www.reddit.com/r/rust/comments/e5npa3/a_rusty_fm_radio_si4703_fm_radio
     
  • 3.35, Нонон (?), 14:06, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вообще то Раст умеет. У него бинарники такие же не требовательные как и у си.
    Но я не из тех кто пропагандирует переписать все и вся на Раст)
     
  • 3.79, Аноним (75), 11:02, 06/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >на десктопах Pentium-133 и 32 Мб ОЗУ

    Zenitur, ну где ты такое находишь?

     
  • 2.47, Аноним (48), 19:57, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не надоело?
     

  • 1.16, Аноним (16), 10:08, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Предлагаю отныне CVE расшифровывать как C Vulnerabilities and Exposures.
     
     
  • 2.23, Аноним (38), 11:07, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Попытка пошутить зачтена!
     
  • 2.46, Michael Shigorin (ok), 19:40, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    (меланхолично) Тогда придётся заводить отдельные JVE, PVE, RVE, #VE и прочие.
     
     
  • 3.63, InuYasha (?), 11:39, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    можно. Тогда сразу список CVE сократится на порядок и читать его станет проще )
     
  • 3.76, Аноним (75), 10:49, 06/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Относительно PVE, тут будет неоднозначность.
     

  • 1.17, Аноним (17), 10:08, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >о выявлении очередных 15 уязвимостей

    Это не новость ибо жаст фофан же.

     
     
  • 2.24, burjui (ok), 11:17, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Хюмор модьюл активэйтед, джоук детектед, коммент скор инкрементэд.
     
  • 2.77, Аноним (75), 10:52, 06/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А бздунские ОС это, типа, не фофан, да?
     

  • 1.21, eganru (?), 10:58, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Недавно проводил анализ Си кода PSV-studio. Ругается на встроенные функции.
     
     
  • 2.28, Andrey_Karpov (ok), 11:35, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Эээ... Прошу пояснить, что Вы имеете в виду?
     

  • 1.22, NaN (?), 11:03, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >вызванные обращением к уже освобождённым областям памяти

    Я вот не пойму, поле освобождения памяти указатель принципиально не обнуляют что-ли?

     
     
  • 2.26, Аноним (26), 11:25, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Указатель на память, например, может быть скопирован, а при освобождении это не учтено.
     
     
  • 3.29, NaN (?), 11:40, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, ясно, спасибо.
     
  • 2.27, burjui (ok), 11:25, 04/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Скорее всего, доступ там через копии указателей: допустим, есть коллбек с указателем на данные, память освободили, коллбек сработал и что-нибудь записал по уже висячему указателю.
     

  • 1.44, Michael Shigorin (ok), 19:15, 04/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > [B]15[/B] уязвимостей в USB

    Universal [B]Serial[/B] Bug...

     
  • 1.64, InuYasha (?), 11:43, 05/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пошёл искать (!= гуглить), как отключить порты УПШ на серваке без перекомпилирования ядра.
     
     
  • 2.68, InuYasha (?), 14:21, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Пошёл искать (!= гуглить), как отключить порты УПШ на серваке без перекомпилирования ядра.

    Лучше всего отключить УПШ в биос сетапе и поставить на него пароль.

     
  • 2.72, Michael Shigorin (ok), 14:51, 05/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Пошёл искать (!= гуглить), как отключить порты УПШ на серваке
    > без перекомпилирования ядра.

    Панелью с замком.

     
  • 2.78, Аноним (75), 10:58, 06/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что за УПШ? Может быть ГЫИ?
     
     
  • 3.82, InuYasha (?), 12:08, 07/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, только по-русски )
     

  • 1.80, Аноним (81), 14:17, 06/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Все ближе походу светлое будущее для Rust.
     

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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