Avik Chaudhuri

dblp:89/1643 · DBLP profile ↗
← Back
15ranked-venue papers
8as first author
0since 2021 · last 2019
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 9 · 3 first-authorSecurity and privacy · 5 · 4 first-authorComputer networks · 1 · 1 first-authorTheory of computation · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Programming languages and type systems · 72% Program analysis · 28%
Network and information security
4 papers
Systems and software security · 33% Authentication and access control · 29% Web and mobile security · 24%
Theoretical computer science
2 papers
Logic in computer science · 50% Automated reasoning and model checking · 50%

Topics — the 20 heaviest of 21, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems
type systems
0.422017
Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017
The ins and outs of gradual type inference · POPL 2012
Programming languages and type systems
type inference
0.422017
Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017
Dynamic inference of static types for ruby · POPL 2011
Program analysis
static analysis
0.422017
Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017
Static Typing for Ruby on Rails · ASE 2009
Programming languages and type systems
type checking
0.312017
Fast and precise type checking for JavaScript · Proc. ACM Program. Lang. 2017
Programming languages and type systems › type systems
gradual typing
0.112012
The ins and outs of gradual type inference · POPL 2012
Web and mobile security
web application security
0.122010
Symbolic security analysis of ruby-on-rails web applications · CCS 2010
Static Typing for Ruby on Rails · ASE 2009
Programming languages and type systems › type inference
dynamic type inference
0.112011
Dynamic inference of static types for ruby · POPL 2011
Systems and software security
vulnerability discovery
0.112010
Symbolic security analysis of ruby-on-rails web applications · CCS 2010
Programming languages and type systems › type systems
static typing
0.112009
Static Typing for Ruby on Rails · ASE 2009
Program analysis › type analysis
type error detection
0.112009
Static Typing for Ruby on Rails · ASE 2009
Authentication and access control
access control
0.112008
EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008
Authentication and access control › access control
dynamic access control
0.112008
EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008
Cryptographic protocols and secure computation › secure data sharing
secure file sharing
0.112008
Automated Formal Analysis of a Protocol for Secure File Sharing on Untrusted Storage · SP 2008
Systems and software security › secure storage
untrusted storage
0.112008
Automated Formal Analysis of a Protocol for Secure File Sharing on Untrusted Storage · SP 2008
Logic in computer science › logic programming
datalog
0.112008
EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008
Logic in computer science
logic programming
0.112008
EON: modeling and analyzing dynamic access control systems with logic programs · CCS 2008
Automated reasoning and model checking
protocol verification
0.112008
Automated Formal Analysis of a Protocol for Secure File Sharing on Untrusted Storage · SP 2008
Automated reasoning and model checking › protocol verification
proverif
0.112008
Automated Formal Analysis of a Protocol for Secure File Sharing on Untrusted Storage · SP 2008
Program analysis
symbolic execution
0.012010
Symbolic security analysis of ruby-on-rails web applications · CCS 2010
Storage systems
secure storage
0.012008
Automated Formal Analysis of a Protocol for Secure File Sharing on Untrusted Storage · SP 2008

Methods — techniques the papers use, named apart from their topics

