home.social

#symlink — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #symlink, aggregated by home.social.

  1. GhostApproval: как AI-ассистенты пробивают модель доверия через симлинки

    Техника GhostApproval позволяет вредоносному репозиторию вынудить AI-ассистента незаметно для разработчика записать данные в чувствительные файлы вне проекта, вплоть до ~/.ssh/authorized_keys.

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

    Атака строится на старом трюке с симлинками по CWE‑61 с вишенкой на торте в виде CWE-451. Файл вроде project_settings.json или другой конфигурации, упомянутой в README, оказывается симлинком на чувствительный путь, например ~/.ssh/authorized_keys или shell-startup файл. При выполнении инструкций вроде «настрой рабочее окружение» агент следует по симлинку и записывает, например, SSH-ключ атакующего, тогда как разработчик видит подтверждение на изменение обычного файла проекта.

    #GhostApproval #AI #symlink #red_team

  2. GhostApproval: как AI-ассистенты пробивают модель доверия через симлинки

    Техника GhostApproval позволяет вредоносному репозиторию вынудить AI-ассистента незаметно для разработчика записать данные в чувствительные файлы вне проекта, вплоть до ~/.ssh/authorized_keys.

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

    Атака строится на старом трюке с симлинками по CWE‑61 с вишенкой на торте в виде CWE-451. Файл вроде project_settings.json или другой конфигурации, упомянутой в README, оказывается симлинком на чувствительный путь, например ~/.ssh/authorized_keys или shell-startup файл. При выполнении инструкций вроде «настрой рабочее окружение» агент следует по симлинку и записывает, например, SSH-ключ атакующего, тогда как разработчик видит подтверждение на изменение обычного файла проекта.

    #GhostApproval #AI #symlink #red_team

  3. GhostApproval: как AI-ассистенты пробивают модель доверия через симлинки

    Техника GhostApproval позволяет вредоносному репозиторию вынудить AI-ассистента незаметно для разработчика записать данные в чувствительные файлы вне проекта, вплоть до ~/.ssh/authorized_keys.

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

    Атака строится на старом трюке с симлинками по CWE‑61 с вишенкой на торте в виде CWE-451. Файл вроде project_settings.json или другой конфигурации, упомянутой в README, оказывается симлинком на чувствительный путь, например ~/.ssh/authorized_keys или shell-startup файл. При выполнении инструкций вроде «настрой рабочее окружение» агент следует по симлинку и записывает, например, SSH-ключ атакующего, тогда как разработчик видит подтверждение на изменение обычного файла проекта.

    #GhostApproval #AI #symlink #red_team

  4. GhostApproval: как AI-ассистенты пробивают модель доверия через симлинки

    Техника GhostApproval позволяет вредоносному репозиторию вынудить AI-ассистента незаметно для разработчика записать данные в чувствительные файлы вне проекта, вплоть до ~/.ssh/authorized_keys.

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

    Атака строится на старом трюке с симлинками по CWE‑61 с вишенкой на торте в виде CWE-451. Файл вроде project_settings.json или другой конфигурации, упомянутой в README, оказывается симлинком на чувствительный путь, например ~/.ssh/authorized_keys или shell-startup файл. При выполнении инструкций вроде «настрой рабочее окружение» агент следует по симлинку и записывает, например, SSH-ключ атакующего, тогда как разработчик видит подтверждение на изменение обычного файла проекта.

    #GhostApproval #AI #symlink #red_team

  5. GhostApproval: как AI-ассистенты пробивают модель доверия через симлинки

    Техника GhostApproval позволяет вредоносному репозиторию вынудить AI-ассистента незаметно для разработчика записать данные в чувствительные файлы вне проекта, вплоть до ~/.ssh/authorized_keys.

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

    Атака строится на старом трюке с симлинками по CWE‑61 с вишенкой на торте в виде CWE-451. Файл вроде project_settings.json или другой конфигурации, упомянутой в README, оказывается симлинком на чувствительный путь, например ~/.ssh/authorized_keys или shell-startup файл. При выполнении инструкций вроде «настрой рабочее окружение» агент следует по симлинку и записывает, например, SSH-ключ атакующего, тогда как разработчик видит подтверждение на изменение обычного файла проекта.

    #GhostApproval #AI #symlink #red_team

  6. В 2 раза ускорил компиляцию Unity на том же железе

    Творите в Unity на Windows и страдаете от долгих компиляций? Инструкция как без вложений и разгона сократить время билда в 2 раза.

    habr.com/ru/articles/1049556/

    #unity #ryzen #xfs #webgl #ntfs #tmpfs #symlink #linux #il2cpp #билд

  7. В 2 раза ускорил компиляцию Unity на том же железе

    Творите в Unity на Windows и страдаете от долгих компиляций? Инструкция как без вложений и разгона сократить время билда в 2 раза.

    habr.com/ru/articles/1049556/

    #unity #ryzen #xfs #webgl #ntfs #tmpfs #symlink #linux #il2cpp #билд

  8. В 2 раза ускорил компиляцию Unity на том же железе

    Творите в Unity на Windows и страдаете от долгих компиляций? Инструкция как без вложений и разгона сократить время билда в 2 раза.

    habr.com/ru/articles/1049556/

    #unity #ryzen #xfs #webgl #ntfs #tmpfs #symlink #linux #il2cpp #билд

  9. @carlton @sethmlarson And does the consensus against symbolic links arise from inexperience? Windows didn't let unprivileged users create symlinks in NTFS until Windows 10 build 14972 in 2018, and even then only if developer mode is on. Instead, Windows desktop users' experience since 1995 has been with shortcuts, which operate at the shell level, not the file system level.

    #SymbolicLinks #symlink #NTFS

  10. @carlton @sethmlarson And does the consensus against symbolic links arise from inexperience? Windows didn't let unprivileged users create symlinks in NTFS until Windows 10 build 14972 in 2018, and even then only if developer mode is on. Instead, Windows desktop users' experience since 1995 has been with shortcuts, which operate at the shell level, not the file system level.

    #SymbolicLinks #symlink #NTFS

  11. @carlton @sethmlarson And does the consensus against symbolic links arise from inexperience? Windows didn't let unprivileged users create symlinks in NTFS until Windows 10 build 14972 in 2018, and even then only if developer mode is on. Instead, Windows desktop users' experience since 1995 has been with shortcuts, which operate at the shell level, not the file system level.

    #SymbolicLinks #symlink #NTFS

  12. @carlton @sethmlarson And does the consensus against symbolic links arise from inexperience? Windows didn't let unprivileged users create symlinks in NTFS until Windows 10 build 14972 in 2018, and even then only if developer mode is on. Instead, Windows desktop users' experience since 1995 has been with shortcuts, which operate at the shell level, not the file system level.

    #SymbolicLinks #symlink #NTFS

  13. @carlton @sethmlarson And does the consensus against symbolic links arise from inexperience? Windows didn't let unprivileged users create symlinks in NTFS until Windows 10 build 14972 in 2018, and even then only if developer mode is on. Instead, Windows desktop users' experience since 1995 has been with shortcuts, which operate at the shell level, not the file system level.

    #SymbolicLinks #symlink #NTFS

  14. #timeshift #symlink

    My linuxmint system system drive was filling up. I had a large "other" drive that had little on it. I worked with claude.ai to move timeshift and symlink it to the larger drive. the claude session is recorded here:

    claude.ai/share/18c4995a-02db-

  15. Now this is an interesting #Python problem. I don't know if it's a #bug, but it's a change in behaviour that I don't see documented.

    I upgraded from #Debian 12/Bookworm to 13/Trixie, so the default Python3 changed from 3.11 to 3.13. A script of mine broke, because `pathlib.Path.is_mount()` changed behaviour when the path is a symlink (at least to a directory).

    i.e. I'm testing a path that is a symlink. The symlink points to a directory. That directory *is* a mountpoint. The `.is_mount()` test in 3.11 returned True, while in 3.13 it returns False.

    This seems wrong to me. Most path-manipulation functions transparently treat symlinks as if they were the pointed-to object unless you pass an option/flag specifically to say you want the symlink itself.

    Gonna have to dig to see what else I can find.

    #pathlib #path #is_mount #stdlib #behaviour #symlink #filesystem #mountpoint #mount

  16. Now this is an interesting #Python problem. I don't know if it's a #bug, but it's a change in behaviour that I don't see documented.

    I upgraded from #Debian 12/Bookworm to 13/Trixie, so the default Python3 changed from 3.11 to 3.13. A script of mine broke, because `pathlib.Path.is_mount()` changed behaviour when the path is a symlink (at least to a directory).

    i.e. I'm testing a path that is a symlink. The symlink points to a directory. That directory *is* a mountpoint. The `.is_mount()` test in 3.11 returned True, while in 3.13 it returns False.

    This seems wrong to me. Most path-manipulation functions transparently treat symlinks as if they were the pointed-to object unless you pass an option/flag specifically to say you want the symlink itself.

    Gonna have to dig to see what else I can find.

    #pathlib #path #is_mount #stdlib #behaviour #symlink #filesystem #mountpoint #mount

  17. Now this is an interesting #Python problem. I don't know if it's a #bug, but it's a change in behaviour that I don't see documented.

    I upgraded from #Debian 12/Bookworm to 13/Trixie, so the default Python3 changed from 3.11 to 3.13. A script of mine broke, because `pathlib.Path.is_mount()` changed behaviour when the path is a symlink (at least to a directory).

    i.e. I'm testing a path that is a symlink. The symlink points to a directory. That directory *is* a mountpoint. The `.is_mount()` test in 3.11 returned True, while in 3.13 it returns False.

    This seems wrong to me. Most path-manipulation functions transparently treat symlinks as if they were the pointed-to object unless you pass an option/flag specifically to say you want the symlink itself.

    Gonna have to dig to see what else I can find.

    #pathlib #path #is_mount #stdlib #behaviour #symlink #filesystem #mountpoint #mount

  18. Now this is an interesting #Python problem. I don't know if it's a #bug, but it's a change in behaviour that I don't see documented.

    I upgraded from #Debian 12/Bookworm to 13/Trixie, so the default Python3 changed from 3.11 to 3.13. A script of mine broke, because `pathlib.Path.is_mount()` changed behaviour when the path is a symlink (at least to a directory).

    i.e. I'm testing a path that is a symlink. The symlink points to a directory. That directory *is* a mountpoint. The `.is_mount()` test in 3.11 returned True, while in 3.13 it returns False.

    This seems wrong to me. Most path-manipulation functions transparently treat symlinks as if they were the pointed-to object unless you pass an option/flag specifically to say you want the symlink itself.

    Gonna have to dig to see what else I can find.

    #pathlib #path #is_mount #stdlib #behaviour #symlink #filesystem #mountpoint #mount

  19. Now this is an interesting #Python problem. I don't know if it's a #bug, but it's a change in behaviour that I don't see documented.

    I upgraded from #Debian 12/Bookworm to 13/Trixie, so the default Python3 changed from 3.11 to 3.13. A script of mine broke, because `pathlib.Path.is_mount()` changed behaviour when the path is a symlink (at least to a directory).

    i.e. I'm testing a path that is a symlink. The symlink points to a directory. That directory *is* a mountpoint. The `.is_mount()` test in 3.11 returned True, while in 3.13 it returns False.

    This seems wrong to me. Most path-manipulation functions transparently treat symlinks as if they were the pointed-to object unless you pass an option/flag specifically to say you want the symlink itself.

    Gonna have to dig to see what else I can find.

    #pathlib #path #is_mount #stdlib #behaviour #symlink #filesystem #mountpoint #mount

  20. #blue_team #WindowsDefender #symlink

    - Право `Create symbolic links (SeCreateSymbolicLinkPrivilege)` должно быть только у администраторов. На рабочих станциях выключите `Developer Mode`, чтобы юзеры без прав администратора не могли создавать symlink-и.

    - Включите `Tamper Protection` в `Microsoft Defender` и `WDAC/AppLocker`, разрешайте запуск только из подписанных, ожидаемых путей, а не из «любой» папки.

    - Проверьте `ACL` каталога платформы `Defender` — право записи должны иметь только `SYSTEM/TrustedInstaller`.

    Самый надежный способ обезвредить этот приём — лишить злоумышленника права создавать ссылки, а также детектировать любые попытки трогать каталоги платформы Defender.

  21. #blue_team #WindowsDefender #symlink

    - Право `Create symbolic links (SeCreateSymbolicLinkPrivilege)` должно быть только у администраторов. На рабочих станциях выключите `Developer Mode`, чтобы юзеры без прав администратора не могли создавать symlink-и.

    - Включите `Tamper Protection` в `Microsoft Defender` и `WDAC/AppLocker`, разрешайте запуск только из подписанных, ожидаемых путей, а не из «любой» папки.

    - Проверьте `ACL` каталога платформы `Defender` — право записи должны иметь только `SYSTEM/TrustedInstaller`.

    Самый надежный способ обезвредить этот приём — лишить злоумышленника права создавать ссылки, а также детектировать любые попытки трогать каталоги платформы Defender.

  22. #blue_team #WindowsDefender #symlink

    - Право `Create symbolic links (SeCreateSymbolicLinkPrivilege)` должно быть только у администраторов. На рабочих станциях выключите `Developer Mode`, чтобы юзеры без прав администратора не могли создавать symlink-и.

    - Включите `Tamper Protection` в `Microsoft Defender` и `WDAC/AppLocker`, разрешайте запуск только из подписанных, ожидаемых путей, а не из «любой» папки.

    - Проверьте `ACL` каталога платформы `Defender` — право записи должны иметь только `SYSTEM/TrustedInstaller`.

    Самый надежный способ обезвредить этот приём — лишить злоумышленника права создавать ссылки, а также детектировать любые попытки трогать каталоги платформы Defender.

  23. #blue_team #WindowsDefender #symlink

    - Право `Create symbolic links (SeCreateSymbolicLinkPrivilege)` должно быть только у администраторов. На рабочих станциях выключите `Developer Mode`, чтобы юзеры без прав администратора не могли создавать symlink-и.

    - Включите `Tamper Protection` в `Microsoft Defender` и `WDAC/AppLocker`, разрешайте запуск только из подписанных, ожидаемых путей, а не из «любой» папки.

    - Проверьте `ACL` каталога платформы `Defender` — право записи должны иметь только `SYSTEM/TrustedInstaller`.

    Самый надежный способ обезвредить этот приём — лишить злоумышленника права создавать ссылки, а также детектировать любые попытки трогать каталоги платформы Defender.

  24. #red_team #WindowsDefender #symlink

    - После выполнения команда создает объект в `C:\ProgramData\Microsoft\Windows Defender\Platform\` с именем `5.18.25070.5-0`. Но этот «каталог» на самом деле является указателем, при обращении к которому система перенаправляет все операции в `C:\TMP\AV`.

    - Defender при старте выбирает «самую свежую» подпапку своей платформы по строке версии. И когда он попытается скачать и распаковать обновления, записать служебные файлы или обратиться к своим конфигурациям, операции будут выполняться не в его оригинальном каталоге, а в подложном.

    За счет того, что Defender «верит» системному пути, подмена сохраняется до тех пор, пока ссылка не будет обнаружена.

    Подробности (zerosalarium.com/2025/09/Break).

  25. #red_team #WindowsDefender #symlink

    - После выполнения команда создает объект в `C:\ProgramData\Microsoft\Windows Defender\Platform\` с именем `5.18.25070.5-0`. Но этот «каталог» на самом деле является указателем, при обращении к которому система перенаправляет все операции в `C:\TMP\AV`.

    - Defender при старте выбирает «самую свежую» подпапку своей платформы по строке версии. И когда он попытается скачать и распаковать обновления, записать служебные файлы или обратиться к своим конфигурациям, операции будут выполняться не в его оригинальном каталоге, а в подложном.

    За счет того, что Defender «верит» системному пути, подмена сохраняется до тех пор, пока ссылка не будет обнаружена.

    Подробности (zerosalarium.com/2025/09/Break).

  26. #red_team #WindowsDefender #symlink

    - После выполнения команда создает объект в `C:\ProgramData\Microsoft\Windows Defender\Platform\` с именем `5.18.25070.5-0`. Но этот «каталог» на самом деле является указателем, при обращении к которому система перенаправляет все операции в `C:\TMP\AV`.

    - Defender при старте выбирает «самую свежую» подпапку своей платформы по строке версии. И когда он попытается скачать и распаковать обновления, записать служебные файлы или обратиться к своим конфигурациям, операции будут выполняться не в его оригинальном каталоге, а в подложном.

    За счет того, что Defender «верит» системному пути, подмена сохраняется до тех пор, пока ссылка не будет обнаружена.

    Подробности (zerosalarium.com/2025/09/Break).

  27. #red_team #WindowsDefender #symlink

    - После выполнения команда создает объект в `C:\ProgramData\Microsoft\Windows Defender\Platform\` с именем `5.18.25070.5-0`. Но этот «каталог» на самом деле является указателем, при обращении к которому система перенаправляет все операции в `C:\TMP\AV`.

    - Defender при старте выбирает «самую свежую» подпапку своей платформы по строке версии. И когда он попытается скачать и распаковать обновления, записать служебные файлы или обратиться к своим конфигурациям, операции будут выполняться не в его оригинальном каталоге, а в подложном.

    За счет того, что Defender «верит» системному пути, подмена сохраняется до тех пор, пока ссылка не будет обнаружена.

    Подробности (zerosalarium.com/2025/09/Break).

  28. #red_team #WindowsDefender #symlink

    - Создаем директорию, которую полностью контролируем, например: `C:\TMP\AV`. В нее в дальнейшем будет перенаправлен антивирус. Здесь можно размещать любые файлы — фейковые обновления, бинарники, заглушки, DLL-библиотеки и не только.

    - Создаем `symlink` с защищенного пути на контролируемую директорию. Для Defender она будет выглядеть как «правильное» расположение.

    То есть адрес легитимной рабочей папки оформляется по принципу: ProgramData\Microsoft\Windows Defender\Platform\[Version-Number]. Нужно создать контролируемую директорию с папкой, название которой соответствует последней версии Defender (это важно). Вот пример консольной команды — `mklink /D "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0" "C:\TMP\AV"`.

  29. #red_team #WindowsDefender #symlink

    - Создаем директорию, которую полностью контролируем, например: `C:\TMP\AV`. В нее в дальнейшем будет перенаправлен антивирус. Здесь можно размещать любые файлы — фейковые обновления, бинарники, заглушки, DLL-библиотеки и не только.

    - Создаем `symlink` с защищенного пути на контролируемую директорию. Для Defender она будет выглядеть как «правильное» расположение.

    То есть адрес легитимной рабочей папки оформляется по принципу: ProgramData\Microsoft\Windows Defender\Platform\[Version-Number]. Нужно создать контролируемую директорию с папкой, название которой соответствует последней версии Defender (это важно). Вот пример консольной команды — `mklink /D "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0" "C:\TMP\AV"`.

  30. #red_team #WindowsDefender #symlink

    - Создаем директорию, которую полностью контролируем, например: `C:\TMP\AV`. В нее в дальнейшем будет перенаправлен антивирус. Здесь можно размещать любые файлы — фейковые обновления, бинарники, заглушки, DLL-библиотеки и не только.

    - Создаем `symlink` с защищенного пути на контролируемую директорию. Для Defender она будет выглядеть как «правильное» расположение.

    То есть адрес легитимной рабочей папки оформляется по принципу: ProgramData\Microsoft\Windows Defender\Platform\[Version-Number]. Нужно создать контролируемую директорию с папкой, название которой соответствует последней версии Defender (это важно). Вот пример консольной команды — `mklink /D "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0" "C:\TMP\AV"`.

  31. #red_team #WindowsDefender #symlink

    - Создаем директорию, которую полностью контролируем, например: `C:\TMP\AV`. В нее в дальнейшем будет перенаправлен антивирус. Здесь можно размещать любые файлы — фейковые обновления, бинарники, заглушки, DLL-библиотеки и не только.

    - Создаем `symlink` с защищенного пути на контролируемую директорию. Для Defender она будет выглядеть как «правильное» расположение.

    То есть адрес легитимной рабочей папки оформляется по принципу: ProgramData\Microsoft\Windows Defender\Platform\[Version-Number]. Нужно создать контролируемую директорию с папкой, название которой соответствует последней версии Defender (это важно). Вот пример консольной команды — `mklink /D "C:\ProgramData\Microsoft\Windows Defender\Platform\5.18.25070.5-0" "C:\TMP\AV"`.

  32. Обманываем Windows Defender при помощи symlink

    #red_team #WindowsDefender #symlink

    Windows разрешает следование по символическим ссылкам, а сам Defender автоматически использует содержимое папки, независимо от того, реальная это папка или ссылка, если название соответствует последней версии программы.

    Для работы нам нужен профиль с правами, позволяющими создавать symlink.

  33. Обманываем Windows Defender при помощи symlink

    #red_team #WindowsDefender #symlink

    Windows разрешает следование по символическим ссылкам, а сам Defender автоматически использует содержимое папки, независимо от того, реальная это папка или ссылка, если название соответствует последней версии программы.

    Для работы нам нужен профиль с правами, позволяющими создавать symlink.

  34. Обманываем Windows Defender при помощи symlink

    #red_team #WindowsDefender #symlink

    Windows разрешает следование по символическим ссылкам, а сам Defender автоматически использует содержимое папки, независимо от того, реальная это папка или ссылка, если название соответствует последней версии программы.

    Для работы нам нужен профиль с правами, позволяющими создавать symlink.

  35. Обманываем Windows Defender при помощи symlink

    #red_team #WindowsDefender #symlink

    Windows разрешает следование по символическим ссылкам, а сам Defender автоматически использует содержимое папки, независимо от того, реальная это папка или ссылка, если название соответствует последней версии программы.

    Для работы нам нужен профиль с правами, позволяющими создавать symlink.

  36. The lack of #symlink timestamp handling in #RustLang std is a bit sad. 😢

  37. The lack of #symlink timestamp handling in #RustLang std is a bit sad. 😢

  38. The lack of #symlink timestamp handling in #RustLang std is a bit sad. 😢