You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
cravex2-reachability: Evaluate atom+chen on a simple end-to-end flow #2148
atom installation is easier than chen, but both can run in Docker according to the docs.
I was able to run atom locally and used Docker to run the chennai cli.
I picked CVE-2026-1285 because it is straightforward.
3- Collect the fix patch/commit django/django@a33540b we can easily identify the affected and fixed function: handle_endtag.
4- Compute the graph on the vulnerable package with atom+chen:
$ git clone https://github.com/django/django/
$ cd django
$ git checkout 6.0
Previous HEAD position was 16ae193550 [6.0.x] Bumped version for 6.0 alpha 1 release.
HEAD is now at 36b5f39d93 [6.0.x] Bumped version for 6.0 release.
run atom to compute the call graph (note: generate atom file take some times around 10 minutes or more depend on project complexity )
$ nvm use v24.0.2 # Make sure you use a valid Node.js version.
$ atom -o app.atom -l python .
$ atom usages -l language -o app.atom -s usages.json .
$ cdxgen -t python --deep -o bom.json .
$ atom reachables -o app.atom -s reachables.json -l python .
5- Query that graph
docker run --rm -v /tmp:/tmp -v $HOME:$HOME -v $(pwd):/app:rw -it ghcr.io/appthreat/chen chennai
By using the app.atom, usage.json, and reachables.json files, we can see exactly how the code works and find every path a function takes.
Chennai for queries is great, but it is difficult to test because the documentation is not clear and lacks examples.
Issues with Small Projects:
I tested the tool with a single simple function CVE-2020-22083 to see how it performs in different situations. Sometimes the reachables.json file is empty when testing small projects, possibly because there isn't enough information to map but we still have the usage.json file and it can be very helpful for finding the information we need.
Activity
ziadhany commentedon Feb 16, 2026
1- Install atom+chen
atom installation is easier than chen, but both can run in Docker according to the docs.
I was able to run atom locally and used Docker to run the chennai cli.
2- Select a good CVE to use as a test.
I picked CVE-2026-1285 because it is straightforward.
3- Collect the fix patch/commit
django/django@a33540b we can easily identify the affected and fixed function:
handle_endtag.4- Compute the graph on the vulnerable package with atom+chen:
run atom to compute the call graph (note: generate atom file take some times around 10 minutes or more depend on project complexity )
5- Query that graph
5- Report here about the experience:
I tested the tool with a single simple function CVE-2020-22083 to see how it performs in different situations. Sometimes the reachables.json file is empty when testing small projects, possibly because there isn't enough information to map but we still have the
usage.jsonfile and it can be very helpful for finding the information we need.TG1999 commentedon Jun 11, 2026
ziadhany commentedon Jun 18, 2026
Using Atom and chennai, we can also run more complex queries on symbols or function names.
Let’s take the following example:
_default_template_ctx_processorfunctionOutput
ziadhany commentedon Jul 30, 2026
This is now complete. I evaluated the end-to-end Atom + Chen workflow and posted the steps above.