Who needs Graphviz when you can build it yourself? 🔥 Горячее
Команда SpiderMonkey разработала новый инструмент для визуализации компиляции JavaScript и WebAssembly, создав собственный алгоритм расположения графов вместо использования Graphviz или Mermaid. Когда оптимизирующий компилятор Ion активен, система генерирует интерактивные графики, показывающие обработку и оптимизацию функций. Пользователи могут писать JavaScript-код и видеть в реальном времени, как изменяется граф, с возможностью навигации, масштабирования и просмотра различных этапов оптимизации.
Автор статьи не был удовлетворен выводом существующих инструментов, которые не отражали структуру исходного кода и создавали нестабильные макеты. Новый алгоритм, реализованный менее чем в 1000 строк кода, прост, быстр и produces высококачественный результат. Он учитывает специфические ограничения графов управления потоком, такие как наличие хорошо определенных циклов и необратимость потока управления, что позволяет создавать более интуитивные визуализации.
Для разработки автор изучал алгоритм Сугиямы, используемый в Graphviz, но создал собственное решение, специально адаптированное под нужды компилятора. Интерактивный инструмент значительно упрощает анализ и отладку сложных графов компиляции, позволяя отслеживать инструкции и блоки кода на разных этапах оптимизации.
Комментарии (95)
- Обсуждение показало, что специализированные решения для визуализации превосходят универсальные инструменты вроде Graphviz, но сообщество продолжает использовать последние из-за инерции и отсутствия альтернатив.
- Участники жалуются на то, что Graphviz и подобные инструменты не справляются с задачами даже средней сложности, и что их использование часто требует ручной доводки.
- Проект Microdiagram нацелен на создание DSL для каждого типа диаграмм вместо одного языка для всех типов диаграмм.
- Обсуждение также затронуло вопросы производительности и надежности инструментов, а также то, что сгенерированные ими диаграммы не всегда читаемы без дополнительной ручной работы.
- Участники поделились ссылкой на исходники на GitHub, где можно найти код, который может быть использован как стартовая точка для собственных экспериментов в этой области.
Microsoft 365 Copilot – Arbitrary Data Exfiltration via Mermaid Diagrams
Исследователь обнаружил уязвимость в Microsoft 365 Copilot, позволяющую произвольную утечку данных через диаграммы Mermaid. Атака работает через косвенную инъекцию команд в специально созданный документ Office. Когда Copilot просит резюмировать документ, он выполняет вредоносные инструкции, извлекает чувствительные данные (например, недавние письма), кодирует их в шестнадцатеричном формате и создает фейковую кнопку входа в виде диаграммы Mermaid. Эта кнопка содержит ссылку на сервер атакующего с зашифрованными данными, которые передаются при клике.
Для реализации атаки исследователь создал запрос, использующий инструмент search_enterprise_emails для получения писем, их шестнадцатеричного кодирования и разделения на строки по 30 символов (из-за ограничения Mermaid в 200 символов на строку). Затем генерировалась диаграмма с фейковой кнопкой, содержащей ссылку на сервер атакующего с закодированными данными. Важно отметить, что Mermaid поддерживает CSS, что открывает возможности для атак на утечку данных.
Комментарии (33)
- MSRC исключил Copilot из программы вознаграждения за уязвимости, что фактически поощряет не раскрывать уязвимости и ставит под сомнение безопасность продукта.
- Сообщество отмечает, что это не первый случай утечки данных через Mermaid/Cursor и что проблема кроется в самой архитектуре LLM.
- Участники обсуждают, что отсутствие денежного стимула для исследователей уязвимостей в Copilot может привести к тому, что уязвимости останутся неисправленными.
- Некоторые комментаторы поднимают вопрос о том, что сама модель LLM по своей природе уязвима к prompt-injection, и что это не может быть полностью устранено без фундаментального прорыва в AI.
D2: Diagram Scripting Language 🔥 Горячее
D2 — декларативный язык для создания диаграмм из текста. Пользователь описывает желаемую диаграмму простым текстом, а D2 автоматически генерирует визуальное представление. Например, создается файл input.d2 с текстовым описанием сети, после выполнения команды CLI получается готовая диаграмма с элементами вроде CELL TOWER, SATELLITE, TRANSMITTER и связями между ними.
Для работы доступны CLI с режимом отслеживания изменений и интерактивный Playground для экспериментов. Исходный код D2 и документации размещены на GitHub. Тур по основам занимает 5-10 минут, а краткое руководство "Hello World" — около 2 минут. Для каждого примера в документации есть возможность открыть код в Playground для тестирования.
Комментарии (63)
- Обсуждение в основном вращается вокруг инструмента D2 и его места в экосистеме диаграмм-как-кода, включая сравнение с Mermaid, PlantUML и прочими.
- Участники обсуждают визуализацию изменений в графах, анимацию переходов между снапшотами и влияние на восприятие изменений.
- Упоминается, что D2 — это компилятор, а не просто синтаксический сахар, и что он может быть использован как библиотека или как CLI-утилита.
- Поднимается вопрос о цене и лицензии: TALA стоит $3000 в год, что вызывает споры о целесообразности такого подхода.
- Участники также обсуждают, как D2 сравнивается с другими инструментами в терминах синтаксиса, возможностей и удобства использования.
Less is safer: How Obsidian reduces the risk of supply chain attacks 🔥 Горячее 💬 Длинная дискуссия
Obsidian минимизирует риски цепочек поставок, сознательно сокращая зависимости от стороннего кода. Приложение переиспользует или форкает небольшие модули, а для крупных библиотек вроде pdf.js или Mermaid использует версионно зафиксированные файлы с редкими обновлениями после тщательного тестирования. Это создаёт мелкую и контролируемую структуру зависимостей.
Все зависимости жёстко закреплены через lock-файлы, исключены пост-установочные скрипты, а обновления проводятся медленно и вручную — с изучением изменений, проверкой подзависимостей и тестами. Такой подход снижает вероятность попадания вредоносных обновлений и даёт время на обнаружение проблем до релиза.
Комментарии (224)
- Пользователи выражают обеспокоенность уязвимой моделью безопасности плагинов Obsidian, которые имеют полный доступ к файлам.
- Обсуждается компромисс между использованием зависимостей и безопасностью: одни выступают за минимализм, другие — за осторожное обновление.
- Многие отмечают, что пост Obsidian игнорирует риски, связанные с плагинами, которые являются ключевой особенностью продукта.
- Высказывается критика в адрес Electron-архитектуры приложения из-за её ресурсоёмкости и потенциальных уязвимостей.
- Предлагаются альтернативы с меньшим количеством зависимостей и более нативными решениями, такие как Zim или Emacs.
D2 (text to diagram tool) now supports ASCII renders 🔥 Горячее
ASCII-вывод в D2 0.7.1
Файлы с расширением .txt теперь рендерятся в ASCII. Пример: при сохранении .d2-файла Vim-плагин мгновенно показывает ASCII-превью.
Для документации кода
ASCII-диаграммы удобно вставлять в комментарии: выделите блок d2, плагин заменит его ASCII-версией.
Unicode или чистый ASCII
По умолчанию используются символы Unicode, но флаг --ascii-mode=standard вернёт строгий ASCII.
Ограничения (альфа-версия)
- Без стилей:
animated,font, темы не поддерживаются; цвета в терминале — возможно позже. - Неравномерные отступы из-за дискретной сетки.
Сообщайте о багах: github.com/terrastruct/d2/issues.
Попробуйте сейчас
Откройте пример в D2 Playground.
Комментарии (70)
- Представлена новая альфа-функция D2: рендеринг диаграмм в ASCII.
- Пользователи сравнивают D2 с Mermaid, отмечают лучший внешний вид и CLI без Chromium, но упрекают в отсутствии GitHub-рендеринга и сложных grid-раскладок.
- Появились вопросы о браузерной офлайн-работе, vim-/emacs-плагинах, Python-обёртке и возможности ручной подгонки элементов.
- Автор подтвердил, что WASM-версия (d2.js) уже работает в браузере, но пока неанонсирована; официальный релиз и поддержка PR-диаграмм ожидаются позже.