Top all-time · #4214
Tom Forbes
Personal blog · tomforb.esprogrammingsecurity
Tom Forbes's personal blog at tomforb.es covers programming and security. Since 2012, 18 different Hacker News readers have linked it 58 times, most often “XPath injection issues are severely underrated”. The last post was in 2023, but the archive is still widely read.
Too few sampled comments (5) to say how often HN recommends it.?
Why HN links it
HN readers cite Tom Forbes's posts as examples and sources on Python web tooling, SQLAlchemy user models, XPath versions, and a scan of PyPI packages for leaked AWS and API keys.
Summarised by Claude from a sample of 5 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Tom Forbes' personal blog
Most-linked posts?
- XPath injection issues are severely underrated3 people · 5 mentions · first linked 2018-12-10
- Just How Slow are Django Templates?3 people · 3 mentions · first linked 2013-03-13
- CVE-2022-0329 and the problems with automated vulnerability management2 people · 4 mentions · first linked 2022-01-29
- I scanned every package on PyPI and found 57 live AWS keys2 people · 3 mentions · first linked 2023-01-06
- Visualizing how S3 deletes 1B objects with Athena and Rust2 people · 3 mentions · first linked 2022-09-15
- Breaking out of secured Python environments2 people · 2 mentions · first linked 2013-09-25
- Counting Pizza with Python2 people · 2 mentions · first linked 2016-08-28
- Automatically inline Python function calls2 people · 2 mentions · first linked 2013-08-07
- AWS may have broken your CloudFront API for nearly a month2 people · 2 mentions · first linked 2022-11-21
What Hacker News says?
I found something similar to this a few years back[1], where the daemon would download and run anything if just “dell” was in the referring host. It seems they have improved the security somewhat by using white lists, but their coding practices seem a bit shoddy. Why have an SDK token at all if it’s public and globally shared? I wouldn’t be surprised if a lot of the code was shared between the previous incarnation t…
Comment linking /dell-system-detect-rce-vulnerability/
on “Remote Code Execution on Most Dell Computers”Submitted Infosys leaked FullAdminAccess AWS keys on PyPI for over a year as a story · 502 points
HN discussionThis is how the Dell system detect utility worked. Back in the day I found out that they only checked if the referring domain ended with dell.com, so 'notdell.com' passed their validation[1]. Instant easy unstoppable root RCE on a lot of dell machines from any website (it was a get request as well if I remember correctly). No built in auto update, no system tray icon, no idea if it's running. Good times. I found som…
Comment linking /hp-support-solutions-framework-security-issue
on “Certificates for localhost”Submitted Dear Apple, I don't want your god-damn lossless audio as a story · 66 points
HN discussionBack in 2015 I discovered a security issue with some Dell software[1]. I remember vividly getting an email about a job opportunity based entirely on this from a company with a strange name, that after some googling made a thing called Vagrant. They seemed super nice but I was far too young and immature to properly evaluate the opportunity, so after a few emails I ghosted them out of fear of the unknown. In 2015 they…
Comment linking /blog/dell-system-detect-rce-vulnerability/
on “IBM to buy HashiCorp in $6.4B deal”Submitted Segfaulting Python with afl-fuzz as a story · 48 points
HN discussionHa! Well, there's a lot. On major strand is more work like this to make it easy for the community to collaborate. I expect we'll make a lot of iterative improvements to the database over the next few months, aimed at making it easier to contribute to, maintain and use. We need to improve our APIs for this data, for example (currently only available via GraphQL). Another big one that we're starting to think about is…
Comment linking /cve-2022-0329-and-the-problems-with-automated-vulnerability-management/
on “GitHub’s database of security advisories is now open source”Submitted Automatically inline Python function calls as a story · 46 points
HN discussionI wrote my own to use SQLAlchemy models you define: http://tomforb.es/using-a-custom-sqlalchemy-users-model-with... Its really not that bad or hard to do at all.
Comment linking /using-a-custom-sqlalchemy-users-model-with-django
on “Why Django Sucks”Submitted Purchasing a £30,000 numberplate for the price of a bus ticket as a story · 44 points
HN discussionImport hooks are awesome, one of the cool things you can do is re-write the code as you load it. I made a toy loader that automagically inlines (some) Python function calls[1]. There are also cool projects like MacroPy[2] that do much more extensive things. 1. https://tomforb.es/automatically-inline-python-function-call... 2. https://github.com/lihaoyi/macropy
Comment linking /automatically-inline-python-function-calls
on “Use JSON files as if they are Python modules”Submitted Opera is really nice. as a story · 35 points
HN discussionI experimented with something similar to this way back[1], but took a slightly different approach - you can replace the reference to the function itself inside the function with a new function[2], one that returns a 'Recurse' object. That way it looks like it's calling the original method but really it's doing your own thing. 1. https://tomforb.es/adding-tail-call-optimization-to-python/ 2. https://gist.github.com/o…
Comment linking /adding-tail-call-optimization-to-python/
on “Tail recursion in Python”Submitted Visualizing how S3 deletes 1B objects with Athena and Rust as a story · 25 points
HN discussionI used to love Django, but after using it for a couple of years I've got a bit sick of it. The template language is horrible, as is the ORM. It's only redeeming features is the forms framework (only just) and the admin panel. That being said, it's super-awesome for getting a quick demo up or starting a project with unclear requirements. Edit: Why the downvotes? The templates are slow[1] and restrictive (no function…
Comment linking /just-how-slow-are-django-templates
on “Django 1.7 RC1”Submitted CVE-2022-0329 and the problems with automated vulnerability management as a story · 21 points
HN discussionI thought XPath was terrible beyond 1.0? E.g. https://tomforb.es/xcat-1.0-released-or-xpath-injection-issu... But it does not seem to be mentioned as an argument.
Comment linking /xcat-1.0-released-or-xpath-injection-issues-are-severely-underrated/
on “Chrome unlikely to support XPath 3.1”Submitted Breaking out of secured Python environments as a story · 11 points
HN discussionXPath post 1.0 got ridiculous, like many things do. What started with a simple, elegant language morphed into one with a http client, filesystem methods, json support, functions, loops, extensions and the ability to read environment variables. I wrote a post about it a while back[1] (I regret some of the wording used there) and maintain a tool[2] that can exploit XPath injection issues. I'd recommend sticking with 1…
Comment linking /xcat-1.0-released-or-xpath-injection-issues-are-severely-underrated/
on “What Happened to XPath?”Submitted I scanned every package on PyPI and found 57 live AWS keys as a story · 10 points
HN discussionI did this a while back: https://tomforb.es/segfaulting-python-with-afl-fuzz/ CPython bytecode will segfault Python if it’s slightly incorrect. And that’s fine, it’s not a security risk and it’s not worth the performance overhead of validating wonky bytecode.
Comment linking /segfaulting-python-with-afl-fuzz/
on “Make CPython segfault in 5 lines of code”Submitted Dell Does a SuperFish: Exploiting Dell Service Tag Detector as a story · 10 points
HN discussionVery interesting read, I did something similar[1] on a Microsoft site. I didn't think of creating a code object from scratch though, great idea. I did a web app test once for an application created by IBM. They offered the ability for administrators to run Python code in a 'restricted' sandbox to manipulate data. The app was Java so it was run through Jython, and they locked down all the usual suspects like open(),…
Comment linking /breaking-out-of-secured-python-environments
on “Bypassing a Python sandbox by abusing code objects”Submitted Breaking out of secured Python environments as a story · 9 points
HN discussionThis is certainly an interesting idea. A quick Google search gave me this toy example: [1][2] Of course making it work for all cases would be very hard due to the excessive dynamism of Python, but for simple arithmetic operations it could be made to work fairly well. [1] http://tomforb.es/automatically-inline-python-function-calls [2] https://github.com/orf/inliner
Comment linking /automatically-inline-python-function-calls
on “Python's Web Framework Benchmarks”Submitted If (url.contains(“dell”)), or how not to secure your software as a story · 6 points
HN discussionFunny this comes up! Dominoes used to use a single integer ID per order, and I wrote a tool to find out how many orders they process each day[1]. After contacting them (and receiving no reply!) they switched to a proper implementation involving GUID's. Good work though, I had no idea the dominoes USA website lets you just enter a phone number to get order details. That's pretty poor 1. http://tomforb.es/counting-piz…
Comment linking /counting-pizza-with-python
on “I wrote a program that emails me when one of my friends orders Domino's”Submitted Distributing malware with Google images, service workers and vegan Twitter bots as a story · 5 points
HN discussionI'm really impressed, PyPi only has about 37,000 packages[1] and it has been around for much longer. Really shows how far Node has come. It would also be interesting to see the average number of lines each package has. 1. http://tomforb.es/how-much-code-is-there-in-the-python-packa...
Comment linking /how-much-code-is-there-in-the-python-package-index
on “NPM registry in numbers”Submitted XPath injection issues are severely underrated as a story · 4 points
HN discussion