static-analysis

Analyze LLVM IR for dataflow, pointer aliasing, and taint propagation.

868|100|Updated Jan 10, 2022
One-click install
npx skills add https://github.com/gmh5225/awesome-llvm-security --skill static-analysis-gmh5225
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: static-analysis
Source: https://github.com/gmh5225/awesome-llvm-security/tree/main/.claude/skills/static-analysis
Command: npx skills add https://github.com/gmh5225/awesome-llvm-security --skill static-analysis-gmh5225

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill provides a structured framework for performing LLVM-based static analysis to uncover dataflow issues, pointer aliasing, taint propagation, and verification gaps in code, enabling researchers and engineers to build more secure and reliable software.

Core Features & Use Cases

  • Dataflow Analysis: forward and backward analyses, may/must analyses to reason about value flow.
  • Pointer Analysis: flow-insensitive/sensitive and context-sensitive analyses to approximate aliases.
  • Taint Analysis: source-sink modeling to detect untrusted data paths through the program.
  • Dependency Analysis: build data dependency graphs and perform program slicing.
  • Integration with LLVM: leverage built-in analyses like DominatorTree, LoopInfo, and AAManager to compose custom analyses.
  • Use Cases: security research, vulnerability scanning, bug finding, and code quality evaluation on LLVM-based projects.

Quick Start

Use the static-analysis skill to examine a sample LLVM IR function and identify dataflow, taint, and pointer-aliasing issues.

Frequently Asked Questions about static-analysis

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I perform taint analysis on LLVM IR to detect security vulnerabilities?

Taint analysis on LLVM IR identifies untrusted data paths by modeling source-sink relationships to detect security vulnerabilities. This framework supports user-defined taint analyses and built-in dataflow passes to uncover vulnerability paths.

What is the best way to analyze pointer aliasing in LLVM-based projects?

Pointer aliasing analysis in LLVM uses flow-sensitive and context-sensitive techniques to approximate memory aliases. This skill leverages built-in Analysis APIs like AAManager to compose custom pointer analysis passes for code quality evaluation.

Can I build data dependency graphs and perform program slicing with LLVM infrastructure?

Yes, you can build data dependency graphs and perform program slicing using LLVM infrastructure. This skill provides dependency analysis capabilities through forward and backward may/must analyses to construct data dependency graphs for program slicing.

Does this static analysis framework support interprocedural analysis and loop-aware optimizations?

Yes, this framework supports interprocedural analysis and loop-aware optimizations. It leverages built-in LLVM analyses including DominatorTree and LoopInfo to compose custom passes for vulnerability detection across function boundaries.

What LLVM Analysis APIs are required to set up custom dataflow analyses?

Custom dataflow analyses require LLVM Analysis APIs including DominatorTree, LoopInfo, and AAManager. You need the LLVM infrastructure to compose these built-in analyses with user-defined taint and dependency passes for vulnerability detection.

When do I need flow-sensitive versus flow-insensitive pointer analysis for vulnerability detection?

Flow-sensitive pointer analysis is needed when alias relationships change throughout execution for precise vulnerability detection, while flow-insensitive analysis provides faster approximations. This skill supports both approaches along with context-sensitive analysis for security research.