The OpenNET Project / Index page

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

·21.10 Выпуск гипервизора Bareflank 3.0 (8 +3)
  Состоялся релиз гипервизора Bareflank 3.0, предоставляющего инструментарий для быстрой разработки специализированных гипервизоров. Bareflank написан на языке C++, поддерживает C++ STL. Модульная архитектура Bareflank позволят легко расширять имеющиеся возможности гипервизора и создавать собственные варианты гипервизоров, как работающих поверх оборудования (как Xen), так и запускаемых в имеющемся программном окружении (как VirtualBox). Имеется возможность выполнения операционной системы хост-окружения в отдельной виртуальной машине. Код проекта распространяется под лицензией LGPL 2.1.

В Bareflank реализована поддержка Linux, Windows и UEFI на 64-разрядных CPU Intel и AMD. Для аппаратного разделения ресурсов виртуальных машин применяется технология Intel VT-x. На будущее запланирована поддержка macOS и BSD-систем, а также возможность работы на платформе ARM64. Дополнительно проектом развивается собственный драйвер для загрузки VMM (Virtual Machine Manager), ELF-загрузчик для загрузки модулей VVM, приложение bfm для управления гипервизором из пространства пользователя. Предоставляется инструментарий для написания расширений с использованием элементов, определённых в спецификациях C++11/14, библиотека раскручивания стека исключений (unwind), а также своя runtime-библиотека для поддержки применения конструкторов/деструкторов и регистрации обработчиков исключений.

На базе Bareflank ведётся разработка системы виртуализации Boxy, поддерживающей запуск гостевых систем и позволяющей использовать легковесные виртуальные машины с Linux и Unikernel для запуска специализированных сервисов или приложений. В форме изолированных сервисов можно выполнять как обычные web-сервисы, так и приложения, к которым предъявляются особые требования к надёжности и безопасности, избавленные от влияния хост-окружения (хост-окружение изолируется в отдельной виртуальной машине). Bareflank также лежит в основе гипервизора MicroV, предназначенного для запуска минималистичных виртуальных машин (виртуальная машина одного приложения), реализующего API KVM и подходящего для создания критически важных систем.

Основные новшества Bareflank 3.0:

  • Переход на использование концепции микроядра. Ранее гипервизор имел монолитную архитектуру, при которой для расширения функциональности приходилось использовать специальный API для регистрации callback-вызовов, что затрудняло разработку расширений из-за привязки к языку С++ и внутреннему устройству. Новая архитектура на базе микроядра подразумевает разделение гипервизора на компоненты ядра, выполняемые на нулевом кольце защиты, и расширения, выполняемые на третьем кольце (пространство пользователя). Обе части работают в корневом режиме VMX, а всё остальное, включая хост-окружение, в некорневом режиме VMX. Расширения в пространстве пользователя реализуют функциональность диспетчера виртуальных машин (VMM) и взаимодействуют с ядром гипирвизора через системные вызовы, для которых обеспечивается обратная совместимость. Расширения могут создаваться на любых языках программирования, в том числе поддерживается использование языка Rust.
  • Осуществлён переход на использование собственной библиотеки BSL с поддержкой Rust и C++, которая пришла на смену внешним библиотекам libc++ и newlib. Отказ от внешних зависимостей позволил реализовать в Bareflank родную поддержку компиляции в Windows для упрощения разработки на данной платформе.
  • Добавлена поддержка процессоров AMD. Более того разработка Bareflank теперь ведётся на системе с CPU AMD и уже потом портируется для CPU Intel.
  • В загрузчике добавлена поддержка архитектуры ARMv8, адаптация гипервизора для которой будет завершена в одном из следующих выпусков.
  • Обеспечено соответствие требованиям к разработке критически важных систем, сформулированным организациями AUTOSAR и MISRA.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск гипервизора Bareflank 2.0
  3. OpenNews: Первый выпуск гипервизора Bareflank
  4. OpenNews: Выпуск гипервизора Xen 4.15
  5. OpenNews: Выпуск MirageOS 3.9, платформы для запуска приложений поверх гипервизора
  6. OpenNews: Компания Siemens выпустила гипервизор Jailhouse 0.12
Обсуждение (8 +3) | Тип: Программы |


·21.10 Релиз языка программирования Rust 2021 (1.56) (58 +1)
  Опубликован релиз языка системного программирования Rust 1.56, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Кроме штатного номера версии выпуск также обозначен как Rust 2021 и знаменует собой стабилизацию изменений, предложенных за последние три года. Rust 2021 также выступит основой для наращивания функциональности в последующие три года, по аналогии с тем, как выпуск Rust 2018 стал базисом для развития языка в прошедшие три года.

Для сохранения совместимости разработчики могут использовать в своих программах метки "2015", "2018" и "2021", позволяющие привязать программы к срезам состояния языка, соответствующим выбранным редакциям Rust. Редакции были введены для разделения несовместимых изменений и настраиваются в метаданных cargo-пакетов через поле "edition" в секции "[package]". Например, редакция "2018" включает стабилизированную на конец 2018 года функциональность и также охватывает все дальнейшие изменения, не нарушающие совместимость. Редакция "2021" дополнительно включает нарушающие совместимость новшества, предложенные в текущем выпуске 1.56 и утверждённые для реализации в будущем. Кроме самого языка редакции также учитывают состояние инструментария и документации.

Основные несовместимости, зафиксированные в Rust 2021:

  • Раздельный захват в замыканиях - замыкания теперь могут захватывать отдельные имена полей вместо всего идентификатора. Например, "|| a.x + 1" захватит только "a.x" вместо "a".
  • Типаж IntoIterator для массивов: array.into_iter() позволяет организовать перебор элементов массива по значениям, а не по ссылкам.
  • В macro_rules изменена обработка выражений "|" (логическая операция OR) в шаблонах - спецификатор ":pat" в сопоставлениях теперь учитывает шаблоны "A | B".
  • В пакетном менеджере cargo включена по умолчанию вторая версия определителя доступных возможностей (feature resolver), поддержка которой появилась в Rust 1.51.
  • Типажи (trait) TryFrom, TryInto и FromIterator добавлены в состав модуля стандартной библиотеки prelude.
  • Макросы panic!(..) и assert!(expr, ..) теперь всегда используют format_args!(..) для форматирования строк по аналогии с println!().
  • В синтаксисе языка зарезервированы выражения ident#, ident"..." и ident'...'.
  • Предупреждения bare_trait_objects и ellipsis_inclusive_range_patterns переведены в категорию ошибок.

