Hacker News Digest

Тег: #sandbox

Постов: 3

Luau – Fast, small, safe, gradually typed scripting language derived from Lua (luau.org)

Lua_u_

Lua_u_ (строчная u, /ˈlu.aʊ/) — это быстрый, компактный, безопасный, постепенно типизированный встраиваемый язык сценариев, основанный на Lua.

Мотивация

Примерно в 2006 году Roblox начал использовать Lua 5.1 в качестве языка сценариев для игр. Со временем мы значительно развили реализацию и язык: для поддержки растущей сложности игр на платформе Roblox, увеличения размеров команд и написания большого объёма кода (более 1 млн строк к 2020 году) нам пришлось инвестировать в производительность, удобство использования, инструменты языка и ввести постепенную систему типов. Подробнее…

Песочница

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

Совместимость

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

Синтаксис

Luau синтаксически обратно совместим с Lua 5.1 (код, действительный для Lua 5.1, также действителен для Luau); однако мы расширили язык набором синтаксических функций, делающих его более привычным и эргономичным. Синтаксис описан здесь.

Анализ

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

Производительность

В дополнение к полностью кастомному фронтенду, реализующему парсинг, линтинг и проверку типов, среда выполнения Luau включает новый байткод, интерпретатор и компилятор, сильно оптимизированные для производительности. Интерпретатор Luau может конкурировать с интерпретатором LuaJIT в зависимости от программы. Также доступен опциональный компонент для ручной JIT-компиляции на платформах x64 и arm64, который может значительно ускорить определённые программы. Мы продолжаем оптимизировать среду выполнения и переписывать её части для ещё большей эффективности. Хотя наша общая цель — минимизировать время, которое программисты тратят на настройку производительности, некоторые детали о характеристиках производительности предоставлены для любознательных.

Библиотеки

Как язык Luau является полным надмножеством Lua 5.1. Что касается стандартной библиотеки, некоторые функции пришлось удалить из встроенных библиотек, а некоторые — добавить; обратитесь к полной документации для подробностей. Когда Luau встраивается в приложение, сценарии обычно получают доступ к дополнительным функциям библиотек, специфичным для приложения.

© 2025 Roblox.

by andsoitis • 18 сентября 2025 г. в 13:38 • 166 points

ОригиналHN

#luau#lua#roblox#typescript#sandbox#jit#performance#linting#type-checking

Комментарии (74)

  • Переход на Luau обусловлен системой типов, но язык имеет шероховатости и слабую документацию, а сообщество практически отсутствует.
  • Luau значительно сложнее и объёмнее стандартного Lua, что связано с реализацией системы типов и дополнительных возможностей.
  • Существуют альтернативные реализации и среды выполнения Luau, такие как Lune, предназначенные для использования вне Roblox.
  • Сообщество отмечает проблемы обратной совместимости между различными форками Lua (LuaJIT, Luau, PUC Lua), что создаёт фрагментацию.
  • Luau сравнивают с Teal, но они fundamentally разные: Teal — это транспилятор, а Luau — полноценный форк Lua с собственной средой выполнения.
  • Разработчики Roblox работают над улучшением поддержки Luau вне своей платформы, включая создание standalone-рантаймов.
  • Несмотря на критику, инженерные решения в Luau, особенно в области производительности, оцениваются как впечатляющие.

Comet AI browser can get prompt injected from any site, drain your bank account (twitter.com) 🔥 Горячее 💬 Длинная дискуссия

JavaScript отключён.
Включите его или перейдите в поддерживаемый браузер. Список браузеров — в Справке.

Что-то пошло не так.
Попробуйте ещё раз.

⚠️ Расширения, блокирующие трекинг, могут мешать работе сайта. Отключите их и обновите страницу.

by helloplanets • 24 августа 2025 г. в 15:14 • 531 points

ОригиналHN

#javascript#browser#llm#prompt-injection#security#banking#email#sandbox#microsoft#git

Комментарии (184)

  • Участники считают, что давать LLM-агенту полный доступ к браузеру — это «смертельный трифекта»: чтение всех вкладок, кук и паролей.
  • Основной риск — prompt-injection: любой сайт может внедрить команду, и агент выполнит её, потому что «каждое чтение — это запись в контекст».
  • Люди сравнивают это с тем, что Microsoft делала скриншоты, но теперь молчат, когда AI получает plaintext-доступ к банковским данным.
  • Единственный «безопасный» сценарий — код в git, где изменения легко откатить; всё остальное (покупки, банкинг, e-mail) считается безумным.
  • Итог: без изоляции, sandbox и чёткого разграничения «что можно» агенты становятся идеальным вектором атак, а компании, их выпускающие, — объектом для судебных исков.

How we exploited CodeRabbit: From simple PR to RCE and write access on 1M repos (research.kudelskisecurity.com) 🔥 Горячее 💬 Длинная дискуссия

CodeRabbit: от PR до RCE и доступа к 1 млн репозиториев

CodeRabbit — самое популярное AI-приложение на GitHub Marketplace (1 млн репозиториев, 5 млн PR). При установке он анализирует каждый PR и оставляет AI-комментарии.

Найденные уязвимости

  1. RCE через Markdown-рендеринг

    • Внутри контейнеров запускается markdown-it с плагином markdown-it-katex.
    • Плагин использует child_process.exec без фильтрации LaTeX-ввода.
    • Внедрённый в PR $\input{/etc/passwd}$ запускает произвольные команды.
  2. Утечка токенов

    • Внутри контейнеров доступны переменные окружения: GITHUB_TOKEN, CODERABBIT_API_KEY, DATABASE_URL.
    • Чтение /proc/self/environ и ~/.netrc позволило получить токены GitHub, JWT-секреты и строку подключения к PostgreSQL.
  3. Доступ к 1 млн репозиториев

    • Установленный GitHub-App имеет scope contents:write во всех подключённых репозиториях.
    • С помощью украденного токена можно клонировать/писать в приватные репы, создавать PR, коммиты и релизы.

Цепочка атаки

  1. Создаём PR с вредным LaTeX.
  2. Получаем RCE в контейнере CodeRabbit.
  3. Считываем секреты.
  4. Используем токен GitHub для полного доступа к репозиториям.

Меры защиты

  • Переход на изолированные sandbox-среды.
  • Отключение опасных LaTeX-функций.
  • Минимизация scope GitHub-токенов.

by spiridow • 19 августа 2025 г. в 15:55 • 649 points

ОригиналHN

#github#github-marketplace#markdown-it#postgresql#rce#latex#security-vulnerability#sandbox#child-process#environ

Комментарии (217)

  • Исследователи нашли RCE в CodeRabbit: Rubocop запускался в проде без песочницы, позволяя выполнять любой код и получить ключи GitHub-приложения.
  • Уязвимость дала доступ на запись к ~1 млн репозиториев; компания утверждает, что «данных клиентов не скомпрометировано», но аудита нет.
  • Пользователи критикуют отсутствие прозрачности, грубые ошибки в управлении секретами (ключ в ENV) и чрезмерные права GitHub-приложений.
  • Главный вывод: анализаторы кода должны запускаться в изолированных средах без доступа к чувствительным переменным, иначе подобные инциденты неизбежны.