Noutați

Healthcare Sector Application Security: Preventing Threats from Becoming Attacks

Published March 17, 2021 WRITTEN BY MICHAEL SOLOMON Michael G. Solomon, PhD, CISSP, PMP, CISM, PenTest+, is a security, privacy, blockchain, and data science author, consultant, educator and speaker who specializes in leading organizations toward achieving and maintaining compliant and secure IT environments. Software security isn’t a state of being, or even a single action; it is a process, and one that requires more than just hardening your software. The year 2020 saw a dramatic rise in cyberattacks, with many attacks specifically targeting IT infrastructure. Any attack that compromises an IT environment interrupts normal operations, which can effectively interrupt critical software operations. Regardless of how secure your software is, if you can’t access critical data or services, your application won’t be available to authorized users. And since availability is one of the “big three” tenets of security, unavailable effectively means insecure. Ensuring software security is an organic and community-driven effort. For the most effective result, focus on actions that provide benefits for your software and its surrounding environment.  The last thing you want to do is constantly put out fires. A better approach is to get ahead of the fires. Learn to anticipate attacks and take proactive measures. Here are some ways to create a balanced threat-handling environment to make your software more secure. Responding to attacks The first step to handling any attack is to recognize that there is an attack being carried out. That may sound simple, but in many cases it isn’t. Non-disruptive attacks like data exfiltration may go unnoticed for months. Security is challenging even under normal circumstances, and the problem of handling attacks is even worse given the pressures of today’s realities.  Organizations of all types were put under more pressure when the new realities of covid-19 changed the way people work and interact. But few sectors were impacted more than healthcare. In addition to changes in the workforce and patient interaction protocols, covid-19 stretched every aspect of delivering quality healthcare. IT service and security concerns were just one part of the bigger problem. And in the midst of all the additional pressure, ransomware attackers sensed an opportunity and launched an unprecedented number of attacks against the healthcare sector. For example, in October 2020, the University of Vermont (UVM) Medical Center suffered a successful ransomware attack that ended up disabling all online systems for several weeks. At first it wasn’t evident that the interruption was an attack, but once the nature of the attack did become clear, UVM personnel searched for nearly two hours before they found a file that contained a note from the attackers. CNN picked up on the alarming statistics and published a story about the UVM Medical Center attack, and the Cybersecurity and Infrastructure Security Agency (CISA) published an advisory warning of the increasing number of ransomware attacks on healthcare organizations. UVM had taken some precautions to harden their systems, but the attackers were still able to succeed. While there is no guaranteed approach that leads to an impenetrable defense, there are ways to make your organization far less vulnerable. There is a constant need to iterate over updated threat information to stay ahead of the attackers. The goal is to approach the problems of security in parallel. If all you do is respond when you receive a new attack alert, you’re […]

Read More

VCL Grid goodies #3

Today, we have a look at another often overlooked but yet convenient feature of TAdvStringGrid (and also TDBAdvGrid) from the TMS VCL UI Pack: HoverButtons! Activating HoverButtons With the HoverButtons, you can quickly setup actions to be performed on rows in the grid where the mouse is hovering. It is enabled by just setting grid.HoverButtons.Enabled = true. This means, that when the mouse hovers over a row, a small panel hosting buttons will appear at a column of choice in the grid. This column is set with grid.HoverButtons.Column. WIth the property grid.HoverButtons.Position, you can specify in what relative position with respect to this column the panel should appear.  Configuring the buttons  To add any number of buttons on the panel, the collection grid.HoverButtons.Buttons can be used. This is a collection of the type THoverButtonsCollectionItem and allows to set the caption of such button, an imagelist ImageIndex, a picture, the hint, enabled state of the button … Just add any number of buttons needed for different actions to be performed on the row. Reacting to HoverButtons clicks When a button on the HoverButtons panel is clicked, this triggers the event OnHoverButtonClick returning the index of the button clicked. Performing the different actions for the different button clicks as such is simple: procedure TForm1.AdvStringGrid1HoverButtonClick(Sender: TObject; ARow: Integer; AButton: THoverButtonsCollectionItem); begin case AButton.Index of 0: begin // select the entire row and copy it to the clipboard AdvStringGrid1.SelectRows(ARow,1); AdvStringGrid1.CopySelectionToClipboard; end; 1: begin // invoke the inplace editor for the 2nd column cell AdvStringGrid1.Col := 2; AdvStringGrid1.ShowInplaceEdit; end; 2: AdvStringGrid1.RemoveRows(ARow,1); end; end; Hovering & hints Now we are discussing hovering, we can as well highlight another small but neat feature of the grid and that is to show the content of cells via a hint when the mouse hovers the cell. This is activated by setting grid.ShowHint = true as well as grid.HintShowLargeText = true. Whenever the text does not fit in the size of the cell, the grid will automatically display it as hint text for the cell. As a standard Delphi hint is just a single line of text hint, we add the TMS THTMLHint component on the form. This will replace the standard Delphi VCL hint and this hint can display multiple lines of text. The THTMLHint component also offers a MaxWidth property with which we can set the maximum width of hints to be displayed. And of course, if the text exceeds this MaxWidth, it will be rendered wordwrapped (and even formatted) in the HTMLHint. No code needs to be written for this. Drop a THTMLHint on the form, set HTMLHint.MaxWidth property and set the grid properties grid.ShowHint = true and grid.HintShowLargeText = true. The effect can be seen in this recording. Want more goodies? Looking for more interesting features in the VCL TAdvStringGrid or in other components uncovered? Let us know what you want to see demonstrated in a next episode!