type inference · 0.4parallelization · 0.3incrementalization · 0.3query satisfiability · 0.2proverif · 0.2formal verification · 0.2datalog · 0.2symbolic execution · 0.2object invariants · 0.2static type inference · 0.2program translation · 0.2assertions · 0.1assertion · 0.1
YearPublicationVenuePosition
2019 Optimizing and evaluating transient gradual typing
abstract
Gradual typing enables programmers to combine static and dynamic typing in the same language. However, ensuring sound interaction between the static and dynamic parts can incur runtime cost. In this paper, we analyze the performance of the transient design for gradual typing in Reticulated Python, a gradually typed variant of Python. This approach inserts lightweight checks throughout a program rather than installing proxies on higher order values. We show that, when using CPython as a host, performance decreases as programs evolve from dynamic to static types, up to a 6x slowdown compared to equivalent Python programs.
Michael M. Vitousek, Jeremy G. Siek, Avik Chaudhuri
DLS3
2017 Fast and precise type checking for JavaScript
abstract
In this paper we present the design and implementation of Flow, a fast and precise type checker for JavaScript that is used by thousands of developers on millions of lines of code at Facebook every day. Flow uses sophisticated type inference to understand common JavaScript idioms precisely. This helps it find non-trivial bugs in code and provide code intelligence to editors without requiring significant rewriting or annotations from the developer. We formalize an important fragment of Flow's analysis and prove its soundness. Furthermore, Flow uses aggressive parallelization and incrementalization to deliver near-instantaneous response times. This helps it avoid introducing any latency in the usual edit-refresh cycle of rapid JavaScript development. We describe the algorithms and systems infrastructure that we built to scale Flow's analysis.
Avik Chaudhuri, Panagiotis Vekris, Sam Goldman, Marshall Roch, Gabriel Levi
Proc. ACM Program. Lang.1
2012 Types and Access Controls for Cross-Domain Security in Flash
Aseem Rastogi, Avik Chaudhuri, Rob Johnson 0001
APLAS2
2012 The ins and outs of gradual type inference
abstract
Gradual typing lets programmers evolve their dynamically typed programs by gradually adding explicit type annotations, which confer benefits like improved performance and fewer run-time failures.
Aseem Rastogi, Avik Chaudhuri, Basil Hosmer
POPL2
2011 The impact of optional type information on jit compilation of dynamically typed languages
abstract
Optionally typed languages enable direct performance comparisons between untyped and type annotated source code. We present a comprehensive performance evaluation of two different JIT compilers in the context of ActionScript, a production-quality optionally typed language. One JIT compiler is optimized for quick compilation rather than JIT compiled code performance. The second JIT compiler is a more aggressively optimizing compiler, performing both high-level and low-level optimizations.
Mason Chang, Bernd Mathiske, Edwin W. Smith, Avik Chaudhuri, Andreas Gal, Michael Bebenita, Christian Wimmer, Michael Franz
DLS4
2011 Dynamic inference of static types for ruby
abstract
There have been several efforts to bring static type inference to object-oriented dynamic languages such as Ruby, Python, and Perl. In our experience, however, such type inference systems are extremely difficult to develop, because dynamic languages are typically complex, poorly specified, and include features, such as eval and reflection, that are hard to analyze.
Jong-hoon (David) An, Avik Chaudhuri, Jeffrey S. Foster, Michael Hicks 0001
POPL2
2010 Symbolic security analysis of ruby-on-rails web applications
abstract
Many of today's web applications are built on frameworks that include sophisticated defenses against malicious adversaries. However, mistakes in the way developers deploy those defenses could leave applications open to attack. To address this issue, we introduce Rubyx, a symbolic executor that we use to analyze Ruby-on-Rails web applications for security vulnerabilities. Rubyx specifications can easily be adapted to variety of properties, since they are built from general assertions, assumptions, and object invariants. We show how to write Ruby specifications to detect susceptibility to cross-site scripting and cross-site request forgery, insufficient authentication, leaks of secret information, insufficient access control, as well as application-specific security properties. We used Rubyx to check seven web applications from various sources against out specifications. We found many vulnerabilities, and each application was subject to at least one critical attack. Encouragingly, we also found that it was relatively easy to fix most vulnerabilities, and that Rubyx showed the absence of attacks after our fixes. Our results suggest that Rubyx is a promising new way to discover security vulnerabilities in Ruby-on-Rails web applications.
Avik Chaudhuri, Jeffrey S. Foster
CCS1
2009 PCAL: Language Support for Proof-Carrying Authorization Systems
Avik Chaudhuri, Deepak Garg 0001
ESORICS1
2009 A concurrent ML library in concurrent Haskell
abstract
In Concurrent ML, synchronization abstractions can be defined and passed as values, much like functions in ML. This mechanism admits a powerful, modular style of concurrent programming, called higher-order concurrent programming. Unfortunately, it is not clear whether this style of programming is possible in languages such as Concurrent Haskell, that support only first-order message passing. Indeed, the implementation of synchronization abstractions in Concurrent ML relies on fairly low-level, language-specific details. In this paper we show, constructively, that synchronization abstractions can be supported in a language that supports only first-order message passing. Specifically, we implement a library that makes Concurrent ML-style programming possible in Concurrent Haskell. We begin with a core, formal implementation of synchronization abstractions in the π-calculus. Then, we extend this implementation to encode all of Concurrent ML's concurrency primitives (and more!) in Concurrent Haskell. Our implementation is surprisingly efficient, even without possible optimizations. In several small, informal experiments, our library seems to outperform OCaml's standard library of Concurrent ML-style primitives. At the heart of our implementation is a new distributed synchronization protocol that we prove correct. Unlike several previous translations of synchronization abstractions in concurrent languages, we remain faithful to the standard semantics for Concurrent ML's concurrency primitives. For example, we retain the symmetry of choose, which can express selective communication. As a corollary, we establish that implementing selective communication on distributed machines is no harder than implementing first-order message passing on such machines.
Avik Chaudhuri
ICFP1
2009 Static Typing for Ruby on Rails
abstract
Ruby on Rails (or just "Rails") is a popular web application framework built on top of Ruby, an object-oriented scripting language. While Ruby's powerful features such as dynamic typing help make Rails development extremely lightweight, this comes at a cost. Dynamic typing in particular means that type errors in Rails applications remain latent until run time, making debugging and maintenance harder. In this paper, we describe DRails, a novel tool that brings static typing to Rails applications to detect a range of run time errors. DRails works by translating Rails programs into pure Ruby code in which Rails's numerous implicit conventions are made explicit. We then discover type errors by applying DRuby, a previously developed static type inference system, to the translated program. We ran DRails on a suite of applications and found that it was able to detect several previously unknown errors.
Jong-hoon (David) An, Avik Chaudhuri, Jeffrey S. Foster
ASE2
2008 EON: modeling and analyzing dynamic access control systems with logic programs
abstract
We present EON, a logic-programming language and tool that can be used to model and analyze dynamic access control systems. Our language extends Datalog with some carefully designed constructs that allow the introduction and transformation of new relations. For example, these constructs can model the creation of processes and objects, and the modification of their security labels at runtime. The information-flow properties of such systems can be analyzed by asking queries in this language. We show that query evaluation in EON can be reduced to decidable query satisfiability in a fragment of Datalog, and further, under some restrictions, to efficient query evaluation in Datalog.
Avik Chaudhuri, Prasad Naldurg, Sriram K. Rajamani, G. Ramalingam, Lakshmisubrahmanyam Velaga
CCS1
2008 Automated Formal Analysis of a Protocol for Secure File Sharing on Untrusted Storage
abstract
We study formal security properties of a state-of-the-art protocol for secure file sharing on untrusted storage, in the automatic protocol verifier ProVerif. As far as we know, this is the first automated formal analysis of a secure storage protocol. The protocol, designed as the basis for the file system Plutus, features a number of interesting schemes like lazy revocation and key rotation. These schemes improve the protocol's performance, but complicate its security properties. Our analysis clarifies several ambiguities in the design and reveals some unknown attacks on the protocol. We propose corrections, and prove precise security guarantees for the corrected protocol.
Bruno Blanchet, Avik Chaudhuri
SP2
2006 Dynamic Access Control in a Concurrent Object Calculus
Avik Chaudhuri
CONCUR1
2006 Secrecy by Typing and File-Access Control
abstract
Secrecy properties can he guaranteed through a combination of static and dynamic checks. The static checks may include the application of special type systems with notions of secrecy. The dynamic checks can be of many different kinds; in practice, the most important are access-control checks, often ones based on ACLs (access-control lists). In this paper, we explore the interplay of static and dynamic checks in the setting of a file system. For this purpose, we study a pi calculus with file-system constructs. The calculus supports both access-control checks and a form of static scoping that limits the knowledge of terms - including file names and contents - to groups of clients. We design a system with secrecy types for the calculus: using this system, we can prove secrecy properties by static typing of programs in the presence of file-system access-control checks.
Avik Chaudhuri, Martín Abadi
CSFW1
2006 Formal Analysis of Dynamic, Distributed File-System Access Controls
Avik Chaudhuri, Martín Abadi
FORTE1