-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Taint Analysis of functions out of the backtrace #36
Open
niktesic opened this issue
Dec 26, 2022
· 2 comments
· Fixed by syrmia/crash-analyzer#1 · May be fixed by #47
Open
Taint Analysis of functions out of the backtrace #36
niktesic opened this issue
Dec 26, 2022
· 2 comments
· Fixed by syrmia/crash-analyzer#1 · May be fixed by #47
Comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Currently, the Taint Analysis is not performed for functions out of the backtrace, unless, one of the two conditions is met
(from TaintAnalysis::shouldAnalyzeCall:):
Those two conditions need to be revisited to meet real case scenarios and for condition 2) the future support of global variable tracking would be beneficial.
On the other hand, in many real cases, the parameter is passed as a reference (pointer) and its value is set in the functions out of the backtrace, but we don't have mechanism to detect such cases an to perform Taint Analysis for such functions.
With the patch below, we are able to run Taint Analysis on each function out of the backtrace, by selecting argument
-analyze-each-call
. This could be used during investigation to inspect how Taint Analysis could be performed on such functions, but in real cases, it could cause explosion of analysis.Patch: analyze-each-call.patch
Please, consider the following test case:
Although, argument
-analyze-each-call
is used and we are be able to analyze functioninit()
, which is responsible for setting incorrect value of the pointer, the tool is not able to find correct blame line. The main reason is the fact that we don't have available register values for the frames out of the backtrace, so we cannot rely on concrete memory addresses. This means, that functions out of the backtrace are analyzed on symbolic level, so we need to match exact registers and offsets.To sum up, there are two mechanisms which need to be developed:
The text was updated successfully, but these errors were encountered: