Skip to main content

AuthCheck: Program-State Analysis for Access-Control Vulnerabilities

  • Conference paper
  • First Online:
Formal Methods. FM 2019 International Workshops (FM 2019)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 12233))

Included in the following conference series:

  • 437 Accesses

Abstract

According to security rankings such as the SANS Top 25 and the OWASP Top 10, access-control vulnerabilities are still highly relevant. Even though developers use web frameworks such as Spring and Struts, which handle the entire access-control mechanism, their implementation can still be vulnerable because of misuses, errors, or inconsistent implementation from the design specification. We propose AuthCheck, a static analysis that tracks the program’s state using a finite state machine to report illegal states caused by vulnerable implementation. We implemented AuthCheck for the Spring framework and identified four types of mistakes that developers can make when using Spring Security. With AuthCheck, we analyzed an existing open-source Spring application with inserted vulnerable code and detected the vulnerabilities.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    https://cwe.mitre.org/top25/.

  2. 2.

    https://www.owasp.org/index.php/Top_10-2017_Top_10.

  3. 3.

    https://spring.io/.

  4. 4.

    https://struts.apache.org/.

  5. 5.

    https://cwe.mitre.org.

  6. 6.

    https://github.com/fred4jupiter/fredbet.

  7. 7.

    https://github.com/secure-software-engineering/authcheck/blob/master/Evalu-ation_With_FredBet/Evaluation.md.

References

  1. Spring framework, java spring. https://spring.io/projects. Accessed 9 Mar 2019

  2. Spring framework, java spring security. https://spring.io/guides/topicals/spring-security-architecture. Accessed 9 Mar 2019

  3. Spring framework, spring expression language. https://docs.spring.io/spring/docs/5.0.5.RELEASE/spring-framework-reference/core.html. Accessed 12 Mar 2019

  4. Alexander, P., Pike, L., Loscocco, P., Coker, G.: Model checking distributed mandatory access control policies. ACM Trans. Inf. Syst. Secur. 18(2), 6:1–6:25 (2015)

    Google Scholar 

  5. Ball, T., Rajamani, S.K.: The slam project: debugging system software via static analysis. In: Proceedings of the 29th ACM SIGPLAN POPL, POPL 2002, pp. 1–3. ACM, New York (2002)

    Google Scholar 

  6. Dalton, M., Kozyrakis, C., Zeldovich, N.: Nemesis: preventing authentication and access control vulnerabilities in web applications. In: Proceedings of USENIX, SSYM 2009, pp. 267–282. USENIX Association, Berkeley (2009)

    Google Scholar 

  7. Enumeration, C.C.W.: Incorrect authorization. https://cwe.mitre.org/data/definitions/863.html. Accessed 12 Mar 2019

  8. Enumeration, C.C.W.: Missing authentication for critical function. https://cwe.mitre.org/data/definitions/306.html. Accessed 12 Mar 2019

  9. Enumeration, C.C.W.: Missing authorization. https://cwe.mitre.org/data/definitions/862.html. Accessed 12 Mar 2019

  10. Fielding, R.T.: Architectural styles and the design of network-based software architectures. Ph.D. thesis, University of California, Irvine (2000)

    Google Scholar 

  11. Gamma, E., Vlissides, J., Johnson, R., Helm, R.: Design Patterns CD: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co. Inc., Boston (1998)

    Google Scholar 

  12. Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Software verification with BLAST. In: Ball, T., Rajamani, S.K. (eds.) SPIN 2003. LNCS, vol. 2648, pp. 235–239. Springer, Heidelberg (2003). https://doi.org/10.1007/3-540-44829-2_17

    Chapter  MATH  Google Scholar 

  13. Krüger, S., Späth, J., Ali, K., Bodden, E., Mezini, M.: CrySL: an extensible approach to validating the correct usage of cryptographic APIs. In: ECOOP, pp. 10:1–10:27 (2018)

    Google Scholar 

  14. Lam, P., Bodden, E., Lhotak, O., Hendren, L.: The soot framework for java program analysis: a retrospective. In: Cetus Users and Compiler Infrastructure Workshop (CETUS 2011), October 2011

    Google Scholar 

  15. Marrero, W., Clarke, E., Jha, S.: A model checker for authentication protocols. In: Rutgers University (1997)

    Google Scholar 

  16. Murata, M., Tozawa, A., Kudo, M., Hada, S.: XML access control using static analysis. ACM Trans. Inf. Syst. Secur. 9(3), 292–324 (2006)

    Article  Google Scholar 

  17. Naumovich, G., Centonze, P.: Static analysis of role-based access control in J2EE applications. SIGSOFT Softw. Eng. Notes 29(5), 1–10 (2004)

    Article  Google Scholar 

  18. Petrasch, T., Piskachev, G., Spaeth, J., Bodden, E.: Authcheck spring implementation. https://github.com/secure-software-engineering/authcheck/

  19. del Pilar Salas-Zárate, M., Alor-Hernández, G., Valencia-Garca, R., Rodríguez-Mazahua, L., Rodríguez-González, A., Cuadrado, J.L.L.: Analyzing best practices on web development frameworks: the lift approach. Sci. Comput. Program. 102, 1–19 (2015)

    Google Scholar 

  20. Strom, R.E.: Mechanisms for compile-time enforcement of security. In: Proceedings of the 10th ACM SIGPLAN POPL, pp. 276–284. ACM, New York (1983)

    Google Scholar 

  21. Sun, F., Xu, L., Su, Z.: Static detection of access control vulnerabilities in web applications. In: Proceedings of USENIX. USENIX Association, Berkeley (2011)

    Google Scholar 

  22. Xu, Y., Xie, X.: Modeling and analysis of authentication protocols using colored petri nets. In: Proceedings of the 3rd ASID, ASID 2009. IEEE Press, Piscataway (2009)

    Google Scholar 

Download references

Acknowledgement

We thank Abdul Rehman Tareen for extending the initial version of the tool to support all Spring annotations needed for complete analysis of the FredBet application. We also thank the reviewers for the constructive feedback and proposals for improving this paper. This research was partially supported by the Software Campus Program of the German Ministry of Education and Research and the research project “AppSecure.nrw - Security-by-Design of Java-based Applications” funded by the European Regional Development Fund (ERDF-0801379).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Goran Piskachev .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Piskachev, G., Petrasch, T., Späth, J., Bodden, E. (2020). AuthCheck: Program-State Analysis for Access-Control Vulnerabilities. In: Sekerinski, E., et al. Formal Methods. FM 2019 International Workshops. FM 2019. Lecture Notes in Computer Science(), vol 12233. Springer, Cham. https://doi.org/10.1007/978-3-030-54997-8_34

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-54997-8_34

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-54996-1

  • Online ISBN: 978-3-030-54997-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics