Using a temp anonymous account because I post regularly on stackoverflow/here under my real name.
So I got a new employer the other week as a software engineer. Friendly team, good employer. No issues there. The issues come from the code itself; it was made by 2 'self made guys' in the past plus another guy who left the company a few months before I joined. The only thing you need to know about the business logic is that it is a very sensitive personal data that of course under no circumstances can be allowed to leak.
I've studied the code and was appalled by what I saw. As in, the only reason the application hasn't been hacked yet is because nobody bothered to look for it. And to make it clear; there are definitely bad guys who would be very interested in abusing this system for their own practical benefit. This isn't a 'crappy app but nobody cares'. It's full of holes everywhere and absolutely bug ridden. Even worse; when something goes wrong the user isn't even informed of this, nor is the error logged. So if a user creates a business object and this fails, the user won't know this until they look for their newly created object and find out it isn't there.
try { save(newItem); } catch(exception ex) { // do nothing }
Even worse, every controller function - like API calls - aren't checked if the user has the correct permissions to get the data. Meaning if you're logged in and know what you're doing, you can do whatever you feel like, even though this environment desperately need a NoTrust-like implementation.
The deployment servers aren't much better. The test and production server are one and the same. On the server over 3 dozen console applications run in the background. "Yes we have some lag every now and then randomly where all apps would run slower", they said. And I almost know for a fact that the test/production applications aren't separated like they should be; I am 99% certain at least one of these production apps is interfacing with a test version of a console application.
Not to mention everything is written in outdated technology, Framework 4.5.x for example.
So, here comes the conundrum; if something goes horribly wrong - and it will sooner of later when the first wise guy figures out the weaknesses of this app - I will be of course on the chopping block. And everything needs to be rewritten in modern technology with a proper tech stack, the correct security implementations and proper error handling. I am inclined to say this isn't up for debate given the sensitivity of the data stored there and the seriousness of how the B2B clients use this application. How can I make this absolutely clear to my non-coder employer, given the fact I only started a week ago? (I do have 4+ years of experience under my belt though)
--
UPDATE I've taken Benjamin's solution and made an analysis of their systems, then presented it to management at my insistence. They were interested to see what I saw, so I told them in plain language the system was wide open for hackers. That they could come in from dozens of angles and what they would be interested in doing, and that I could not fix it without revamping the entire thing. I also explained in plain language to them why the entire system was so laggy and buggy and the fundamental problems that were behind it. Sales/Management actually understood what I was saying and have given me permission to redesign/rebuild the entire thing, no further questions asked, and just said I needed to tell them what I needed. Hurray!