Read More

7 Database Security Principles and Practices

Published February 24, 2021 WRITTEN BY ED TITTEL. Ed Tittel is a long-time IT industry writer and consultant who specializes in matters of networking, security, and Web technologies. For a copy of his resume, a list of publications, his personal blog, and more, please visit www.edtittel.com or follow @EdTittel Few, if any, other repositories for data and meta-data within an organization exceed the importance and value of its databases (DBs). In fact, databases often provide a home for an organization’s personnel information, financial data of all kinds (pay, taxes, purchases, income, and other monetary transactions), and data describing its physical inventory and assets. Thus, it’s not unfair to observe that most of the data that defines “who, what, where, when, and why” for an organization is likely to reside in a database. All of this goes to explain why DB security is vitally important to an organization’s health and its ability to conduct business. Principles that drive DB security are well-understood In the realm of database security, informed professionals understand that while basic security principles definitely apply, they can (and often do) take a database-specific slant. Thus, any enumeration of such principles will often play to the special circumstances involved in defining database metadata (often called a “database schema” to emphasize its scope and coverage for some specific and related collection of data) and in setting up and managing a database engine of some kind (which may be on-premises, in one or more clouds, and various permutations on those themes). That said, here are how some of these basic principles play into the world of database security. 1. Principle of least privilege (aka PLP) In general, PLP means providing the minimum of access rights and user privileges necessary to perform some specific task, run an application, or work with database contents, software or infrastructure elements. As with other PLP situations, periodic review to avoid “privilege creep” (gradual accumulation of more rights and privileges than are really needed) is essential. But in general database designers and database administrators (DBAs) should grant only rights and privileges that users, applications, and services need, and no more than that. 2. Platform hardening Across the board, platform hardening requires a deep understanding of a platforms vulnerabilities and its attack surfaces, so that organizations can take pre-emptive measure to address known potential weaknesses. Among other things this means uninstalling or disabling features or services that you don’t need or use. It also means resolutely enforcing password discipline, especially when it comes to changing well-known passwords and their associated accounts (best to delete them if you don’t use them). Make sure all security controls that the database engine offers are enabled, and set to maximum tolerable levels. Checks on hardening success are covered further in the upcoming “monitoring and auditing” item. 3. Data protection Data and metadata for the database should be encrypted both in motion and at rest (and this applies to backups and snapshots, too). Data and meta-data should include security tags or classifications to permit full-blow security policies and protections to apply. Data protection also includes monitoring its access and use, export and exfiltration, especially wholesale copying activity not readily explained or understood. 4. Monitoring and auditing The old saying goes “If you don’t monitor it, you can’t measure it.” This applies equally to […]

Read More

Introducing FNC Grid Excel Bridge components

