CS-342: Security and Programming Languages
Papers
-  Overview:
  
  -   An Overview of Security-Driven
  Compilation. 
   Workshop on New Horizons in Compiler Analysis, 2004.
  
-  C.Cowan.
     
     Software Security for Open Source Systems. 
       IEEE Security & Privacy Magazine, February 2003, Volume 1, Number 1, pages 35-48.
  
-  R.S.Boyer and J.S.Moore.
     
     Proof-checking, theorem proving and program verification. 
      
   
-   C.S.Collberg and C.Thomborson. 
     
      Software Watermarking: Models and Dynamic Embeddings. 
       ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages  (POPL99),   	 San Antonio, Texas
  
-  F.B.Schneider, G.Morrisett and R.Harper.
   A language-based approach to security
     .  Informatics: 10 Years Back, 10 Years Ahead, Lecture Notes in Computer Science, Vol. 2000, Springer-Verlag, Heidelberg, 86-101.
  
 
-  Group A1: Languages (C-based) 
  
  -  T.Jim, G.Morrisett, D.Grossman, M.Hicks, J.Cheney and Y.Wang.
       Cyclone:  A Safe Dialect of C.
     Usenix Annual Technical Conference, pages 275-288, Monterey, CA, June 2002.
  
-  R.DeLine and M.Fandrich. 
     The Vault programming language
  
 
-  Group A2: Languages (C-based)
  
  -  G.C.Necula, J.Condit, M.Harren.
     
     CCured: Type-Safe Retrofitting of Legacy Software.
      ACM Transactions on Programming Languages and Systems (TOPLAS), 2004.
  
-  CQUAL: A Tool
  for adding type qualifiers to C
  
 
-  Group A3: Languages (Java)
  
  -  C.Flanagan, K.R.M.Leino, K.Lillibridge, G.Nelson, J.B.Saxe and R.Stata.
    Extended Static Checking for Java
  
-  Java
  Pathfinder project
   
-  S.Soman, C.Krintz and G.Vigna. 
     
     Detecting Malicious Java Code Using Virtual Machine Auditing.
      12th USENIX Security Symposium, Washington DC, Aug. 4-8, 2003.
  
 
-  Group A4: Languages - Type-safe assembly
  
  -  G.Morrisett, K.Crary, N.Glew, D.Grossman, R.Samuels, 
    F.Smith, D.Walker, S.Weirich and S.Zdancewic
      
    TALx86: A realistic typed assembly language. 
      In the 1999 ACM SIGPLAN Workshop on Compiler Support for System Software, pages 25-35, Atlanta, GA, USA, May 1999.
  
-  K.N.Swadi and A.W.Appel. 
     
     Typed Machine Language and its Semantics. 
     
  
 
-  Group B1: Rule checking
  
   -  D.Engler, B.Chelf, A.Chou, and S.Hallem.
     
     Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions. 
      OSDI 2000.
   
-  D.Engler, D.Chen, S.Hallem, A.Chou and B.Chelf. 
     
     Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code. 
      OSDI 2000.
   
-  D.Engler and K.Ashcraft.
     
     RacerX: Effective, Static Detection of Race Conditions and Deadlocks. 
      SOSP 2003.
  
 
-  Group B2: Rule checking
  
  -  SLAM project at Microsoft
  
-  T.Ball and S.K.Rajamani.
  
  Checking Temporal Properties of Software with Boolean Programs.
  Workshop on Advances in Verification (with CAV 2000)
  
 
-  Group C1: Runtime systems
  
  -  S.Zdancewic, L.Zheng, N.Nystrom and A.C.Myers.
   
  Secure Program Partitioning
  ACM Transactions on Computer Systems (TOCS), Vol.20, No.3, August 2002.
  
-  M.Kharbutli, X.Jiang, Y.Solihin, G.Venkataramani and
  M.Prvulovic.
   
   Comprehensively and Efficiently Protecting the Heap.
     ASPLOS 2006.
  
 
-  Group C2: Runtime systems and languages
  
  -  G.Hunt et al. 
 
  An Overview of the Singularity Project
   (Microsoft)
  
-  Microsoft's F# project.
  
  
 
-  Group D: Hardware support
     
     -  E.Witchel, J.Cates and K.Asanovic.
      
      Mondrian Memory Protection.
      ASPLOS, San Jose, CA, October 2002.
     