Новшества Rust 1.56:

  • В Cargo.toml в секции "[package]" добавлено поле rust-version, через которое можно определить минимально поддерживаемую версию Rust для crate-пакета. Если текущая версия не соответствует указанному параметру Cargo прекратит работу с выводом ошибки.
  • При сопоставлении с образцом при помощи выражений "binding @ pattern" реализована поддержка указания дополнительных привязок (например, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функциях
    • std::mem::transmute
    • [T]::first
    • [T]::split_first
    • [T]::last
    • [T]::split_last
  • Компилятор переведён на использование версии LLVM 13.
  • Реализован второй уровень поддержки для платформы aarch64-apple-ios-sim и третий уровень для платформ powerpc-unknown-freebsd и riscv32imc-esp-espidf . Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

Напомним, что язык Rust сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

  1. Главная ссылка к новости
  2. OpenNews: GitHub добавил поддержку отслеживания уязвимостей в проектах на языке Rust
  3. OpenNews: Выпуск языка программирования Rust 1.55
  4. OpenNews: Уязвимость в сетевых библиотеках языков Rust и Go, позволяющая обойти проверку IP-адресов
  5. OpenNews: Вторая редакция патчей для ядра Linux с поддержкой языка Rust
  6. OpenNews: Релиз языка программирования Rust 2018 (1.31)
Обсуждение (58 +1) | Тип: Программы |


·21.10 Компания Alibaba открыла наработки, связанные с RISC-V процессорами XuanTie (107 +28)
  Alibaba, одна из крупнейших китайских IT-компаний, объявила об открытии наработок, связанных с процессорными ядрами XuanTie E902, E906, C906 и C910, построенными на базе 64-разрядной архитектуры набора команд RISC-V. Открытые ядра XuanTie будут развиваться под новыми именами OpenE902, OpenE906, OpenC906 и OpenC910.

Схемы, описания аппаратных блоков на языке Verilog, симулятор и сопутствующая проектная документация опубликованы на GitHub под лицензией Apache 2.0. Отдельно опубликованы адаптированные для работы с чипами XuanTie варианты компиляторов GCC и LLVM, библиотеки Glibc, инструментария Binutils, загрузчика U-Boot, ядра Linux, связующего интерфейса OpenSBI (RISC-V Supervisor Binary Interface), платформы для создания встраиваемых Linux-систем Yocto, а также патчи для запуска платформы Android.

XuanTie C910, наиболее мощный из открытых чипов, выпускается подразделением T-Head с использованием техпроцесса 12 nm в 16-ядерном варианте, работающем на частоте 2.5 GHz. Производительность чипа в тесте Coremark достигает 7.1 Coremark/MHz, что превосходит процессоры ARM Cortex-A73. Всего компанией Alibaba разработано 11 различных чипов RISC-V, которых уже выпущено более 2.5 млрд экземпляров, и компания работает над становлением экосистемы для дальнейшего продвижения архитектуры RISC-V не только для IoT-устройств, но и для других типов вычислительных систем.

Напомним, что RISC-V предоставляет открытую и гибкую систему машинных инструкций, позволяющую создавать микропроцессоры для произвольных областей применения, не требуя при этом отчислений и не налагая условий на использование. RISC-V позволяет создавать полностью открытые SoC и процессоры. В настоящее время на базе спецификации RISC-V разными компаниями и сообществами под различными свободными лицензиями (BSD, MIT, Apache 2.0) развивается несколько десятков вариантов ядер микропроцессоров, SoC и уже производимых чипов. Из операционных систем с качественной поддержкой RISC-V можно отметить GNU/Linux (присутствует начиная с выпусков Glibc 2.27, binutils 2.30, gcc 7 и ядра Linux 4.15), FreeBSD и OpenBSD.

Кроме RISC-V компания Alibaba занимается разработкой и систем на базе архитектуры ARM64. Например, одновременно с открытием технологий XuanTie представлен новый серверный SoC Yitian 710, содержащий 128 ядер ARMv9 собственной разработки, работающих на частоте 3.2 GHz. Чип оснащён 8 каналами памяти DDR5 и 96 линиями PCIe 5.0. При производстве чипа использован техпроцесс 5 nm, что позволило интегрировать на подложке 628 mm² около 60 миллиардов транзисторов. По производительности Yitian 710 опережает самые быстрые ARM-чипы примерно на 20%, а по энергопотреблению более эффективен примерно на 50%.

  1. Главная ссылка к новости
  2. OpenNews: Компания Alibaba открыла код распределённой СУБД PolarDB, основанной на PostgreSQL
  3. OpenNews: Представлен RV64X, открытый GPU на базе технологий RISC-V
  4. OpenNews: MIPS Technologies прекращает развитие архитектуры MIPS в пользу RISC-V
  5. OpenNews: В РФ начнётся производство отечественных процессоров на основе архитектуры RISC-V
  6. OpenNews: В Китае разработан открытый RISC-V процессор XiangShan, конкурирующий с ARM Cortex-A76
Обсуждение (107 +28) | Тип: К сведению |


·21.10 В репозитории NPM выявлены три пакета, выполняющих скрытый майнинг криптовалют (23 +9)
  В репозитории NPM выявлены три вредоносных пакета klow, klown и okhsa, которые прикрываясь функциональностью для разбора заголовка User-Agent (использовалась копия библиотеки UA-Parser-js) содержали вредоносные изменения, применяемые для организации майнинга криптовалют на системе пользователя. Пакеты были размещены одним пользователем 15 октября, но сразу выявлены сторонними исследователями, которые сообщили о проблеме администрации NPM. В итоге пакеты были удалены в течение дня после публикации, но успели набрать около 150 загрузок.

Напрямую вредоносный код содержался только в пакетах "klow" и "klown", которые использовались в пакете okhsa в качестве зависимостей. В пакете "okhsa" также имелась заглушка для запуска калькулятора в Windows. В зависимости от текущей платформы на систему пользователя с внешнего хоста загружался и запускался исполняемый файл для майнинга. Сборки майнера были подготовлены в Linux, macOS и Windows. При запуске передавался номер пула для совместного майнинга, номер криптокошелька и число ядер CPU для выполнения вычислений.

  1. Главная ссылка к новости
  2. OpenNews: Уязвимость в NPM, приводящая к перезаписи файлов в системе
  3. OpenNews: Уязвимость в NPM-пакете pac-resolver, насчитывающем 3 млн загрузок в неделю
  4. OpenNews: Уязвимость в NPM-пакете node-netmask, применяемом в 270 тысячах проектов
  5. OpenNews: В репозитории NPM выявлен вредоносный пакет twilio-npm
  6. OpenNews: Из репозитория NPM удалены четыре пакета с бэкдорами
Обсуждение (23 +9) | Тип: Проблемы безопасности |


·21.10 Четвёртый предварительный выпуск графического редактора GIMP 3.0 (53 +29)
  Доступен для тестирования выпуск графического редактора GIMP 2.99.8, продолжающий развитие функциональности будущей стабильной ветки GIMP 3.0, в которой выполнен переход на GTK3, добавлена штатная поддержка Wayland и HiDPI, проведена значительная чистка кодовой базы, предложен новый API для разработки плагинов, реализовано кэширование отрисовки, добавлена поддержка выделения нескольких слоёв (Multi-layer selection) и обеспечено редактирование в исходном цветовом пространстве. Для установки доступен пакет в формате flatpak (org.gimp.GIMP в репозитории flathub-beta) и сборки для Windows.

По сравнению с прошлым тестовым выпуском добавлены следующие изменения:

  • В инструментах выборочного копирования "Штамп", "Лечебная кисть" и "Перспектива" (Clone, Heal and Perspective) реализована возможность работы при выборе нескольких слоёв. Если при выборе нескольких исходных слоёв результат операции применяется к отдельному изображению, то данные для операции формируются на основе слияния слоёв, а если результат применяется к тому же набору слоёв, то операция применяется послойно.

  • Налажено корректное отображение границы выделенной области в композитных оконных менеджерах на основе протокола Wayland и в современных выпусках macOS, в которых ранее не показывались контуры на холсте. Изменение также планируется перенести в стабильную ветку GIMP 2.10, в которой проблема проявлялась только в macOS, так как в окружениях на базе Wayland версия на базе GTK2 выполнялась при помощи XWayland.
  • В сборках в формате Flatpak вместо прав x11 теперь запрашиваются права fallback-x11, что позволило избавиться от лишнего доступа к функциональности x11 при работе в окружениях на базе Wayland. Кроме того, исчезли большие утечки памяти при запуске в окружениях на базе Wayland (судя по всему проблема была исправлена в одной из специфичных для Wayland зависимостей).
  • В GIMP и GTK3 на платформе Windows добавлена возможность использования системы ввода Windows Ink (Windows Pointer Input Stack), позволяющей обеспечить работу с планшетами и сенсорными устройствами для которых отсутствуют драйверы Wintab. В настройки для ОС Windows добавлена опция для переключения между стеками Wintab и Windows Ink.
  • Предоставлена возможность возвращения фокуса на холст через клик в любом месте на панели инструментов по аналогии с нажатием клавиши Esc.
  • Убрано отображение в панели задач значка с эскизом открытого изображения, наложенного на логотип GIMP. Подобное наложение затрудняло у некоторых пользователей определение окон с GIMP при большом числе приложений, запущенных в системе.
  • Добавлена поддержка загрузки и экспорта изображений в формате JPEG-XL (.jxl) с цветовыми профилями RGP и в оттенках серого, а также с поддержкой режима кодирования без потери качества (lossless).
  • Улучшена поддержка файлов проектов Adobe Photoshop (PSD/PSB), для которых убраны ограничения на размер в 4 ГБ. Допустимое число каналов увеличено до 99 каналов. Добавлена возможность загрузки файлов PSB, на деле являющихся файлами PSD с поддержкой разрешений до 300 тысяч пикселей в ширину и длину.
  • Добавлена поддержка 16-разрядных изображений SGI.
  • Плагин для поддержки изображений WebP переведён на API GimpSaveProcedureDialog.
  • В Script-Fu обеспечена обработка типов GFile и GimpObjectArray.
  • Расширены возможности API для разработки плагинов.
  • Устранены утечки памяти.
  • Расширена инфраструктура для тестирования изменений в системе непрерывной интеграции.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск графического редактора GIMP 2.10.28
  3. OpenNews: Прекращение разработки Glimpse, форка графического редактора GIMP
  4. OpenNews: Выпуск редактора векторной графики Inkscape 1.1
  5. OpenNews: Третий предварительный выпуск графического редактора GIMP 3.0
  6. OpenNews: Выпуск растрового графического редактора Krita 4.4.0
Обсуждение (53 +29) | Тип: Программы |


·21.10 Раскрыта техника эксплуатации уязвимости в tty-подсистеме ядра Linux (95 +17)
  Исследователи из команды Google Project Zero опубликовали метод эксплуатации уязвимости (CVE-2020-29661) в реализации ioctl-обработчика TIOCSPGRP из tty-подсистемы ядра Linux, а также детально рассмотрели механизмы защиты, которые могли бы блокировать подобные уязвимости.

Вызывающая проблему ошибка была устранена в ядре Linux ещё 3 декабря прошлого года. Проблема проявляется в ядрах до версии 5.9.13, но большинство дистрибутивов устранили проблему в обновлениях пакетов с ядром, предложенных ещё в прошлом году (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Похожая уязвимость (CVE-2020-29660) одновременно была найдена в реализации ioctl-вызова TIOCGSID, но она также уже повсеместно устранена.

Проблема вызвана ошибкой при установке блокировок, приводящей к состоянию гонки в коде drivers/tty/tty_jobctrl.c, которое удалось использовать для создания условий обращения к памяти после её освобождения (use-after-free), эксплуатируемых из пространства пользователя через манипуляции с ioct-вызовом TIOCSPGRP. Рабочий эксплоит продемонстрирован для повышения привилегий в Debian 10 с ядром 4.19.0-13-amd64.

При этом в опубликованной статье акцент ставится не столько на технике создания рабочего эксплоита, столько на том, какие инструменты в ядре существуют для защиты от подобных уязвимостей. Вывод делается неутешительный, методы типа сегментирования памяти в куче и контроля за обращением к памяти после её освобождения не применяются на практике, так как приводят к снижению производительности, а защита на основе CFI (Control Flow Integrity), блокирующая эксплоиты на поздних стадиях атаки, требует доработки.

При рассмотрении того, что могло бы изменить ситуацию в долгосрочной перспективе, выделяется применение продвинутых статических анализаторов или использование языков, обеспечивающих безопасную работу с памятью, таких как Rust и диалекты языка Си с расширенными аннотациями (например, Checked C), на этапе сборки проверяющих состояние блокировок, объектов и указателей. Из методов защиты также упоминается активация режима panic_on_oops, перевод структур ядра в режим только для чтения и ограничение доступа к системным вызовам при помощи таких механизмов, как seccomp.

  1. Главная ссылка к новости
  2. OpenNews: Уязвимость в специфичном для CPU AMD коде KVM, позволяющая выполнить код вне гостевой системы
  3. OpenNews: Выпуск модуля LKRG 0.9.0 для защиты от эксплуатации уязвимостей в ядре Linux
  4. OpenNews: Уязвимость в модификациях ядра, сделанных Samsung для повышения безопасности Android
  5. OpenNews: Анализ использования фрагментов уязвимых библиотек в исполняемом коде
  6. OpenNews: Опубликован эксплоит для уязвимости в подсистеме vmacache ядра Linux
Обсуждение (95 +17) | Тип: Проблемы безопасности |


·20.10 Выпуск дистрибутива Redcore Linux 2102 (32 +7)
  Доступен выпуск дистрибутива Redcore Linux 2102, который пытается совместить функциональные возможности Gentoo с удобством для обычных пользователей. Дистрибутив предоставляет простой инсталлятор, позволяющий быстро развернуть рабочую систему, не требуя пересборки компонентов из исходных текстов. Пользователям предоставляется репозиторий с готовыми бинарными пакетами, сопровождаемый с использованием непрерывного цикла обновлений (rolling-модель). Для управления пакетами задействован собственный пакетный менеджер sisyphus. Для установки предлагается iso-образ с рабочим столом KDE, размером 3.9 ГБ (x86_64).

В новой версии:

  • Выполнена синхронизация с деревом Gentoo testing по состоянию на 1 октября.
  • Для установки на выбор предложены пакеты с ядром Linux 5.14.10 (по умолчанию), 5.10.71 и 5.4.151.
  • Обновлены версии около 1300 пакетов.
  • Пользовательское окружение обновлено до KDE Plasma 5.22.5 и KDE Gear 21.08.1.
  • В отдельный пакет вынесен DDX-компонент Xwayland, применяемый для запуска X11-приложений в окружениях на базе протокола Wayland.
  • В качестве браузера по умолчанию задействован Chromium (раньше поставлялся Firefox, а в качестве почтового клиента - Mailspring (вместо Thunderbird).
  • Улучшена поддержка проприетарных драйверов NVIDIA, при помощи nvidia-prime обеспечена поддержка технологии PRIME для выноса операций отрисовки на другие GPU (PRIME Display Offload).
  • Повышена стабильность работы при загрузке в live-режиме.
  • Обновлён инсталлятор.
  • Обеспечена корректная работы Steam runtime.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск дистрибутива Redcore Linux 2101
  3. OpenNews: Gentoo начал распространение универсальных сборок ядра Linux
  4. OpenNews: Gentoo начал формирование дополнительных сборок на базе Musl и systemd
  5. OpenNews: Релиз дистрибутива Sabayon Linux 19.03
  6. OpenNews: Выпуск дистрибутива Funtoo 1.4, развиваемого основателем Gentoo Linux
Обсуждение (32 +7) | Тип: Программы |


·20.10 В Москве состоится конференция, посвящённая языку программирования Rust (165 –19)
  3 декабря в Москве пройдёт конференция, посвящённая языку программирования Rust. Конференция предназначена как для тех, кто уже пишет на этом языке определённые продукты, так и для тех, кто присматривается к нему. На мероприятии будут обсуждаться вопросы, посвящённые улучшению программных продуктов с помощью дополнения или переноса функциональности на Rust, а также рассматриваться причины того, почему это нельзя сделать на C/C++.

Участие платное (14000 руб), предусмотрено питание, напитки и прямое общение со специалистами, плотно занимающимися внедрением Rust в свои продукты. Среди докладчиков: Сергей Фомин из компании "Яндекс" и Владислав Бескровный из компании "JetBrains", а также гости из таких компаний, как Avito, Rambler и Квантом.

Из предложенных тем докладов можно выделить:

  • Замена неоптимального или сложного кода реализациями на Rust;
  • Использование Rust вкупе с Python в высоконагруженных проектах;
  • Доклады о принципах низкоуровневой работы процедурных макросов;
  • Повышение безопасности unsafe-кода;
  • Rust для Embedded-систем.

Дополнение: Организаторы конференции с 12 октября по 15 ноября также проводят соревнование RustCon, которое, по задумке организаторов, позволит быстро войти в мир программирования на Rust, оценить и повысить свои умения на этом языке, а также получить шанс выиграть бесплатный билет на конференцию RustCon. Участие в соревновании бесплатное, требуется только регистрация на платформе Codeforces.com Рейтинг динамически обновляется на сайте организатора.

Соревнование состоит из двух частей, участие в обеих частях одновременно не обязательно:

  • решение различных математических и алгоритмических задач на языке программирования Rust, наиболее подходящее для новичков. Даётся 3 часа и 8 задач, контроль правильности решения полностью автоматизирован;
  • внесение доработок и вклада в развитие открытых Rust-проектов, более подходящее для уже программирующих на этом языке специалистов.

Наибольшее внимание уделяется именно вкладу в OpenSource-проекты, при этом принимаются:

  • переписывание переусложнённого или неоптимизированного кода на других языках на быстрые реализации на Rust;
  • исправление ошибок и дополнение функциональности в проектах на Rust;
  • собственная реализация того или иного ПО полностью на Rust.

Принятие кода участника в репозиторий мейнтейнером не обязательно, но даёт дополнительные очки. Репозиторий, использованный для доработки, должен иметь не менее 100 звёзд и не может быть связан с участником. Занявший первое место получают билет на RustCon, бейджик и фирменный мерч. Занявший второе - только билет на вышеуказанное мероприятие. Занявший третье получит скидку на билет и фирменный мерч.

  1. Главная ссылка к новости
  2. OpenNews: GitHub добавил поддержку отслеживания уязвимостей в проектах на языке Rust
  3. OpenNews: Критика включения API Idle Detection в Chrome 94. Эксперименты с Rust в Chrome
  4. OpenNews: Для Mesa развивается фронтэнд OpenCL, написанный на языке Rust
  5. OpenNews: Выпуск языка программирования Rust 1.55
  6. OpenNews: Уязвимость в сетевых библиотеках языков Rust и Go, позволяющая обойти проверку IP-адресов
Обсуждение (165 –19) | Автор: QwertyReg | Тип: К сведению |


·20.10 Релиз Chrome 95 (81 +2)
  Компания Google представила релиз web-браузера Chrome 95. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого видеоконтента (DRM), системой автоматической установки обновлений и передачей при поиске RLZ-параметров. В соответствии с новым 4-недельным циклом разработки следующий выпуск Chrome 96 запланирован на 16 ноября. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель, в которой сформировано обновление для прошлого выпуска Chrome 94.

Основные изменения в Chrome 95:

  • Для пользователей Linux, Windows, macOS и ChromeOS предложена новая боковая панель, показываемая справа от содержимого и активируемая при клике на специальный значок в панели с адресной строкой. В панели выводится сводка с закладками и списком для чтения. Изменение включено не для всех пользователей, для активации можно использовать настройку "chrome://flags/#side-panel".
  • Реализован вывод явного запроса полномочий на сохранение адресов, введённых в web-формах, для последующего использования в системе автозаполнения форм. При определении наличия адресов в формах пользователю теперь показывается диалог, позволяющий сохранить адрес, отредактировать, обновить ранее сохранённый адрес или отказаться от сохранения.
  • Удалён код для поддержки протокола FTP. В Chrome 88 поддержка FTP была отключена по умолчанию, но был оставлен флаг для её возвращения.
  • Прекращена поддержка URL с доменами, заканчивающимися хостами, состоящими из цифр, но не соответствующими адресам IPv4. Например, URL "http://127.1/", "http://foo.127.1/" и "http://127.0.0.0.1" теперь будут считаться некорректными.
  • Для WebAssembly реализована возможность создания обработчиков исключений, которые могут перехватить выполнение в случае возникновения исключения при выполнении определённого кода. Поддерживается как перехват известных модулю WebAssembly исключений, так и исключений в процессе вызова импортированных функций. Для перехвата исключений модуль WebAssembly должен быть собран поддерживающим исключения компилятором, таким как Emscripten.

    Отмечается, что обработка исключений на уровне WebAssembly позволяет существенно сократить размер генерируемого кода, по сравнению с обработкой исключений силами JavaScript. Например, сборка оптимизатора Binaryen с обработкой исключений силами JavaScript приводит к увеличению кода на 43%, а силами WebAssembly - на 9%. Кроме того, при использовании режима оптимизации "-O3" код с обработкой исключений силами WebAssembly практически не отличается по производительности от кода без обработчиков исключений, в то время как обработка исключений при помощи JavaScript приводит к замедлению выполнения на 30%.

  • Запрещено совместное использование модулей WebAssembly между разными доменами (cross-origin) при обработке одного сайта.
  • В режиме Origin Trials (экспериментальные возможности, требующие отдельной активации) добавлено несколько новых API. Origin Trial подразумевает возможность работы с указанным API из приложений, загруженных с localhost или 127.0.0.1, или после прохождения регистрации и получения специального токена, который действует ограниченное время для конкретного сайта.
    • Включено урезание информации в HTTP-заголовке User-Agent и JavaScript параметрах navigator.userAgent, navigator.appVersion и navigator.platform. В заголовке оставлены только сведения о названии браузера, значительной версии браузера, платформе и типе устройства (мобильный телефон, ПК, планшет). Для получения дополнительных данных, таких как точная версия и расширенные данные о платформе, необходимо использовать API User Agent Client Hints. Начало урезания User-Agent на системах обычных пользователей намечено на выпуск Chrome 102, который будет опубликован через пол года.
    • Предложена возможность создания дескрипторов доступа (Access Handles) для API File System Access, позволяющего web-приложениям читать и записывать данные напрямую в файлы и каталоги на устройстве пользователя. Для сокращения способов обращения web-приложений к файловой системе компания Google планирует объединить API File System Access и Storage Foundation. В качестве подготовительного этапа к подобному объединению предложена поддержка дескрипторов доступа, дополняющего методы работы на основе файловых дескрипторов расширенными возможностями, такими как выставление блокировки записи другими процессами и создание раздельных потоков на запись и чтение, в том числе с поддержкой чтения и записи из worker-ов в синхронном режиме.
  • Стабилизирован и предложен по умолчанию API Secure Payment Confirmation с реализацией нового расширения 'payment', обеспечивающего дополнительное подтверждение совершаемой платёжной операции. Проверяющая сторона, например, банк, имеет возможность сгенерировать открытый ключ PublicKeyCredential, который может быть запрошен продавцом для дополнительного безопасного подтверждения платежа через API Payment Request, используя метод платежа 'secure-payment-confirmation'.
  • В callback-вызовы, установленные через конструктор PerformanceObserver, реализована передача свойства droppedEntriesCount, позволяющего понять сколько метрик производительности сайта было отброшено из-за того, что они не уместились в предоставленный буфер.
  • Добавлен API EyeDropper, позволяющий вызвать предоставляемый браузером интерфейс для определения цвета произвольных пикселей на экране, что может применяться, например, в графических редакторах, реализованных в виде web-приложений.
    
       const eyeDropper = new EyeDropper();
       const result = await eyeDropper.open(); // result = {sRGBHex: '#160731'}
    
  • Добавлена функция self.reportError(), позволяющая скриптам выводить ошибки на консоль, эмулируя возникновение неперехватываемого исключения.
  • Добавлен API URLPattern, для проверки соответствия URL определённому шаблону, что, например может применяться для разбора ссылок и для перенаправления запросов на обработчики в service worker.
    
       const p = new URLPattern({
         protocol: 'https',
         hostname: 'example.com',
         pathname: '/:folder/*/:fileName.jpg',
       });
    
  • Расширен API Intl.DisplayNames, через который можно получить локализированные названия языков, стран, валют, элементов дат и т.п. В новой версии добавлены новые типы имён "calendar" и "dateTimeField", через которые можно узнать локализованные названия календаря и полей даты и времени (например, название месяцев). Для типа "language" добавлена поддержка использования диалектов языков.
  • В API Intl.DateTimeFormat добавлена поддержка новых значений параметра timeZoneName: "shortGeneric" для вывода короткого идентификатора часового пояса (например, "PT", "ET"), "longGeneric" - длинного ("Pacific Time", "Mountain Time"), "shortOffset" - с коротким смещением относительно GMT ("GMT+5") и "longOffset" с длинным смещением относительно GMT ("GMT+0500").
  • Объявлен устаревшим API U2F (Cryptotoken), вместо которого следует использовать API Web Authentication. API U2F будет отключён по умолчанию в выпуске Chrome 98 и полностью удалён в Chrome 104.
  • Внесены улучшения в инструменты для web-разработчиков. В панели Styles упрощена корректировка свойств CSS, связанных с размером (height, padding и т.п.). Во вкладке Issues предоставлена возможность скрытия отдельных проблем. В web-консоли и панелях Sources и Properties улучшено отображение свойств (собственные свойства теперь выделяются жирным шрифтом и показываются в верху списка).

Кроме нововведений и исправления ошибок в новой версии устранено 19 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 16 премий на сумму 74 тысячи долларов США (одна премия $20000, две премии $10000, одна премия $7500, одна премия $6000, три премии $5000 и по одной премии в $3000, $2000 и $1000). Размер 5 вознаграждений пока не определён.

  1. Главная ссылка к новости
  2. OpenNews: Релиз Chrome 94
  3. OpenNews: Из настроек Chrome планируют убрать раздел для детализированного управления Cookie
  4. OpenNews: Новая техника эксплуатации уязвимостей класса Spectre в Chrome
  5. OpenNews: Критика включения API Idle Detection в Chrome 94. Эксперименты с Rust в Chrome
  6. OpenNews: Google опубликовал план прекращения поддержки второй версии манифеста Chrome
Обсуждение (81 +2) | Тип: Программы |


·20.10 Против компании Vizio подан судебный иск с обвинением в нарушении лицензии GPL (145 +53)
  Правозащитная организация Software Freedom Conservancy (SFC) подала судебный иск против компании Vizio, связанный с невыполнением требований лицензии GPL при распространении прошивок к умным телевизорам на базе платформы SmartCast. Разбирательство примечательно тем, что это первый в истории иск, поданный не от имени участника разработки, которому принадлежат имущественные права на код, а со стороны потребителя, которому не были предоставлены исходные тексты компонентов, распространяемых под лицензией GPL.

Используя в своих продуктах код под копилефт лицензиями производитель для сохранения свободы ПО обязан предоставить исходные тексты, включая код производных работ и инструкции по установке. Без подобных действий пользователь теряет контроль над программным обеспечением, не может самостоятельно исправить ошибки, добавить новые возможности и удалить лишнюю функциональность. Внесение изменений может потребоваться для защиты своей конфиденциальности, устранения своими силами проблем, которые отказывается устранить производитель, и продления жизненного цикла устройства после прекращения его официальной поддержки или искусственного устаревания для стимулирования покупки новой модели.

Изначально организация SFC пыталась договориться мирным путём, но действия через убеждение и информирование не оправдали себя и в индустрии устройств интернета возникла ситуация со всеобщим игнорированием требований GPL. Для выхода из сложившейся ситуации и формирования прецедента было решено использовать более жёсткие юридические меры для привлечения нарушителей к ответственности и устроить показательный процесс над одним из злостных нарушителей.

Иск не предусматривает выплаты денежной компенсации, SFC лишь просит суд обязать компанию выполнить условия GPL в своих продуктах и информировать потребителей о правах, которые предоставляют копилефт лицензии. В случае устранения нарушений, выполнения всех требований и предоставления обязательства соблюдать GPL в будущем, SFC готов сразу завершить судебное разбирательство.

Изначально компания Vizio была уведомлена о наличии нарушения GPL в августе 2018 года. Около года предпринимались попытки урегулирования конфликта дипломатическим путём, но в январе 2020 года компания полностью отстранилась от переговоров и перестала отвечать на письма представителей SFC. В июле 2021 года был завершён цикл поддержки модели телевизора, в прошивке которого были выявлены нарушения, но представители SFC обнаружили, что рекомендации SFC не были учтены и в более новых моделях устройств также нарушаются условия GPL.

В частности, продукты Vizio не предусматривают возможности запроса пользователем исходных текстов GPL-компонентов прошивки, основанной на ядре Linux и типовом системном окружении, в котором выявлены такие GPL-пакеты, как U-Boot, Bash, gawk, GNU tar, glibc, FFmpeg, Bluez, BusyBox, Coreutils, glib, dnsmasq, DirectFB, libgcrypt и systemd. Кроме того, в информационных материалах отсутствует упоминание использования программного обеспечения под копилефт-лицензиями и предоставляемых данными лицензиями прав.

В случае компании Vizio выполнение требований лицензии GPL особенно важно с учётом прошлых разбирательств, в которых компания обвинялась в нарушении конфиденциальности и отправке с устройств персональной информации о пользователях, включая сведения о просматриваемых фильмах и телепередачах.

  1. Главная ссылка к новости
  2. OpenNews: Апелляционный суд встал на сторону VMware в деле о нарушении GPL
  3. OpenNews: Бывший лидер Netfilter прекратил дело о нарушении GPL и выплатит судебные издержки
  4. OpenNews: Суд посчитал, что GPL попадает в область договорных отношений
  5. OpenNews: В немецком суде выиграно дело о нарушении лицензии GPL компанией FANTEC
  6. OpenNews: Проект Stockfish подал иск против компании ChessBase и отозвал лицензию GPL
Обсуждение (145 +53) | Тип: К сведению | Интересно


·20.10 Выпуск VirtualBox 6.1.28 (68 +13)
  Компания Oracle опубликовала корректирующий релиз системы виртуализации VirtualBox 6.1.28, в котором отмечено 23 исправления.

Основные изменения:

  • Для гостевых систем и хостов с Linux добавлена начальная поддержка ядер 5.14 и 5.15, а также дистрибутива RHEL 8.5.
  • Для хостов с Linux улучшено определение установки модулей ядра для исключения лишних пересборок модулей.
  • В менеджере виртуальных машин решена проблема с доступном к отладочным регистрам при загрузке вложенных гостевых систем.
  • В графическом интерфейсе решены проблемы с прокруткой на сенсорных экранах.
  • В виртуальном графическом адаптере VMSVGA решена проблема с появлением чёрного экрана при изменении размера экрана после восстановления сохранённого состояния. В VMSVGA также налажена работа в дистрибутиве Linux Mint.
  • Исправлена проблема, приводившая к выводу сообщений об ошибках записи при использовании образов VHD.
  • Обновлена реализация устройства virtio-net и обеспечена корректная обработка отключения сетевого кабеля при нахождении виртуальной машины в сохранённом состоянии. Расширены возможности по управлению диапазонами адресов подсетей.
  • В NAT устранена проблема с безопасностью, связанная с обработкой запросов TFTP с относительными путями.
  • В звуковом драйвере решены проблемы с прекращением сеанса после перехода компьютера в спящий режим, а также с продолжением воспроизведения после создания снапшота при использовании эмулятора кодека AC'97.
  • В гостевых системах с Linux налажена настройка громкости линейного входа при эмуляции устройств HDA.
  • В привязках обеспечена поддержка Python 3.9.
  • Улучшена работа сервисов для обеспечения совместного доступа к буферу обмена через VRDP.
  • Добавлена поддержка гостевых систем с Windows 11.

  1. Главная ссылка к новости
  2. OpenNews: Выпуск VirtualBox 6.1.26
  3. OpenNews: Обновление Java SE, MySQL, VirtualBox и других продуктов Oracle с устранением уязвимостей
  4. OpenNews: Релиз системы виртуализации VirtualBox 6.1
  5. OpenNews: Релиз системы виртуализации VirtualBox 6.0
  6. OpenNews: Уязвимость в VirtualBox, позволяющая выполнить код на стороне хост-системы
Обсуждение (68 +13) | Тип: Программы |


·20.10 Лидер CentOS объявил об уходе из управляющего совета (87 +12)
  Каранбир Сингх (Karanbir Singh) объявил об уходе с поста председателя управляющего совета проекта CentOS и снятия с себя полномочий лидера проекта. Каранбир вовлечён в работу над дистрибутивом с 2004 года (проект был основан в 2002 году), занимал пост лидера после ухода Грегори Курцера (Gregory Kurtzer), основателя дистрибутива, и возглавил управляющий совет после перехода CentOS в 2014 году в руки компании Red Hat.

Мотивы ухода не поясняются, но упоминается смена направления развития дистрибутива (подразумевается уход от формирования классических выпусков CentOS 8.x в пользу непрерывно обновляемой тестовой редакции CentOS Stream).

  1. Главная ссылка к новости
  2. OpenNews: Проект CentOS создал группу для развития решений для автомобильных систем
  3. OpenNews: Началось формирование сборок CentOS Stream 9
  4. OpenNews: Red Hat прекращает разработку CentOS 8 в пользу тестового CentOS Stream
  5. OpenNews: Red Hat объясняет трансформацию CentOS желанием сделать более открытой разработку RHEL
  6. OpenNews: Основатель CentOS начал развитие новой свободной сборки RHEL - Rocky Linux
Обсуждение (87 +12) | Тип: К сведению |


·19.10 Выпуск серверной JavaScript-платформы Node.js 17.0 (41 +3)
  Состоялся релиз Node.js 17.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 17.0 относится к ветке с обычным сроком поддержки, обновления для которой будут выпускаться до июня 2022 года. В ближайшие дни будет завершена стабилизация ветки Node.js 16, которая получит статус LTS и будет поддерживаться до апреля 2024 года. Сопровождение прошлой LTS-ветки Node.js 14.0 продлится до апреля 2023 года, а позапрошлой LTS-ветки 12.0 до апреля 2022 года.

Основные улучшения:

  • Движок V8 обновлён до версии 9.5.
  • Продолжена реализация вариантов базового API, основанных на использовании интерфейса асинхронных вычислений Promise. В дополнение к ранее предложенным API Timers Promises и Streams Promises в Node.js 17.0 представлен API Readline Promise для построчного чтения данных с использованием модуля readline.
    
       import * as readline from 'node:readline/promises';
       import { stdin as input, stdout as output } from 'process';
    
       const rl = readline.createInterface({ input, output });
    
       const answer = await rl.question('What do you think of Node.js?');
    
       console.log('Thank you for your valuable feedback: ${answer}');
    
       rl.close();
    
  • Поставляемая в комплекте библиотека OpenSSL обновлена до версии 3.0 (использован форк quictls/openssl с включённой поддержкой протокола QUIC).
  • Обеспечен вывод версии Node.js в трассировках стека, выводимых в случае фатальных ошибок, приводящих к завершению работы приложения.

Дополнительно можно упомянуть об устранении в актуальных ветках Node.js двух уязвимостей (CVE-2021-22959, CVE-2021-22960), дающих возможность совершить атаки класса "HTTP Request Smuggling" (HRS), позволяющие через отправку специально оформленных клиентских запросов вклиниваться в содержимое запросов других пользователей, обрабатываемых в том же потоке между фронтэндом и бэкендом (например, можно добиться подстановки вредоносного JavaScript-кода в сеанс другого пользователя). Детали будут раскрыты позднее, а пока известно только то, что проблемы вызваны некорректной обработкой пробелов между именем HTTP-заголовка и двоеточием, а также разной обработкой символов возврата каретки и перевода строки в блоке параметров, используемом при передаче тела запроса по частям в режиме "chunked".


Напомним, что платформа Node.js может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core).

По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных.

  1. OpenNews: Уязвимость в http2-модуле из состава Node.js
  2. OpenNews: Выпуск серверной JavaScript-платформы Node.js 16.0
  3. OpenNews: Доступен пакетный менеджер NPM 7.0
  4. OpenNews: Уязвимость в NPM, приводящая к перезаписи файлов в системе
  5. OpenNews: Автор Node.js представил защищённую JavaScript-платформу Deno 1.0
Обсуждение (41 +3) | Тип: Программы |


·19.10 Опубликован исходный код российской игры Самогонки (62 +37)
  Под лицензией GPLv3 опубликован исходный код игры "Самогонки", произведённой в 1999 году компанией К-Д ЛАБ. Игра "Самогонки" представляет собой аркадную гонку по маленьким сферическим планетам-трассам с возможностью пошагового режима прохождения. Сборка поддерживается только под Windows.

Исходный код выложен не в полном виде, поскольку он не полностью сохранился у разработчиков. Однако, силами сообщества большая часть недоработок уже исправлена. Ранее в открытый доступ были выложены исходный коды других игр К-Д ЛАБ: Вангеры и Периметр.

  1. Главная ссылка к новости
  2. OpenNews: Amazon опубликовал открытый игровой движок Open 3D Engine на базе технологий CryEngine
  3. OpenNews: Открыты исходные тексты игрового движка Storm
  4. OpenNews: Выпуск открытого игрового движка Godot 3.3
  5. OpenNews: Компания Frictional Games открыла код игр серии Amnesia
  6. OpenNews: Electronic Arts откроет код новой редакции игр Command & Conquer: Tiberian Dawn и Red Alert
Обсуждение (62 +37) | Автор: dilesoft | Тип: Программы |


·19.10 Техника определения PIN-кода по видеозаписи закрытого рукой ввода в банкомате (155 +18)
  Группа исследователей из Падуанского (Италия) и Делфтского (Нидерланды) университетов опубликовала метод использования машинного обучения для воссоздания введённого PIN-кода по видеозаписи прикрытой рукой области ввода в банкомате. При вводе PIN-кода из 4 цифр вероятность предсказания правильного кода оценена в 41%, учитывая возможность совершения трёх попыток до блокировки. Для PIN-кодов из 5 цифр вероятность предсказания составила 30%. Отдельно был проведён эксперимент, в ходе которого 78 добровольцев попытались предсказать PIN-код по аналогичным записанным видео. В этом случае вероятность успешного предсказания составила 7.92% при наличии трёх попыток.

При прикрытии цифровой панели банкомата ладонью, часть кисти руки, которой осуществляется ввод, остаётся незакрытой, чего достаточно для прогнозирования нажатий по изменению положения кисти и смещению не полностью прикрытых пальцев. При анализе ввода каждой цифры система исключает клавиши, которые не могут быть нажаты с учётом положения прикрывающей руки, а также рассчитывает наиболее вероятные варианты нажатий на основании положения нажимающей руки, относительно расположения клавиш. Для повышения вероятности определения ввода дополнительно может быть осуществлена запись звука нажатий, который немного отличается для каждой клавиши.

В эксперименте использовалась система машинного обучения, основанная на применении свёрточной нейронной сети (CNN) и рекуррентной нейронной сети на базе архитектуры LSTM (Long Short Term Memory). Сеть CNN отвечала за извлечение пространственных данных для каждого кадра, а сеть LSTM использовала эти данные для извлечения меняющихся во времени шаблонов. Модель была обучена на видеозаписях ввода PIN-кода 58 разными людьми с использованием выбранных участниками методов прикрытия ввода (каждый участник вводил 100 разных кодов, т.е. для обучения использовалось 5800 примеров ввода). В ходе проведения обучения было выявлено, что большинство пользователей применяют один из трёх основных способов прикрытия ввода.

Для тренировки модели машинного обучения был задействован сервер на базе процессора Xeon E5-2670 с 128 GB ОЗУ и тремя картами Tesla K20m с 5GB памяти в каждой. Программная часть написана на языке Python с использованием библиотеки Keras и платформы Tensorflow. Так как панели ввода в банкоматах отличаются, а результат прогнозирования зависит от таких характеристик, как размер и топология размещения клавиш, для каждого типа панелей требуется отдельная тренировка.

В качестве мер для защиты от предложенного метода атаки рекомендовано по возможности использовать PIN-коды из 5 цифр вместо 4, а также стараться прикрывать рукой как можно большее пространство ввода (метод остаётся эффективен если рукой прикрывается около 75% области ввода). Производителям банкоматов рекомендовано использовать специальные защитные экраны, скрывающие ввод, а также не механические, а сенсорные панели ввода, положение цифр на которых меняется случайным образом.

  1. Главная ссылка к новости
  2. OpenNews: Реализация DDIO в чипах Intel допускает сетевую атаку по определению нажатий клавиш в сеансе SSH
  3. OpenNews: Представлена техника создания кейлоггеров, работающих на основе анализа колебания телефона
  4. OpenNews: Отслеживание перемещения в соседней комнате при помощи динамика и микрофона обычного ПК
  5. OpenNews: Представлена техника воссоздания речи по вибрации предметов на видеозаписи
  6. OpenNews: Представлена техника определения PIN-кода через анализ данных с датчиков смартфона
Обсуждение (155 +18) | Тип: Проблемы безопасности |


Следующая страница (раньше) >>



Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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