|
ABSTRACT
Static analysis has gained much attention over the past few years in applications such as bug finding and program verification. As software becomes more complex and componentized, it is common for software systems and applications to be implemented in multiple languages. There is thus a strong need for developing analysis tools for multi-language software. We introduce a technique called Analysis Preserving Language Transformation (aplt) that enables the analysis of multi-language software, and also allows analysis tools for one language to be applied to programs written in another. aplt preserves data and control flow information needed to perform static analyses, but allows the translation to deviate from the original program's semantics in ways that are not pertinent to the particular analysis. We discuss major technical difficulties in building such a translator, using a C-to-Java translator as an example. We demonstrate the feasibility and effectiveness of aplt using two usage cases: analysis of the Java runtime native methods and reuse of Java analysis tools for C. Our preliminary results show that a control- and data-flow equivalent model for native methods can eliminate unsoundness and produce reliable results, and that aplt enables seamless reuse of analysis tools for checking high-level program properties.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Security Focus Bugtraq Posting. http://cert.unistuttgart.de/archive/bugtraq/2001/03/msg00420.html.
|
| |
2
|
The SUIF 2 Compiler System. Available at http://suif.stanford.edu/suif/suif2/index.html.
|
| |
3
|
The vortex project. Available at http://www.cs.washington.edu/research/projects/cecil/www/vortex.html.
|
| |
4
|
|
| |
5
|
American National Standards Institute, 1430 Broadway, New York, NY 10018, USA. ANSI Fortran X3.9-1978, 1978. Approved April 3, 1978 (also known as Fortran 77).
|
| |
6
|
|
 |
7
|
|
| |
8
|
Robert Balzer , Neil Goldman , David Wile, On the Transformational Implementation approach to programming, Proceedings of the 2nd international conference on Software engineering, p.337-344, October 13-15, 1976, San Francisco, California, United States
|
| |
9
|
|
| |
10
|
M. Bishop and M. Dilger. Checking for race conditions in file accesses. Computing Systems, 9(2):131--152, 1996.
|
| |
11
|
H. Chen, D. Dean, and D. Wagner. Model Checking One Million Lines of C Code. In Proceedings of the 11th Annual Network and Distributed System Security Symposium, San Diego, CA, Feb. 4-6, 2004.
|
 |
12
|
|
| |
13
|
|
 |
14
|
|
 |
15
|
|
| |
16
|
|
| |
17
|
|
| |
18
|
D. Engler, B. Chelf, A. Chou, and S. Hallem. Checking system rules using system-specific, programmer-written compiler extensions. In Proceedings of the Fourth Symposium on Operation System Design and Implementation (OSDI), October 2000.
|
| |
19
|
A. M. Erosa and L. J. Hendren. Taming Control Flow:A Structured Approach to Eliminating Goto Statements. In Proceedings of the 1994 InternationalConference on Computer Languages, pages 229--240, May 16-19, 1994. Toulouse, France.
|
| |
20
|
J. Field, D. Goyal, G. Ramalingam, and E. Yahav. Typestate verification: Abstraction techniques and complexity results, 2003.
|
 |
21
|
Jeffrey S. Foster , Manuel Fähndrich , Alexander Aiken, A theory of type qualifiers, Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation, p.192-203, May 01-04, 1999, Atlanta, Georgia, United States
|
 |
22
|
|
 |
23
|
Vinod Ganapathy , Somesh Jha , David Chandler , David Melski , David Vitek, Buffer overrun detection using linear programming and static analysis, Proceedings of the 10th ACM conference on Computer and communications security, October 27-30, 2003, Washington D.C., USA
[doi> 10.1145/948109.948155]
|
 |
24
|
Seth Hallem , Benjamin Chelf , Yichen Xie , Dawson Engler, A system and language for building system-specific, static analyses, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
| |
25
|
IBM. The toronto portable optimizer.
|
| |
26
|
S. K. Jain, G. Marceau, X. Zhang, L. Koved, and T. Jaeger. INTELLECT: INTErmediate-Language LEvel C Translator. Technical Report 23907, IBM, 2006. Available at http://domino.research.ibm.com/library/cyberdig.nsf/index.html.
|
| |
27
|
Jazillian, Inc. How to convert c to java. Available at http://jazillian.com/how.html.
|
| |
28
|
T. Jensen, D. Metayer, and T. Thorn. Verification of control flow based security properties. In Proceedings of the 1999 IEEE Symposium on Security and Privacy, May 1999.
|
| |
29
|
R. Johnson and D. Wagner. Finding user/kernel pointer bugs with type inference. In Proceedings of the USENIX Security Symposium, Aug. 2004.
|
 |
30
|
Larry Koved , Marco Pistoia , Aaron Kershenbaum, Access rights analysis for Java, Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, November 04-08, 2002, Seattle, Washington, USA
|
| |
31
|
D. Larochelle and D. Evans. Statically detecting likely buffer overflow vulnerabilities. In Proceedings of the Tenth USENIX Security Symposium, pages 177--190, 2001.
|
| |
32
|
|
| |
33
|
|
| |
34
|
|
| |
35
|
N. Nethercote and J. Seward. Valgrind: A program supervision framework. In Proceedings of the Third Workshop on Runtime Verification (RV'03), Boulder, Colorado, USA, July 2003.
|
| |
36
|
Novosoft. C to java converter. Available at http://in.tech.yahoo.com/020513/94/1nxuw.html.
|
| |
37
|
R. W. O'Callahan. The shrike toolkit. Available at http://org.eclipse.cme/contributions/shrike/.
|
| |
38
|
M. Pistoia, R. J. Flynn, L. Koved, and V. C. Sreedhar. Interprocedural analysis for privileged code placement and tainted variable detection. In ECOOP 2005 - Object-Oriented Programming: 19th European Conference, Glasgow, UK, July 25-29, 2005. Proceedings, volume 3586 of Lecture Notes in Computer Science, pages 362-386. Springer, Aug. 2005.
|
 |
39
|
Atanas Rountev , Ana Milanova , Barbara G. Ryder, Points-to analysis for Java using annotated constraints, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.43-55, October 14-18, 2001, Tampa Bay, FL, USA
|
| |
40
|
B. G. Ryder. Dimensions of Precision in Reference Analysis of Object-Oriented Languages. In Proceedings of the 12th International Conference on Compiler Construction, pages 126--137, Warsaw, Poland, April 2003. Invited Paper.
|
| |
41
|
J. H. Saltzer and M. D. Schroeder. The Protection of Information in Computer Systems. In Proceedings of the IEEE, volume 63, pages 1278--1308, Sept. 1975.
|
| |
42
|
U. Shankar, K. Talwar, J. S. Foster, and D. Wagner. Detecting format string vulnerabilities with type qualifiers. In Proceedings of the Tenth USENIX Security Symposium, pages 201--216, 2001.
|
| |
43
|
|
| |
44
|
|
 |
45
|
|
| |
46
|
|
| |
47
|
|
 |
48
|
|
| |
49
|
|
| |
50
|
X. Zhang, T. Jaegert, and L. Koved. Applying Static Analysis to Verifying Security Properties. In Proceedings of the 2004 Grace Hopper Celebration of Women in Computing Conference, Chicago, IL, 2004. Also available as IBM technical report RC23246 at http://domino.research.ibm.com/library/cyberdig.nsf/index.html.
|
CITED BY
|
|
Paolina Centonze , Gleb Naumovich , Stephen J. Fink , Marco Pistoia, Role-Based access control consistency validation, Proceedings of the 2006 international symposium on Software testing and analysis, July 17-20, 2006, Portland, Maine, USA
|
|