<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/elcon/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя elcon]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Fri, 21 Aug 2026 19:00:47 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Read‑only by construction: почему инструкции — не граница безопасности для AI‑агента в Kubernetes‑кластере]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1071528/</guid>
      <link>https://habr.com/ru/articles/1071528/?utm_campaign=1071528&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c7f/f69/d5c/c7ff69d5ccf4c09a653449a7bb5a57bf.jpg" /><p>Всё чаще встречаю такую схему: берём LLM, даём ей доступ к&nbsp;kubectl или&nbsp;k8s API, в&nbsp;system prompt или&nbsp;подключённом skill‑е пишем что‑то вроде «ты можешь только читать, ничего не&nbsp;удаляй и не&nbsp;изменяй», и считаем вопрос закрытым. Прошёл через это сам и в&nbsp;какой‑то момент понял, что&nbsp;это не&nbsp;граница безопасности, а&nbsp;вежливая просьба.</p><p>Это не&nbsp;гипотетический риск: вы наверняка помните, как&nbsp;в&nbsp;июле 2025&nbsp;агент Replit удалил базу данных SaaStr, несмотря на&nbsp;прямой запрет что‑либо менять&nbsp;— не&nbsp;Kubernetes и не&nbsp;MCP, но&nbsp;паттерн тот&nbsp;же самый. Инструкция «ничего не&nbsp;трогай»&nbsp;была прямо в&nbsp;контексте, исполнять её&nbsp;было просто некому, кроме самой модели. Дать агенту доступ на&nbsp;запись к&nbsp;k8s‑кластеру&nbsp;— значит собрать ровно ту&nbsp;же конструкцию, которая уже стоила SaaStr их базы.</p><p>Я далеко не&nbsp;первый, кто освещает эту тему, и за&nbsp;последнее время появилось множество read‑only MCP‑серверов. Но&nbsp;удивляет, насколько часто в&nbsp;них «read‑only» понимают неправильно. Например, у&nbsp;MCP‑серверов для&nbsp;Kubernetes “read‑only” нередко реализован как&nbsp;переменная окружения, которая фильтрует ответ <code>tools/list</code>, а&nbsp;не&nbsp;отсутствие функции в&nbsp;реестре. Именно так&nbsp;был устроен mcp‑server‑kubernetes (20&nbsp;тысяч скачиваний в&nbsp;неделю на&nbsp;npm): флаг <code>ALLOW_ONLY_READONLY_TOOLS</code> прятал mutating‑инструменты из&nbsp;списка, а <code>tools/call</code> всё равно принимал <code>kubectl_delete</code> напрямую, в&nbsp;обход фильтра. </p><p>Получилась CVE-2026-46519, CVSS 8.8&nbsp;— тот&nbsp;же принцип, о&nbsp;котором эта статья, доведённый до&nbsp;реального эксплойта: спрятанная из&nbsp;списка функция&nbsp;— не&nbsp;то&nbsp;же самое, что&nbsp;несуществующая. Причём это не&nbsp;только у&nbsp;сообщества&nbsp;— Azure/mcp‑kubernetes, официальный MCP‑сервер Microsoft для&nbsp;Kubernetes, устроен точно так&nbsp;же: <code>--access-level readonly|readwrite</code> вместо отсутствия mutating‑инструментов в&nbsp;принципе.</p> <a href="https://habr.com/ru/articles/1071528/?utm_campaign=1071528&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 18 Aug 2026 08:07:31 GMT</pubDate>
      <dc:creator><![CDATA[elcon]]></dc:creator>
      <category><![CDATA[Kubernetes]]></category><category><![CDATA[Go]]></category>
      <category><![CDATA[kubernetes]]></category><category><![CDATA[kubectl]]></category><category><![CDATA[mcp]]></category><category><![CDATA[llm]]></category><category><![CDATA[ai]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
