Skip to content

Conversation

ivg
Copy link
Member

@ivg ivg commented Nov 20, 2020

This PR resolves #1076 and enables better handling of the may
analysis (analysis that require analyzing all paths).

The Taint Engine now tracks taint objects globally across machines,
unlike previously when each machine had its own set of taint objects,
and taint object identifier was specific to a machine. This enables a
new implementation of the Taint Garbage Collection and refinement of
the taint-finalize observation. The GC is now folding over all
machines to check if the taint is unreachable in all machines. The
observation is triggered with live=true if the taint becomes
unreachable in the current machine but is still reachable in others,
and with live=false, when it comes out of existence in all machines,
or when the system terminates. This approach enables both may and must
analysis as we can both track liveness per machine and per
system (i.e., for all paths up to the linearity constraint).

The garbage collector is now run each machine instruction to prevent
undesired interference with other observations.

This PR also changes the semantics of the sanitize operation. Now,
when an object is sanitized, it is no longer tracked and removed from
the tracker (i.e., detached from all values and addresses). Before
that it was only detached from the selected value.

ivg added 3 commits November 20, 2020 12:00
This PR adds a new interface, `Machine.Other`, that enables access to
the local state of other machines. It is possible both to pry into
others local state and even change it. So is it carefuly.

This PR is a step towards the solution of the BinaryAnalysisPlatform#1076 issue. More will
come.
This PR resolves BinaryAnalysisPlatform#1076 and enables better handling of the may
analysis (analysis that require analyzing all paths).

The Taint Engine now tracks taint objects globally across machines,
unlike previously when each machine had its own set of taint objects,
and taint object identifier was specific to a machine. This enables a
new implementation of the Taint Garbage Collection and refinement of
the taint-finalize observation. The GC is now folding over all
machines to check if the taint is unreachable in all machines. The
observation is triggered with live=true if the taint becomes
unreachable in the current machine but is still reachable in others,
and with live=false, when it comes out of existence in all machines,
or when the system terminates. This approach enables both may and must
analysis as we can both track liveness per machine and per
system (i.e., for all paths up to the linearity constraint).

The garbage collector is now run each machine instruction to prevent
undesired interference with other observations.

This PR also changes the semantics of the sanitize operation. Now,
when an object is sanitized, it is no longer tracked and removed from
the tracker (i.e., detached from all values and addresses). Before
that it was only detached from the selected value.
@ivg ivg merged commit 1577b86 into BinaryAnalysisPlatform:master Nov 20, 2020
@ivg ivg deleted the tweaks-the-taint-framework branch November 20, 2020 18:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

revisit warn-unused and check-value analyses
1 participant