Blog
Stay updated with our latest thoughts on software engineering, cybersecurity, and artificial intelligence.
Stay updated with our latest thoughts on software engineering, cybersecurity, and artificial intelligence.
Posted on March 13, 2024 In the constantly shifting world of software security, trends fade as quickly as they emerge. Drawing from over two decades in the field, the author identifies three areas where mainstream security guidance falls short. Security Shouldn’t Be a Gate—Or Should It? The old security-as-gatekeeper model restricted release cycles, but the pendulum swung too far the other way. Security serves as a quality checkpoint enabling informed decisions. ...
Posted on March 6, 2024 MyOwnTutorial is a flexible educational platform where each user plays a key role in system security. Domain-driven design enables tailoring the User Management system to specific roles, emphasizing ubiquitous language that enhances clarity, security, and operational efficiency across the institution. The Significance of Ubiquitous Language in User Management In MyOwnTutorial, adopting ubiquitous language ensures all stakeholders—developers, educators, and administrators—share a unified understanding of roles and operational parameters. This shared language strengthens the security framework. Precisely named events such as “Teacher Onboarding” and “Learner Suspension” establish clear, secure processes that minimize ambiguities potentially exploitable by bad actors. Meticulous naming and management of these events form foundational security defenses. ...
Introduction When developing microservice applications like “MyOwnTutorial”, a critical early decision involves choosing between a consistent technology stack across all services or allowing each service to use its own stack. Benefits of a Consistent Technology Stack Easier Development and Maintenance - Engineers need proficiency in only one set of tools and languages, simplifying both development and uniform updates across services. Simplified Onboarding - New team members need to learn a single stack to contribute to any application component. ...
The MyOwnTutorial project will employ seven core architectural principles to enhance security and reduce total cost of ownership. Domain-Driven Design (DDD) “DDD focuses on modeling the software to match the domain it’s meant to serve, emphasizing Bounded Contexts and Ubiquitous Language.” In educational software, this includes Attendance Tracking, Course Creation, and Grades. Using business language enables security concerns to be addressed with familiar terminology. However, domain modeling requires significant upfront collaboration between developers and domain experts. ...
Note: This content was AI-generated as part of a test. In an era of mounting technological dependence and accelerating cyber threats, security professionals frequently encounter the excuse that vulnerabilities need not be addressed if they appear unreachable or difficult to exploit. This perspective is fundamentally flawed. The Problem with “Not Reachable, Not Exploitable” This reasoning creates a false sense of security and masks deeper vulnerabilities in an organization’s security posture. ...
Introduction In software development and security, reachability and exploitability often influence vulnerability management decisions. However, relying on these factors to delay prioritizing or reporting security findings is fundamentally flawed. Using such justifications amounts to “lying to those who want to be lied to.” The Flawed Test of Reachability and Exploitability Testing methodologies based on immediate reachability or exploitability are inherently flawed. The Log4Shell incident exemplifies how dynamic code execution creates false negatives. Modern software’s complex data flows obscure attack pathways, leading to underestimating vulnerability reach. Dismissing findings based on these tests merely obscures risk rather than eliminating it. ...
Core Values Overview Core values serve as “fundamental principles that serve as the bedrock for any design, establishing the essential boundaries and guidelines within which a product must function.” The MyOwnTutorial platform is built on five essential core values: 1. Student Focus The student experience remains paramount. Teachers, administrators, and stakeholders exist to enhance the student’s learning journey. Every feature and policy is evaluated through its impact on students. 2. Privacy by Design Privacy cannot be secondary. All data—from grades and lesson plans to student work—receives the highest confidentiality treatment. Information remains inaccessible unless explicitly designated for sharing. ...
Overview This tutorial addresses the challenge of creating meaningful software examples that bridge the gap between basic tutorials and real-world complexity. Most software security tutorials use overly simplistic examples like to-do applications or focus exclusively on high-value financial data. Purpose The authors aim to demonstrate how integrating security principles—even when not legally mandated—can lead to cleaner implementations and lower total cost of ownership. Using an online educational platform as the example, the tutorial examines three categories of security needs: ...
Overview Creating trustworthy software demands deliberate attention to three core security principles: availability, integrity, and confidentiality. The article outlines practical habits developers can adopt throughout the software lifecycle. Building Phase Practices Threat Modeling involves considering potential failures and appropriate responses. Coding Standards establish consistency but require careful balance between enforcement and practicality. Code Reviews leverage peer expertise, though effectiveness depends on reviewer skill. Code Quality Scans automate detection of poor practices. SAST (Static Analysis Software Testing) identifies vulnerabilities in source code quickly, though complexity and framework support present challenges. Various testing approaches—unit tests, integration tests, and end-to-end testing—validate functionality at different levels. ...
All software design decisions influence security outcomes. Multiple factors affect the overall security posture of an application. Key Design Considerations Programming Languages Each language carries distinct security tradeoffs. C and C++ provide performance advantages but introduce memory management vulnerabilities like buffer overflows. Java prevents those errors but may retain sensitive data in memory longer than intended. DRY Principle “Don’t Repeat Yourself” promotes code reuse, reducing the need to fix vulnerabilities multiple times. Leveraging existing solutions—such as established encryption libraries—prevents recreating complex, mathematically intensive systems. ...