F
OWASP FIASSE [Donate]

OWASP OWASP OWASP

FIASSE FIASSE™ FIASSE™

Relentlessly Practical

Relentlessly Securable

A framework for Securable Software Engineering, providing practical guidance for Software Engineers to build securable applications and for Application Security to impact securable outcomes. Read the RFC!

(FIASSE is pronounced /feiz/ like 'the phases of the moon')

*Note: FIASSE is not an assurance framework. This is a new project and some concepts may seem odd. Because of this, your LLM may not get it either. Please share your honest thoughts and feedback because we want you both to understand. :)

Contributing to FIASSE

Join us in building a more secure software engineering future

Feedback

Read the docs: What do you like? What do you not like? What is missing? What is confusing? What do you think is ridiculous?

Please use the GitHub discussions to give feedback.

How to Contribute

We welcome contributions from everyone! Whether you're a developer, security professional, or just passionate about software security, there are many ways to get involved.

Check out our Contributing Guide to get started.

Contributing Guidelines

Thank you for your interest in contributing to an OWASP project. We welcome all contributions and appreciate your efforts to improve our projects.

Getting Started

To get started with contributing to any OWASP project, please follow these steps:

  1. Join the OWASP Slack workspace to connect with the OWASP community and get help with any questions you may have.
  2. Review the OWASP Projects page to browse the list of OWASP projects and find a project that aligns with your interests and skills.
  3. Visit the project’s individual page and repository to familiarize yourself with the project goals and objectives.
  4. Fork the repository and clone it to your local machine.
  5. Make your changes and review them locally.
  6. Submit a pull request with your changes.

Pull Request Guidelines

Before submitting a pull request, please make sure:

  1. Your changes are consistent with the project’s goals and objectives: this isn’t an assurance framework.
  2. Your changes are well-documented and follow the project’s standards and styles.
  3. Your pull request includes a clear and concise description of the changes you have made.

Code of Conduct

We ask that all contributors to OWASP projects abide by our Code of Conduct. This code outlines our expectations for behavior within the project community and helps us maintain a welcoming and inclusive environment for all contributors.

Thank you for your interest in contributing to an OWASP project. We appreciate your efforts to help us improve and grow our projects.

About OWASP FIASSE

Framework for Integrating Application Security into Software Engineering

What is FIASSE?

FIASSE (/feiz/) is an OWASP project that provides a software-engineering-centric approach to building securable software.

It combines practical software engineering methodologies with modern application security practices to create a framework that is effective and scalable.

Our Mission

To provide developers and security professionals with a practical, actionable framework to reduce friction and increase developer velocity in the context of application security.

We believe security should be relentlessly practical for software engineers. We also believe security teams have more to offer than secret test suites.

Key Concepts

The Securable Principle

There is no static state of "secure". Therefore unmaintainable code is at the apex of security risk.

Business Alignment

Security aligns with the business of making software by participation in existing development channels. This means abandoning the "shovel-left" anti-pattern in favor of clearer communication and earlier collaboration.

Participation over Assessment

Structured participation by Security in the development process yields better results than security assessment alone, which tends to be late and expensive.

Key Features

Design Language Security Extensions Prompt Engineering Guidance Keystone Practices Principle Driven Security ...

FIASSE Project

A methodology for integrating security into software engineering practices

Project Overview

FIASSE is designed to align people, process and technology with the business of making software. It is meant to address the issues of perceived conflicting goals and the "shovel-left" anti-pattern. It was developed under the premise that software engineers can create securable code without also learning to be hackers.

Project Goals

Primary Objectives

  • • Practical software engineering guidance for securable software
  • • Application Security Guidance for efficiency and scale
  • • Guided adoption of security practices

Target Audience

  • • Software engineers seeking practical security guidance
  • • Application security professionals wanting to align with development
  • • Teams interested in establishing a solid engineering basis for a security
  • • Educators aiming to teach secure software engineering practices
  • • Development orgs who have received an OWASP SAMM score of 0
 
Take your project from 0 to 1, including security with minimal impact to velocity.

Framework Components

Core Elements

  • • SSEM: the articles of security from a software engineering perspective
  • • Securable software engineering activities
  • • Guidance for effective vulnerability remediation

Supporting Artifacts

  • • SSEM influenced documents including checklists and templates
  • • Mapping and references pertaining to SSEM and related projects and frameworks
  • • Guidance for effective vulnerability remediation
  • • Primer/Introduction to FIASSE and SSEM with guide for teaching it
  • • A collection of use cases and patterns as ready-made starting points

Pillars of FIASSE:

FIASSE can be classified into three pillars or activity classes:

Expectations

Define security expectations clearly through requirements methods.

Implementation

Securable code driven by software engineering principles.

Assurance

Testing and feedback is applied strategically to reduce reoccurrence.

Note that these pillars are not meant to replace or map directly to the domains of OWASP SAMM or any other framework. They are simply meant to provide a practical structure for organizing the activities of FIASSE.

Securable Software Engineering Model (SSEM™)

A model that identifies fundamental and universal attributes that are the building blocks of securable software.

SSEM v1.0.1

What is SSEM?

Pronounced /si:m/ : A body of software engineering terms to describe the fundamental attributes of securable software. Together, these terms form a comprehensive model for understanding software security and a design language for communicating security concerns.

The SSEM is centered around being a design language and defining the core attributes that make software "securable" (see FIASSE RFC Section 2.1). These attributes allow SSEM to abstract security away from specialized jargon or exploit-centric views. For software engineers this enables them to confidently integrate security considerations as a natural part of their development work. It also helps security professionals identify how existing code meets security expectations and areas for improvement.