-  W.Shi, J.B.Fryman, G.Gu, H.H.S.Lee, Y.Zhang and J.Yang.
     
     Infoshield: A Security Architecture for Protecting Information
     Usage in Memory.  HPCA 2006.
     
 
-  Group E1: Transactional memory
  
  -  M.Herlihy.
    
    The Transactional Manifesto: Software Engineering and Non-blocking
    Synchronization.
  
-  M.Herlihy and J.E.B.Moss.
    
    Transactional Memory: Architectural Support for Lock-Free Data Structures
    , ISCA 1993.
  
-  Y.Ni and A.Welc.
    
Transactional Memory: From Semantics to Implementation. 
  
 
-  Group E2: Transactional memory
  
  -  B.Carlstrom et al.
    
    The Atomos Trans programming language,
     PLDI 2006.
   See also slides
  
-  B.Carlstrom et al.
    
    Executing Java Programs with Transactional Memory,
     2007.
  
 
-  Group E3: Transactional memory
  
  -  Y.Ni, V.Menon, A.Adl-Tabatabai, A.L.Hosking,
    R.L.Hudson, J.E.B.Moss, B.Saha, T.Shpeisman.
    
    Open Nesting in Software Transactional Memory
    , ACM SIGPLAN 2007.
  
-  K.E.Moore, J.Bobba, M.J.Moravan, M.D.Hill and D.Wood.
    
    LogTM: Log-based Transactional Memory,
     Symposium on High Performance Computer Architecture (HPCA), February 2006.
  
 
-  Group F: Virtualization
  
  -  T.Garfinkel and A.Warfield.
    
     What Virtualization can do for Security
    , USENIX Magazine, December 2007.
  
-  X.Chen, T.Garfinkel, E.Lewis, P.Subrahmanyam, C.A.Waldspurger, 
     D.Boneh, J.Dwoskin, D.Ports.
     
Overshadow: A Virtualization-Based Approach to Retrofitting Protection in Commodity Operating Systems,
     
   ASPLOS 2008.
  
 
-  Group G1: Real-time
  
  -  E.Lee. 
     
       The Problem with Threads.
     
  
-  E.Lee. 
     
      Cyber Physical Systems: Design Challenges
     
     International Symposium on Object/Component/Service-Oriented 
      Real-Time Distributed Computing (ISORC), May, 2008.
  
- P.Derler, T.H.Feng, E.A.Lee, S.Matic, H.D.Patel, Y.Zhao and J.Zou, 
    
      PTIDES: A Programming Model for Distributed Real-Time Embedded Systems
    ,
      EECS Department, University of California, Berkeley, Tech. Rep. UCB/EECS-2008-72, 
      May 2008.
  
 
-  Group G2: Real-time
  
  -  F.Boussinot.
     
     Java Fair Threads.
     
  
-  G.Berry and G.Gonthier.
     
     The Esterel Synchronous Programming Language
     
  
-  M.Riesco and J.Tuya.
     
      Synchronous Estelle: Just Another Synchronous Language?
     
  
 
-  Group G3: Real-time
  
  -  G.Wang and P.Cook.
   
Chuck: A Strongly-timed, Concurrent, and On-the-fly Audio Programming Language.
   
  
-  
    Europa.
  
 
-  Group H: Audit
  
  -  J.A.Vaughan, L.Jia, K.Mazurak and S.Zdancewic.
     
     Evidence-based Audit
     , IEEE Computer Security Foundations Symposium (CSF), pages
  177-191, 2008.
  
-  L.Jia, J.Vaughan, K.Mazurak, J.Zhao, L.Zarko, J.Schorr
     and S.Zdancewic. 
      
        AURA: A Programming Language for Authorization and Audit,
      
      in SIGPLAN International Conference on Functional Programming (ICFP), 
          British Columbia, Canada, September 2008.
  
 
-  Group I: Aspects
  
  -  G.Kiczales et al.
    
     AspectJ.
    
  
-  G.Washburn and S.Weirich.
     
Good Advice for Type-directed Programming: Aspect-oriented Programming and Extensible Generic Functions
     
  
 
-  Group J1: OOP
  
   -  P.Wilson et al.
     
     Dynamic Storage Allocation: A Survey and Critical Review.
      Int. Workshop on Memory Management, 1995.
     See also P.Wilson's tutorial:
     
     Uniprocessor Garbage Collection Techniques.
     
  
