3 ms·
> Context matters: That's a CLI script. Ahh, my bad, it's still an odd way of doing this. And it's vulnerable to injection via the prompt parameter (not that i
by orf 10y ago
> Context matters: That's a CLI script.
Ahh, my bad, it's still an odd way of doing this. And it's vulnerable to injection via the prompt parameter (not that it matters, but...). That pattern is repeated in a couple of places like the updater.
> Because when Airship was started, everyone insisted on backwards compatibility for PHP 5 and I wanted to make use of strict typing. The master branch includes a static analyzer as part of continuous integration.
Strict typing is great, but you don't have to write your own framework to benefit from it. Is PHP 5 not compatible with modern frameworks?
> Have you seen what I've done to PHP frameworks over the years?
> https://scott.arciszewski.me/open-source/ https://scott.arciszewski.me/open-source/
> https://paragonie.com/security/advisories https://paragonie.com/security/advisories
> I wasn't in a hurry to pick up other peoples' technical debt.
Indeed there are some vulnerabilities found in PHP libraries in those pages, but hardly enough to warrant your position.
You aren't in a hurry to pick up others technical debt, but you rush ahead and create your own?
All I'm saying is you put out a post saying you designed this from the ground up to be secure, but did you really? Is rolling your own ORM and homegrown framework secure? Says who?
Yeah, you use modernish stuff like csp etc, but the code is still a typical PHP spaghetti of mixed concerns and hard-to-audit flows. It's not really a CMS, it's a NIH syndromed framework with a CMS on top of that. That's a typical source of bugs.
> That's simply a paranoia/convenience feature. If you've got a better way to automagically convert filename.txt into filename-5.txt if filename.txt, filename-2.txt, filename-3.txt, and filename-4.txt already exist, I'm all ears.
It could be done in a single query, I'm on my phone so i cant write you an example right now.
> 11. I don't see a problem with this?
> 12. I don't see a problem with this either.
They are both framework functions, and you wouldn't be writing them if you had written this from the ground up to be secure IMO. It's kind of code smell. Using a whitelist is good though.
- CiPHPerCoder 10y ago> Indeed there are some vulnerabilities found in PHP libraries in those pages, but hardly enough to warrant your position. Those are all my research findings. :P > Is rolling your own ORM and homegrown framework secure? Says who? Says the person who routinely finds exploitable vulnerabilities in other PHP frameworks and content management systems. There will always be things to improve. Feel free to try to find an exploitable security hole. > It's not really a CMS, it's a NIH syndromed framework with a CMS on top of that. That's a typical source of bugs. It's not "NIH syndrome" it's "I don't trust any of these people to write a secure framework and I have the experience to justify this concern". > They are both framework functions, and you wouldn't be writing them if you had written this from the ground up to be secure IMO. Escaping-on-output still implies that escaping happens.
- orf 10y ago> Those are all my research findings. :P Yes, and well done! But there are not many framework specific issues you've found. None in Laravel for example. Is your homemade framework superior to Laravel? If so, how? > Feel free to try to find an exploitable security hole. I can't be bothered to learn your home grown half framework so i understand the convoluted logic. That's the point. There are vulnerabilities in there, I've seen enough code like that to almost guarantee you. But like a lot of PHP projects that roll their own everything it's no trivial task to do a code review. If you had used a well made framework then you would have got rid of a lot of code that only you really understand. > "I don't trust any of these people to write a secure framework and I have the experience to justify this concern". Your code doesn't look like well written, secure code. I'm sorry to sound abrasive but it's true. You mix validation in random places, perhaps inconsistently, and your project tries to do everything. This is not how secure projects are typically designed. > Escaping-on-output still implies that escaping happens. It's only used in 8 places as far as i can see, in some seemingly random places.
- CiPHPerCoder 10y ago> Is your homemade framework superior to Laravel? If so, how? Our cryptography is certainly superior to Laravel's. https://github.com/illuminate/encryption https://github.com/illuminate/encryption https://github.com/paragonie/halite https://github.com/paragonie/halite Beyond that, nobody has paid me to look deeper and I haven't had any reason to. > There are vulnerabilities in there, I've seen enough code like that to almost guarantee you. If so, then anyone reading this thread who's aware of any vulnerabilities will be interested in: https://hackerone.com/paragonie https://hackerone.com/paragonie
- orf 10y ago> Our cryptography is certainly superior to Laravel's... Ok, but cryptography is only a small portion of what a framework does and not necessarily the most important bit. I was asking more about your routing, view layer, ORM, code layout, templating, validation, caching, ACLs etc. > Beyond that, nobody has paid me to look deeper and I haven't had any reason to. Look, you can't put up a blog post titled "How We Engineered CMS Airship to Be Simply Secure" and say that when asked "well, how did you actually engineer it to be secure?". In your post you talk about problems all solved by a framework, and apparently you haven't even evaluated what is out there already and rushed headfirst into building it all yourself. This is not engineering a project to be "simply secure", in the sense that it is definitely not simple and probably not secure! > If so, then anyone reading this thread who's aware of any vulnerabilities will be interested... This is great! I wish more companies did this. However, as stated previously, the ad-hoc nature of the code and the single-developer nature[1] makes this pretty hard to do from a code review point of view. Again, using a framework makes your code way easier to review and a lot smaller to boot. Anyone with Django experience can pick up a Django app and start to review it, rather than have to learn whatever bespoke framework the developers of the project dreamed up. Also I just wanted to add that I don't mean to come across as a dick, your project looks interesting for sure and a lot of work has gone into it. PHP CMS's need to start taking security seriously, things like Joomla and random Wordpress plugins are a blight and anything taking security seriously is great! As someone who works in the security industry it's just a bit tiring to see yet another homegrown PHP half-framework full of it's own intricacies and potential issues with the ever familiar problems described in all my comments above, coupled with a post saying how it was engineered to be secure from the ground up. 1. It's hard to tell, in this graph (https://github.com/paragonie/airship/graphs/contributors https://github.com/paragonie/airship/graphs/contributors) is 'paragonie-security' a single person?