# address-sanitizer

Скилл учит агента собирать код с -fsanitize=address, читать отчёты ASan и снимать лимиты памяти у фаззера. Нужен, когда падает C/C++ или Rust с unsafe-блоками.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 5400 установок · ★ 7805
- Автор: trailofbits
- Лицензия: CC-BY-SA-4.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/trailofbits/skills/tree/HEAD/plugins/testing-handbook-skills/skills/address-sanitizer/SKILL.md
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/skills/address-sanitizer

## Что делает

Скилл даёт агенту порядок действий с AddressSanitizer: собрать бинарник с `-fsanitize=address` и `-g`, выставить `ASAN_OPTIONS`, прочитать отчёт и понять, где код вышел за границу буфера или полез в освобождённую память. Внутри пошаговый разбор, короткая таблица опций (`verbosity`, `abort_on_error`, `detect_leaks`) и отдельные разделы под libFuzzer, AFL++ и cargo-fuzz.

Память ASan резервирует щедро: около 20TB виртуального адресного пространства. Поэтому фаззеру лимит придётся снять: `-rss_limit_mb=0` у libFuzzer, `-m none` у AFL++. Иначе процесс прибьют на старте, и вы решите, что виноват код. Для Rust тот же режим включается флагом `--sanitizer=address` в `cargo fuzz`.

Сборка с ASan идёт примерно в 2-4 раза медленнее обычной. На Windows поддержка экспериментальная, на macOS ограниченная. В прод такой бинарник не берут: он и медленнее, и защищённости не добавляет, а скилл нужен в тестах, где падение лучше поймать сразу. В чистом Go или Java пользы мало.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill address-sanitizer -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/address-sanitizer/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/address-sanitizer/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill address-sanitizer -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/address-sanitizer/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill address-sanitizer -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/address-sanitizer/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install trailofbits/skills address-sanitizer
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/address-sanitizer/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill address-sanitizer -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/trailofbits/skills --path plugins/testing-handbook-skills/skills/address-sanitizer
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/address-sanitizer/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add trailofbits/skills --skill address-sanitizer -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/trailofbits/skills/tree/HEAD/plugins/testing-handbook-skills/skills/address-sanitizer/SKILL.md

## Когда брать
- собрать бинарник под ASan и не забыть `-g` ради читаемого стека
- понять, почему фаззер умирает через секунду после старта
- разобрать отчёт `heap-buffer-overflow` и найти строку в коде
- поймать утечку памяти на прогоне юнит-тестов
- включить ASan для Rust с unsafe-блоками или FFI

## Примеры запросов агенту
- Собери `fuzz_target.c` с `-fsanitize=address -g` и запусти с `ASAN_OPTIONS=verbosity=1:abort_on_error=1`
- Фаззер падает сразу после старта — сними лимит памяти через `-rss_limit_mb=0`
- Разбери этот ASan-отчёт: на какой строке `heap-buffer-overflow`?

## Похожие
- [rust-security](https://affpapa.org/nevibecode/skills/rust-security.md) — скилл · 544 установки
- [memory-safety-patterns](https://affpapa.org/nevibecode/skills/memory-safety-patterns.md) — скилл · 11746 установок
- [differential-fuzzer](https://affpapa.org/nevibecode/skills/differential-fuzzer.md) — скилл · 1200 установок
- [rust-systems-programming](https://affpapa.org/nevibecode/skills/rust-systems-programming.md) — скилл · 485 установок
- [output-sanitizer](https://affpapa.org/nevibecode/skills/output-sanitizer.md) — скилл · 475 установок
- [security-fuzzing](https://affpapa.org/nevibecode/skills/security-fuzzing.md) — скилл · 583 установки

Из того же набора: [trailofbits/skills](https://affpapa.org/nevibecode/by/trailofbits/skills.md) — 77 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