Core FIASSE Principles

  • The Securable Principle:

    There is no static state of "secure".

  • The Derived Integrity Principle:

    An application does not implicitly adopt unmanaged context, for example from the client.

  • Securable Attributes over Security Controls:

    Instead of focusing only on security controls or checklists, emphasize building software with inherent qualities - so it's easier to analyze, modify, test, and trust.

  • Participation over Assessment:

    We believe the Application Security team would be more effective if they actively participated in the development process rather than solely assessing, reviewing and reporting after the fact.

Key Benefits of applying SSEM

  • Maintainability:

    Code is easier to understand and change, reducing the risk of introducing new flaws over time.

  • Trustworthiness:

    Systems are designed so that critical facts (like prices, permissions, or states) are derived from trusted sources, not dictated by untrusted context or input.

  • Reliability:

    Applications keep running predictably under unfavorable circumstances and load.

  • Intention:

    With defined security objectives, development teams act with purpose instead of guessing about how to pass the next security assessment.

  • Transparency:

    Developers, operators, and responders can diagnose issues quickly and confidently, with full context and zero data leakage.

Optimized for Business

SSEM allows Application Security insight into development without derailing important development processes or adding toil.

Developer-Centric

Designed to align Application Security with software development principles and strategies.

Scalable Framework

Adaptable to projects of any size, from small applications to high-scale systems.

A Software Engineering Design Language

A design language is a set of shared terms, concepts, and patterns that helps a team communicate ideas, expectations, and standards consistently. In software engineering, a design language provides a common vocabulary for describing system qualities, architecture, and implementation details. This makes it easier to collaborate.

In software engineering, a design language ensures clarity and consistency. It simplifies decision making by providing well-defined principles. It embeds security concepts into familiar engineering terms. This empowers developers developers to build securable systems without needing deep security expertise.

By adopting SSEM as your software engineering design language, you adopt a pre-built shorthand for all roles (product, development, security, management...) that carries with it the essence of security culture.

Tenants of FIASSE

These are the core principles that guide software engineers in implementing securable software engineering practices using the FIASSE framework.

The Securable Principle in FIASSE says that software is never in a final, fixed state of “secure”; instead, it must be built so it can be secured and kept secure over time. Security is treated as an ongoing property of the system’s design, code, and operations rather than a checkbox reached after tests or reviews.

Fundamentally, this means:

  • Emphasize maintainability, trustworthiness, and reliability as core engineering attributes that support long-term security, rather than relying only on episodic security assessments.
  • Design architectures, codebases, and workflows so that future security fixes, hardening, and feature changes can be applied safely and predictably, without destabilizing the system.

The Derived Integrity Principle in FIASSE states that an application must not implicitly trust or adopt unmanaged external context, such as client-supplied data or other untrusted inputs, when making critical decisions. Instead, it should derive important facts (like identity, permissions, pricing, and state) from authoritative, controlled sources to preserve integrity and reduce the risk of security breaches.

In practice, this means:

  • Treating all external inputs (client requests, headers, query parameters, cookies, webhooks, events) as untrusted until validated and normalized.
  • Recomputing or looking up sensitive values on the server side (e.g., roles, discounts, balances) rather than accepting them from the client or other unverified context.
  • Designing flows so that application behavior depends on trustworthy, server-controlled state, thereby avoiding hidden or accidental trust in anything the attacker can influence.

The practice of converting all incoming data into a well-defined, validated form before it is used anywhere in the system. This supports the Securable and Derived Integrity principles by making sure that every decision is based on normalized, predictable input instead of raw, inconsistent, or attacker-shaped data.

  • All external inputs (HTTP parameters, headers, JSON bodies, files, events, etc.) are first normalized to a canonical representation (types, encodings, formats) and validated against strict expectations before any business logic runs.
  • Once canonicalized, only this trusted internal representation flows through the system, so downstream logic does not need to re-handle every edge case of raw input.

In practice, this means:

  • Define clear schemas and allowed formats for all inputs, then enforce them at trust boundaries (e.g., API gateways, controllers) so the rest of the code works with strongly typed, normalized objects rather than raw strings.
  • Use canonicalization to reduce ambiguity and attack surface (for example, around encodings, path forms, or duplicated fields), making it easier to reason about integrity, authorization, and logging in line with FIASSE's securable design goals.

How the system works should be observable and understandable so engineers and stakeholders can see what it is doing, why it is doing it, and how it handles data. In software engineering terms, it pushes teams to design systems whose behavior, decisions, and security posture are visible rather than opaque, which directly supports securability and trustworthy operation.

  • Transparency means exposing clear, contextualized signals about system behavior (e.g., logs, metrics, traces, decision reasons) so people can detect misuse, misconfiguration, and security drift early.
  • Instead of hiding complexity behind black boxes, the system surfaces enough structured information that engineers can reason about integrity, authorization, and failure modes.
  • This attribute is not entirely available to the end user in order to maintain confidentiality.

In practice, this means:

  • Build in consistent, meaningful observability: structured logging, traceable request flows, clear error reporting, and auditable security-relevant events, all tied to business context.
  • Use this transparency to align AppSec and development: shared views of state, defects, and behavior.

Resources & Documentation

Access comprehensive documentation, tools, and community resources for implementing FIASSE

GitHub Repository

Access the complete FIASSE framework and SSEM documentation

The main repository contains the RFC, examples, and detailed documentation for securable software engineering practices.

Active Development CC BY-SA 4.0 License Community Driven

OWASP Project Page

Official OWASP project documentation and community resources

Visit the official OWASP project page for comprehensive documentation, community discussions, and the latest project updates.

OWASP Official Documentation Community

Join the Community

Connect with FIASSE community and contribute to the FIASSE project

Get Involved

  • • Contribute feedback
  • • Create a Pull Request with correction or addition

Contact Information

Slack: #project-fiasse

GitHub: @xcaciv/securable_software_engineering