-  J.M.Chang et al.
    
       Architectural support for dynamic memory management,
     Conf. Computer Design, 2000.
  
-  M.Meyer.
     
     An On-Chip Garbage Collection Coprocessor for Embedded Real-Time Systems,
      
     IEEE Int. Conf. Embedded and Real-Time Computing Systems and Applications, 2005.
  
 
-  Group J2: OOP
  
  -  U.Holzle and D.Ungar.
     
       Do object-oriented languages need special hardware support?      
      ECOOP 1995.
  
-  J.Kaiser and K.Czaja.
    
    Lightweight Hardware Support for Protection in OO Systems,
      1992.
  
-  I.Williams and M.Wolczko.
     
     An Object-Based Memory Architecture,
      Workshop on Persistent Object Systems, 1991.
  
 
-  Group K1: Policy
  
  -  
    
    Policy languages: A review,
     W3C.
  
-  N.Damianou et al.
    
     A Survey of Policy Specification Approaches
    
  
-  P.Kumaraguru et al.
     
       A Survey of Privacy Policy Languages
     
  
 
-  Group K2: RBAC
  
  -  D.F. Ferraiolo and D.R. Kuhn.
     Role Based Access Control,
     15th National Computer Security Conference, Oct 13-16, 1992, pp. 554-563.
  
-  R.S.Sandhu, E.J.Coyne, H.L.Feinstein, C.E.Youman (1996), 
     Role-Based Access Control Models
     IEEE Computer 29(2): 38-47, 1996.
  
-  M.Hitchens and V.Varadharajan. 
       Tower: A language for role based access control.
  
-  T.Finin, A.Joshi, L.Kagal, J.Niu, R.Sandhu, W.Winsborough and 
       B.Thuraisingham.
        
          ROWLBAC: Representing Role Based Access Control in OWL,
        Proc. 13th ACM Symposium on Access Control Models and 
        Technologies (SACMAT), Estes Park, Colorado, June 11-13, 2008, pages 73-82.
  
 
-  Group K3: RBAC
  
  -  R.Sandhu and J.Park.
     
     Usage Control: A Vision for Next Generation Access Control, 
       MMM-ACNS 2003.
  
-  R.Sandhu and V.Bhamidipati.
     
       The ASCAA Principles for Next-Generation Role-Based Access Control.
       Proc. 3rd International Conference on Availability, Reliability and Security (ARES), Barcelona, Spain, March 4-7, 2008.
  
-  M.Xu, X.Jiang, R.Sandhu and X.Zhang.
     
     Towards a VMM-based Usage Control Framework for OS Kernel 
     Integrity Protection. 
     Proc. 12th ACM Symposium on Access Control Models and 
     Technologies (SACMAT), 
     June 20-22, 2007, Sophia Antipolis, France, pages 71-80.
  
 
-  Group L: Recovery
  
  -  G.Candea, S.Kawamoto, Y.Fujiki, G.Friedman, A.Fox
   
   Microreboot - A Technique for Cheap Recovery. 
   6th Symposium on Operating Systems Design and Implementation (OSDI), San Francisco, CA, December 2004
  
-  D.A. de Oliveira, J.R.Crandall, G.Wassermann, F.Wu, 
    Z.Su, and F.Chong.
     
      ExecRecorder: VM-based full-system replay
     for attack analysis and system recovery.
     1st Workshop on Architectural and System Support For Improving 
     Software Dependability (San Jose, California, October 21 - 21, 2006). 
     ASID '06.
  
-  D.Lowell and P.Chen.  
      
      Discount Checking: Transparent, Low-Overhead
      Recovery for General Applications. 
      Technical Report CSE-TR-410-99, University of Michigan, 1998  
  
 
 
 
 
-  Miscellaneous
  
   -  G.C.Necula.
     Proof-Carrying Code.
       POPL97, January 1997.
   
-  G.C.Necula and P.Lee.
     
     The Design and Implementation of a Certifying Compiler
      PLDI, 1998.
  
-  V.Kiriansky, D.Bruening and S.Amarasinghe.
  
  Secure Execution Via Program Shepherding
  USENIX Security Symposium, 2002.
  
-  Crispin Cowan, Calton Pu, Dave Maier, Heather Hinton, Peat Bakke, Steve Beattie, Aaron Grier, Perry Wagle, and Qian Zhang.
     
     StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks. 
       7th USENIX Security Symposium, January 1998, San Antonio, TX. 
   
-  Aspect oriented programing and AspectJ. Example: R.Pewlak et al.
     
     JAC: An Aspect Based Distributed Dynamic Framework.
     
    
-  U.Erlingsson and F.B.Schneider.
      IRM enforcement of Java stack inspection.
     
     Proceedings 2000 IEEE Symposium on Security and Privacy (Oakland, California, May 2000), IEEE Computer Society, Los Alamitos,California, 246-255.
  
-  D.Walker.
      A type system for expressive security properties. 
     In the Twenty-Seventh ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 254-267, Boston, MA, USA, January 2000.
   
-  G.C.Necula, P.Lee.
      Safe Kernel Extensions Without Run-Time Checking.
       OSDI'96,October 1996.
  
-  H.Chen and J.S.Shapiro.
     
     Using build-integrated static checking to preserve correctness invariants.
      Proceedings of the 11th ACM conference on Computer 
     and communications security, Washington DC, 2004.
   
-  M.Musuvathi, D.Y.W. Park, A.Chou, D.R.Engler and D.L.Dill.
     
     CMC: A pragmatic approach to model checking real code. 
      ISCA 2001. 
   
-  J.Yang, T.Kremenek, Y.Xie and D.Engler. 
     
     MECA: an Extensible, Expressive System and Language for Statically Checking Security Properties. 
      ACM CCS, 2003.
   
-   C.S.Collberg, T.Proebsting. 
     
      Problem Classification using Program Checking. 
      
   
-  E.Larson, T.Austin.
     
     High Coverage Detection of Input-Related Security Faults. 
      12th Usenix Security Symposium, 2003.
   
-  J Crow, S Owre, J Rushby, N Shankar, M Srivas. 
     
     A Tutorial Introduction to PVS. 
      
  
-  K.S.Hlee and J.S.Chapin.
     
     Type-Assisted Dynamic Buffer Overflow Detection.
      11th Annual USENIX Security Symposium.
   
-  R.Johnson and D.Wagner. 
     
     Finding User/Kernel Pointer Bugs With Type Inference.
      (Postscript) USENIX Security Symposium, 2004.
   
-  W.A.Arbaugh, D.J.Farber, and J.M.Smith.
     
        A Secure and Reliable Bootstrap Architecture.
      IEEE Symposium on Security and Privacy   , pp. 65-71, May 1997.
   
-   D.Brumley and D.Song. 
     
     Privtrans: Automatic Privilege Separation. 
       USENIX Security Symposium 2004.
   
-  S.W.Smith, D.Safford. 
     
     Practical Server Privacy Using Secure Coprocessors.
       IBM Systems Journal 40: 683-695. 2001.
   
-   S.W.Smith. 
     
     Secure Coprocessing Applications and Research Issues.
       Los Alamos Unclassified Release LA-UR-96-2805, Los Alamos National Laboratory. 
   
-  D.Gay and A.Aiken. 
     
     Language Support for Regions. 
      ACM SIGPLAN '01 Conference on Programming Language Design and Implementation, Snowbird, Utah, June 2001.
   
-  Papers on Worms. See the two papers under the 4/26 listing at
       
       http://www.cs.ucdavis.edu/~hchen/teaching/malware-s05/
     
   
-  C.R.Gould, Z.Su and P.Devanbu.
     
      Static Checking of Dynamically Generated Queries in Database Applications.
      ICSE 2004, Edinburgh, UK.
   
-  P.H.Runge
     
     Software Verification Tools
     
   
-  H.Shacham et al.
     
     On the effectiveness of address-space randomization.
      Proceedings of the 11th ACM conference on Computer 
     and communications security, Washington DC, 2004.
   
-  M.Gaiman, R.Simha and B.Narahari.
    
    Privacy-Preserving Programming Using Sython.
    
    J. Computers and Security, to appear.
   
-  Zhuang, X., Zhang, T. and Pande, S.
     
     HIDE: An Infrastructure for Efficiently Protecting Information Leakage on the Address Bus.
      International Conference on Architectural Support for Programming Languages and Operating Systems,
Boston, MA., Oct 2004. 
   
-  Xiaotong Zhuang, Tao Zhang, Hsien-Hsin Lee and Santosh Pande.
     
     Hardware Assisted Control Flow Obfuscation for Embedded Processors.
      CASES, Washington DC, Sept. 2004.