In the last weeks, we’ve been working on a component to allow you to import and export FNC Grids to the xlsx file format. We’ve also used the opportunity to rename the existing “Grid Filters” and “FMX Grid Filters” to “VCL Grid Excel Bridge” and “FNC Grid Excel Bridge” because the word “Filter” has a different meaning in a grid. We hope the new “Bridge” naming proves less ambiguous. Same as the “Filters” before, the new Bridge components are free, but they require to have both TMS FNC UI Pack and TMS FlexCel licenses. You can get the components here: And the documentation is available here: So what is the state now if you want to export or import a grid to/from Excel?  We have the following choices: (VCL Only) You can use StringGrid.SaveToXLS and StringGrid.LoadFromXLS. Those methods will use OLE Automation under the hood, and so they require that Excel is installed in the machine. Because they need Excel, they can only work on Windows. You can use TAdvGridExcelIO (VCL), TTMSFMXGridExcelIO (FMX) and TTMSFNCGridExcelIO (FNC). Those components use an older trimmed-down FlexCel 3 to do their job. Because they use FlexCel 3, which predates the XLSX file format, they can only work with XLS files, not XLSX. You can use the “TMS Grid Excel Bridge” components. Those components use an existing  FlexCel 7 to do the work, and so they can export to xls and xlsx, but also HTML and PDF.  Because they require a FlexCel license, they can access the full FlexCel behind it, to do extra customization. Just as an an example: You could add conditional formats to the generated files, as shown in the example here: https://doc.tmssoftware.com/grid-excel-bridge/fnc/guides/user-guide.html#customizing-the-export. Note: FNCGrid already supports exporting to PDF and HTML natively, you don’t need the bridge components for that. But if you are customizing the xlsx output, you might want to have a PDF or HTML exported with those customizations, and that’s where the Bridge’s exporting to HTML and PDF can be useful. Up to now, the “Bridges” had support for VCL Grids and FMX Grids. With the release of FNC Bridge, we are extending the first-class Excel exporting and importing to FNC. Note that in FNC, we only support VCL and FMX at the moment (all platforms). We can’t support Lazarus or WebCore because FlexCel doesn’t support them yet. So to finish this small post, I’d like to show how it works. We’ll try adding export support for the FNC Grid in the “ClientDataset” demo. This is the grid: We dropped a TTMSFNCGridExcelExportComponent, and wrote the code: TMSFNCGridExcelExport1.Export(‘r:test.xlsx’); And we got this result: The checkboxes work in Excel, they are not images. But they will be exported as images to HTML and PDF. Next, we tried with HTML: TMSFNCGridExcelExport1.ExportHtml(‘r:test.html’, THtmlExportMode.SingleSheet); And we got: Finally we went for the PDF export. We could also have tried the one-liner, but in this case it would end up with 2 pages. The grid is too wide and the right part of it goes to the second page. But here is where the power of having full access to the FlexCel engine can help. We could export this file to xlsx, then set the print options in the xlsx file to fit to one page, and only then export to PDF: var xls := TXlsFile.Create(1, […]

Read More

New Delphi productivity developer tool from new TMS FNC partner

It is with great pleasure that we announce today there is not only a new partner in our TMS FNC Partner program but also a new innovative productivity developer tool for Delphi developers to manage better the workflow with testers & end-users for VCL and FMX applications. New TMS FNC Partner We are glad to welcome Neil Laskowski from SwiftExpat in the TMS FNC Partner program. The TMS FNC Partner program is all about supporting Delphi developers offering valuable tools built upon our FNC framework. If you also develop tools or components based on the FNC framework, have a look at the our FNC Partner program! New productivity developer tool Runtime Toolkit from SwiftExpat helps developers to gather information & feedback from testers and end-users in a structured way and get and apply this feedback to the applications. When running the application, the users can enable a runtime inspector and modify any components property on forms and immediately see the effect of the update visually on the form. At the same time, the details of the update are stored in a file together with a form screenshot before and after the update and this can be sent back to the developer(s). As such, this is an ideal tool to let users send back corrections for possible language related issues, UI colors and UI control layout issues. And this is for Delphi developers building VCL applications as well as FMX applications. A closer look at the capabilities of Runtime Toolkit This is a comprehensive overview of the features of Runtime Toolkit: Inspect Feature-rich components are hard to get right (have you ever missed a setting?) RunTime ToolKit gives you access to component properties to diagnose defects. Apply property changes and see the effect realtime to eliminate guesswork. Marshal will capture the changes in a session for you to review offline. Fine Tune RunTime ToolKit addresses the challenges faced with user interface elements such as fine tuning color schemes, ensuring translated fields are displayed properly, and resizing controls. Engage Clients expect to see changes quickly. Modifying at runtime can get you valuable feedback when engaging with a client. Implement Marshal was designed around ease of implementation. With the drag of a button you place the Marshal control in your application and instrument your existing code. Marshal creates its own form without cluttering your application form. Diagnose Inspecting components at runtime allows you to diagnose configuration or data driven behavior. Inspect the items collection to ensure the data was loaded and determine if the item is hidden. Record Capture the details and integrate the fixes into your source code immediately or at your own pace. Marshal records each change to component properties in a session which can be reviewed offline in Caddie. Compare Before and After Marshal automatically captures screen shots before and after property modifications. Visually compare the details of the form before and after a change. Target Deployment Deploy instrumented code during testing or to beta users. Marshal can be controlled using build configurations to target specific builds. Vendor Agnostic Designed to work with controls from any vendor, Marshal is fully functional in an application that uses no other FNC controls. Partnering with FNC leverages technologies to deliver better tools. Visit SwiftExpat and get started You can visit the Runtime Toolkit […]

Read More

High performance tree list in FMX

Intro The multi-device, true native app platform The FireMonkey® framework is the app development and runtime platform behind RAD Studio, Delphi and C++Builder. FireMonkey is designed for teams building multi-device, true native apps for Windows, OS X, Android and iOS, and getting them to app stores and enterprises fast. source: https://www.embarcadero.com/products/rad-studio/fm-application-platform FMX (FireMonkey) released in 2011 and shortly after we delivered a first set of components. Today, we want to show you the TTMSFNCTreeView component, a component with high performance virtual and collection-based modes able to deal with millions of nodes. Features Below is a list of the most important features the TTMSFNCTreeView has to offer. The features are not limited to this list, but this will give you a quick insight on what we offer to be able to create a hierarchical tree list in FireMonkey. Multi-line HTML formatted text Various built-in column editors Multi-column support Fixed and variable node height High performance virtual and collection-based modes Multiple events for custom drawing and customization of default drawing Multiple events for all kinds of interactions such as editing, expand / collapse and selection Auto-sizing and stretching of columns Mouse and keyboard interaction Nodes with checkbox, radiobutton, image, disabled nodes Nodes extending over multiple columns Sorting, Filtering Clipboard support Keyboard lookup Reordering Drag & Drop Learn More! Want to learn more about what the TTMSFNCTreeView can do? Here is a video that highlights some of the above features through a demo application. Download & Explore! The TTMSFNCTreeView component is part of the TMS FNC UI Pack, which, on top of FMX, also offers the ability to write your code once and target other frameworks (VCL, LCL and WEB). You can download a full featured trial version of the TMS FNC UI Pack and start exploring the capabilities of the TTMSFNCTreeView component. Coming up The TTMSFNCTreeView is the third of a series of components that is covered to empower your FMX (FireMonkey) developments. We started the series with a general overview of the most important components that we have to offer, followed by the TTMSFNCRichEditor and the TTMSFNCPlanner. Next up will be the TTMSFNCKanbanBoard component, a highly configurable workflow visualization component.

Read More

Compiling 1 million+ lines of code with Rad Studio 10.4.2

One of the things that intrigued me about the new Rad Studio 10.4.2 release was the improved compiler performance. Because Delphi is a fast compiler –we all know that– but hey, it can always be faster. And 10 seconds in every compile end up counting for a lot of time over the days. So I tried it compiling FlexCel and its test suite. Over a million lines of code, and actual code. This isn’t a synthetic benchmark with a single unit and a million lines of “WriteLn(‘Hello world’);”. We have lots of generics, a little more than 3000 units, multiple includes, cycles of units that use themselves recursively, and complex dependencies.  It turns out that spreadsheets require a lot of code. Below you can find a small video, with Rad Studio 10.4.2 on your left and 10.3 on your right. I normally wait a while before adopting a new Delphi version, but given all the time I spend compiling FlexCel, I migrated to 10.4.2 yesterday. This is the type of improvements I want from Embarcadero, and I hope they deliver more.

Read More

Real-world Delphi projects out of this world…

How much of our daily life here on planet Earth is impacted by running Delphi code is beyond imagination. Whether it is controlling trains on the French railway system, contact tracing in the COVID19 pandemic in Poland, salary calculation and reporting in Germany, tax invoice approvals in Brazil,… the list is endless. But Delphi’s impact already reached out beyond planet Earth with several projects of the NASA and this week we stumbled on the social media post from Dave Akerman mentioning it was Delphi based software where several TMS components were involved, that was used to produce the sophisticated coating for the Perseverance parachute that was instrumental in its highly critical but eventually successful and safe landing on Mars on Feb 18: As we chatted, I found out that David had a similar educational background as me in electronic engineering, also loves car racing, worked together with a very good friend of mine having a company Theys Industrial producing electronic PCB’s 2km away from here and I learned that the fabrics for the Perseverance parachute were produced by the company Picanol that is like 20km driving from where the TMS headquarters are. Talking about coincidences…Well, that was enough a reason to get in touch with David and have a chat about our passion we all share: software development with Delphi! Our colleague Holger Flick produced this video interview with David, where David tells exciting stories of how he got into software development, how he used Delphi for controlling machines precisely mixing chemicals, how he also uses Delphi for his hobby of tracking weather measurement balloons (where TMS WEB Core plays a role in), how he uses the FireMonkey framework for writing software for a Sony watch and so much more… I’m sure you will enjoy this video interview between two passionate Delphi software developers and be inspired to also do cool things with Delphi!

Read More

Release Announcement: GXT 4.1 is here!

February 23, 2021 | Kirti Joshi The Sencha team would like to announce the general availability of version 4.1 of GXT, Sencha’s comprehensive Java framework for building web apps using the GWT (formerly Google Web Toolkit) compiler. With GXT, developers can write apps in Java & compile their code into highly optimized cross-platform HTML5 code. The GXT 4.1 release addresses the top customer requested features including Support for Java 11 and Google Web Toolkit (GWT) version 2.9.0. More about the New Features Support for Java 11 & GWT 2.9 Google Web Toolkit (GWT) is an open source set of tools that allows front end developers to create browser-based JavaScript applications using Java APIs and widgets.  With GXT 4.1, users can take advantage of writing frontend and backend code using Java 11 and GWT 2.9. GWT 2.9 offers many improvements for both Java emulation and runtime fixes, and provides additional benefits in emulating Java. Writing code with Java 11 is easier. Devs can expand to the latest syntax while taking advantage of the Java SDK and streamlining their code builds.   GWT 2.9.0 was released in May 2020. Check out more details in the GWT Project Release Notes. How do I access GXT 4.1? Current customers can download GXT 4.1 using the following two options: Get access to the zip version through the Sencha support portal Download the new version through the Maven repository now hosted on MyGet. Customers can request MyGet access by submitting a ticket on the Sencha support portal and our support team will promptly guide you through this quick process. Not a GXT customer?  The fully featured GXT is available to try for free. New users can try GXT 4.1 with a free 30-day trial. Check out how the complete library of 140+ UI components can speed up your development cycles! Download GXT 30-day free trial

Read More

Cybersecurity Trends in Fintech

Published February 17, 2021 WRITTEN BY MICHAEL SOLOMON Michael G. Solomon, PhD, CISSP, PMP, CISM, PenTest+, is a security, privacy, blockchain, and data science author, consultant, educator and speaker who specializes in leading organizations toward achieving and maintaining compliant and secure IT environments. The year 2020 will go down in history as being a year of uncomfortable changes. Just about everyone was forced to approach aspects of personal and professional life differently, from buying groceries to conducting business to maintaining safe interactions with others.  Fortunately, existing technology and service offerings allowed us to make adjustments and work through the changes. Zoom went from being a useful way of meeting virtually to a staple of business, education and social interactions. Likewise, the financial technology industry, often called fintech, expanded products and services to make contactless financial exchanges safer and more accessible. But as Fintech’s popularity grew in 2020, so did its attack surface. Fintech is the industry that provides individuals and businesses with the technology to carry out financial transactions. If you’ve ever sent someone a payment using Venmo, accepted a payment card using your smartphone, or applied for a loan online, you’ve consumed fintech services. In short, fintech’s goal is to leverage technology to compete with, or even replace, traditional financial services by making them cheaper, easier and more accessible. Smart devices and nearly universal internet access make the process of carrying out financial transactions in a socially distanced environment easy. But to keep fintech’s growth on track, cybersecurity has to stay ahead of the attackers. Fintech companies can’t afford to lose their customers’ trust. Let’s look at the most important cybersecurity trends in fintech that are needed to keep that trust. Technology reliance creates risk Any transition to a greater reliance on technology introduces risk. Additional devices and software can provide opportunities for attackers to find and leverage weaknesses. The COVID-19 pandemic punctuated the importance of touchless and socially distanced interactions. One of the most common pre-COVID-19 close-proximity interactions was paying for products and services. Although touchless and remote payment options were available prior to 2020, the pandemic made touchless payments a welcome feature. The number of suppliers and consumers who used touchless payments for the first time skyrocketed in 2020. Any industry-wide growth naturally attracts cybercriminals to prey on a new group of potential victims. According to a recent Fintech News article, attacks are up across the industry and included a 600% increase in phishing attempts and a 630% increase in cloud-based attacks. One reason for such large jumps is the increased use of personal devices to engage in financial transactions. Personal devices often aren’t managed to be as secure as many legacy devices owned by service providers. In addition to facing increased attack frequencies and veracity, many fintech companies are still in the process of digital transformation. While startups may begin their commercial lives with new infrastructure and software, most fintech companies still rely on some legacy devices and software. Each type, or layer, of software, devices and infrastructure means the potential for security vulnerabilities to exist. While it is possible to upgrade hardware devices with the latest models, software poses a bigger challenge. Even startups go through a software development process that results in code written using outdated standards or best practices. It isn’t possible to write […]

Read More